3 # vim: sw=4 ts=4 expandtab ai
4 # main.py --search files -o outtable -p ". 3"
8 from config import Config
10 __progname__ = 'FindIT'
13 #==============================================================================
15 class Control(object):
19 self.abstrac = Abstraction()
21 if(len(sys.argv) > 1):
22 Cli_Presentation() ###
24 Gtk_Presentation(config, self.abstrac) ###
26 #==============================================================================
28 class Abstraction(object):
31 #==============================================================================
33 class Cli_Presentation(object):
36 from optparse import OptionParser
38 parser = OptionParser()
39 parser.add_option('--search', '-s', dest='search', type='string')
40 parser.add_option('--output', '-o', dest='output', type='string')
41 parser.add_option('--params', '-p', dest='params', type='string')
42 (options, args) = parser.parse_args()
47 config['search'] = options.search
48 config['outtype'] = options.output
49 config['ignore_dirs'] = ['/dev', '/proc', '/sys', '/mnt']
50 config['start_path'] = options.params.split(' ')[0]
51 config['count'] = options.params.split(' ')[1]
53 self.show_search_toplevel(config)
55 def show_search_toplevel(self, config):
56 search_module = __import__(config['search'] + '.search')
57 search_toplevel = search_module.search.Control('cli', config).run()
59 #==============================================================================
61 class Gtk_Presentation(object):
62 """Main window class."""
64 def __init__(self, config, abstrac):
70 """Create main menu."""
71 menubar = gtk.MenuBar()
72 fileitem = gtk.MenuItem( '_File' )
73 viewitem = gtk.MenuItem( '_View' )
74 helpitem = gtk.MenuItem( '_Help' )
80 def _create_toolbar():
82 toolbar = gtk.Toolbar()
83 filesearch_tbtn = gtk.RadioToolButton(None)
84 debsearch_tbtn = gtk.RadioToolButton(filesearch_tbtn)
86 filesearch_tbtn.set_label('Files search')
87 debsearch_tbtn.set_label('Debs search')
89 filesearch_tbtn.connect('clicked', self.show_search_toplevel, 'files')
90 debsearch_tbtn.connect('clicked', self.show_search_toplevel, 'debs')
92 toolbar.insert(filesearch_tbtn, -1)
93 toolbar.insert(debsearch_tbtn, -1)
98 window.set_default_size(560, 400)
99 window.set_border_width(4)
100 window.set_wmclass('MainWindow', 'FindIT')
101 window.connect('destroy', gtk.main_quit)
103 menu = _create_menu()
104 toolbar = _create_toolbar()
106 self.vbox = gtk.VBox(False, 4)
107 self.vbox.pack_start(menu, False, False, 0)
108 self.vbox.pack_start(toolbar, False, False, 0)
109 self.show_search_toplevel(None, self.config['search'])
111 window.add(self.vbox)
115 def about_dialog(self, btn):
116 from about import About
119 #=== Search selecting =====================================================
120 def show_search_toplevel(self, btn, searchtype):
121 print 'Entering <' + searchtype + '> search mode...'
123 search_module = __import__(searchtype + '.search')
124 search_toplevel = search_module.search.Control('gtk', self.config).run()
127 self.vbox.remove(self.vbox.get_children()[2])
130 self.vbox.pack_start(search_toplevel, True, True, 0)
131 search_toplevel.show_all()
133 #==============================================================================
135 if __name__ == '__main__':