Moved filessearch parameters from main to files.search
[findit] / src / files / search.py
index cafc0f3..fc6feab 100755 (executable)
@@ -21,8 +21,8 @@ OUTTYPES = [
 
 class Control(object):
 
-    def __init__(self, ui, params):
-        self.present = eval(ui + '_Presentation(self.start_search, params)')
+    def __init__(self, ui, outtype, params):
+        self.present = eval(ui + '_Presentation(self.start_search, outtype, params)')
         self.abstrac = Abstraction(self.present)
 
         self.toplevel = self.present.toplevel
@@ -31,9 +31,15 @@ class Control(object):
         filelist = []
         outtype, start_path, count, file_filter = get_criteria()
         search_func = self.abstrac.filegetter(start_path, file_filter, get_stopit)
+
         for fsize, fpath in nlargest(count, search_func):
             filelist.append([int(fsize), fpath, size_hum_read(fsize)])
-        self.present.show_out_toplevel(outtype, filelist)
+
+        if not filelist:
+            self.present.nothing_founded()
+            return
+        results = [filelist, start_path]
+        self.present.show_out_toplevel(outtype, results)
 
     def run(self):
         self.present.run()
@@ -62,7 +68,9 @@ class Abstraction(object):
                 # Store only necessary files
                 for mask in file_filter:
                     if fnmatch(fname, mask):
-                        flpath = abspath(join(dirpath, fname))
+                        # Crutch for non-unicode names
+                        #flpath = unicode(join(dirpath, fname), '1251')
+                        flpath = join(dirpath, fname)
                         # Show current path
                         self.presentation.show_current_status(flpath)
                         # Stop search via 'stopit' signal
@@ -81,13 +89,17 @@ class Abstraction(object):
 #==============================================================================
 
 class Cli_Presentation(object):
-    def __init__(self, start_func, params):
+    def __init__(self, start_func, outtype, params):
         self.start_func = start_func
 
-        self.outtype = params['outtype']
-        self.start_path = params['start_path']
-        self.count = params['count']
-        self.file_filter = params['file_filter'].split(';')
+        self.outtype = outtype
+        self.start_path = params[0]
+        self.count = params[1]
+        try:
+            self.file_filter = params[2].split(';')
+        except IndexError:
+            self.file_filter = '*.*'
+
         self.stopit = False
 
         self.toplevel = None
@@ -110,6 +122,9 @@ class Cli_Presentation(object):
         print '\\' + '\r',
         ### print current_path
 
+    def nothing_founded(self):
+        print _('Nothing founded!')
+
     def run(self):
         self.start_func(self.get_data, self.get_stopit)
 
@@ -117,7 +132,7 @@ class Cli_Presentation(object):
 
 class Gtk_Presentation(object):
 
-    def __init__(self, start_func, __):
+    def __init__(self, start_func, *unused):
         import gtk
         global gtk  # for show_current_status()
         from misc import NotebookWCloseBtns
@@ -149,7 +164,7 @@ class Gtk_Presentation(object):
         self.qty_spin.set_value(config['files']['count'])
 
         # "Filter" label
-        filter_label = gtk.Label(_('Filter'))
+        filter_label = gtk.Label(_('Filter (semicolon separated)'))
         # "Filter" entry
         self.filter_entry = gtk.Entry()
         self.filter_entry.set_text(config['files']['filter'])
@@ -278,6 +293,9 @@ class Gtk_Presentation(object):
         self.statusbar.push(self.context_id, current_path)
         gtk.main_iteration()
 
+    def nothing_founded(self):
+        self.statusbar.push(self.context_id, _('Nothing founded!'))
+
     def run(self):
         pass