3 # vim: sw=4 ts=4 expandtab ai
4 # main.py --search files -o out_table -p ". 3"
8 from config import config
11 __progname__ = 'FindIT'
14 #==============================================================================
16 class Control(object):
18 self.abstrac = Abstraction()
20 if(len(sys.argv) > 1): ###
21 self.present = Cli_Presentation(self.abstrac)
23 self.present = Gtk_Presentation(self.abstrac)
28 #==============================================================================
30 class Abstraction(object):
32 self.progname = __progname__
33 self.version = __version__
34 self.authors = [ 'Alex Taker\n * Email: alteker@gmail.com\n',
35 'Eugene Gagarin\n * Email: mosfet07@ya.ru\n',
36 'Alexandr Popov\n * Email: popov2al@gmail.com' ]
37 self.comments = 'Tool for find some information on computer.'
39 'This program is free software; you can redistribute it and/or\nmodify it \
40 under the terms of the GNU General Public License\nas published by the Free \
41 Software Foundation; either version 3\nof the License, or (at your option) \
44 #==============================================================================
46 class Cli_Presentation(object):
48 def __init__(self, abstrac):
49 from optparse import OptionParser
52 self.abstrac = abstrac
54 parser = OptionParser(version=__progname__ + ' ' + __version__)
55 parser.add_option('--search', '-s', dest='search', type='string')
56 parser.add_option('--output', '-o', dest='output', type='string')
57 parser.add_option('--params', '-p', dest='params', type='string')
58 parser.add_option('--about', action='callback', callback=self._about)
59 parser.add_option('--license', action='callback', callback=self._license)
60 (options, args) = parser.parse_args()
62 self.search = options.search
65 self.options['outtype'] = options.output
66 self.options['ignore_dirs'] = config['files']['ignore_dirs']
68 self.params = options.params.split()
69 self.options['start_path'] = self.params[0]
70 self.options['count'] = self.params[1]
72 self.options['file_filter'] = self.params[2]
74 self.options['file_filter'] = '*.*'
77 print self.abstrac.comments
80 def _license(self, *a):
81 print self.abstrac.license
84 def show_search_toplevel(self):
85 search_module = __import__(self.search + '.search')
86 search_toplevel = search_module.search.Control('Cli', self.options).run()
89 self.show_search_toplevel()
91 #==============================================================================
93 class Gtk_Presentation(object):
94 """Main window class."""
96 def _create_menu(self):
97 """Create main menu."""
98 menubar = gtk.MenuBar()
99 fileitem = gtk.MenuItem(_('_File'))
100 viewitem = gtk.MenuItem(_('_View'))
101 helpitem = gtk.MenuItem(_('_Help'))
102 helpitem.connect('activate', self.about_dialog)
103 menubar.add(fileitem)
104 menubar.add(viewitem)
105 menubar.add(helpitem)
108 def _create_toolbar(self):
109 """Create toolbar."""
110 toolbar = gtk.Toolbar()
111 filesearch_tbtn = gtk.RadioToolButton(None)
112 debsearch_tbtn = gtk.RadioToolButton(filesearch_tbtn)
114 filesearch_tbtn.set_name('files')
115 debsearch_tbtn.set_name('debs')
117 filesearch_tbtn.set_label(_('Files search'))
118 debsearch_tbtn.set_label(_('Debs search'))
120 filesearch_tbtn.connect('clicked', self.show_search_toplevel, 'files')
121 debsearch_tbtn.connect('clicked', self.show_search_toplevel, 'debs')
123 toolbar.insert(filesearch_tbtn, -1)
124 toolbar.insert(debsearch_tbtn, -1)
126 search_tbtns = [filesearch_tbtn, debsearch_tbtn]
128 # Activate radio tool button
129 for btn in search_tbtns:
130 if btn.get_name() == config['search']:
135 def about_dialog(self, widget):
136 """About dialog window."""
137 dialog = gtk.AboutDialog()
138 dialog.set_name(self.abstrac.progname)
139 dialog.set_version(self.abstrac.version)
140 dialog.set_authors(self.abstrac.authors)
141 dialog.set_comments(self.abstrac.comments)
142 dialog.set_license(self.abstrac.license)
147 def __init__(self, abstrac):
149 global gtk # for run()
151 gobject.set_application_name(__progname__)
153 self.abstrac = abstrac
155 self.window = gtk.Window()
156 self.window.set_default_size(600, 400)
157 self.window.set_geometry_hints(None, 600, 400)
158 self.window.set_wmclass('MainWindow', 'FindIT')
159 self.window.connect('destroy', gtk.main_quit)
161 menu = self._create_menu()
162 toolbar = self._create_toolbar()
164 self.vbox = gtk.VBox(False, 0)
165 self.vbox.pack_start(menu, False, False, 0)
166 self.vbox.pack_start(toolbar, False, False, 0)
167 self.show_search_toplevel(None, config['search'])
169 self.window.add(self.vbox)
171 #=== Search selecting =====================================================
172 def show_search_toplevel(self, btn, searchtype):
173 search_module = __import__(searchtype + '.search')
174 search = search_module.search.Control('Gtk', None)
175 search_toplevel = search.toplevel
177 self.vbox.remove(self.vbox.get_children()[2])
180 self.vbox.pack_start(search_toplevel, True, True, 0)
181 search_toplevel.show_all()
184 self.window.show_all()
187 #==============================================================================
189 class Hildon_Presentation(object):
190 """Main window class."""
195 #==============================================================================
197 if __name__ == '__main__':