disabled 'line too long' pylint warning
[findit] / src / findit.py
index 79b52ec..efa86e4 100755 (executable)
@@ -1,20 +1,24 @@
 #!/usr/bin/env python
 # -*-coding: utf-8 -*-
 # vim: sw=4 ts=4 expandtab ai
+# pylint: disable-msg=C0301
 
 import gtk
 import gobject
 import pango
 from os import walk
 from os.path import join, abspath, normcase, basename, \
-                    isdir, getsize, getatime, getmtime
+                    isdir, getsize, getatime, getmtime, expanduser
 from heapq import nlargest
 import gettext
-import sys
 import time
+from sys import platform
 
-try: import hildon; hildonFound = True
-except: hildonFound = False
+try: 
+    import hildon
+    hildonFound = True
+except ImportError:
+    hildonFound = False
 
 try:
     # Подразумевается, что ru/LC_MESSAGES/program.mo находится в текущем каталоге (sys.path[0])
@@ -22,9 +26,10 @@ try:
     #langRU = gettext.translation('findit', sys.path[0], languages=['ru'])
     langRU = gettext.translation('findit')
     langRU.install()
-except:
+except IOError:
     # Закомментировать перед использованием pygettext
-    def _(text): return text
+    def _(text): 
+        return text
 
 
 ### Common functions ###########################################################
@@ -37,11 +42,11 @@ def size_convert(size):
     return '>1024 Tb'
 
 # Функция поставляющая размер файла и путь к нему
-def filegetter(startpath, obj):
+def filegetter(startdir, obj):
     # Список игнорируемых каталогов:
     ignore_dirs = ['/dev', '/proc', '/sys', '/mnt']
     # Проходим по всем папкам вглубь от заданного пути
-    for dirpath, dirnames, fnames in walk(startpath):
+    for dirpath, dirnames, fnames in walk(startdir):
     # Исключаем каталоги из поиска в соответствии со списком исключений
         for ign_dir in ignore_dirs[:]:
             for dirname in dirnames[:]:
@@ -60,16 +65,18 @@ def filegetter(startpath, obj):
                 obj.stopit = False
                 raise StopIteration
             # Проверяем можем ли мы определить размер файла - иначе пропускаем его
-            try:    flsize = getsize(flpath)
-            except: continue
-            # Возвращаем размер и полный путь файла
-            yield flsize, flpath
+            try:
+                # Возвращаем размер и полный путь файла
+                yield getsize(flpath), flpath
+            except OSError:
+                continue
 
 # Fullscreen
 def toggle_fullscreen(obj):
     if obj.fullscreen:
-          obj.window.unfullscreen()
-    else: obj.window.fullscreen()
+        obj.window.unfullscreen()
+    else: 
+        obj.window.fullscreen()
     obj.fullscreen = not obj.fullscreen
 
 # Нажатие на кнопку клавиатуры
@@ -165,11 +172,15 @@ class MainWindow(gtk.Window):
 
                 # Выдает какую-то перманентную ошибку при присвоении значений treestore -
                 # кто увидит скажите - нужна статистика
-                try: self.treestore.append(None, [fpath, size_convert(fsize), fsize])
-                except: 'error', fpath, size_convert(fsize), fsize
+                try: 
+                    self.treestore.append(None, [fpath, size_convert(fsize), fsize])
+                except SystemError:
+#                    print 'error', fpath, size_convert(fsize), fsize
+                    self.mess_window('error','Error in %s' % fpath)
             self.butt_start.set_sensitive(True)
             self.butt_stop.set_sensitive(False)
             self.propertiesBtn.set_sensitive(True)
+            self.srch_p_entr.grab_focus()
         else:
             # Иначе выводим окошко с ошибкой
             self.mess_window('error', _('Invalid directory') )
@@ -186,7 +197,7 @@ class MainWindow(gtk.Window):
             path = model.get_value(it, 0)
             size = model.get_value(it, 1)
             bytesize = model.get_value(it, 2)
-        except:
+        except (TypeError, ValueError):
             self.mess_window('error', _('Please select file') )
             return
         PropertiesDialog(path, size, bytesize)
@@ -259,7 +270,7 @@ class MainWindow(gtk.Window):
         self.treeview.set_headers_visible(1)
         self.treeview.connect('row-activated', self.show_properties_dialog)
 
-        self.treestore.append(None, ['','', 0])
+        self.treestore.append(None, ['', '', 0])
 
         # Создаем и настраиваем колонку с размером файла
         size_col = gtk.TreeViewColumn( _('Size') )
@@ -316,12 +327,17 @@ class MainWindow(gtk.Window):
     def run(self):
         self.show_all()
         gtk.main()
-        return 0
 
 
 ### Main call ##################################################################
 
 if __name__ == '__main__':
     gobject.set_application_name( _('FindIT') )
-    app = MainWindow(575, 345, '.')
+
+    if platform == 'win32':
+        startpath = 'c:\\'
+    else:
+        startpath = expanduser('~')
+
+    app = MainWindow(575, 345, startpath)
     app.run()