Changeset 4109


Ignore:
Timestamp:
Apr 5, 2017, 6:39:24 PM (2 years ago)
Author:
hectorgh
Message:

wip

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

Legend:

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

    r4099 r4109  
    5656        def init(self):
    5757               
     58               
     59               
    5860                self.dprint("Creating categories manager...")
    5961                self.categories_manager=CategoriesManager.CategoriesManager()
     
    8082               
    8183               
     84               
     85               
    8286        #def
    8387       
  • lliurex-store/trunk/fuentes/lliurex-store-gui/DetailsBox.py

    r4104 r4109  
    3131                self.banner_full_size=250
    3232                self.screenshot_small=100
    33                 self.banner_small=150
     33                self.banner_small=134
    3434                self.icon_size=64
    3535               
     
    252252                related_vbox.pack_start(self.related_divider,False,False,5)
    253253               
    254                 related_sw=Gtk.ScrolledWindow()
    255                 related_sw.set_shadow_type(Gtk.ShadowType.NONE)
    256                 related_sw.set_size_request(0,self.banner_small+40)
    257                 related_sw.set_margin_right(20)
     254                self.related_sw=Gtk.ScrolledWindow()
     255                self.related_sw.set_shadow_type(Gtk.ShadowType.NONE)
     256                self.related_sw.set_size_request(0,self.banner_small+40)
     257                self.related_sw.set_margin_right(20)
    258258                related_vp=Gtk.Viewport()
    259                 related_sw.add(related_vp)
     259                self.related_sw.add(related_vp)
    260260               
    261261                self.related_box=Gtk.HBox()
     
    264264                related_vp.add(self.related_box)
    265265               
    266                 related_vbox.pack_start(related_sw,False,False,5)
     266                related_vbox.pack_start(self.related_sw,False,False,5)
    267267                self.pack_start(related_vbox,True,True,0)
    268268               
     
    276276               
    277277                info={}
    278                
    279                
    280                 print(pkg["categories"])
    281278               
    282279                info["image_url"]=pkg["banner_small"]
     
    288285                info["installed"]=True if pkg["state"]=="installed" else False
    289286               
    290                
     287
    291288                if pkg["banner_small"] !=None:
    292289                        self.app_banner.download_image(info)
     
    325322                       
    326323               
    327                
    328                
    329324                info["image_path"]=self.core.resources.get_icon(pkg)
    330325                info["image_id"]=pkg["icon"]+"_icon"
     
    334329                self.app_icon.set_from_file(info)
    335330               
    336                
    337331                for s in self.screenshots_box.get_children():
    338332                        self.screenshots_box.remove(s)
    339333               
    340334                count=0
    341                
    342335                for v in pkg["videos"]:
    343336                       
     
    359352                       
    360353                count=0
    361                        
    362354                for s in pkg["screenshots"]:
    363355                       
    364356                        image=Screenshot.ScreenshotNeo()
    365                        
    366357                        i={}
    367358                       
    368                         #s=s.replace("http://metadata.tanglu.org/appstream/media/xenial/","")
    369359                        i["image_url"]=s
    370360                        i["image_id"]=pkg["package"]+"_screenshot_"+str(count)
     
    381371               
    382372                self.screenshots_box.show_all()
    383                        
    384                        
     373               
     374               
     375               
    385376                for p in self.related_box.get_children():
    386377                        self.related_box.remove(p)
     378                       
     379
     380               
    387381                       
    388382                for p in pkg["related_packages"]:
     
    394388                        i["x"]=self.banner_small
    395389                        i["y"]=self.banner_small
    396                         i["name"]=p["name"]
     390                        i["name"]=p["package"].capitalize()
    397391                        i["package"]=p["package"]
    398392                        i["icon"]=p["icon"]
    399393                        i["component"]=p["component"]
    400                        
    401                        
    402394
    403395                        if p["banner"]!=None:
     
    421413                        b.set_name("RELATED_BUTTON")
    422414                        b.set_valign(Gtk.Align.CENTER)
    423                        
    424                         self.related_box.pack_start(b,False,False,5)
     415                        b.set_tooltip_text(p["name"])
     416                        self.related_box.pack_start(b,False,False,3)
    425417                       
    426418                self.related_box.show_all()
     
    474466        def related_app_clicked(self,widget,app):
    475467               
    476                 self.core.main_window.load_pkg_data(app.debian_name)
     468                self.core.main_window.load_pkg_data(app["package"])
    477469               
    478470        #def related_app_clicked
     
    519511        def install_pkg(self):
    520512               
    521                 time.sleep(2)
     513                pkg=self.core.main_window.current_pkg["package"]
     514                self.core.store.install_package(pkg)
    522515               
    523516        #def
     
    526519        def uninstall_pkg(self):
    527520               
    528                 time.sleep(2)
     521                pkg=self.core.main_window.current_pkg["package"]
     522                self.core.store.uninstall_package(pkg)
    529523               
    530524        #def
     
    534528        def open_clicked(self,widget):
    535529               
    536                 print("Opening...")
     530                desktop=self.core.main_window.current_pkg["id"]
     531                if os.path.exists("/usr/share/applications/%s"%desktop):
     532                        os.system("gtk-launch %s"%desktop)
    537533               
    538534        #def open_clicked
  • lliurex-store/trunk/fuentes/lliurex-store-gui/ImageManager.py

    r4099 r4109  
    110110                ctx.set_source_rgba(0.9,0.9,0.9,1)
    111111               
     112                if len(txt)> 18:
     113                        txt=txt[0:15]+"..."
     114               
    112115                pctx.set_markup("%s"%txt)
    113116                text_x,text_y=pctx.get_pixel_size()
  • lliurex-store/trunk/fuentes/lliurex-store-gui/LliurexStoreManager.py

    r4104 r4109  
    33import Package
    44import Core
     5import random
     6import copy
    57
    68class LliurexStoreManager:
     
    6567                ret=self.store.get_status(action)
    6668               
     69                print(ret)
     70               
    6771                if ret["status"]==0:
    6872                       
    6973                        data=self.store.get_result(action)
    7074                        p=Package.Package(data["info"][0])
     75                       
     76                        categories=copy.deepcopy(p["categories"])
     77                        banned=set()
     78                       
     79                        for item in self.core.categories_manager.categories:
     80                                if item in categories and len(categories) > 1:
     81                                        categories.remove(item)
     82               
     83                        for item in self.core.categories_manager.banned_categories:
     84                                if item in categories and len(categories) > 1:
     85                                        categories.remove(item)                 
     86               
     87
     88                        random_id=int(random.random()*len(categories))
     89                        random_category=categories[random_id]
     90                        pkgs,categories=self.get_package_list_from_category(random_category)
     91                       
     92                        if len(pkgs) >=10:
     93                                samples=10
     94                        else:
     95                                samples=len(pkgs)
     96                       
     97                        for item in random.sample(pkgs,samples):
     98                                if item["package"]!=pkg_id:
     99                                        p["related_packages"].append(item)
     100                               
     101                        p.fix_info()
     102                       
    71103                        return p
    72104               
    73105        #def get_info
    74106       
    75         def get_package_list(self,category_tag=None):
     107        def get_package_list_from_category(self,category_tag=None):
    76108               
    77109                action="list"
     
    81113                        time.sleep(0.2)
    82114               
     115                packages=[]
    83116                categories=set()
    84                
    85117                banned=set()
    86118               
    87                 for item in self.core.categories_manager.categories:
    88                         banned.add(item)
     119                if category_tag in self.core.categories_manager.categories:
     120                        for item in self.core.categories_manager.categories[category_tag]["sections"]:
     121                                categories.add(item)
    89122               
    90123                for item in self.core.categories_manager.banned_categories:
    91124                        banned.add(item)
    92125                       
    93                
    94                
    95126               
    96127                ret=self.store.get_status(action)
     
    100131                               
    101132                                for category in p["categories"]:
    102                                         if category not in banned and not category.startswith("X-"):
     133                                        if type(category)!=str:
     134                                                continue
     135                                        if category not in banned and not category.startswith("X-") and category in categories:
    103136                                                categories.add(category)
    104137                               
    105                                
    106                 print(categories)
    107                 print("DONE")
     138                                packages.append(p)
    108139               
     140                return(packages,categories)
    109141               
    110142        #def get_package_list
    111143
     144        def get_installed_list(self):
     145               
     146                pkgs,categories=self.get_package_list_from_category()
     147               
     148                ret=[]
     149               
     150                for pkg in pkgs:
     151                       
     152                        if pkg["state"]=="installed":
     153                                p=Package.Package(pkg)
     154                                ret.append(p)
     155                               
     156                return ret
     157                               
     158               
     159        #def get_installed_list
     160
     161       
     162        def install_package(self,pkg_id):
     163               
     164                action="install"
     165                self.store.execute_action(action,pkg_id)
     166               
     167                while self.store.is_action_running():
     168                        time.sleep(0.2)
     169                       
     170                ret=self.store.get_status(action)       
     171                print(ret)
     172               
     173                if ret["status"]==0:
     174                        return True
     175               
     176        #def install_package
     177       
     178        def uninstall_package(self,pkg_id):
     179               
     180                action="remove"
     181                self.store.execute_action(action,pkg_id)
     182               
     183                while self.store.is_action_running():
     184                        time.sleep(0.2)
     185                       
     186                ret=self.store.get_status(action)       
     187                print(ret)
     188               
     189                if ret["status"]==0:
     190                        return True
     191               
     192        #def install_package
     193       
     194       
    112195       
    113196
  • lliurex-store/trunk/fuentes/lliurex-store-gui/MainMenu.py

    r4104 r4109  
    7474                self.categories_flowbox = Gtk.FlowBox()
    7575                self.categories_flowbox.set_max_children_per_line(30)
    76                 self.categories_flowbox.set_column_spacing(1)
    77                 self.categories_flowbox.set_row_spacing(1)
     76                self.categories_flowbox.set_column_spacing(0)
     77                self.categories_flowbox.set_row_spacing(0)
     78                self.categories_flowbox.set_margin_left(10)
     79                self.categories_flowbox.set_margin_right(10)
     80                self.categories_flowbox.set_halign(Gtk.Align.FILL)
    7881               
    7982                self.main_view_box.pack_start(self.categories_flowbox,False,False,10)
     
    157160                        info["y"]=self.banner_large_y
    158161                        info["aspect_ratio"]=True
    159                         info["pkg_name"]=pkg["name"]
     162                        info["name"]=pkg["name"]
     163                        info["package"]=pkg["package"]
    160164                        s.download_image(info)
    161165                        s.set_size_request(self.banner_large_x,self.banner_large_y)
     
    193197                        info["y"]=self.banner_small
    194198                        info["name"]=pkg["name"]
     199                        info["package"]=pkg["package"]
    195200                       
    196201                        if pkg["banner_small"]!=None:
     
    221226                               
    222227                for item in sorted(self.core.categories_manager.categories):
     228                       
     229                       
    223230                       
    224231                        icon_name=self.core.categories_manager.categories[item]["icon"]
     
    250257                                w_counter=0
    251258                                h_counter+=1
    252                
     259                               
     260                       
     261                        '''
     262                       
     263                        icon_name=self.core.categories_manager.categories[item]["icon"]
     264                        label=item
     265               
     266                        b=Gtk.Button()
     267                        b.set_name("RELATED_BUTTON")
     268                        hbox=Gtk.HBox()
     269                        hbox.set_halign(Gtk.Align.START)
     270                                               
     271                        s=Screenshot.ScreenshotNeo()
     272                        i={}
     273                        i["image_path"]=icon_name
     274                        i["x"]=button_size
     275                        i["y"]=button_size
     276                        i["custom_frame"]=True
     277                        i["name"]=label
     278                       
     279                        s.create_banner_from_file(i)
     280                        b.add(s)
     281                        b.connect("clicked",self.category_clicked,item)
     282                       
     283                        b.set_halign(Gtk.Align.CENTER)
     284                        b.set_valign(Gtk.Align.CENTER)
     285                       
     286                        self.categories_flowbox.add(b)
     287                       
     288                        '''
    253289                       
    254290                self.categories_grid.show_all()
     291                #self.categories_flowbox.show_all()
     292               
     293               
     294               
     295               
    255296               
    256297        #def build_categories
     
    284325        def category_clicked(self,widget,category_tag):
    285326               
    286                 print(category_tag)
    287                 self.core.store.get_package_list(category_tag)
     327                self.core.search_box.current_category=category_tag
     328                self.core.main_window.search_category(category_tag)
    288329               
    289330        #def category_clicked
  • lliurex-store/trunk/fuentes/lliurex-store-gui/MainWindow.py

    r4104 r4109  
    188188                self.search_aborted=True
    189189                current_txt=self.location_label.get_text()
    190                 self.location_label.set_text(current_txt + " > " + "Details")
    191                 self.path_followed.append("details")
     190                if self.path_followed[-1]!="details":
     191                        self.location_label.set_text(current_txt + " > " + "Details")
     192                        self.path_followed.append("details")
    192193                self.stack.set_visible_child_name("details")
    193194               
     
    200201                self.search_aborted=True
    201202               
     203                self.search_entry.set_text("")
    202204                self.location_label.set_text("Home")
    203205                self.path_followed=["main"]
     
    206208        #def show_details_box
    207209       
    208         def show_search_results(self):
     210        def show_search_results(self,category=None):
    209211               
    210212                current_txt=self.location_label.get_text()
    211                 if self.path_followed[-1]!="search":
    212                         self.location_label.set_text(current_txt + " > " + "Search")
     213               
     214                if category==None:
     215                        category="Search"
     216               
     217                if self.path_followed[-1]=="details":
     218                        self.path_followed.pop(-1)
     219                        current_txt=" > ".join(current_txt.split(" > ")[0:-1])
     220               
     221                if self.path_followed[-1]=="search":
     222                        current_txt="".join(current_txt.split(" > ")[0:-1])
     223                else:
    213224                        self.path_followed.append("search")
     225                       
     226                self.location_label.set_text(current_txt + " > " + category)
    214227                self.stack.set_visible_child_name("search")
    215228               
     
    415428        # ########################################
    416429       
     430        # ### SEARCH CATEGORIES #### #
     431       
     432        def search_category(self,category):
     433       
     434                if self.search_process.is_alive():
     435                        self.search_process.terminate()
     436       
     437
     438                self.search_aborted=False
     439                self.show_loading()
     440               
     441                self.current_search_id=self.core.get_random_id()
     442                self.counter=0
     443                self.search_queue=multiprocessing.Queue()
     444                self.search_process=multiprocessing.Process(target=self.search_category_thread,args=(category,self.search_queue,))
     445                #self.search_process=threading.Thread(target=self.search_package_thread,args=(pkg_id,self.search_queue,))
     446               
     447                self.search_process.daemon=True
     448                self.search_process.start()
     449               
     450                GLib.timeout_add(500, self.search_category_listener,self.current_search_id)
     451       
     452        #def search_category
     453       
     454        def search_category_thread(self,category,search_queue):
     455               
     456                ret=self.core.store.get_package_list_from_category(category)
     457                self.core.dprint("Search complete")
     458                '''
     459                for p in ret:
     460                        pkg["icon_url"]=self.core.resources.get_icon(p.dic)
     461                        pkg["name"]=p.dic["name"]
     462                        pkg["package"]=pkg_id
     463                        pkg["short_description"]="Package that does a lot of things very well done askdjlaskl jdaklsdjkl asjkl dasjkl djkl asdjkl asdjkl asdjkl asdjkl asdjkl asdjkl asd"
     464                        ret.append(pkg)
     465                '''
     466               
     467                search_queue.put(ret)
     468               
     469
     470               
     471        #def search_package_thread
     472       
     473        def search_category_listener(self,search_id):
     474               
     475                if self.current_search_id!=search_id:
     476                        return False
     477               
     478                if self.search_aborted:
     479                        self.core.dprint("Search aborted [!]")
     480                        self.thread_aborted=False
     481                        return False
     482               
     483                if self.search_process.is_alive():
     484                        self.counter+=1
     485                       
     486                        if self.search_queue.empty():
     487                                return True
     488                       
     489                search_result=self.search_queue.get()
     490               
     491                if search_result!=None:
     492                       
     493                        search_result,categories=search_result
     494                        self.core.search_box.populate_search_results(search_result,categories)
     495                        self.show_search_results(self.core.search_box.current_category)
     496               
     497                return False
     498               
     499        #def search_listener
     500       
     501       
     502       
     503        # ########################
     504       
     505       
     506        # ## INSTALLED LIST QUERY ## #
     507       
     508       
     509        def get_installed_list(self):
     510               
     511                if self.search_process.is_alive():
     512                        self.search_process.terminate()
     513               
     514                self.search_aborted=False
     515                self.show_loading()
     516               
     517                self.current_search_id=self.core.get_random_id()
     518                self.counter=0
     519                self.search_queue=multiprocessing.Queue()
     520                self.search_process=multiprocessing.Process(target=self.get_installed_list_thread,args=(self.search_queue,))
     521                #self.search_process=threading.Thread(target=self.search_package_thread,args=(pkg_id,self.search_queue,))
     522               
     523                self.search_process.daemon=True
     524                self.search_process.start()
     525               
     526                GLib.timeout_add(500, self.search_listener,self.current_search_id)
     527               
     528        #def search_package
     529       
     530        def get_installed_list_thread(self,search_queue):
     531               
     532                ret=self.core.store.get_installed_list()
     533                self.core.dprint("Search complete")
     534                '''
     535                for p in ret:
     536                        pkg["icon_url"]=self.core.resources.get_icon(p.dic)
     537                        pkg["name"]=p.dic["name"]
     538                        pkg["package"]=pkg_id
     539                        pkg["short_description"]="Package that does a lot of things very well done askdjlaskl jdaklsdjkl asjkl dasjkl djkl asdjkl asdjkl asdjkl asdjkl asdjkl asdjkl asd"
     540                        ret.append(pkg)
     541                '''
     542               
     543                search_queue.put(ret)
     544               
     545
     546        #def search_package_thread
     547       
     548       
     549        # ##################### #
     550       
     551       
     552       
    417553
    418554        # ## SCREENSHOTVIEWER FUNCTIONS ## ##############
  • lliurex-store/trunk/fuentes/lliurex-store-gui/PopupMenu.py

    r4104 r4109  
    111111                b.connect("motion-notify-event",self.mouse_over)
    112112                b.connect("leave_notify_event",self.mouse_left)
    113                 b.connect("clicked",self.go_home)
     113                b.connect("clicked",self.get_installed_list)
    114114                       
    115115                b.show_all()
     
    154154                        b.show_all()
    155155                        b.set_name("SECTION_BOX")
     156                       
     157                        b.connect("clicked",self.category_clicked,txt)
     158                       
    156159                        self.popup_menu_left.pack_start(b,True,True,0)
    157160               
     
    178181               
    179182        #def hide_revealer
     183       
     184       
     185        def category_clicked(self,widget,category):
     186               
     187               
     188                self.core.main_window.main_eb_clicked(None,None)
     189                self.core.main_menu.category_clicked(None,category)
     190               
     191        #def category_clicked
     192       
     193        def get_installed_list(self,widget):
     194               
     195                self.core.main_window.main_eb_clicked(None,None)
     196                self.core.main_window.get_installed_list()
     197               
     198        #def get_installed_list
    180199       
    181200        def go_home(self,widget):
  • lliurex-store/trunk/fuentes/lliurex-store-gui/Screenshot.py

    r4099 r4109  
    3737                self.image_info["video_url"]=None
    3838                self.image_info["image_id"]=None
    39                 self.image_info["pkg_name"]=None
     39                self.image_info["package"]=None
    4040                self.image_info["image_path"]=None
    4141                self.image_info["x"]=-1
     
    5252        def set_image_info(self,image_info):
    5353               
    54                 self.image_info["pkg_name"]=image_info.setdefault("pkg_name","")
     54                self.image_info["package"]=image_info.setdefault("package","")
     55                self.image_info["name"]=image_info.setdefault("name","")
    5556                self.image_info["image_path"]=image_info.setdefault("image_path","")
    5657                self.image_info["x"]=image_info.setdefault("x",-1)
     
    199200                               
    200201                                if self.image_info["custom_frame"] or self.image_info["force_label"]:
    201                                         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"])
     202                                        ImageManager.create_banner(self.image_dir+self.image_info["image_id"],self.image_info["x"],self.image_info["y"],self.image_info["name"],self.image_info["custom_frame"],self.image_info["image_path"])
    202203                                       
    203204                        except Exception as e:
    204205                               
     206                               
    205207                                output_file=self.image_info["image_path"]
    206                                 self.image_info["name"]=None
    207                                
    208208                                self.image_info["image_path"]="/usr/share/icons/Vibrancy-Colors/status/96/image-missing.png"
     209                                image=Gtk.Image.new_from_file(self.image_info["image_path"])
     210                                       
    209211                                if self.image_info["video_url"] !=None:
    210212                                        self.image_info["image_path"]="clean_icons/video.svg"
    211                                 self.image_info["custom_frame"]=True
    212                                 self.create_banner_from_file(self.image_info,output_file)
    213                                 self.image_info["image_path"]=output_file
     213                                else:
     214                                        self.image_info["custom_frame"]=True
     215                                        self.image_info["force_label"]=True
     216                               
     217                                ret=ImageManager.create_banner(self.image_info["image_path"],self.image_info["x"],self.image_info["y"],self.image_info["name"],self.image_info["custom_frame"])
     218                                self.image_info["pixbuf"]=ret[1].get_pixbuf()
     219                                self.set_from_pixbuf(self.image_info)
     220                               
    214221               
    215222                else:
     
    227234                custom_frame=image_info.setdefault("custom_frame",False)
    228235                txt=image_info.setdefault("name",None)
    229                 if txt==None:
    230                         txt=image_info.setdefault("pkg_name",None)
     236               
    231237               
    232238                ret=ImageManager.create_banner(file_name,x,y,txt,custom_frame,output_file)
     
    265271                self.image_info["x"]=video_info.setdefault("x")
    266272                self.image_info["y"]=video_info.setdefault("y")
    267                 self.image_info["pkg_name"]=video_info.setdefault("pkg_name","")
     273                self.image_info["package"]=video_info.setdefault("package","")
    268274                               
    269275                self.download_image(video_info)
     
    291297        info["y"]=300
    292298        info["aspect_ratio"]=True
    293         info["pkg_name"]="a"
     299        info["package"]="a"
    294300        s.set_from_file(info)
    295301        vbox.pack_start(Gtk.Label("load from file aspect_ratio=True"),False,False,0)
     
    302308        info["y"]=100
    303309        info["aspect_ratio"]=False
    304         info["pkg_name"]="a"
     310        info["package"]="a"
    305311        s.set_from_file(info)
    306312        vbox.pack_start(Gtk.Label("load from file aspect_ratio=False"),False,False,0)
     
    311317        info["pixbuf"]=Gtk.Image.new_from_file("gearth3.png").get_pixbuf()
    312318        info["aspect_ratio"]=True
    313         info["pkg_name"]="a"
     319        info["package"]="a"
    314320        s.set_from_pixbuf(info)
    315321        vbox.pack_start(Gtk.Label("load from pixbuf aspect_ratio=True"),False,False,0)
     
    320326        info["pixbuf"]=Gtk.Image.new_from_file("gearth3.png").get_pixbuf()
    321327        info["aspect_ratio"]=False
    322         info["pkg_name"]="a"
     328        info["package"]="a"
    323329        info["x"]=100
    324330        info["y"]=100
     
    332338        info["image_id"]="wallpaper"
    333339        info["aspect_ratio"]=True
    334         info["pkg_name"]="a"
     340        info["package"]="a"
    335341        info["x"]=300
    336342        info["y"]=300
     
    344350        info["image_id"]="wallpaper2"
    345351        info["aspect_ratio"]=True
    346         info["pkg_name"]="Package name"
     352        info["package"]="Package name"
    347353        info["x"]=128
    348354        info["y"]=128
     
    359365        info["image_id"]="firefox"
    360366        info["aspect_ratio"]=True
    361         info["pkg_name"]="Firefox"
     367        info["package"]="Firefox"
    362368        info["custom_frame"]=True
    363369        info["x"]=300
     
    372378        info["image_id"]="scite"
    373379        info["aspect_ratio"]=True
    374         info["pkg_name"]="SciTe"
     380        info["package"]="SciTe"
    375381        info["custom_frame"]=False
    376382        info["x"]=200
     
    386392        info["image_id"]="testing"
    387393        info["aspect_ratio"]=True
    388         info["pkg_name"]="Custom banner"
     394        info["package"]="Custom banner"
    389395        info["custom_frame"]=False
    390396        info["force_label"]=True
  • lliurex-store/trunk/fuentes/lliurex-store-gui/SearchBox.py

    r4104 r4109  
    1919                builder.add_from_file(ui_path)
    2020               
    21                 self.label_max_width=65
     21                self.label_max_width=53
    2222               
     23                self.current_category=""
     24                self.current_pkg_list=[]
    2325               
    2426                self.search_box=builder.get_object("search_box2")
     
    2931                self.categories_sw=builder.get_object("categories_scrolledwindow")
    3032               
     33                #self.search_categories_box.set_name("LIGHT_BLUE_BOX")
     34               
    3135                self.add(self.search_box)
    3236                self.show_all()
     
    3438        #def init
    3539       
    36         def populate_search_results(self,pkg_list):
     40       
     41        def populate_search_results(self,pkg_list,categories=None):
    3742               
    38                 x,y=self.core.main_window.window.get_size()
    39                
    40                 size_test=x-80
    41                
    42                 size_test-=100
    43                
    44                 print(x,y)
    45                
    46                
    47                 for children in self.results_search_box.get_children():
    48                         self.results_search_box.remove(children)
     43
     44                for child in self.results_search_box.get_children():
     45                        self.results_search_box.remove(child)
     46       
     47                for child in self.search_categories_box.get_children():
     48                        self.search_categories_box.remove(child)
    4949                       
     50                # restore scroll bar to top
    5051                self.search_sw.get_vadjustment().set_value(0)
    5152               
     53                self.current_pkg_list=pkg_list
     54       
    5255               
    53                 for x in range(0,50):
     56       
    5457               
    55                         hbox=Gtk.HBox()
    56                         hbox.set_name("PKG_BOX")
     58       
     59                if categories!=None:
    5760                       
    58                         label=Gtk.Label("Hola")
    59                         label.set_name("SHORT_DESCRIPTION")
    60                        
    61                         hbox.pack_start(label,True,True,5)
     61                        found_categories=set()
     62       
     63                        for pkg in pkg_list:
     64                                for category in categories:
     65                                        if category in pkg["categories"]:
     66                                                found_categories.add(category)
     67                                                break
    6268                       
    6369                       
    64                         b=Gtk.Button()
    65                         b.set_name("RELATED_BUTTON")
    66                         b.add(hbox)
    67                         b.show_all()
     70               
     71                        found_categories=list(sorted(found_categories))
     72                        found_categories.insert(0,"All")
    6873                       
    69                         b.set_size_request(150,0)
     74                        counter=0
     75               
     76                        for c in found_categories:
    7077                       
    71                         x,y=b.get_size_request()
     78                                hbox=Gtk.HBox()
     79                                hbox.set_name("PKG_BOX")
     80                               
     81                                label=Gtk.Label(c)
     82                                label.set_name("SHORT_DESCRIPTION")
     83                               
     84                                hbox.pack_start(label,True,True,5)
     85                               
     86                               
     87                                b=Gtk.Button()
     88                                b.set_name("RELATED_BUTTON")
     89                                b.add(hbox)
     90                                b.show_all()
     91                               
     92                                #b.set_size_request(150,10)
     93                                b.set_halign(Gtk.Align.FILL)
     94                               
     95                                if counter==0:
     96                                        c=None
     97                               
     98                                b.connect("clicked",self.filter_by,c)
     99                                self.search_categories_box.pack_start(b,False,False,3)
     100                                counter+=1
    72101                       
    73                         x2,y2=self.categories_sw.get_size_request()
     102                        self.categories_sw.show()
    74103                       
    75                         if x > x2:
    76                                 self.categories_sw.set_size_request(x+30,0)
    77                        
    78                        
    79                         self.search_categories_box.pack_start(b,False,False,5)
    80                        
    81                 #self.categories_sw.hide()
     104                else:
     105                        self.categories_sw.hide()
    82106               
    83107                for pkg in pkg_list:
    84108                       
    85                         item_hbox=Gtk.HBox()
    86                         #item_hbox.set_size_request(0,80)
    87                        
    88                         hbox=Gtk.HBox()
    89                         hbox.set_name("PKG_BOX")
    90                        
    91                         vbox=Gtk.VBox()
    92                        
    93                         b=Gtk.Button()
    94                         s=Screenshot.ScreenshotNeo()
    95                         s.set_margin_left(10)
    96                         label=Gtk.Label(pkg["name"])
    97                         label.set_name("RELATED_LABEL")
    98                         label.set_halign(Gtk.Align.START)
    99                         label.set_valign(Gtk.Align.END)
    100                         label.set_ellipsize(Pango.EllipsizeMode.END)
    101                         label.set_max_width_chars(self.label_max_width)
    102                        
    103                         description=Gtk.Label(pkg["summary"])
    104                         description.set_halign(Gtk.Align.START)
    105                         description.set_valign(Gtk.Align.START)
    106                         description.set_name("SHORT_DESCRIPTION")
    107                         description.set_ellipsize(Pango.EllipsizeMode.END)
    108                         description.set_max_width_chars(self.label_max_width)
    109                        
    110                         vbox.pack_start(label,False,False,0)
    111                         vbox.pack_start(description,False,False,0)
    112                         vbox.set_valign(Gtk.Align.CENTER)
    113                        
    114                         hbox.pack_start(s,False,False,5)
    115                         hbox.pack_start(vbox,False,False,5)
    116                        
    117                         i={}
    118                         i["x"]=64
    119                         i["y"]=64
    120                         i["aspect_ratio"]=True
    121                         i["image_path"]=pkg["icon_uri"]
    122                         i["name"]=pkg["name"]
    123                         i["image_id"]=pkg["package"]+"_icon"
    124 
    125                        
    126                         s.set_from_file(i)
    127                         b.add(hbox)
    128                        
    129                         b.connect("clicked",self.result_clicked,pkg)
    130                        
    131                         b.set_size_request(size_test,80)
    132                         b.set_halign(Gtk.Align.CENTER)
    133                         b.set_name("RELATED_BUTTON")
    134                         item_hbox.pack_start(b,True,True,0)
     109                        self.add_pkg_to_list(pkg)
    135110                       
    136111                       
    137                         self.results_search_box.pack_start(item_hbox,False,False,5)
    138                        
     112                #self.results_search_box.set_size_request(50,0)
     113                self.results_search_box.set_halign(Gtk.Align.FILL)
    139114                self.results_search_box.show_all()
    140115               
    141116               
    142117        #def populate_search_results
     118       
     119       
     120        def add_pkg_to_list(self,pkg):
     121               
     122                item_box=Gtk.HBox()
     123                item_box.set_name("PKG_BOX")
     124                       
     125                i={}
     126                i["x"]=64
     127                i["y"]=64
     128                i["aspect_ratio"]=True
     129                i["image_path"]=pkg["icon_uri"]
     130                i["name"]=pkg["name"]
     131                i["image_id"]=pkg["package"]+"_icon"
     132                s=Screenshot.ScreenshotNeo()
     133                s.set_from_file(i)
     134                       
     135                vbox=Gtk.VBox()
     136                       
     137                label=Gtk.Label(pkg["name"])
     138                label.set_name("RELATED_LABEL")
     139                label.set_valign(Gtk.Align.END)
     140                label.set_halign(Gtk.Align.START)
     141                       
     142                description=Gtk.Label(pkg["summary"])
     143                description.set_name("SHORT_DESCRIPTION")
     144                description.set_valign(Gtk.Align.START)
     145                description.set_halign(Gtk.Align.START)
     146                description.set_ellipsize(Pango.EllipsizeMode.END)
     147                description.set_max_width_chars(self.label_max_width)
     148                       
     149                vbox.pack_start(label,True,True,1)
     150                vbox.pack_start(description,True,True,1)
     151                vbox.set_halign(Gtk.Align.START)
     152                       
     153                item_box.pack_start(s,False,False,5)
     154                item_box.pack_start(vbox,True,True,5)
     155                       
     156                b=Gtk.Button()
     157                b.add(item_box)
     158                b.set_name("RELATED_BUTTON")
     159                b.set_valign(Gtk.Align.START)
     160                b.set_halign(Gtk.Align.FILL)
     161                b.connect("clicked",self.result_clicked,pkg)
     162                       
     163                b.set_size_request(0,80)
     164                       
     165                self.results_search_box.pack_start(b,False,False,3)
     166               
     167               
     168               
     169        #def create_item
     170       
     171        def filter_by(self,widget,filter):
     172               
     173                for child in self.results_search_box.get_children():
     174                        self.results_search_box.remove(child)
     175               
     176                                       
     177                for pkg in self.current_pkg_list:
     178                       
     179                        if filter==None:
     180                                self.add_pkg_to_list(pkg)
     181                                continue
     182                        if filter in pkg["categories"]:
     183                                self.add_pkg_to_list(pkg)
     184                       
     185                self.results_search_box.show_all()
     186                       
     187               
     188               
     189        #def filter_by
    143190       
    144191        def result_clicked(self,widget,pkg_data):
  • lliurex-store/trunk/fuentes/lliurex-store-gui/lliurex-store.css

    r4104 r4109  
    1717                       
    1818                }
    19                
    2019               
    2120                #POPUP_SHADOW_LEFTRIGHT
     
    4847                       
    4948                }
     49
     50                #LIGHT_BLUE_BOX{
     51                       
     52                        /*background-color: rgba(0,95,219,1);*/
     53                        background-color: #000000;
     54                }
     55
    5056
    5157
     
    379385                }
    380386               
    381 
    382 
    383 
     387                GtkScrolledWindow {
     388                       
     389                        background-image: none;
     390                        background-color: transparent;
     391                        border: 0px;
     392                }
     393
     394       
     395
     396                GtkFlowBoxChild {
     397                        border: 5px;
     398                }
    384399               
    385400                GtkButton {
     
    483498                }
    484499               
    485                
     500                #TEST{
     501                        background-color: red;
     502                        box-shadow: none;
     503                        background-image: none;
     504                        border: 0px;
     505                }
     506               
  • lliurex-store/trunk/fuentes/lliurex-store-gui/lliurex-store.ui

    r4104 r4109  
    445445            <property name="visible">True</property>
    446446            <property name="can_focus">True</property>
     447            <property name="overlay_scrolling">False</property>
    447448            <child>
    448449              <placeholder/>
     
    700701      </packing>
    701702    </child>
     703    <child>
     704      <placeholder/>
     705    </child>
    702706  </object>
    703707  <object class="GtkBox" id="popup_box">
     
    719723                <property name="can_focus">False</property>
    720724                <property name="orientation">vertical</property>
    721                 <property name="spacing">6</property>
    722725                <child>
    723726                  <object class="GtkBox" id="box1">
     
    896899            <property name="visible">True</property>
    897900            <property name="can_focus">True</property>
    898             <property name="overlay_scrolling">False</property>
     901            <property name="hscrollbar_policy">never</property>
    899902            <child>
    900903              <object class="GtkViewport" id="viewport4">
     
    906909                    <property name="visible">True</property>
    907910                    <property name="can_focus">False</property>
    908                     <property name="halign">center</property>
     911                    <property name="margin_left">10</property>
     912                    <property name="margin_right">10</property>
    909913                    <property name="margin_top">10</property>
    910914                    <property name="margin_bottom">10</property>
     
    928932            <property name="visible">True</property>
    929933            <property name="can_focus">True</property>
    930             <property name="overlay_scrolling">False</property>
    931934            <child>
    932935              <object class="GtkViewport" id="viewport5">
    933936                <property name="visible">True</property>
    934937                <property name="can_focus">False</property>
     938                <property name="hscroll_policy">natural</property>
     939                <property name="vscroll_policy">natural</property>
    935940                <property name="shadow_type">none</property>
    936941                <child>
     
    939944                    <property name="can_focus">False</property>
    940945                    <property name="halign">center</property>
     946                    <property name="margin_left">5</property>
     947                    <property name="margin_right">5</property>
    941948                    <property name="margin_top">10</property>
    942949                    <property name="margin_bottom">10</property>
     
    969976    <property name="default_width">800</property>
    970977    <property name="default_height">800</property>
     978    <property name="has_resize_grip">True</property>
    971979    <child>
    972980      <placeholder/>
Note: See TracChangeset for help on using the changeset viewer.