From 497e0fe515b8997c5b7b848ca63f35411737d02d Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E2=80=9CAlexandr?= <“popov2al@gmail.com”> Date: Sun, 12 Apr 2009 18:24:52 +0400 Subject: [PATCH] creating one window with toolbar presentation --- src/core.py | 87 ++++++++++++++++-------------------------------------- src/outtable.py | 34 ++++++++------------- src/pkgsearch.py | 83 ++++++++++++++++++++++++++------------------------- 3 files changed, 80 insertions(+), 124 deletions(-) diff --git a/src/core.py b/src/core.py index e8728f4..98074a8 100644 --- a/src/core.py +++ b/src/core.py @@ -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() diff --git a/src/outtable.py b/src/outtable.py index 83aec24..753d8bc 100644 --- a/src/outtable.py +++ b/src/outtable.py @@ -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 diff --git a/src/pkgsearch.py b/src/pkgsearch.py index 62fd14e..fcdc97e 100644 --- a/src/pkgsearch.py +++ b/src/pkgsearch.py @@ -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()) -- 1.7.9.5