Ignore:
Timestamp:
Feb 27, 2017, 4:43:17 PM (3 years ago)
Author:
hectorgh
Message:

wip

Location:
lliurex-store/trunk/fuentes/lliurex-store-gui
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • lliurex-store/trunk/fuentes/lliurex-store-gui/Core.py

    r3649 r3734  
    55import DetailsBox
    66import ScreenshotViewer
     7import LoadingBox
    78
    89RSRC_DIR="./"
     
    3738                self.dprint("Creating main menu...")
    3839                self.main_menu=MainMenu.MainMenu()
     40                self.dprint("Creating loading screen...")
     41                self.loading_box=LoadingBox.LoadingBox()
     42               
    3943                self.dprint("Creating popup menu...")
    4044                self.popup_menu=PopupMenu.PopupMenu()
     
    5660               
    5761                        print("[CORE] %s"%msg)
     62                       
     63        #def dprint
    5864       
     65       
     66       
  • lliurex-store/trunk/fuentes/lliurex-store-gui/DetailsBox.py

    r3649 r3734  
    44from gi.repository import Gtk, Pango, GdkPixbuf, Gdk, Gio
    55import Screenshot
    6 #import VideoLink
     6import ImageManager
    77
    88import Core
     
    2626                self.screenshot_small=100
    2727                self.banner_small=150
     28                self.icon_size=64
    2829               
    2930                self.full_info_box=Gtk.HBox()
     
    3839                self.full_info_box.pack_start(self.app_details,False,False,0)
    3940
    40                 self.app_banner=Screenshot.Screenshot(self.banner_full_size,self.banner_full_size,"","",False)
     41                self.app_banner=Screenshot.ScreenshotNeo()
    4142                self.app_banner.set_size_request(self.banner_full_size,self.banner_full_size)
    4243
     
    109110               
    110111                hbox=Gtk.HBox()
    111                 self.app_icon=Screenshot.Screenshot(64,64,"","",False)
    112                
     112                self.app_icon=Screenshot.ScreenshotNeo()
     113                self.app_icon.set_size_request(64,64)
    113114               
    114115                hbox.pack_start(self.app_icon,False,False,0)
     
    204205        def set_package_info(self,pkg):
    205206               
    206                 self.app_banner.download_image(pkg.banner_url,pkg.banner_id)
     207                info={}
     208                info["image_url"]=pkg.banner_url
     209                info["image_id"]=pkg.banner_id
     210                info["x"]=self.banner_full_size
     211                info["y"]=self.banner_full_size
     212                info["aspect_ratio"]=False
     213                info["pkg_name"]=pkg.name
     214               
     215               
     216                if pkg.banner_url !=None:
     217                        #self.app_banner.download_image(pkg.banner_url,pkg.banner_id,self.banner_full_size,self.banner_full_size,False)
     218                        self.app_banner.download_image(info)
     219                else:
     220                        info["image_url"]=pkg.icon_url
     221                        self.app_banner.download_image(info)
     222                        #self.app_banner.create_banner_from_url(pkg.icon_url,pkg.banner_id,self.banner_full_size,self.banner_full_size,pkg.name)
    207223               
    208224                self.version_value_label.set_text(pkg.version)
     
    215231                self.full_description_label.set_text(pkg.full_description)
    216232                self.core.main_window.location_label.set_text(pkg.section)
    217                 self.app_icon.download_image(pkg.icon_url,pkg.icon_id)
     233               
     234                info["image_url"]=pkg.icon_url
     235                info["image_id"]=pkg.icon_id
     236                info["x"]=self.icon_size
     237                info["y"]=self.icon_size
     238               
     239                self.app_icon.download_image(info)
     240               
    218241               
    219242                for s in self.screenshots_box.get_children():
     
    222245                for v in pkg.videos:
    223246                       
    224                         image=Screenshot.Screenshot(self.screenshot_small,self.screenshot_small,v.video_preview_image,v.video_id,True,v.video_url)
     247                        image=Screenshot.ScreenshotNeo()
     248                        info["video_url"]=v.video_url
     249                        info["image_url"]=v.video_preview_image
     250                        info["image_id"]=v.video_id
     251                        info["x"]=self.screenshot_small
     252                        info["y"]=self.screenshot_small
     253                       
     254                        image.set_video_info(info)
     255                       
    225256                        b=Gtk.Button()
    226257                        b.set_name("RELATED_BUTTON")
     
    230261                for s in pkg.screenshots:
    231262                       
    232                         image=Screenshot.Screenshot(self.screenshot_small,self.screenshot_small,s.screenshot_url,s.screenshot_id)
     263                        image=Screenshot.ScreenshotNeo()
     264                       
     265                        info["image_url"]=s.screenshot_url
     266                        info["image_id"]=s.screenshot_id
     267                        info["x"]=self.screenshot_small
     268                        info["y"]=self.screenshot_small
     269                        info["aspect_ratio"]=False
     270                                               
     271                        image.download_image(info)
    233272                        b=Gtk.Button()
    234273                        b.set_name("RELATED_BUTTON")
     
    244283                for p in pkg.related_packages:
    245284                       
    246                         image=Screenshot.Screenshot(self.banner_small,self.banner_small,p.banner_url,p.banner_id)
     285                        image=Screenshot.ScreenshotNeo()
     286                       
     287                        info["image_url"]=p.banner_url
     288                        info["image_id"]=p.banner_id
     289                        info["x"]=self.banner_small
     290                        info["y"]=self.banner_small
     291                        info["pkg_name"]=p.name
     292                        info["custom_frame"]=False
     293                       
     294                       
     295                        if p.banner_url !=None:
     296                                image.download_image(info)
     297                        else:
     298                                info["image_url"]=p.icon_url
     299                                info["custom_frame"]=True
     300                                image.create_banner_from_url(info)
     301                       
    247302                        b=Gtk.Button()
    248303                        b.add(image)
     
    307362       
    308363
    309        
    310 #
    311 
    312 if __name__=="__main__":
    313        
    314        
    315         vbox=Gtk.VBox()
    316        
    317         t=DetailsBox()
    318         t.set_margin_left(20)
    319         t.set_margin_right(20)
    320         t.set_margin_top(20)
    321         t.set_margin_bottom(20)
    322        
    323         vbox.pack_start(t,True,True,0)
    324         b=Gtk.Button("HOLA")
    325         vbox.pack_start(b,True,True,5)
    326        
    327         vbox2=Gtk.VBox()
    328         t2=DetailsBox()
    329         t2.set_margin_left(20)
    330         t2.set_margin_right(20)
    331         t2.set_margin_top(20)
    332         t2.set_margin_bottom(20)
    333         vbox2.pack_start(t2,True,True,0)
    334         b2=Gtk.Button("ADIOS")
    335         vbox2.pack_start(b2,True,True,5)
    336        
    337        
    338         s=Gtk.Stack()
    339         s.add_titled(vbox,"a","A")
    340         s.add_titled(vbox2,"b","B")
    341         s.set_transition_type(Gtk.StackTransitionType.SLIDE_LEFT)
    342         s.set_transition_duration(1000)
    343        
    344         def clicked(widget,name):
    345                
    346                 global s
    347                
    348                 s.set_visible_child_name(name)
    349                
    350         b.connect("clicked",clicked,"b")
    351         b2.connect("clicked",clicked,"a")
    352        
    353         w=Gtk.Window()
    354         w.add(s)
    355         w.set_name("MAIN_BOX")
    356         w.show_all()
    357         w.connect("destroy",Gtk.main_quit)
    358         Gtk.main()
    359        
  • lliurex-store/trunk/fuentes/lliurex-store-gui/MainMenu.py

    r3649 r3734  
    1111import Core
    1212import Screenshot
     13import ImageManager
    1314
    1415_=gettext.gettext
     
    4243                self.forward_button=builder.get_object("media_forward_button")
    4344                self.media_play_image=builder.get_object("media_play_image")
     45                self.categories_grid=builder.get_object("categories_grid")
    4446
    4547                self.image_stack=Gtk.Stack()
     
    6062               
    6163                self.build_related()
     64                self.build_categories()
    6265                self.set_css_names()
    6366               
     67               
     68               
    6469                GLib.timeout_add(3000,self.next_image)
    6570               
     
    7075                # Main banners
    7176               
    72                 size=140
    73                 spacing=2
     77                size=134
     78                spacing=5
    7479               
    7580               
     
    107112                # Smaller banners
    108113               
    109                 image1=Screenshot.Screenshot(size,size,"https://teoten.files.wordpress.com/2010/02/splash1.png","ardour_banner")
     114                s=Screenshot.ScreenshotNeo()
     115                info={}
     116                info["image_url"]="https://teoten.files.wordpress.com/2010/02/splash1.png"
     117                info["image_id"]="banner_01"
     118                info["x"]=size
     119                info["y"]=size
     120                info["aspect_ratio"]=False
     121                info["pkg_name"]="Ardour"
     122                s.download_image(info)
     123               
    110124                self.testbutton=Gtk.Button()
    111125                self.testbutton.set_name("RELATED_BUTTON")
    112                 self.testbutton.add(image1)
    113                
     126                self.testbutton.add(s)
    114127                self.featured_extra_box.pack_start(self.testbutton,True,False,spacing)
    115128               
    116                 image2=Screenshot.Screenshot(size,size,"http://img02.deviantart.net/f02e/i/2015/146/3/7/audacity_logo_shadow_by_hectech-d8uwdme.png","audacity_banner")
    117                 b=Gtk.Button()
    118                 b.set_name("RELATED_BUTTON")
    119                 b.add(image2)
     129                s=Screenshot.ScreenshotNeo()
     130                info={}
     131                info["image_url"]="https://emailclientexpert.files.wordpress.com/2010/11/mozilla_thunderbird.jpg"
     132                info["image_id"]="banner_02"
     133                info["x"]=size
     134                info["y"]=size
     135                info["aspect_ratio"]=False
     136                info["pkg_name"]="Thunderbird"
     137                s.download_image(info)
     138                b=Gtk.Button()
     139                b.set_name("RELATED_BUTTON")
     140                b.add(s)
    120141                self.featured_extra_box.pack_start(b,True,False,spacing)
    121142               
    122                 image3=Screenshot.Screenshot(size,size,"http://orig12.deviantart.net/da38/f/2011/266/8/c/lmms_logo_01_by_vaccieaux-d4anukd.jpg","lmms_banner")
    123                 b=Gtk.Button()
    124                 b.set_name("RELATED_BUTTON")
    125                 b.add(image3)
     143                s=Screenshot.ScreenshotNeo()
     144                info={}
     145                info["image_url"]="http://img.linuxadictos.com/wp-content/uploads/firefox-381.jpg"
     146                info["image_id"]="banner_03"
     147                info["x"]=size
     148                info["y"]=size
     149                info["aspect_ratio"]=False
     150                info["pkg_name"]="Firefox"
     151                s.download_image(info)
     152                b=Gtk.Button()
     153                b.set_name("RELATED_BUTTON")
     154                b.add(s)
    126155                self.featured_extra_box.pack_start(b,True,False,spacing)
    127156               
    128                 image4=Screenshot.Screenshot(size,size,"https://mir-s3-cdn-cf.behance.net/project_modules/disp/29947525486889.563460e87f09d.jpg","rosegarden_banner")
    129                 b=Gtk.Button()
    130                 b.set_name("RELATED_BUTTON")
    131                 b.add(image4)
     157                s=Screenshot.ScreenshotNeo()
     158                info={}
     159                info["image_url"]="https://upload.wikimedia.org/wikipedia/commons/thumb/7/7b/Darktable_icon.svg/768px-Darktable_icon.svg.png"
     160                info["image_id"]="banner_04"
     161                info["x"]=size
     162                info["y"]=size
     163                info["aspect_ratio"]=False
     164                info["custom_frame"]=True
     165                info["pkg_name"]="Darktable"
     166                s.download_image(info)
     167                b=Gtk.Button()
     168                b.set_name("RELATED_BUTTON")
     169                b.add(s)
    132170                self.featured_extra_box.pack_start(b,True,False,spacing)
    133171               
    134                 image5=Screenshot.Screenshot(size,size,"http://img02.deviantart.net/f02e/i/2015/146/3/7/audacity_logo_shadow_by_hectech-d8uwdme.png","audacity_banner")
    135                 b=Gtk.Button()
    136                 b.set_name("RELATED_BUTTON")
    137                 b.add(image5)
     172               
     173                s=Screenshot.ScreenshotNeo()
     174                info={}
     175                info["image_url"]="https://upload.wikimedia.org/wikipedia/commons/thumb/d/d8/Krita_steam_boxart_Feb_2014.png/220px-Krita_steam_boxart_Feb_2014.png"
     176                info["image_id"]="banner_05"
     177                info["x"]=size
     178                info["y"]=size
     179                info["aspect_ratio"]=False
     180                info["pkg_name"]="Krita"
     181                s.download_image(info)
     182               
     183                b=Gtk.Button()
     184                b.set_name("RELATED_BUTTON")
     185                b.add(s)
    138186                self.featured_extra_box.pack_start(b,True,False,spacing)
    139187               
    140188               
     189               
    141190        #def build_related
    142191       
    143        
     192        def build_categories(self):
     193               
     194                max_width=7
     195                w_counter=0
     196                h_counter=0
     197               
     198                button_size=97
     199               
     200                img_list=["audio.svg","development.svg","education.svg","favorite.svg","games.svg","graphics.svg","internet.svg","office.svg","science.svg","system.svg","utilities.svg","video.svg"]
     201               
     202               
     203                for x in range(0,12):
     204                        b=Gtk.Button()
     205                        b.set_name("RELATED_BUTTON")
     206                        hbox=Gtk.HBox()
     207                        hbox.set_halign(Gtk.Align.START)
     208                        import random
     209                        id=int(random.random()*len(img_list))
     210                        #img=Gtk.Image.new_from_file("/home/cless/Desktop/icons/%s"%img_list[id])
     211                       
     212                        img_path="/home/cless/Desktop/icons/clean_icons/%s"%img_list[x]
     213                       
     214                        '''
     215                       
     216                        image=Gtk.Image.new_from_file("/home/cless/Desktop/icons/clean_icons/%s"%img_list[id])
     217                        pixbuf=image.get_pixbuf()
     218                        x=pixbuf.get_width()
     219                        y=pixbuf.get_height()
     220                               
     221                        x=1
     222                        y=1
     223                       
     224                        size=46
     225                               
     226                        ratio=min(size*1.0/x,size*1.0/y)
     227                        pixbuf=pixbuf.scale_simple(x*ratio,y*ratio,GdkPixbuf.InterpType.BILINEAR)
     228                       
     229                        img=Gtk.Image.new_from_pixbuf(pixbuf)
     230                        img.set_margin_left(0)
     231                       
     232                       
     233                       
     234                       
     235                        label=Gtk.Label("Testing")
     236                        label.set_margin_left(5)
     237                        hbox.pack_start(img,True,True,0)
     238                        hbox.pack_start(label,True,True,0)
     239                        b.add(hbox)
     240                       
     241                        '''
     242                       
     243                        s=Screenshot.ScreenshotNeo()
     244                        i={}
     245                        i["image_path"]=img_path
     246                        i["x"]=button_size
     247                        i["y"]=button_size
     248                        i["custom_frame"]=True
     249                        i["pkg_name"]=img_list[x].split(".svg")[0].upper()
     250                       
     251                        s.create_banner_from_file(i)
     252                        b.add(s)
     253                       
     254                       
     255                        self.categories_grid.attach(b,w_counter,h_counter,1,1)
     256                        w_counter+=1
     257                        if w_counter ==max_width:
     258                                w_counter=0
     259                                h_counter+=1
     260               
     261                       
     262                self.categories_grid.show_all()
     263               
     264        #def build_categories
    144265       
    145266       
  • lliurex-store/trunk/fuentes/lliurex-store-gui/MainWindow.py

    r3649 r3734  
    66import Package
    77
     8import threading
    89import gettext
    910import signal
     
    1920               
    2021                self.core=Core.Core.get_core()
     22                self.load_thread=threading.Thread()
    2123                self.load_gui()
    2224               
     
    5052                self.main_menu.testbutton.connect("clicked",self.test_show)
    5153               
     54                self.loading_box=self.core.loading_box
     55               
     56                self.stack.add_titled(self.loading_box,"loading","Loading")
    5257                self.stack.add_titled(self.main_menu,"main","Main")
    5358                self.stack.add_titled(self.details_box,"details","Details")
    5459               
    55                
    5660                self.main_scroll.add(self.stack)
     61               
     62                self.load_thread=threading.Thread(target=self.load_main_content)
     63                self.load_thread.daemon=True
     64                self.load_thread.start()
     65                self.load_thread.join()
     66               
     67                self.load_main_content()
     68               
     69                #GLib.timeout_add(1000,self.load_main_content)
    5770               
    5871               
     
    118131        def test_show(self,widget):
    119132               
    120                 p=Package.Package.get_demo_package()
     133                import random
     134                id=int(random.random()*2)
     135               
     136                p=Package.Package.get_demo_package(id)
    121137                self.details_box.set_package_info(p)
    122138                self.stack.set_visible_child_name("details")
    123        
    124         def kk(self,widget,event):
    125                
    126                 print "???"
     139               
     140        #def test_show
     141       
     142        def load_main_content(self):
     143               
     144                print 1
     145                import time
     146                time.sleep(5)
     147                print "asdasd"
     148               
     149        #def load_main_content
     150       
     151        def show_loading(self):
     152               
     153                self.stack.set_visible_child_name("loading")
    127154               
    128155        #def kk
     156               
     157        def show_details_box(self):
     158               
     159                self.stack.set_visible_child_name("details")
     160               
     161        #def show_details_box
     162       
     163        def show_home(self):
     164               
     165                self.stack.set_visible_child_name("main")
     166               
     167        #def show_details_box
     168       
     169        def load_main_content(self):
     170               
     171                if self.load_thread.is_alive():
     172                       
     173                        return True
     174                       
     175                print self.load_thread
     176                self.show_home()
     177                return False
     178               
     179               
     180        #def load_main_content
    129181               
    130182       
     
    212264                       
    213265                        if widget.get_children()[0].video_url==None:
    214                                 self.screenshot_viewer.set_screenshot(widget.get_children()[0].id,self.details_box.screenshots_box)
     266                                self.screenshot_viewer.set_screenshot(widget.get_children()[0].image_id,self.details_box.screenshots_box)
    215267                        else:
    216268                                self.screenshot_viewer.set_screenshot(widget.get_children()[0].video_url,self.details_box.screenshots_box,True)
  • lliurex-store/trunk/fuentes/lliurex-store-gui/Package.py

    r3649 r3734  
    3131       
    3232        @classmethod
    33         def get_demo_package(self):
     33        def get_demo_package(self,id=0):
    3434               
    3535                dic={}
    36                 dic["banner_url"]="https://teoten.files.wordpress.com/2010/02/splash1.png"
    37                 dic["banner_id"]="ardour_banner"
    38                 dic["version"]="1.0"
    39                 dic["category"]="Music"
    40                 dic["license"]="GPL-3+"
    41                 dic["size"]="1231"
    42                 dic["website"]="http://www.google.es"
    43                 dic["name"]="Ardour"
    44                 dic["short_description"]="Record, mix and master multi-track audio."
    45                 dic["full_description"]="""
     36               
     37               
     38                if id==0:
     39               
     40                        dic["banner_url"]="https://teoten.files.wordpress.com/2010/02/splash1.png"
     41                        dic["banner_id"]="ardour_banner"
     42                        dic["version"]="1.0"
     43                        dic["category"]="Music"
     44                        dic["license"]="GPL-3+"
     45                        dic["size"]="1231"
     46                        dic["website"]="http://www.google.es"
     47                        dic["name"]="Ardour"
     48                        dic["short_description"]="Record, mix and master multi-track audio."
     49                        dic["full_description"]="""
    4650Descripcion super larga que habla de cosas que ashdajksl dhajksdh asjkldh ajklsdh ajklsdh asljkdh. Descripcion super larga que habla de cosas que ashdajksl dhajksdh asjkldh ajklsdh ajklsdh asljkdh. Descripcion super larga que habla de cosas que ashdajksl dhajksdh asjkldh ajklsdh ajklsdh asljkdh. Descripcion super larga que habla de cosas que ashdajksl dhajksdh asjkldh ajklsdh ajklsdh asljkdh. Descripcion super larga que habla de cosas que ashdajksl dhajksdh asjkldh ajklsdh ajklsdh asljkdh. Descripcion super larga que habla de cosas que ashdajksl dhajksdh asjkldh ajklsdh ajklsdh asljkdh. Descripcion super larga que habla de cosas que ashdajksl dhajksdh asjkldh ajklsdh ajklsdh asljkdh. Descripcion super larga que habla de cosas que ashdajksl dhajksdh asjkldh ajklsdh ajklsdh asljkdh.
    4751Descripcion super larga que habla de cosas que ashdajksl dhajksdh asjkldh ajklsdh ajklsdh asljkdh. Descripcion super larga que habla de cosas que ashdajksl dhajksdh asjkldh ajklsdh ajklsdh asljkdh.  Descripcion super larga que habla de cosas que ashdajksl dhajksdh asjkldh ajklsdh ajklsdh asljkdh.Descripcion super larga que habla de cosas que ashdajksl dhajksdh asjkldh ajklsdh ajklsdh asljkdh.
     
    5256Descripcion super larga que habla de cosas que ashdajksl dhajksdh asjkldh ajklsdh ajklsdh asljkdh. Descripcion super larga que habla de cosas que ashdajksl dhajksdh asjkldh ajklsdh ajklsdh asljkdh. Descripcion super larga que habla de cosas que ashdajksl dhajksdh asjkldh ajklsdh ajklsdh asljkdh.
    5357"""
    54                 dic["section"]="Applications > Music > Ardour"
    55                 dic["icon_url"]="http://icons.iconarchive.com/icons/alecive/flatwoken/512/Apps-Ardour-icon.png"
    56                 dic["icon_id"]="ardour_icon"
    57                
    58                 dic["videos"]=[]
    59                
    60                 tmp={}
    61                 tmp["video_preview_image"]="https://farm6.staticflickr.com/5624/23815901722_4d1edf4ed1_b.jpg"
    62                 tmp["video_id"]="uncharted_01"
    63                 tmp["video_url"]="https://www.youtube.com/embed/hrYvDujhEck"
    64                 p=Package(tmp)
    65                 dic["videos"].append(p)
    66                
    67                 tmp={}
    68                 tmp["video_preview_image"]="https://media.playstation.com/is/image/SCEA/nioh-box-art-01-ps4-us-10nov16?$image_block_desktop$"
    69                 tmp["video_id"]="nioh_01"
    70                 tmp["video_url"]="https://www.youtube.com/embed/y0TiK5rzBrQ"
    71                 p=Package(tmp)
    72                 dic["videos"].append(p)
    73                
    74                
    75                
    76                 dic["screenshots"]=[]
    77                
    78                 tmp={}
    79                 tmp["screenshot_url"]="https://i.ytimg.com/vi/pzPxhaYQQK8/maxresdefault.jpg"
    80                 tmp["screenshot_id"]="ardour_s01"
    81                 p=Package(tmp)
    82                 dic["screenshots"].append(p)
    83                
    84                 tmp["screenshot_url"]="https://s-media-cache-ak0.pinimg.com/736x/60/d2/4f/60d24f3635c7b387f6c3df513b66581e.jpg"
    85                 tmp["screenshot_id"]="ardour_s02"
    86                 p=Package(tmp)
    87                 dic["screenshots"].append(p)
    88                
    89                 tmp["screenshot_url"]="https://s-media-cache-ak0.pinimg.com/236x/2f/b2/92/2fb29257ec3f217ca248b928190aa0c9.jpg"
    90                 tmp["screenshot_id"]="ardour_s03"
    91                 p=Package(tmp)
    92                 dic["screenshots"].append(p)
    93                
    94                 tmp["screenshot_url"]="https://s-media-cache-ak0.pinimg.com/736x/98/0a/df/980adf6c765534ad6af4cb44e0ab9ebe.jpg"
    95                 tmp["screenshot_id"]="ardour_s04"
    96                 p=Package(tmp)
    97                 dic["screenshots"].append(p)
    98                
    99                 tmp["screenshot_url"]="http://moderndogmagazine.com/sites/default/files/images/uploads/Pug.jpg"
    100                 tmp["screenshot_id"]="ardour_s05"
    101                 p=Package(tmp)
    102                 dic["screenshots"].append(p)
    103                
    104                
    105                 dic["related_packages"]=[]
    106                 tmp={}
    107                 tmp["banner_url"]="https://mir-s3-cdn-cf.behance.net/project_modules/disp/29947525486889.563460e87f09d.jpg"
    108                 tmp["banner_id"]="rosegarden_banner"
    109                 p=Package(tmp)
    110                 dic["related_packages"].append(p)
    111                
    112                 tmp={}
    113                 tmp["banner_url"]="http://img02.deviantart.net/f02e/i/2015/146/3/7/audacity_logo_shadow_by_hectech-d8uwdme.png"
    114                 tmp["banner_id"]="audacity_banner"
    115                 p=Package(tmp)
    116                 dic["related_packages"].append(p)
    117                
    118                 tmp={}
    119                 tmp["banner_url"]="http://orig12.deviantart.net/da38/f/2011/266/8/c/lmms_logo_01_by_vaccieaux-d4anukd.jpg"
    120                 tmp["banner_id"]="lmms_banner"
    121                 p=Package(tmp)
    122                 dic["related_packages"].append(p)
    123                
    124                 tmp={}
    125                 tmp["banner_url"]="http://windows7tricks.com/wp-content/uploads/2016/01/clementine-music-player.png"
    126                 tmp["banner_id"]="clementine_banner"
    127                 p=Package(tmp)
    128                 dic["related_packages"].append(p)
    129                
     58                        dic["section"]="Applications > Music > Ardour"
     59                        dic["icon_url"]="http://icons.iconarchive.com/icons/alecive/flatwoken/512/Apps-Ardour-icon.png"
     60                        dic["icon_id"]="ardour_icon"
     61                       
     62                        dic["videos"]=[]
     63                       
     64                        tmp={}
     65                        tmp["video_preview_image"]="https://farm6.staticflickr.com/5624/23815901722_4d1edf4ed1_b.jpg"
     66                        tmp["video_id"]="uncharted_01"
     67                        tmp["video_url"]="https://www.youtube.com/embed/hrYvDujhEck"
     68                        p=Package(tmp)
     69                        dic["videos"].append(p)
     70                       
     71                        tmp={}
     72                        tmp["video_preview_image"]="https://media.playstation.com/is/image/SCEA/nioh-box-art-01-ps4-us-10nov16?$image_block_desktop$"
     73                        tmp["video_id"]="nioh_01"
     74                        tmp["video_url"]="https://www.youtube.com/embed/y0TiK5rzBrQ"
     75                        p=Package(tmp)
     76                        dic["videos"].append(p)
     77                       
     78                       
     79                       
     80                        dic["screenshots"]=[]
     81                       
     82                        tmp={}
     83                        tmp["screenshot_url"]="https://ardour.org/images/retina_no_plugs2.png"
     84                        tmp["screenshot_id"]="ardour_s01"
     85                        p=Package(tmp)
     86                        dic["screenshots"].append(p)
     87                       
     88                        tmp["screenshot_url"]="https://ardour.org/images/editor4.png"
     89                        tmp["screenshot_id"]="ardour_s02"
     90                        p=Package(tmp)
     91                        dic["screenshots"].append(p)
     92                       
     93                        tmp["screenshot_url"]="http://libremusicproduction.com/sites/default/files/tools/ardour_0.jpg"
     94                        tmp["screenshot_id"]="ardour_s03"
     95                        p=Package(tmp)
     96                        dic["screenshots"].append(p)
     97                       
     98                        tmp["screenshot_url"]="https://ardour.org/images/lsd-mixer.png"
     99                        tmp["screenshot_id"]="ardour_s04"
     100                        p=Package(tmp)
     101                        dic["screenshots"].append(p)
     102                       
     103                        tmp["screenshot_url"]="http://moderndogmagazine.com/sites/default/files/images/uploads/Pug.jpg"
     104                        tmp["screenshot_id"]="ardour_s05"
     105                        p=Package(tmp)
     106                        dic["screenshots"].append(p)
     107                       
     108                       
     109                        dic["related_packages"]=[]
     110                        tmp={}
     111                        tmp["banner_url"]="https://mir-s3-cdn-cf.behance.net/project_modules/disp/29947525486889.563460e87f09d.jpg"
     112                        tmp["banner_id"]="rosegarden_banner"
     113                        p=Package(tmp)
     114                        dic["related_packages"].append(p)
     115                       
     116                        tmp={}
     117                        #tmp["banner_url"]="http://img02.deviantart.net/f02e/i/2015/146/3/7/audacity_logo_shadow_by_hectech-d8uwdme.png"
     118                        tmp["name"]="Audacity"
     119                        tmp["icon_url"]="https://cdn2.iconfinder.com/data/icons/squareplex/512/audacity.png"
     120                        tmp["banner_id"]="audacity_banner"
     121                        p=Package(tmp)
     122                        dic["related_packages"].append(p)
     123                       
     124                        tmp={}
     125                        tmp["banner_url"]="http://orig12.deviantart.net/da38/f/2011/266/8/c/lmms_logo_01_by_vaccieaux-d4anukd.jpg"
     126                        tmp["banner_id"]="lmms_banner"
     127                        p=Package(tmp)
     128                        dic["related_packages"].append(p)
     129                        '''
     130                        tmp={}
     131                        tmp["icon_url"]="https://upload.wikimedia.org/wikipedia/en/thumb/e/e3/Firefox-logo.svg/1072px-Firefox-logo.svg.png"
     132                        tmp["banner_id"]="firefox_banner"
     133                        tmp["name"]="Firefox"
     134                        p=Package(tmp)
     135                        dic["related_packages"].append(p)
     136                        '''
     137                       
     138                       
     139                       
     140               
     141                if id==1:
     142                       
     143                        dic["banner_url"]="https://4.bp.blogspot.com/-7B2F6d4vbP8/VxJmlWC5owI/AAAAAAAAGug/YO7JeHjHnjEGvTv2naEfcLmaFIsi2sdLwCLcB/s1600/clementine-950x632.jpg"
     144                        dic["banner_id"]="clementine_banner"
     145                        dic["version"]="1.0"
     146                        dic["category"]="Music"
     147                        dic["license"]="GPL-3+"
     148                        dic["size"]="1231"
     149                        dic["website"]="http://www.google.es"
     150                        dic["name"]="Clementine"
     151                        dic["short_description"]="Plays music and last.fm streams"
     152                        dic["full_description"]="""
     153Clementine is a multiplatform music player focusing on a fast and easy-to-use interface for searching and playing your music.\n
     154Summary of included features:
     155 * Search and play your local music library
     156 * Listen to internet radio from Last.fm, SomaFM and Magnatune
     157 * Tabbed playlists, import and export M3U, XSPF, PLS and ASX
     158 * Visualisations from projectM
     159 * Transcode music into MP3, Ogg Vorbis, Ogg Speex, FLAC or AA
     160 * Edit tags on MP3 and OGG files, organise your music
     161 * Download missing album cover art from Last.fm
     162 * Native desktop notifications using libnotify
     163 * Supports MPRIS, or remote control using the command-line
     164 * Remote control using a Wii Remote, MPRIS or the command-line
     165 * Copy music to your iPod, iPhone, MTP or mass-storage USB player
     166"""
     167                        dic["section"]="Applications > Music > Clementine"
     168                        dic["icon_url"]="https://lh3.ggpht.com/8P0MAg8xeKY_JOIG_rBoQwb0QryDJGcg1u2bGaTlywJ9zOnfRD0uem8uRYF7Rh5upLE=w300"
     169                        dic["icon_id"]="clementine_icon"
     170                       
     171                        dic["videos"]=[]
     172                       
     173                        tmp={}
     174                        tmp["video_preview_image"]="https://farm6.staticflickr.com/5624/23815901722_4d1edf4ed1_b.jpg"
     175                        tmp["video_id"]="uncharted_01"
     176                        tmp["video_url"]="https://www.youtube.com/embed/hrYvDujhEck"
     177                        p=Package(tmp)
     178                        dic["videos"].append(p)
     179                       
     180                        tmp={}
     181                        tmp["video_preview_image"]="https://media.playstation.com/is/image/SCEA/nioh-box-art-01-ps4-us-10nov16?$image_block_desktop$"
     182                        tmp["video_id"]="nioh_01"
     183                        tmp["video_url"]="https://www.youtube.com/embed/y0TiK5rzBrQ"
     184                        p=Package(tmp)
     185                        dic["videos"].append(p)
     186                       
     187                       
     188                       
     189                        dic["screenshots"]=[]
     190                       
     191                        tmp={}
     192                        tmp["screenshot_url"]="http://exotichousecat.com/wp-content/uploads/2014/12/scottish-fold-main-image-1038x576.jpg"
     193                        tmp["screenshot_id"]="clementine_s01"
     194                        p=Package(tmp)
     195                        dic["screenshots"].append(p)
     196                       
     197                        tmp["screenshot_url"]="https://s-media-cache-ak0.pinimg.com/736x/ec/f4/78/ecf478324fd2fa025749d6fe6cd4d669.jpg"
     198                        tmp["screenshot_id"]="clementine_s02"
     199                        p=Package(tmp)
     200                        dic["screenshots"].append(p)
     201                       
     202                        tmp["screenshot_url"]="http://www.misgatitos.net/images/comprar-gato-camada-gatos2.jpg"
     203                        tmp["screenshot_id"]="clementine_s03"
     204                        p=Package(tmp)
     205                        dic["screenshots"].append(p)
     206                       
     207                        tmp["screenshot_url"]="https://www.askideas.com/media/19/Scottish-Fold-Kitten-Image.jpg"
     208                        tmp["screenshot_id"]="clementine_s04"
     209                        p=Package(tmp)
     210                        dic["screenshots"].append(p)
     211                       
     212                        tmp["screenshot_url"]="http://previews.123rf.com/images/svet_lana/svet_lana0811/svet_lana081100069/3908141-Scottish-fold-kitten-on-white-background-Stock-Photo-cat-ball-pet.jpg"
     213                        tmp["screenshot_id"]="clementine_s05"
     214                        p=Package(tmp)
     215                        dic["screenshots"].append(p)
     216                       
     217                       
     218                        dic["related_packages"]=[]
     219                        tmp={}
     220                        tmp["banner_url"]="https://mir-s3-cdn-cf.behance.net/project_modules/disp/29947525486889.563460e87f09d.jpg"
     221                        tmp["banner_id"]="rosegarden_banner"
     222                        p=Package(tmp)
     223                        dic["related_packages"].append(p)
     224                       
     225                        tmp={}
     226                        tmp["banner_url"]="http://img02.deviantart.net/f02e/i/2015/146/3/7/audacity_logo_shadow_by_hectech-d8uwdme.png"
     227                        tmp["banner_id"]="audacity_banner"
     228                        p=Package(tmp)
     229                        dic["related_packages"].append(p)
     230                       
     231                        tmp={}
     232                        tmp["banner_url"]="http://orig12.deviantart.net/da38/f/2011/266/8/c/lmms_logo_01_by_vaccieaux-d4anukd.jpg"
     233                        tmp["banner_id"]="lmms_banner"
     234                        p=Package(tmp)
     235                        dic["related_packages"].append(p)
     236                       
     237                        tmp={}
     238                        tmp["icon_url"]="https://upload.wikimedia.org/wikipedia/en/thumb/e/e3/Firefox-logo.svg/1072px-Firefox-logo.svg.png"
     239                        tmp["banner_id"]="firefox_banner"
     240                        tmp["name"]="Firefox"
     241                        p=Package(tmp)
     242                        dic["related_packages"].append(p)
     243                       
     244
     245                       
     246
    130247               
    131248               
  • lliurex-store/trunk/fuentes/lliurex-store-gui/PopupMenu.py

    r3649 r3734  
    3737                eventbox.connect("button-press-event",self.hide_revealer)
    3838               
    39                 #self.popup_menu.set_size_request(popup_menu_x,popup_menu_y)
    40                 #self.popup_menu.set_valign(Gtk.Align.FILL)
    41                 #self.popup_menu.set_halign(Gtk.Align.START)
    42                
    43                
    4439                label1=builder.get_object("label1")
    4540                label2=builder.get_object("label2")
     
    4944                label6=builder.get_object("label6")
    5045                label7=builder.get_object("label7")
    51                
    5246               
    5347                button2=builder.get_object("button2")
     
    6054               
    6155                separator=builder.get_object("separator1")
    62                
     56
    6357                decorator_bar=builder.get_object("decoration_bar_box")
    64                
    65                
    66                
    67                 '''
    68                 self.popup_ol=Gtk.Overlay()
    69                
    70                 b=Gtk.Button()
    71                 b.set_size_request(popup_menu_x+shadow_size,popup_menu_y+shadow_size)
    72                 b.set_border_width(shadow_size)
    73                 b.set_name("TRICK_BUTTON")
    74                 b.set_valign(Gtk.Align.FILL)
    75                 b.set_halign(Gtk.Align.START)
    76                
    77                 self.revealer.add(self.popup_ol)
    78                 self.popup_ol.add(b)
    79                 self.popup_ol.add_overlay(self.popup_menu)
    80                
    81                 image=Gtk.Image.new_from_file("/usr/share/backgrounds/lliurex-default-background.png")
    82                 pixbuf=image.get_pixbuf()
    83                 original_ratio=pixbuf.get_width(),pixbuf.get_height()
    84                 pixbuf=pixbuf.scale_simple(400,225,GdkPixbuf.InterpType.BILINEAR)
    85                 self.popup_image.set_from_pixbuf(pixbuf)
    86                
    87                 '''
    8858               
    8959                image=Gtk.Image.new_from_file("lliurex-default-background.png")
     
    9363                self.popup_image.set_from_pixbuf(pixbuf)
    9464               
    95                
    9665                self.revealer.add(self.popup_menu)
    97                
    9866                self.add(self.revealer)
    99                
    10067               
    10168                self.popup_menu.set_name("TRANSPARENT")
  • lliurex-store/trunk/fuentes/lliurex-store-gui/Screenshot.py

    r3649 r3734  
    11import gi
    22gi.require_version('Gtk', '3.0')
    3 from gi.repository import Gtk,GdkPixbuf,GLib
     3from gi.repository import Gtk,GdkPixbuf,GLib,GObject
    44import urllib2
    55import threading
    66import os
    7 
    8 class Screenshot(Gtk.Stack):
    9 
    10         def __init__(self,x,y,url,id,download=True,video_url=None):
     7import ImageManager
     8import Core
     9
     10class ScreenshotNeo(Gtk.Stack):
     11       
     12        def __init__(self):
    1113               
    1214                Gtk.Stack.__init__(self)
    1315                self.set_transition_type(Gtk.StackTransitionType.CROSSFADE)
    1416                self.set_transition_duration(250)
     17               
     18                self.image_dir="/tmp/.lliurex-store/"
     19                if not os.path.exists(self.image_dir):
     20                        os.makedirs(self.image_dir)
     21               
     22                self.spinner=Gtk.Spinner()
     23                #self.spinner.set_size_request(x,y)
     24                self.spinner.start()
     25               
    1526                hbox=Gtk.HBox()
    16                 self.spinner=Gtk.Spinner()
    17                 self.spinner.set_size_request(x,y)
    18                 self.spinner.start()
    19                
    2027                hbox.pack_start(self.spinner,True,True,0)
    2128               
     
    2431                self.add_titled(self.image,"image","Image")
    2532               
    26                 self.image_url=url
    27                 self.x=x
    28                 self.y=y
    29                 self.id=id
    30                 self.image_dir="/tmp/.lliurex-store/"
    31                
    32                 self.thread=threading.Thread()
    33                
    34                 if not os.path.exists(self.image_dir):
    35                        
    36                         os.makedirs(self.image_dir)
    37                
    38                 if download:
    39                         self.download_image()
    40                
    41                 self.video_url=video_url
    42                
     33                self.image_info={}
     34                self.image_info["image_url"]=""
     35                self.image_info["video_url"]=""
     36                self.image_info["image_id"]=""
     37                self.image_info["pkg_name"]=""
     38                self.image_info["image_path"]=""
     39                self.image_info["x"]=-1
     40                self.image_info["y"]=-1
     41                self.image_info["aspect_ratio"]=True
     42                self.image_info["custom_frame"]=False
     43                self.image_info["force_label"]=False
     44                self.image_info["pixbuf"]=None
     45               
     46                self.show_all()
    4347               
    4448        #def init
    4549       
    46         def download_image(self,url=None,id=None):
    47                
    48                 if url!=None:
    49                         self.image_url=url
    50                
    51                 if id!=None:
    52                         self.id=id
    53                
    54                 if self.get_visible_child_name()=="image":
    55                         self.set_visible_child_name("spinner")
    56                        
    57                 GLib.timeout_add(1,self.wait_for_image)
     50        def set_image_info(self,image_info):
     51               
     52                self.image_info["pkg_name"]=image_info.setdefault("pkg_name","")
     53                self.image_info["image_path"]=image_info.setdefault("image_path","")
     54                self.image_info["x"]=image_info.setdefault("x",-1)
     55                self.image_info["y"]=image_info.setdefault("y",-1)
     56                self.image_info["aspect_ratio"]=image_info.setdefault("aspect_ratio",True)
     57                self.image_info["pixbuf"]=image_info.setdefault("pixbuf",None)
     58                self.image_info["image_url"]=image_info.setdefault("image_url","")
     59                self.image_info["image_id"]=image_info.setdefault("image_id","")
     60                self.image_info["custom_frame"]=image_info.setdefault("custom_frame",False)
     61                self.image_info["force_label"]=image_info.setdefault("force_label",False)
     62               
     63        #def set_image_info
     64       
     65        def set_from_file(self,image_info):
     66               
     67               
     68                self.set_image_info(image_info)
     69               
     70                x=self.image_info["x"]
     71                y=self.image_info["x"]
     72                aspect_ratio=self.image_info["aspect_ratio"]
     73                file_path=self.image_info["image_path"]
     74               
     75                if os.path.exists(file_path):
     76                       
     77                        if x==-1 and y==-1:
     78                       
     79                                self.image.set_from_file(file_path)
     80                                pixbuf=self.image.get_pixbuf()
     81                                self.image_info["x"]=pixbuf.get_width()
     82                                self.image_info["y"]=pixbuf.get_height()
     83                                self.set_visible_child_name("image")
     84                                return True
     85                               
     86                        else:
     87                                tmp=ImageManager.scale_image(file_path,x,y,aspect_ratio)
     88                                pixbuf=tmp.get_pixbuf()
     89                                self.image_info["x"]=pixbuf.get_width()
     90                                self.image_info["y"]=pixbuf.get_height()
     91                                self.image.set_from_pixbuf(tmp.get_pixbuf())
     92                                self.set_visible_child_name("image")
     93                                return True
     94                       
     95                return False
     96               
     97        #def set_from_file
     98       
     99        def set_from_pixbuf(self,image_info):
     100               
     101                self.set_image_info(image_info)         
     102               
     103                x=self.image_info["x"]
     104                y=self.image_info["x"]
     105                pixbuf=self.image_info["pixbuf"]
     106                aspect_ratio=self.image_info["aspect_ratio"]
     107               
     108                if pixbuf!=None:
     109                       
     110                        if x==-1 and y==-1:
     111                               
     112                                self.image.set_from_pixbuf(pixbuf)
     113                                self.image_info["x"]=pixbuf.get_width()
     114                                self.image_info["y"]=pixbuf.get_height()
     115                                self.set_visible_child_name("image")
     116                               
     117                        else:
     118                               
     119                                pixbuf=ImageManager.scale_pixbuf(pixbuf,x,y,aspect_ratio)
     120                                self.image.set_from_pixbuf(pixbuf)
     121                                self.image_info["x"]=pixbuf.get_width()
     122                                self.image_info["y"]=pixbuf.get_height()
     123                                self.set_visible_child_name("image")
     124                       
     125               
     126                        return True
     127
     128                return False           
     129               
     130        #set_from_pixbuf
     131       
     132        def wait_for_image(self):
     133       
     134                while self.thread.is_alive():
     135                        return True
     136               
     137               
     138                if os.path.exists(self.image_dir+self.image_info["image_id"]):
     139                        self.set_from_file(self.image_info)
     140               
     141                return False
     142       
     143        #def _download
     144       
     145        def download_image(self,image_info):
     146               
     147                self.set_image_info(image_info)
     148               
     149                x=self.image_info["x"]
     150                y=self.image_info["x"]
     151               
     152                self.set_visible_child_name("spinner")
     153               
     154                self.spinner.set_size_request(x,y)
     155               
     156                GLib.timeout_add(500,self.wait_for_image)
     157               
    58158                self.thread=threading.Thread(target=self.download_image_thread)
    59159                self.thread.daemon=True
     
    61161               
    62162        #def download_image
    63 
    64163       
    65164        def download_image_thread(self):
    66165               
    67                 if not os.path.exists(self.image_dir+self.id):
    68                         req=urllib2.Request(self.image_url)
    69                         res=urllib2.urlopen(req)
    70                         f=open(self.image_dir+self.id,"w")
    71                         f.write(res.read())
    72                         f.close()
    73                         #urllib.urlretrieve(self.image_url,self.image_dir+self.id)
    74                        
     166                if not os.path.exists(self.image_dir+self.image_info["image_id"]):
     167                       
     168                        header = {
     169                                        'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11'
     170                                }
     171                       
     172                        try:
     173                       
     174                                req=urllib2.Request(self.image_info["image_url"],headers=header)
     175                                res=urllib2.urlopen(req)
     176                                f=open(self.image_dir+self.image_info["image_id"],"w")
     177                                f.write(res.read())
     178                                f.close()
     179                                self.image_info["image_path"]=self.image_dir+self.image_info["image_id"]
     180                               
     181                                if self.image_info["custom_frame"] or self.image_info["force_label"]:
     182                                        ImageManager.create_banner(self.image_dir+self.image_info["image_id"],self.image_info["x"],self.image_info["y"],self.image_info["pkg_name"],self.image_info["custom_frame"],self.image_info["image_path"])
     183                                       
     184                        except Exception as e:
     185                                self.image_info["image_path"]="/usr/share/icons/Vibrancy-Colors/mimetypes/256/package.svg"
     186                                self.image_info["custom_frame"]=True
     187                                self.create_banner_from_file(self.image_info)
     188               
     189                else:
     190                        self.image_info["image_path"]=self.image_dir+self.image_info["image_id"]
     191
    75192                return True
    76193               
    77 
    78                
    79194        #def download-image-thread
    80195       
    81        
    82         def wait_for_image(self):
    83        
    84                 while self.thread.is_alive():
    85                        
    86                         return True
    87                
    88                 if os.path.exists(self.image_dir+self.id):
    89                         image=Gtk.Image.new_from_file(self.image_dir+self.id)
    90                         pixbuf=image.get_pixbuf()
    91                         if pixbuf !=None:
    92                                 x=pixbuf.get_width()
    93                                 y=pixbuf.get_height()
    94                                
    95                                 x=1
    96                                 y=1
    97                                
    98                                 ratio=min(self.x*1.0/x,self.y*1.0/y)
    99                                 pixbuf=pixbuf.scale_simple(x*ratio,y*ratio,GdkPixbuf.InterpType.BILINEAR)
    100                                
    101                                 self.image.set_from_pixbuf(pixbuf)
    102                                 self.set_visible_child_name("image")
    103                                 self.spinner.stop()
    104                         else:
    105                                 print "woopsie",self.image_dir+self.id
    106                
    107                 return False
    108        
    109         #def _download
    110        
    111         def set_new_from_pixbuf(self,x,y,pixbuf):
    112                
    113                 self.spinner.hide()
    114                 self.set_visible_child_name("spinner")
    115                 self.x=x
    116                 self.y=y
    117                
    118                 self.image.set_from_pixbuf(pixbuf)
    119                 self.set_visible_child_name("image")
    120                
    121                
    122 
    123 #class Screenshot
     196        def create_banner_from_file(self,image_info,output_file=None):
     197               
     198                file_name=image_info.setdefault("image_path")
     199                x=image_info.setdefault("x")
     200                y=image_info.setdefault("y")
     201                custom_frame=image_info.setdefault("custom_frame",False)
     202                txt=image_info.setdefault("pkg_name","")
     203                               
     204                ret=ImageManager.create_banner(file_name,x,y,txt,custom_frame,output_file)
     205               
     206                if output_file ==None:
     207                        image_info["pixbuf"]=ret[1].get_pixbuf()
     208                        self.set_from_pixbuf(image_info)
     209                else:
     210                        image_info["image_path"]=output_file
     211                        self.set_from_file(image_info)
     212               
     213               
     214        #def create_banner_from_file
     215       
     216        def create_banner_from_url(self,image_info):
     217               
     218                self.set_image_info(self.image_info)
     219                self.download_image(image_info)
     220               
     221        #def create_banner_from_url
     222       
     223        def set_video_info(self,video_info):
     224               
     225                video_info.setdefault("video_url","")
     226                video_info.setdefault("image_url","")
     227                video_info.setdefault("image_id","")
     228                video_info.setdefault("x",-1)
     229                video_info.setdefault("y",-1)
     230               
     231               
     232                self.set_image_info(video_info)
     233               
     234                self.image_info["video_url"]=video_info.setdefault("video_url")
     235                self.image_info["image_url"]=video_info.setdefault("image_url")
     236                self.image_info["image_id"]=video_info.setdefault("image_id")
     237                self.image_info["x"]=video_info.setdefault("x")
     238                self.image_info["y"]=video_info.setdefault("y")
     239                self.image_info["pkg_name"]=video_info.setdefault("pkg_name","")
     240                               
     241                self.download_image(video_info)
     242               
     243        #def set_video_info
     244       
     245       
     246#class ScreenshotNeo
     247
     248
     249if __name__=="__main__":
     250       
     251        w=Gtk.Window()
     252        w.connect("destroy",Gtk.main_quit)
     253       
     254        hbox=Gtk.HBox()
     255        vbox=Gtk.VBox()
     256        hbox.pack_start(vbox,False,False,0)
     257        w.add(hbox)
     258       
     259        s=ScreenshotNeo()
     260        info={}
     261        info["image_path"]="gearth2.png"
     262        info["x"]=300
     263        info["y"]=300
     264        info["aspect_ratio"]=True
     265        info["pkg_name"]="a"
     266        s.set_from_file(info)
     267        vbox.pack_start(Gtk.Label("load from file aspect_ratio=True"),False,False,0)
     268        vbox.pack_start(s,False,False,0)
     269       
     270        s=ScreenshotNeo()
     271        info={}
     272        info["image_path"]="gearth2.png"
     273        info["x"]=100
     274        info["y"]=100
     275        info["aspect_ratio"]=False
     276        info["pkg_name"]="a"
     277        s.set_from_file(info)
     278        vbox.pack_start(Gtk.Label("load from file aspect_ratio=False"),False,False,0)
     279        vbox.pack_start(s,False,False,0)
     280       
     281        s=ScreenshotNeo()
     282        info={}
     283        info["pixbuf"]=Gtk.Image.new_from_file("gearth3.png").get_pixbuf()
     284        info["aspect_ratio"]=True
     285        info["pkg_name"]="a"
     286        s.set_from_pixbuf(info)
     287        vbox.pack_start(Gtk.Label("load from pixbuf aspect_ratio=True"),False,False,0)
     288        vbox.pack_start(s,False,False,0)
     289       
     290        s=ScreenshotNeo()
     291        info={}
     292        info["pixbuf"]=Gtk.Image.new_from_file("gearth3.png").get_pixbuf()
     293        info["aspect_ratio"]=False
     294        info["pkg_name"]="a"
     295        info["x"]=100
     296        info["y"]=100
     297        s.set_from_pixbuf(info)
     298        vbox.pack_start(Gtk.Label("load from pixbuf aspect_ratio=False"),False,False,0)
     299        vbox.pack_start(s,False,False,0)
     300       
     301        s=ScreenshotNeo()
     302        info={}
     303        info["image_url"]="http://www.hdbloggers.net/wp-content/uploads/2016/10/Wallpaper-4K.jpg"
     304        info["image_id"]="wallpaper"
     305        info["aspect_ratio"]=True
     306        info["pkg_name"]="a"
     307        info["x"]=300
     308        info["y"]=300
     309        s.download_image(info)
     310        vbox.pack_start(Gtk.Label("url aspect_ratio=True"),False,False,0)
     311        vbox.pack_start(s,False,False,0)
     312
     313        s=ScreenshotNeo()
     314        info={}
     315        info["image_url"]="http://no.existo.com/asd.jpg"
     316        info["image_id"]="wallpaper2"
     317        info["aspect_ratio"]=True
     318        info["pkg_name"]="Package name"
     319        info["x"]=128
     320        info["y"]=128
     321        s.download_image(info)
     322        vbox.pack_start(Gtk.Label("url 404 aspect_ratio=True"),False,False,0)
     323        vbox.pack_start(s,False,False,0)
     324
     325        vbox1=Gtk.VBox()
     326        hbox.pack_start(vbox1,False,False,0)
     327
     328        s=ScreenshotNeo()
     329        info={}
     330        info["image_path"]="/usr/share/pixmaps/firefox.png"
     331        info["image_id"]="firefox"
     332        info["aspect_ratio"]=True
     333        info["pkg_name"]="Firefox"
     334        info["custom_frame"]=True
     335        info["x"]=300
     336        info["y"]=300
     337        s.create_banner_from_file(info)
     338        vbox1.pack_start(Gtk.Label("create banner from file. resize_image=True"),False,False,0)
     339        vbox1.pack_start(s,False,False,0)
     340
     341        s=ScreenshotNeo()
     342        info={}
     343        info["image_path"]="/home/cless/svn/xenial/lliurex-artwork-icons/trunk/fuentes/future-green/apps/scite.svg"
     344        info["image_id"]="scite"
     345        info["aspect_ratio"]=True
     346        info["pkg_name"]="SciTe"
     347        info["custom_frame"]=False
     348        info["x"]=200
     349        info["y"]=200
     350        s.create_banner_from_file(info)
     351        vbox1.pack_start(Gtk.Label("create banner from file. resize_image=False"),False,False,0)
     352        vbox1.pack_start(s,False,False,0)
     353
     354       
     355        s=ScreenshotNeo()
     356        info={}
     357        info["image_url"]="http://androidportal.zoznam.sk/wp-content/uploads/2013/01/2013-purple-640x569.png"
     358        info["image_id"]="testing"
     359        info["aspect_ratio"]=True
     360        info["pkg_name"]="Custom banner"
     361        info["custom_frame"]=False
     362        info["force_label"]=True
     363        info["x"]=400
     364        info["y"]=400
     365       
     366        s.create_banner_from_url(info)
     367        vbox1.pack_start(Gtk.Label("create banner from URL. resize_image=False"),False,False,0)
     368        vbox1.pack_start(s,False,False,0)
     369       
     370
     371       
     372        w.show_all()
     373       
     374        GObject.threads_init()
     375        Gtk.main()
     376       
  • lliurex-store/trunk/fuentes/lliurex-store-gui/ScreenshotViewer.py

    r3155 r3734  
    1414                self.set_valign(Gtk.Align.START)
    1515                self.set_halign(Gtk.Align.START)
    16                
     16
     17                self.html_skel='<html><body bgcolor=black><div align=center><iframe height=97% width=90% align=center src="%%URL%%" frameborder="0" allowfullscreen></iframe></div></body></html>'             
    1718                self.border=20
    1819               
     
    2526                self.content_box.set_name("POPUP_SHADOW_TOPBOTTOM")
    2627                hbox=Gtk.HBox()
    27                 #hbox.set_name("WHITE")
    2828               
    29                 '''
    30                 vp=Gtk.Viewport()
    31                 vp.set_name("WHITE")
    32                 vp.set_valign(Gtk.Align.FILL)
    33                 vp.set_halign(Gtk.Align.FILL)
    34                 vp.set_size_request(1,700)
    35                 self.sv=Gtk.ScrolledWindow()
    36                 self.sv.set_name("WHITE")
    37                 self.sv.set_valign(Gtk.Align.FILL)
    38                 self.sv.set_halign(Gtk.Align.FILL)
    39                 vp.add(self.sv)
    40                 '''
    41                
    42                 self.image=Screenshot.Screenshot(0,0,"","",False)
     29                self.image=Screenshot.ScreenshotNeo()
    4330                self.wv=WebKit.WebView()
    4431               
     
    7663                self.content_box.pack_end(self.sw,False,False,0)
    7764
    78 
    79 
    80                 '''
    81                 vbox=Gtk.VBox()
    82                 vbox.set_size_request(1,self.border*3.5)
    83                 self.content_box.pack_start(vbox,True,True,0)
    84                 '''
    85                
    8665                self.revealer.add(self.content_box)
    8766                self.revealer.show_all()
    8867                self.add_events(Gdk.EventMask.BUTTON_PRESS_MASK)
    8968                self.connect("button-press-event",self.area_clicked)
    90        
    91                
    92                 self.html_skel='<html><body bgcolor=black><div align=center><iframe height=97% width=90% align=center src="%%URL%%" frameborder="0" allowfullscreen></iframe></div></body></html>'
    93                
    94                
    9569               
    9670                self.add(self.revealer)
     
    10579               
    10680                if url==False:
    107                         self.image.set_new_from_pixbuf(x,y,data)
     81                        self.image.set_from_pixbuf(data,x,y)
    10882                else:
    10983                        self.show_url(None,data)
     
    11993               
    12094               
    121                
    122                 #pixbuf=pixbuf.scale_simple(x*ratio,y*ratio,GdkPixbuf.InterpType.BILINEAR)
    123                 #self.image.set_from_pixbuf(pixbuf)
    124                
    12595                for child in self.buttons_box.get_children():
    12696                       
     
    131101                        tmp=x.get_children()[0]
    132102                        pixbuf=tmp.image.get_pixbuf()
    133                         id=x.get_children()[0].id
     103                        id=x.get_children()[0].image_id
    134104                        b=Gtk.Button()
    135105                        b.add(Gtk.Image.new_from_pixbuf(pixbuf))
     
    172142                       
    173143
    174                        
    175                
     144        #def set_screenshot
     145       
     146       
    176147       
    177148        def show_url(self,widget,url):
     
    179150                self.wv.load_html_string(self.html_skel.replace("%%URL%%",url),"")
    180151                self.image.set_visible_child_name("html")
     152               
     153        #def show url
    181154               
    182155        def screenshot_button_clicked(self,widget,current_id):
     
    199172                pixbuf=pixbuf.scale_simple(x*ratio,y*ratio,GdkPixbuf.InterpType.BILINEAR)
    200173                self.image.spinner.hide()
    201                 self.image.set_new_from_pixbuf(new_x,new_y,pixbuf)
    202                
    203                 #self.image.set_from_pixbuf(pixbuf)
     174                self.image.set_from_pixbuf(pixbuf,new_x,new_y)
     175
     176        #def screenshot_button_clicked
    204177               
    205178       
     
    208181                self.revealer.set_reveal_child(False)
    209182
     183        #def area_clicked
    210184
    211185
  • lliurex-store/trunk/fuentes/lliurex-store-gui/lliurex-store.css

    r3649 r3734  
    2121                }
    2222               
    23                 #RED {
    24                         background-image:-gtk-gradient (linear, left top, right top, from (rgba(0,0,0,1)), to (rgba(0,0,0,1)));
    25                        
    26                 }
    2723               
    2824                #POPUP_SHADOW_LEFTRIGHT
    2925                {
    30                        
    31                         /*
    32                         background-image:-gtk-gradient (linear, 0 0, 1 0,
    33                        
    34                                 color-stop(0, rgba(79,142,217,1)),
    35                                 color-stop(0.2, rgba(79,142,217,1)),
    36                                 color-stop(0.21, rgba(0,0,0,6)),
    37                                
    38                                 color-stop(1, rgba(0,0,0,0))
    39                         );
    40                         */
    41                        
    4226                        background-image: -gtk-gradient (linear,        left top, right top, from (rgba(0,0,0,0.5)), to (rgba(0,0,0,0)));
    43                        
     27                }
     28               
     29                #POPUP_SHADOW_TOPBOTTOM
     30                {
     31               
     32                        background-color: rgba(0,0,0,0.7);
    4433                       
    4534                }
    4635               
    4736                #DECORATOR_BAR{
    48                        
    49                         /*background-image: -gtk-gradient( linear,left top, left bottom, from (rgba(0,32,157,1)), to (rgba(109,172,247,1)) );*/
    50                         /*background-image: -gtk-gradient( linear,left top, left bottom, from (rgba(109,172,247,1)), to (rgba(0,32,157,1)) );*/
    51                        
    5237                       
    5338                        background-image:-gtk-gradient (linear, 0 0, 0 1,
     
    5944                        );
    6045                       
    61                        
    62                 }
    63                
    64                 #POPUP_SHADOW_TOPBOTTOM
    65                 {
    66                         /*
    67                         background-image:-gtk-gradient (linear, 0 0, 0 1,
    68                        
    69                                 color-stop(0, rgba(0,0,0,0.7)),
    70                                 color-stop(0.97, rgba(0,0,0,0.7)),
    71                                
    72                                
    73                                 color-stop(1, rgba(0,0,0,0.7))
    74                         );
    75                         */
    76                        
    77                         background-color: rgba(0,0,0,0.7);
    78                        
    79                 }
    80                
     46                }
     47
     48
    8149                #TRANSPARENT
    8250                {
     
    8553                }
    8654               
    87                
    88                 #WHITE {
    89                         background-image:-gtk-gradient (linear, left top, right top, from (rgba(0,0,0,0.9)), to (rgba(0,0,0,0.6)));
    90                        
    91                 }
    9255               
    9356                #SECTION_BOX {
     
    12588                        color:black;
    12689                }
    127                
    128 /*             
    129                 #POPUP_FONT
    130                 {
    131                         color:rgba(255,255,255,0.9);
    132                         font: Roboto 15;
    133                         text-shadow: 0px 0px 5px white;
    134                        
    135                 }
    136                
    137 */
    138                
    139                
    140 /*
    141                 #SECTION_BOX:hover {
    142                         background-image: -gtk-gradient (linear,        left top, right top, from (rgba(255,255,255,0.5)), to (rgba(10,10,10,0.1)));
    143                 }
    144                
    145                 #SECTION_BOX .label:hover{
    146                                 color:rgba(0,0,0,0.9);
    147                 }
    148                
    149         */     
    150                 #TRICK_BUTTON{
    151                        
    152                         box-shadow: -30px 0px 10px 50px rgba(0,0,0,0.6);
    153                         border-radius:0px;
    154                         /*border-color: blue;*/
    155                        
    156                 }
    157                
     90
     91
    15892                #MENU_BUTTON{
    15993                        /*background-image: -gtk-gradient(linear,left top, right top, from (black), to (black));*/
     
    181115
    182116                #DIVIDER {
    183                         background-image:-gtk-gradient (linear, left top, right top, from (rgba(90.5%,90.5%,90.5%,0.8)), to (rgba(100%,100%,100%,0.8)));
    184                        
     117                        /*background-image:-gtk-gradient (linear,       left top, right top, from (rgba(90.5%,90.5%,90.5%,0.8)), to (rgba(100%,100%,100%,0.8)));*/
     118                       
     119                        background-image:-gtk-gradient (linear, 0 0, 1 0,
     120                       
     121                                color-stop(0, rgba(255,255,255,0)),
     122                                color-stop(0.05, rgba(255,255,255,0.2)),
     123                                color-stop(0.5, rgba(255,255,255,0.5)),
     124                                color-stop(0.95, rgba(255,255,255,0.2)),
     125                                color-stop(1, rgba(255,255,255,0))
     126                        );
    185127                       
    186128                }
     
    228170                        font: Roboto 10;
    229171                }
    230                
     172
     173                #SECTION_BUTTON {
     174                        border-width: 0;
     175                        border-radius: 0px;
     176                        padding: 0px 0px;
     177                        box-shadow: none;
     178                        border-color: transparent;
     179                        border: none;
     180                        color: white;
     181                        font: Roboto 14;
     182                        background-image:-gtk-gradient (linear, left top, left bottom, from (#3366cc),  to (#3366cc));
     183                        text-shadow: none;
     184                       
     185                }
     186
     187                #SECTION_BUTTON:hover {
     188                        background-image:-gtk-gradient (linear, left top, left bottom, from (#6699ff),  to (#6699ff));
     189                        box-shadow: 0px 0px 5px #66c6ff;
     190                }
     191
    231192                #INSTALL_BUTTON {
    232193                        border-width: 0;
     
    333294                }
    334295               
     296               
     297                @keyframes bounce-image {
     298
     299                0% { background-position: 50% 50%;}
     300                15% { background-position: 50% 24%;}
     301                30% { background-position: 50% 50%;}
     302                45% { background-position: 50% 26%;}
     303                60% { background-position: 50% 50%;}
     304                75% { background-position: 50% 28%;}
     305                90% { background-position: 50% 50%;}
     306                100% { background-position: 50% 50%;}
     307
     308                }
     309
     310                #L1_BOX {
     311
     312                        background-image: url("l.svg");
     313                        background-position: 50% 50%;
     314                        background-repeat: no-repeat;
     315                        background-color: transparent;
     316                        animation: bounce-image infinite ease-out 3s;
     317                        animation-delay: 0ms;
     318
     319                }
     320               
     321                #L2_BOX {
     322
     323                        background-image: url("l.svg");
     324                        background-position: 50% 50%;
     325                        background-repeat: no-repeat;
     326                        background-color: transparent;
     327                        animation: bounce-image infinite ease-out 3s;
     328                        animation-delay: 100ms;
     329
     330                }
     331               
     332                #I_BOX {
     333
     334                        background-image: url("i.svg");
     335                        background-position: 50% 50%;
     336                        background-repeat: no-repeat;
     337                        background-color: transparent;
     338                        animation: bounce-image infinite ease-out 3s;
     339                        animation-delay: 200ms;
     340
     341                }
     342               
     343                #U_BOX {
     344
     345                        background-image: url("u.svg");
     346                        background-position: 50% 50%;
     347                        background-repeat: no-repeat;
     348                        background-color: transparent;
     349                        animation: bounce-image infinite ease-out 3s;
     350                        animation-delay: 300ms;
     351
     352                }
     353               
     354                #R_BOX {
     355
     356                        background-image: url("r.svg");
     357                        background-position: 50% 50%;
     358                        background-repeat: no-repeat;
     359                        background-color: transparent;
     360                        animation: bounce-image infinite ease-out 3s;
     361                        animation-delay: 400ms;
     362
     363                }
     364               
     365                #E_BOX {
     366
     367                        background-image: url("e.svg");
     368                        background-position: 50% 50%;
     369                        background-repeat: no-repeat;
     370                        background-color: transparent;
     371                        animation: bounce-image infinite ease-out 3s;
     372                        animation-delay: 500ms;
     373
     374                }
     375               
     376                #X_BOX {
     377
     378                        background-image: url("x.svg");
     379                        background-position: 50% 50%;
     380                        background-repeat: no-repeat;
     381                        background-color: transparent;
     382                        animation: bounce-image infinite ease-out 3s;
     383                        animation-delay: 600ms;
     384
     385                }
  • lliurex-store/trunk/fuentes/lliurex-store-gui/lliurex-store.ui

    r3649 r3734  
    198198    </child>
    199199  </object>
     200  <object class="GtkBox" id="loading_box">
     201    <property name="visible">True</property>
     202    <property name="can_focus">False</property>
     203    <property name="valign">center</property>
     204    <property name="orientation">vertical</property>
     205    <child>
     206      <object class="GtkBox" id="box13">
     207        <property name="visible">True</property>
     208        <property name="can_focus">False</property>
     209        <property name="halign">center</property>
     210        <property name="valign">center</property>
     211        <property name="spacing">5</property>
     212        <property name="baseline_position">bottom</property>
     213        <child>
     214          <object class="GtkBox" id="l1_box">
     215            <property name="width_request">25</property>
     216            <property name="height_request">128</property>
     217            <property name="visible">True</property>
     218            <property name="can_focus">False</property>
     219            <property name="orientation">vertical</property>
     220            <child>
     221              <placeholder/>
     222            </child>
     223          </object>
     224          <packing>
     225            <property name="expand">True</property>
     226            <property name="fill">True</property>
     227            <property name="position">0</property>
     228          </packing>
     229        </child>
     230        <child>
     231          <object class="GtkBox" id="l2_box">
     232            <property name="width_request">25</property>
     233            <property name="visible">True</property>
     234            <property name="can_focus">False</property>
     235            <property name="orientation">vertical</property>
     236            <child>
     237              <placeholder/>
     238            </child>
     239          </object>
     240          <packing>
     241            <property name="expand">True</property>
     242            <property name="fill">True</property>
     243            <property name="position">1</property>
     244          </packing>
     245        </child>
     246        <child>
     247          <object class="GtkBox" id="i_box">
     248            <property name="width_request">20</property>
     249            <property name="visible">True</property>
     250            <property name="can_focus">False</property>
     251            <property name="orientation">vertical</property>
     252            <child>
     253              <placeholder/>
     254            </child>
     255          </object>
     256          <packing>
     257            <property name="expand">True</property>
     258            <property name="fill">True</property>
     259            <property name="position">2</property>
     260          </packing>
     261        </child>
     262        <child>
     263          <object class="GtkBox" id="u_box">
     264            <property name="width_request">32</property>
     265            <property name="visible">True</property>
     266            <property name="can_focus">False</property>
     267            <property name="orientation">vertical</property>
     268            <child>
     269              <placeholder/>
     270            </child>
     271          </object>
     272          <packing>
     273            <property name="expand">True</property>
     274            <property name="fill">True</property>
     275            <property name="position">3</property>
     276          </packing>
     277        </child>
     278        <child>
     279          <object class="GtkBox" id="r_box">
     280            <property name="width_request">32</property>
     281            <property name="visible">True</property>
     282            <property name="can_focus">False</property>
     283            <property name="orientation">vertical</property>
     284            <child>
     285              <placeholder/>
     286            </child>
     287          </object>
     288          <packing>
     289            <property name="expand">True</property>
     290            <property name="fill">True</property>
     291            <property name="position">4</property>
     292          </packing>
     293        </child>
     294        <child>
     295          <object class="GtkBox" id="e_box">
     296            <property name="width_request">25</property>
     297            <property name="visible">True</property>
     298            <property name="can_focus">False</property>
     299            <property name="orientation">vertical</property>
     300            <child>
     301              <placeholder/>
     302            </child>
     303          </object>
     304          <packing>
     305            <property name="expand">True</property>
     306            <property name="fill">True</property>
     307            <property name="position">5</property>
     308          </packing>
     309        </child>
     310        <child>
     311          <object class="GtkBox" id="x_box">
     312            <property name="width_request">32</property>
     313            <property name="visible">True</property>
     314            <property name="can_focus">False</property>
     315            <property name="orientation">vertical</property>
     316            <child>
     317              <placeholder/>
     318            </child>
     319          </object>
     320          <packing>
     321            <property name="expand">True</property>
     322            <property name="fill">True</property>
     323            <property name="position">6</property>
     324          </packing>
     325        </child>
     326      </object>
     327      <packing>
     328        <property name="expand">True</property>
     329        <property name="fill">True</property>
     330        <property name="position">0</property>
     331      </packing>
     332    </child>
     333    <child>
     334      <object class="GtkLabel" id="loading_label">
     335        <property name="visible">True</property>
     336        <property name="can_focus">False</property>
     337        <property name="label" translatable="yes">Loading content...</property>
     338      </object>
     339      <packing>
     340        <property name="expand">False</property>
     341        <property name="fill">True</property>
     342        <property name="position">1</property>
     343      </packing>
     344    </child>
     345  </object>
    200346  <object class="GtkBox" id="main_box">
    201347    <property name="visible">True</property>
     
    203349    <property name="margin_left">20</property>
    204350    <property name="margin_right">20</property>
    205     <property name="margin_top">20</property>
     351    <property name="margin_top">15</property>
    206352    <property name="margin_bottom">20</property>
    207353    <property name="orientation">vertical</property>
     
    491637        <property name="margin_right">10</property>
    492638        <property name="margin_top">10</property>
     639        <property name="margin_bottom">10</property>
    493640        <property name="row_spacing">5</property>
    494641        <property name="column_spacing">5</property>
    495         <property name="row_homogeneous">True</property>
    496         <property name="column_homogeneous">True</property>
    497642        <child>
    498643          <placeholder/>
     
    625770                    <property name="can_focus">False</property>
    626771                    <property name="yalign">1</property>
     772                    <property name="pixbuf">/home/cless/Desktop/icons/clean_icons/favorite.svg</property>
    627773                    <property name="pixel_size">24</property>
    628                     <property name="icon_name">emblem-favorite</property>
    629774                  </object>
    630775                  <packing>
     
    685830                    <property name="can_focus">False</property>
    686831                    <property name="yalign">1</property>
     832                    <property name="pixbuf">/home/cless/Desktop/icons/clean_icons/audio.svg</property>
    687833                    <property name="pixel_size">24</property>
    688                     <property name="icon_name">preferences-desktop-screensaver</property>
    689834                  </object>
    690835                  <packing>
     
    731876                    <property name="can_focus">False</property>
    732877                    <property name="yalign">1</property>
     878                    <property name="pixbuf">/home/cless/Desktop/icons/clean_icons/games.svg</property>
    733879                    <property name="pixel_size">24</property>
    734                     <property name="icon_name">preferences-desktop-theme</property>
    735880                  </object>
    736881                  <packing>
     
    777922                    <property name="can_focus">False</property>
    778923                    <property name="yalign">1</property>
     924                    <property name="pixbuf">/home/cless/Desktop/icons/clean_icons/video.svg</property>
    779925                    <property name="pixel_size">24</property>
    780                     <property name="icon_name">preferences-system</property>
    781926                  </object>
    782927                  <packing>
Note: See TracChangeset for help on using the changeset viewer.