e8728f4be580823e1b7a4aa5490a33925e41b099
[findit] / src / core.py
1 #!/usr/bin/env python
2 # -*-coding: utf-8 -*-
3 # vim: sw=4 ts=4 expandtab ai
4
5 import gtk
6
7 class Core_Control(object):
8     def __init__(self):
9         from config import Config_Control
10         self.cfg = Config_Control()
11                
12         core_present = Core_Presentation(self.cfg.get('window_width'), \
13                 self.cfg.get('window_height'), self.chooser)
14         core_present.run()
15
16     def chooser(self, search_type, show_type):
17         if show_type is 'table_view':
18             from outtable import Out_Table_Control
19             out = Out_Table_Control(self.cfg)
20         elif show_type is 'diag_view':
21             from outdiag import Out_Diag_Control
22             out = Out_Diag_Control(self.cfg)
23             
24         if search_type is 'large_file':
25             from filesearch import Search_File_Control
26             search = Search_File_Control(self.cfg, out)
27
28         elif search_type is 'large_pkg':
29             from pkgsearch import Search_Pkg_Control
30             search = Search_Pkg_Control(self.cfg, out)
31
32         search.run()
33
34
35 class Core_Abstraction(object):
36     pass
37
38
39 class Core_Presentation(gtk.Window):
40     """Main window class."""
41     def __init__(self, win_width, win_height, func_chooser):
42         gtk.Window.__init__(self)
43         self.set_default_size(win_width, win_height)
44         self.set_border_width(4)
45         self.connect('delete_event', gtk.main_quit)
46         self.set_wmclass('GtkWindow', 'FindIT')
47         
48         label1 = gtk.Label('Choice search type')
49         srch_butt1 = gtk.RadioButton(None, 'Search Largest File')
50         srch_butt1.connect('toggled', self.srch_type, 'large_file')
51         srch_butt1.set_active(True)
52         srch_butt2 = gtk.RadioButton(srch_butt1, 'Search Largest Package')
53         srch_butt2.connect('toggled', self.srch_type, 'large_pkg')
54         self.search = 'large_file'
55         separator1 = gtk.HSeparator()
56
57         label2 = gtk.Label('Choice show type')
58         show_butt1 = gtk.RadioButton(None, 'Show in Table view')
59         show_butt1.connect('toggled', self.show_type, 'table_view')
60         show_butt1.set_active(True)
61         show_butt2 = gtk.RadioButton(show_butt1, 'Show in Diagram view')
62         show_butt2.connect('toggled', self.show_type, 'diag_view')
63         self.show = 'table_view'
64         separator2 = gtk.HSeparator()
65
66         self.butt_next = gtk.Button('Next >')
67         self.butt_next.connect('released', self.next_wind, func_chooser)
68
69         main_vbox = gtk.VBox(False, 4)
70         main_vbox.pack_start(label1, False, False, 10)
71         main_vbox.pack_start(srch_butt1, False, False, 2)
72         main_vbox.pack_start(srch_butt2, False, False, 2)
73         main_vbox.pack_start(separator1, False, False, 2)
74         main_vbox.pack_start(label2, False, False, 10)
75         main_vbox.pack_start(show_butt1, False, False, 2)
76         main_vbox.pack_start(show_butt2, False, False, 2)
77         main_vbox.pack_start(separator2, False, False, 2)
78         main_vbox.pack_start(self.butt_next, False, False, 20)
79         self.add(main_vbox)
80
81     def run(self):
82         self.show_all()
83         gtk.main()
84     
85     def srch_type(self, widget, data):
86         self.search = data
87
88     def show_type(self, widget, data):
89         self.show = data
90
91     def next_wind(self, widget, func_chooser):
92         self.destroy()
93         gtk.main_quit()
94         func_chooser(self.search, self.show)
95
96 if __name__ == '__main__':
97     Core_Control()