Ignore:
Timestamp:
Oct 25, 2018, 9:35:01 AM (14 months ago)
Author:
hectorgh
Message:

search related by threads

Location:
lliurex-store/trunk/fuentes/lliurex-store-gui/usr/share/lliurex-store/lliurex-store-gui
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • lliurex-store/trunk/fuentes/lliurex-store-gui/usr/share/lliurex-store/lliurex-store-gui/DetailsBox.py

    r7721 r8187  
    1616import os
    1717import html2text
     18import random
     19import copy
    1820
    1921import gettext
     
    4244                self.full_info_box=Gtk.HBox()
    4345                self.pack_start(self.full_info_box,True,True,5)
     46               
     47                self.related_aborted=False
     48                self.current_id=None
    4449               
    4550                # ####### LEFT SIDE ######
     
    263268        def set_package_info(self,pkg):
    264269               
     270                self.current_id=random.random()
     271               
    265272                info={}
    266273               
     
    363370                for p in self.related_box.get_children():
    364371                        self.related_box.remove(p)
    365                        
     372               
     373                categories=copy.deepcopy(pkg["categories"])
     374               
     375                self.related=None
     376               
     377                self.related_thread=threading.Thread(target=self.search_related_packages_from_categories_thread,args=(pkg["package"],categories,self.current_id))
     378                self.related_thread.daemon=True
     379                self.related_thread.start()
     380                GLib.timeout_add(500,self.related_pkg_listener,self.current_id)
     381               
     382                '''
    366383                for p in pkg["related_packages"]:
    367384                       
     
    402419                self.related_sw.get_hadjustment().set_value(0)
    403420                self.related_box.show_all()
     421                '''
    404422               
    405423                for x in self.screenshots_box.get_children():
     
    408426               
    409427        #def set_values
     428       
     429       
     430        def search_related_packages_from_categories_thread(self,pkg,categories,id):
     431
     432                self.related=self.core.store.get_random_packages_from_categories(pkg,categories)
     433               
     434        #def search_related_packages_from_categories_thread
     435       
     436        def related_pkg_listener(self,id):
     437               
     438                if id!=self.current_id:
     439                        return False
     440                       
     441                if self.related_thread.is_alive():
     442                        return True
     443                       
     444                if self.related!=None:
     445                       
     446                       
     447                        for p in self.related["related_packages"]:
     448                               
     449                                image=Screenshot.ScreenshotNeo()
     450
     451                                i={}
     452                                i["image_id"]=p["package"]+"_banner_small"
     453                                i["x"]=self.banner_small
     454                                i["y"]=self.banner_small
     455                                i["name"]=p["package"].capitalize()
     456                                i["package"]=p["package"]
     457                                i["icon"]=p["icon"]
     458                                i["component"]=p["component"]
     459
     460                                if p["banner"]!=None:
     461                                        i["image_url"]=p["banner"]
     462                                        i["custom_frame"]=False
     463                                else:
     464                                        i["image_path"]=self.core.resources.get_icon(p)
     465                                        i["custom_frame"]=True
     466                                       
     467                                if not i["custom_frame"]:
     468                                        image.download_image(i)
     469                                else:
     470                                        i["force_text"]=True
     471                                        image.create_banner_from_file(i)
     472                               
     473                                b=Gtk.Button()
     474                                b.add(image)
     475                                b.set_size_request(self.banner_small,self.banner_small)
     476                                b.set_margin_top(10)
     477                                b.connect("clicked",self.related_app_clicked,p)
     478                                b.set_name("RELATED_BUTTON")
     479                                b.set_valign(Gtk.Align.CENTER)
     480                                b.set_tooltip_text(p["name"])
     481                                self.related_box.pack_start(b,False,False,3)
     482                       
     483                        self.related_sw.get_hadjustment().set_value(0)
     484                        self.related_box.show_all()                     
     485                       
     486                       
     487                return False
     488                       
     489        #def related_pkg_listener
    410490       
    411491       
  • lliurex-store/trunk/fuentes/lliurex-store-gui/usr/share/lliurex-store/lliurex-store-gui/LliurexStoreManager.py

    r8183 r8187  
    8484                                        categories.remove(item)                 
    8585               
    86                
     86                        '''
    8787                        if len(categories)>0:
    8888
     
    103103                                p.fix_info()
    104104                       
     105                        '''
     106                       
    105107                        return p
    106108               
    107109        #def get_info
     110       
     111       
     112        def get_random_packages_from_categories(self,pkg_id,categories):
     113               
     114                for item in self.core.categories_manager.categories:
     115                        if item in categories and len(categories) > 1:
     116                                categories.remove(item)
     117               
     118                for item in self.core.categories_manager.banned_categories:
     119                        if item in categories and len(categories) > 1:
     120                                categories.remove(item)
     121               
     122                random_id=int(random.random()*len(categories))
     123                               
     124                random_category=categories[random_id]
     125                pkgs,categories=self.get_package_list_from_category(random_category)
     126               
     127                p=Package.Package({})
     128                p.fix_info()
     129                               
     130                if len(pkgs) >=10:
     131                        samples=10
     132                else:
     133                        samples=len(pkgs)
     134                               
     135                for item in random.sample(pkgs,samples):
     136                        if item["package"]!=pkg_id:
     137                                p["related_packages"].append(item)
     138                                       
     139                p.fix_info()
     140               
     141                return p
     142               
     143        #def get_random_packages_from_categories
    108144       
    109145       
  • lliurex-store/trunk/fuentes/lliurex-store-gui/usr/share/lliurex-store/lliurex-store-gui/MainWindow.py

    r7440 r8187  
    99import multiprocessing
    1010import time
     11import copy
    1112
    1213import gettext
Note: See TracChangeset for help on using the changeset viewer.