creating one window with toolbar presentation alex2ndr/p-a-c
author“Alexandr <“popov2al@gmail.com”>
Sun, 12 Apr 2009 14:24:52 +0000 (18:24 +0400)
committer“Alexandr <“popov2al@gmail.com”>
Sun, 12 Apr 2009 14:24:52 +0000 (18:24 +0400)
src/core.py
src/outtable.py
src/pkgsearch.py

index e8728f4..98074a8 100644 (file)
@@ -8,29 +8,13 @@ class Core_Control(object):
     def __init__(self):
         from config import Config_Control
         self.cfg = Config_Control()
-               
-        core_present = Core_Presentation(self.cfg.get('window_width'), \
-                self.cfg.get('window_height'), self.chooser)
-        core_present.run()
-
-    def chooser(self, search_type, show_type):
-        if show_type is 'table_view':
-            from outtable import Out_Table_Control
-            out = Out_Table_Control(self.cfg)
-        elif show_type is 'diag_view':
-            from outdiag import Out_Diag_Control
-            out = Out_Diag_Control(self.cfg)
-            
-        if search_type is 'large_file':
-            from filesearch import Search_File_Control
-            search = Search_File_Control(self.cfg, out)
-
-        elif search_type is 'large_pkg':
-            from pkgsearch import Search_Pkg_Control
-            search = Search_Pkg_Control(self.cfg, out)
-
-        search.run()
 
+        core_present = Core_Presentation(self.cfg.get('window_width'), self.cfg.get('window_height'))
+        
+        from pkgsearch import Search_Pkg_Control
+        searchpkg = Search_Pkg_Control(self.cfg, core_present.show_work_widget)
+        
+        core_present.run(searchpkg.get_ui(), searchpkg.get_ui(), searchpkg.get_ui())
 
 class Core_Abstraction(object):
     pass
@@ -38,60 +22,39 @@ class Core_Abstraction(object):
 
 class Core_Presentation(gtk.Window):
     """Main window class."""
-    def __init__(self, win_width, win_height, func_chooser):
+    def __init__(self, win_width, win_height):
         gtk.Window.__init__(self)
         self.set_default_size(win_width, win_height)
         self.set_border_width(4)
         self.connect('delete_event', gtk.main_quit)
         self.set_wmclass('GtkWindow', 'FindIT')
         
-        label1 = gtk.Label('Choice search type')
-        srch_butt1 = gtk.RadioButton(None, 'Search Largest File')
-        srch_butt1.connect('toggled', self.srch_type, 'large_file')
-        srch_butt1.set_active(True)
-        srch_butt2 = gtk.RadioButton(srch_butt1, 'Search Largest Package')
-        srch_butt2.connect('toggled', self.srch_type, 'large_pkg')
-        self.search = 'large_file'
-        separator1 = gtk.HSeparator()
+        hbox = gtk.HBox(False, 4)
+        self.srch_butt1 = gtk.Button('file')
+        self.srch_butt2 = gtk.Button('pkg')
+        hbox.pack_start(self.srch_butt1, False, False, 2)
+        hbox.pack_start(self.srch_butt2, False, False, 2)
 
-        label2 = gtk.Label('Choice show type')
-        show_butt1 = gtk.RadioButton(None, 'Show in Table view')
-        show_butt1.connect('toggled', self.show_type, 'table_view')
-        show_butt1.set_active(True)
-        show_butt2 = gtk.RadioButton(show_butt1, 'Show in Diagram view')
-        show_butt2.connect('toggled', self.show_type, 'diag_view')
-        self.show = 'table_view'
-        separator2 = gtk.HSeparator()
-
-        self.butt_next = gtk.Button('Next >')
-        self.butt_next.connect('released', self.next_wind, func_chooser)
+        self.widget_vbox = gtk.VBox(False, 0)
 
         main_vbox = gtk.VBox(False, 4)
-        main_vbox.pack_start(label1, False, False, 10)
-        main_vbox.pack_start(srch_butt1, False, False, 2)
-        main_vbox.pack_start(srch_butt2, False, False, 2)
-        main_vbox.pack_start(separator1, False, False, 2)
-        main_vbox.pack_start(label2, False, False, 10)
-        main_vbox.pack_start(show_butt1, False, False, 2)
-        main_vbox.pack_start(show_butt2, False, False, 2)
-        main_vbox.pack_start(separator2, False, False, 2)
-        main_vbox.pack_start(self.butt_next, False, False, 20)
+        main_vbox.pack_start(hbox, False, False, 10)
+        main_vbox.pack_start(self.widget_vbox, False, False, 2)
         self.add(main_vbox)
 
-    def run(self):
+    def run(self, init_srch, srch1, srch2):
+        self.srch_butt1.connect('released', self.show_work_widget, srch1)
+        self.srch_butt2.connect('released', self.show_work_widget, srch2)
+        self.widget_vbox.add(init_srch)
         self.show_all()
         gtk.main()
     
-    def srch_type(self, widget, data):
-        self.search = data
-
-    def show_type(self, widget, data):
-        self.show = data
-
-    def next_wind(self, widget, func_chooser):
-        self.destroy()
-        gtk.main_quit()
-        func_chooser(self.search, self.show)
+    def show_work_widget(self, widget, new_widget):
+        if self.widget_vbox.get_children()[0]:
+            self.widget_vbox.remove(self.widget_vbox.get_children()[0])
+        self.widget_vbox.add(new_widget)
+        self.show_all()
+        print 'redraw'
 
 if __name__ == '__main__':
     Core_Control()
index 83aec24..753d8bc 100644 (file)
@@ -7,30 +7,22 @@ import gobject
 from misc import size_hum_read
 
 class Out_Table_Control(object):
-    def __init__(self, config):
-        win_width = config.get('window_width')
-        win_height = config.get('window_height')
-        self.out_ui = Out_Table_Presentation(win_width, win_height)
+    def __init__(self):
+        self.out_ui = Out_Table_Presentation()
 
     def show(self, filelist, flsize):
         self.out_ui.show_result(filelist, flsize)
 
-    def run(self):
-        self.out_ui.run()
-
+    def get_ui(self):
+        return self.out_ui.get_ui()
 
 class Out_Table_Abstraction(object):
     pass
 
-
-class Out_Table_Presentation(gtk.Window):
-    def __init__(self, win_width, win_height):
+class Out_Table_Presentation(object):
+    def __init__(self):
         # Список файлов
-        gtk.Window.__init__(self)
-        self.set_default_size(win_width, win_height)
-        self.set_border_width(4)
-        self.connect('delete_event', gtk.main_quit) 
-
+    
         scrollwind = gtk.ScrolledWindow()
         scrollwind.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
 
@@ -64,10 +56,9 @@ class Out_Table_Presentation(gtk.Window):
         scrollwind.add(self.treeview)
         self.label = gtk.Label('full dir size = ')
         
-        vbox = gtk.VBox(False, 5)
-        vbox.pack_start(scrollwind, True, True, 0)
-        vbox.pack_start(self.label, False, False,0)
-        self.add(vbox)
+        self.vbox = gtk.VBox(False, 5)
+        self.vbox.pack_start(scrollwind, True, True, 0)
+        self.vbox.pack_start(self.label, False, False,0)
 
     def show_result(self, filelist, fullsize):
         self.liststore.clear()
@@ -76,6 +67,5 @@ class Out_Table_Presentation(gtk.Window):
         flsizestr = 'full dir size = %s' % size_hum_read(fullsize)
         self.label.set_text(flsizestr)
 
-    def run(self):
-        self.show_all()
-        gtk.main()
+    def get_ui(self):
+        return self.vbox
index 62fd14e..fcdc97e 100644 (file)
@@ -10,24 +10,27 @@ from misc import size_hum_read
 class Search_Pkg_Control(object):
 
     def __init__(self, config, show_funct):
-        win_width = config.get('window_width')
-        win_height = config.get('window_height')
         count = config.get('default_pkg_count')
         self.show_func = show_funct
         self.abstr = Search_Pkg_Abstraction()
-        self.present = Search_Pkg_Presentation(win_width, win_height, count, self.start_search)
+        self.present = Search_Pkg_Presentation(count, self.start_search)
 
-    def start_search(self, count, kill_func):
+    def start_search(self, count, show_type):
         pkglist = []
         for psize, packg in nlargest(count, self.abstr.pkggetter()):
             pkglist.append([packg, size_hum_read(psize), psize])
-        kill_func()
-        self.show_func.show(pkglist, self.abstr.full())
-        self.show_func.run()
-
-    def run(self):
-        self.present.run()
-
+        
+        if show_type is 'table_view':
+            from outtable import Out_Table_Control
+            out = Out_Table_Control()
+        #elif show_type is 'diag_view':
+        #    from outdiag import Out_Diag_Control
+        #    out = Out_Diag_Control(self.cfg)
+        out.show(pkglist, self.abstr.full())
+        self.show_func(None, out.get_ui())
+
+    def get_ui(self):
+        return self.present.get_ui()
 
 class Search_Pkg_Abstraction(object):
 
@@ -49,16 +52,10 @@ class Search_Pkg_Abstraction(object):
         return self.fullsize
 
 
-class Search_Pkg_Presentation(gtk.Window):
-
-    def __init__(self, win_width, win_height, count, st_func):
-        """Create MainWindow."""
-        # Создаем новое окно
-        gtk.Window.__init__(self)
-        self.set_default_size(win_width, win_height)
-        self.set_border_width(4)
-        self.connect('delete_event', gtk.main_quit)
+class Search_Pkg_Presentation(object):
 
+    def __init__(self, count, st_func):
+        
         label1 = gtk.Label('Files quantity')
         # Окошко ввода количества файлов, мин значение=1 макс=65536 по умолчанию 10
         adj = gtk.Adjustment(count, 1, 65536, 1, 5, 0)
@@ -67,33 +64,39 @@ class Search_Pkg_Presentation(gtk.Window):
         hbox = gtk.HBox(False, 0)
         hbox.pack_start(label1, False, False, 5)
         hbox.pack_start(self.file_cnt, False, False, 0)
-
-        self.butt_start = gtk.Button('Go >')
-        self.butt_start.connect('released', self.start_srch, st_func)
         
-        self.butt_prev = gtk.Button('< Previous')
-        #self.butt_prev.connect('released', self.show_prev, prev_window)
+        label2 = gtk.Label('Choice show type')
+        show_butt1 = gtk.RadioButton(None, 'Show in Table view')
+        show_butt1.connect('toggled', self.show_type, 'table_view')
+        show_butt1.set_active(True)
+        show_butt2 = gtk.RadioButton(show_butt1, 'Show in Diagram view')
+        show_butt2.connect('toggled', self.show_type, 'table_view')
+        self.show = 'table_view'
+
+        butt_start = gtk.Button('START')
+        butt_start.connect('released', self.start_srch, st_func)
         
-        hbox1 = gtk.HBox(False, 0)
-        hbox1.pack_start(self.butt_prev, False, False, 5)
-        hbox1.pack_start(self.butt_start, False, False, 5)
-
-        vbox = gtk.VBox(False, 0)
-        vbox.pack_start(hbox, False, False, 5)
-        vbox.pack_start(hbox1, False, False, 5)
+        vbox1 = gtk.VBox(False, 0)
+        vbox1.pack_start(label2, False, False, 5)
+        vbox1.pack_start(show_butt1, False, False, 5)
+        vbox1.pack_start(show_butt2, False, False, 5)
 
-        self.add(vbox)
+        self.vbox = gtk.VBox(False, 0)
+        self.vbox.pack_start(hbox, False, False, 5)
+        self.vbox.pack_start(vbox1, False, False, 5)
+        self.vbox.pack_start(butt_start, False, False, 5)
 
-    def kill_wind(self):
-        self.destroy()
-        gtk.main_quit()
+    def show_type(self, widget, data):
+        self.show = data
 
     def get_data(self):
         return int( self.file_cnt.get_value() )
+    
+    def get_show_type(self):
+        return self.show
 
-    def run(self):
-        self.show_all()
-        gtk.main()
+    def get_ui(self):
+        return self.vbox
 
     def start_srch(self, widget, start_func):
-        start_func(self.get_data(), self.kill_wind)
+        start_func(self.get_data(), self.get_show_type())