Repaired search call in Main Gtk_Presentaion
[findit] / src / main.py
index bb3ad86..ed84e1b 100755 (executable)
@@ -1,11 +1,12 @@
 #!/usr/bin/env python
 # -*-coding: utf-8 -*-
 # vim: sw=4 ts=4 expandtab ai
-# main.py --search files -o outtable -p ". 3"
+# main.py --search files -o out_table -p ". 3"
 
-import sys
+import sys ###
 
-from config import Config
+from config import config
+from misc import _
 
 __progname__ = 'FindIT'
 __version__ = '0.2.0'
@@ -14,14 +15,15 @@ __version__ = '0.2.0'
 
 class Control(object):
     def __init__(self):
-        config = Config ###()
-
         self.abstrac = Abstraction()
 
-        if(len(sys.argv) > 1):
-            Cli_Presentation()  ###
+        if(len(sys.argv) > 1):  ###
+            self.present = Cli_Presentation(self.abstrac)
         else:
-            Gtk_Presentation(config, self.abstrac)  ###
+            self.present = Gtk_Presentation(self.abstrac)
+
+    def run(self):
+        self.present.run()
 
 #==============================================================================
 
@@ -32,7 +34,7 @@ class Abstraction(object):
         self.authors = [    'Alex Taker\n   * Email: alteker@gmail.com\n',
                         'Eugene Gagarin\n   * Email: mosfet07@ya.ru\n',
                         'Alexandr Popov\n   * Email: popov2al@gmail.com' ]
-        self.comments = 'Tool for find some information on computer.'
+        self.comments = _('Tool for find some information on computer.')
         self.license = \
 'This program is free software; you can redistribute it and/or\nmodify it \
 under the terms of the GNU General Public License\nas published by the Free \
@@ -43,111 +45,124 @@ any later version.'
 
 class Cli_Presentation(object):
 
-    def __init__(self):
+    def __init__(self, abstrac):
         from optparse import OptionParser
+        import sys
 
-        parser = OptionParser()
+        self.abstrac = abstrac
+
+        parser = OptionParser(version=__progname__ + ' ' + __version__)
         parser.add_option('--search', '-s', dest='search', type='string')
         parser.add_option('--output', '-o', dest='output', type='string')
         parser.add_option('--params', '-p', dest='params', type='string')
+        parser.add_option('--about',   action='callback', callback=self._about)
+        parser.add_option('--license', action='callback', callback=self._license)
         (options, args) = parser.parse_args()
-#         print options
-#         print args
 
-        config = {}
-        config['search'] = options.search
-        config['outtype'] = options.output
-        config['ignore_dirs'] = ['/dev', '/proc', '/sys', '/mnt']
-        config['start_path'] = options.params.split(' ')[0]
-        config['count'] = options.params.split(' ')[1]
+        self.search  = options.search
+        self.outtype = options.output
+        self.params  = options.params.split()
+
+    def _about(self, *a):
+        print self.abstrac.comments
+        sys.exit()
 
-        self.show_search_toplevel(config)
+    def _license(self, *a):
+        print self.abstrac.license
+        sys.exit()
 
-    def show_search_toplevel(self, config):
-        search_module = __import__(config['search'] + '.search')
-        search_toplevel = search_module.search.Control('cli', config).run()
+    def show_search_toplevel(self):
+        search_module = __import__(self.search + '.search')
+        search_toplevel = search_module.search.Control('Cli', self.outtype, self.params).run()
+
+    def run(self):
+        self.show_search_toplevel()
 
 #==============================================================================
 
 class Gtk_Presentation(object):
     """Main window class."""
 
-    def __init__(self, config, abstrac):
+    def _create_menu(self):
+        """Create main menu."""
+        menubar = gtk.MenuBar()
+        fileitem = gtk.MenuItem(_('_File'))
+        viewitem = gtk.MenuItem(_('_View'))
+        helpitem = gtk.MenuItem(_('_Help'))
+        helpitem.connect('activate', self.about_dialog)
+        menubar.add(fileitem)
+        menubar.add(viewitem)
+        menubar.add(helpitem)
+        return menubar
+
+    def _create_toolbar(self):
+        """Create toolbar."""
+        toolbar = gtk.Toolbar()
+        filesearch_tbtn = gtk.RadioToolButton(None)
+        debsearch_tbtn = gtk.RadioToolButton(filesearch_tbtn)
+
+        filesearch_tbtn.set_name('files')
+        debsearch_tbtn.set_name('debs')
+
+        filesearch_tbtn.set_label(_('Files search'))
+        debsearch_tbtn.set_label(_('Debs search'))
+
+        filesearch_tbtn.connect('clicked', self.show_search_toplevel, 'files')
+        debsearch_tbtn.connect('clicked', self.show_search_toplevel, 'debs')
+
+        toolbar.insert(filesearch_tbtn, -1)
+        toolbar.insert(debsearch_tbtn, -1)
+
+        search_tbtns = [filesearch_tbtn, debsearch_tbtn]
+
+        # Activate radio tool button
+        for btn in search_tbtns:
+            if btn.get_name() == config['search']:
+                btn.set_active(True)
+
+        return toolbar
+
+    def about_dialog(self, widget):
+        """About dialog window."""
+        dialog = gtk.AboutDialog()
+        dialog.set_name(self.abstrac.progname)
+        dialog.set_version(self.abstrac.version)
+        dialog.set_authors(self.abstrac.authors)
+        dialog.set_comments(self.abstrac.comments)
+        dialog.set_license(self.abstrac.license)
+        dialog.show_all()
+        dialog.run()
+        dialog.destroy()
+
+    def __init__(self, abstrac):
         import gtk
+        global gtk  # for run()
+        import gobject
+        gobject.set_application_name(__progname__)
+
+        self.abstrac = abstrac
+
+        self.window = gtk.Window()
+        self.window.set_default_size(600, 400)
+        self.window.set_geometry_hints(None, 600, 400)
+        self.window.set_wmclass('MainWindow', 'FindIT')
+        self.window.connect('destroy', gtk.main_quit)
+
+        menu = self._create_menu()
+        toolbar = self._create_toolbar()
 
-        self.config = config
-
-        def _create_menu():
-            """Create main menu."""
-            menubar = gtk.MenuBar()
-            fileitem = gtk.MenuItem( '_File' )
-            viewitem = gtk.MenuItem( '_View' )
-            helpitem = gtk.MenuItem( '_Help' )
-            helpitem.connect('activate', about_dialog)
-            menubar.add(fileitem)
-            menubar.add(viewitem)
-            menubar.add(helpitem)
-            return menubar
-
-        def _create_toolbar():
-            """Create toolbar."""
-            toolbar = gtk.Toolbar()
-            filesearch_tbtn = gtk.RadioToolButton(None)
-            debsearch_tbtn = gtk.RadioToolButton(filesearch_tbtn)
-
-            filesearch_tbtn.set_label('Files search')
-            debsearch_tbtn.set_label('Debs search')
-
-            filesearch_tbtn.connect('clicked', self.show_search_toplevel, 'files')
-            debsearch_tbtn.connect('clicked', self.show_search_toplevel, 'debs')
-
-            toolbar.insert(filesearch_tbtn, -1)
-            toolbar.insert(debsearch_tbtn, -1)
-
-            return toolbar
-
-        def about_dialog(widget):
-            """About dialog window."""
-            dialog = gtk.AboutDialog()
-            dialog.set_name(abstrac.progname)
-            dialog.set_version(abstrac.version)
-            dialog.set_authors(abstrac.authors)
-            dialog.set_comments(abstrac.comments)
-            dialog.set_license(abstrac.license)
-            dialog.show_all()
-            dialog.run()
-            dialog.destroy()
-
-        window = gtk.Window()
-        window.set_default_size(560, 400)
-        window.set_geometry_hints(None, 560, 400)
-        window.set_border_width(4)
-        window.set_wmclass('MainWindow', 'FindIT')
-        window.connect('destroy', gtk.main_quit)
-
-        menu = _create_menu()
-        toolbar = _create_toolbar()
-
-        self.vbox = gtk.VBox(False, 4)
+        self.vbox = gtk.VBox(False, 0)
         self.vbox.pack_start(menu, False, False, 0)
         self.vbox.pack_start(toolbar, False, False, 0)
-        self.show_search_toplevel(None, self.config['search'])
+        self.show_search_toplevel(None, config['search'])
 
-        window.add(self.vbox)
-        window.show_all()
-        gtk.main()
-
-    def about_dialog(self, btn):
-        from about import About
-        About()
+        self.window.add(self.vbox)
 
     #=== Search selecting =====================================================
     def show_search_toplevel(self, btn, searchtype):
-        print 'Entering <' + searchtype + '> search mode...'
-
         search_module = __import__(searchtype + '.search')
-        search_toplevel = search_module.search.Control('gtk', self.config).run()
-
+        search = search_module.search.Control('Gtk', None, None)
+        search_toplevel = search.toplevel
         try:
             self.vbox.remove(self.vbox.get_children()[2])
         except:
@@ -155,18 +170,19 @@ class Gtk_Presentation(object):
         self.vbox.pack_start(search_toplevel, True, True, 0)
         search_toplevel.show_all()
 
+    def run(self):
+        self.window.show_all()
+        gtk.main()
+
 #==============================================================================
 
 class Hildon_Presentation(object):
     """Main window class."""
 
-    def __init__(self, config):
-        import gtk
-        import hildon
-
-        self.config = config
+    def __init__(self):
+        pass
 
 #==============================================================================
 
 if __name__ == '__main__':
-    Control()
+    Control().run()