Ignore:
Timestamp:
Mar 1, 2017, 6:31:23 PM (3 years ago)
Author:
hectorgh
Message:

wip

File:
1 edited

Legend:

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

    r3773 r3796  
    77
    88import threading
     9import multiprocessing
    910import gettext
    1011import signal
     
    2223                self.core=Core.Core.get_core()
    2324                self.load_thread=threading.Thread()
     25                self.search_process=multiprocessing.Process()
    2426                self.thread_aborted=False
     27                self.search_aborted=False
     28                self.last_search=""
    2529                self.load_gui()
    2630               
    2731        #def init
     32       
     33
     34       
     35        # ### MAIN UI FUNCTIONS # ####################
    2836       
    2937        def load_gui(self):
     
    4149                self.main_box=builder.get_object("main_box")
    4250                self.header_box=builder.get_object("header_box")
    43                 test_box=builder.get_object("box1")
    44                 test_box.set_name("INSTALL_BUTTON")
    45                
     51               
     52                self.main_menu=self.core.main_menu
     53                self.loading_box=self.core.loading_box
    4654                self.details_box=self.core.details_box
    47                
     55                self.popup_menu=self.core.popup_menu
     56                self.screenshot_viewer=self.core.screenshot_viewer
     57                self.search_box=self.core.search_box
    4858               
    4959                self.stack=Gtk.Stack()
     
    5161                self.stack.set_transition_duration(500)
    5262               
    53                 self.main_menu=self.core.main_menu
    54                
    55                 import random
    56                 id=int(random.random()*2)
    57                 #self.main_menu.testbutton.connect("clicked",self.load_pkg_data,id)
    58                
    59                 self.loading_box=self.core.loading_box
    60                
    6163                self.stack.add_titled(self.loading_box,"loading","Loading")
    6264                self.stack.add_titled(self.main_menu,"main","Main")
    6365                self.stack.add_titled(self.details_box,"details","Details")
    64                
     66                self.stack.add_titled(self.search_box,"search","Search")
    6567                self.main_scroll.add(self.stack)
    66                
    67                 self.load_thread=threading.Thread(target=self.download_home_info_thread)
    68                 self.load_thread.daemon=True
    69                 self.load_thread.start()
    70                
    71                 GLib.timeout_add(500,self.load_home)
    72                
    73                
    74                
     68       
    7569                self.overlay=Gtk.Overlay()
    7670                self.main_eb=Gtk.EventBox()
     
    8377                self.overlay.show_all()
    8478               
    85                 self.popup_menu=self.core.popup_menu
    86                
    87                
    88                 self.screenshot_viewer=self.core.screenshot_viewer
    89 
    9079                self.fade_box_revealer=Gtk.Revealer()
    9180                self.fade_box_revealer.set_valign(Gtk.Align.END)
     
    10796                self.overlay.add_overlay(self.popup_menu)
    10897                self.overlay.add_overlay(self.screenshot_viewer)
    109                
    110                
    111                
    112                 for x in self.details_box.screenshots_box.get_children():
    113                         x.connect("clicked",self.screenshot_clicked)
    114                
     98
    11599                self.window.add(self.overlay)
     100               
     101                self.connect_signals()
    116102                self.set_css_info()
    117                
    118                 self.window.connect("size-allocate",self.window_size_changed)
    119                 self.window.connect("destroy",Gtk.main_quit)
    120                 self.menu_button.connect("clicked",self.menu_button_clicked)
    121                
     103                self.build_home()
    122104               
    123105                self.window.show_all()
    124                
    125106               
    126107        #def load_gui
     
    141122               
    142123        #def set-css_info       
     124
     125       
     126        def connect_signals(self):
     127               
     128                self.window.connect("size-allocate",self.window_size_changed)
     129                self.window.connect("destroy",Gtk.main_quit)
     130                self.menu_button.connect("clicked",self.menu_button_clicked)
     131                self.search_entry.connect("changed",self.search_entry_changed)
     132               
     133        #def connect_signals
    143134       
    144135       
     
    150141        #def start_gui
    151142
     143        # #################################################### ##
     144
     145
     146
     147        # #### STACK FAST ACCESS FUNCTIONS # #################
     148       
     149        def show_loading(self):
     150               
     151                self.stack.set_visible_child_name("loading")
     152               
     153        #def kk
     154
     155
     156        def show_details_box(self):
     157               
     158                self.thread_aborted=True
     159                self.search_aborted=True
     160                self.stack.set_visible_child_name("details")
     161               
     162        #def show_details_box
     163
     164
     165        def show_home(self):
     166               
     167                self.thread_aborted=True
     168                self.search_aborted=True
     169                self.search_entry.set_text("")
     170                self.location_label.set_text("Home")
     171                self.stack.set_visible_child_name("main")
     172               
     173        #def show_details_box
     174       
     175        def show_search_results(self):
     176               
     177                self.location_label.set_text("Search")
     178                self.stack.set_visible_child_name("search")
     179               
     180        #def show_search_results
     181       
     182        # ############################################
     183
     184
     185
    152186        # ### HOME LOADING FUNCTIONS # ##############
    153187       
    154         def load_home(self):
     188        def build_home(self):
     189               
     190                self.load_thread=threading.Thread(target=self.download_home_info_thread)
     191                self.load_thread.daemon=True
     192                self.load_thread.start()
     193               
     194                GLib.timeout_add(500,self.build_home_listener)
     195               
     196        #def build_home
     197
     198
     199        def build_home_listener(self):
    155200               
    156201                if self.thread_aborted:
     
    177222       
    178223        # #################################
     224
     225       
    179226       
    180227        # ### LOAD PKG FUNCTIONS # ##################
     
    217264       
    218265        # #################################
    219        
    220        
    221         def show_loading(self):
    222                
    223                 self.stack.set_visible_child_name("loading")
    224                
    225         #def kk
    226                
    227         def show_details_box(self):
    228                
    229                 self.stack.set_visible_child_name("details")
    230                
    231         #def show_details_box
    232        
    233         def show_home(self):
    234                
    235                 self.stack.set_visible_child_name("main")
    236                
    237         #def show_details_box
    238        
    239 
     266
     267
     268        # ## SEARCH FUNCTIONS ######################
     269       
     270        def search_entry_changed(self,widget):
     271               
     272                txt=widget.get_text()
     273                current_stack=self.stack.get_visible_child_name()
     274                txt=txt.strip(" ")
     275               
     276                if self.last_search!=txt:
     277                        self.last_search=txt
     278                else:
     279                        return
     280               
     281                if len(txt)==0:
     282                        self.show_home()
     283                        return
     284                       
     285                if len(txt)>2:
     286                        self.search_aborted=False
     287                        self.show_loading()
     288                        self.search_package(txt)
     289               
     290        #def search_entry_changed
     291       
     292        def search_package(self,pkg_id):
     293               
     294                if self.search_process.is_alive():
     295                        self.search_process.terminate()
     296               
     297                self.current_search_id=self.core.get_random_id()
     298                self.search_queue=multiprocessing.Queue()
     299                self.search_process=multiprocessing.Process(target=self.search_package_thread,args=(pkg_id,self.search_queue,))
     300               
     301                self.search_process.daemon=True
     302                self.search_process.start()
     303               
     304                GLib.timeout_add(500, self.search_listener,self.current_search_id)
     305               
     306        #def search_package
     307       
     308        def search_package_thread(self,pkg_id,search_queue):
     309               
     310                time.sleep(2)
     311                self.core.dprint("Search complete")
     312               
     313                ret=[]
     314               
     315                for x in range(0,10):
     316                        pkg={}
     317                        pkg["icon_url"]="https://upload.wikimedia.org/wikipedia/en/thumb/e/e3/Firefox-logo.svg/1072px-Firefox-logo.svg.png"
     318                        pkg["name"]=pkg_id.capitalize()
     319                        pkg["debian_name"]=pkg_id
     320                        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"
     321                        ret.append(pkg)
     322               
     323                search_queue.put(ret)
     324               
     325        #def search_package_thread
     326       
     327        def search_listener(self,search_id):
     328               
     329                if self.current_search_id!=search_id:
     330                        return False
     331               
     332                if self.search_aborted:
     333                        self.thread_aborted=False
     334                        return False
     335               
     336                if self.search_process.is_alive():
     337                        return True
     338                       
     339                       
     340                search_result=self.search_queue.get()
     341                if search_result!=None:
     342                        self.core.search_box.populate_search_results(search_result)
     343                        self.show_search_results()
     344               
     345                return False
     346               
     347        #def search_listener
     348       
     349
     350        # ########################################
     351       
     352
     353        # ## SCREENSHOTVIEWER FUNCTIONS ## ##############
     354       
    240355        def window_size_changed(self,widget,allocation):
    241356               
     
    267382        #def screenshot_clicked
    268383       
     384        # ####################################### #
     385
     386
     387
     388        # ## POPUP MENU FUNCTIONS # #####################
    269389
    270390        def main_eb_clicked(self,widget,event):
     
    302422        #def check_fade_out
    303423       
    304        
     424        # ########################################## #
     425       
     426
    305427
    306428       
Note: See TracChangeset for help on using the changeset viewer.