Added About and License commandline keys
[findit] / src / main.py
index f36701a..07dfb9e 100755 (executable)
@@ -19,39 +19,60 @@ class Control(object):
         self.abstrac = Abstraction()
 
         if(len(sys.argv) > 1):
-            Cli_Presentation()  ###
+            Cli_Presentation(self.abstrac)  ###
         else:
             Gtk_Presentation(config, self.abstrac)  ###
 
 #==============================================================================
 
 class Abstraction(object):
-    pass
+    def __init__(self):
+        self.progname = __progname__
+        self.version = __version__
+        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.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 \
+Software Foundation; either version 3\nof the License, or (at your option) \
+any later version.'
 
 #==============================================================================
 
 class Cli_Presentation(object):
 
-    def __init__(self):
+    def __init__(self, abstrac):
         from optparse import OptionParser
+        import sys
+
+        self.abstrac = abstrac
 
-        parser = OptionParser()
+        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]
+        config['start_path'], config['count'] = options.params.split()
 
         self.show_search_toplevel(config)
 
+    def _about(self, *a):
+        print self.abstrac.comments
+        sys.exit()
+
+    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()
@@ -72,6 +93,7 @@ class Gtk_Presentation(object):
             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)
@@ -83,6 +105,9 @@ class Gtk_Presentation(object):
             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')
 
@@ -92,10 +117,30 @@ class Gtk_Presentation(object):
             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() == self.config['search']:
+                    btn.set_active(True)
+
             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)
@@ -112,10 +157,6 @@ class Gtk_Presentation(object):
         window.show_all()
         gtk.main()
 
-    def about_dialog(self, btn):
-        from about import About
-        About()
-
     #=== Search selecting =====================================================
     def show_search_toplevel(self, btn, searchtype):
         print 'Entering <' + searchtype + '> search mode...'