X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Ffindit.py;h=09feebd174c236687be6191078cfdae6c0ea018d;hb=dbf86c303dd82811477875e1ac7419062a265b17;hp=f91f58226352f543a7365945229bb2bbdf25b379;hpb=821d4c800e26480ed5d990ec3b9a80eaf361d83d;p=findit diff --git a/src/findit.py b/src/findit.py index f91f582..09feebd 100755 --- a/src/findit.py +++ b/src/findit.py @@ -1,19 +1,22 @@ #!/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 time +from sys import platform try: - import hildon; hildonFound = True + import hildon + hildonFound = True except ImportError: hildonFound = False @@ -33,17 +36,19 @@ except IOError: # Функция которая возвращает строку из числа и единиц для столбца "Размер"("Size") def size_convert(size): + """Return string with file size in b or Kb or Mb or Gb or Tb.""" for i, unit in enumerate(['%d b', '%.1f Kb', '%.2f Mb', '%.3f Gb', '%.4f Tb']): if size < 1024**(i+1): return unit % (size/1024.**i) return '>1024 Tb' # Функция поставляющая размер файла и путь к нему -def filegetter(startpath, obj): +def filegetter(startdir, obj): + """Generator of file sizes and paths based on os.walk.""" # Список игнорируемых каталогов: 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[:]: @@ -64,13 +69,14 @@ def filegetter(startpath, obj): # Проверяем можем ли мы определить размер файла - иначе пропускаем его try: flsize = getsize(flpath) + # Возвращаем размер и полный путь файла + yield flsize, flpath except OSError: continue - # Возвращаем размер и полный путь файла - yield flsize, flpath # Fullscreen def toggle_fullscreen(obj): + """Switch fullscreen on/off.""" if obj.fullscreen: obj.window.unfullscreen() else: @@ -79,13 +85,18 @@ def toggle_fullscreen(obj): # Нажатие на кнопку клавиатуры def on_key_press(obj, event): + """Key press callback.""" + # Toggle fullscreen on Maemo when hw key is pressed if hildonFound and event.keyval == gtk.keysyms.F6: toggle_fullscreen(obj) ### Properties dialog ########################################################## class PropertiesDialog(gtk.Dialog): + """File property dialog window.""" + def __init__(self, path, size, bytesize): + """Create&show file properties dialog.""" gtk.Dialog.__init__(self) self.set_title( _('File properties') ) self.set_transient_for(app) @@ -138,9 +149,11 @@ class PropertiesDialog(gtk.Dialog): ### Main window ################################################################ class MainWindow(gtk.Window): + """Main window class.""" # Окно сообщения заданного типа с заданным текстом def mess_window(self, mestype, content): + """Show popup message window.""" dialog = gtk.MessageDialog(parent=self, flags=gtk.DIALOG_MODAL, type=mestype, buttons=gtk.BUTTONS_OK, message_format=content) @@ -150,7 +163,8 @@ class MainWindow(gtk.Window): dialog.destroy() # Функция выполняющаяся при нажатии на кнопку "Показать" - def start_print(self): + def start_print(self, widget): + """Start file search. Button "Go" activate callback.""" self.start_path = self.srch_p_entr.get_text() # Проверяем правильное ли значение введено if isdir(self.start_path): @@ -178,16 +192,19 @@ class MainWindow(gtk.Window): 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') ) # Функция выполняющаяся при нажатии на кнопку "Стоп" - def stop_print(self): + def stop_print(self, widget): + """Stop search. "Stop" button clicked callback.""" self.stopit = True # Функция выполняющаяся при нажатии на кнопку "Свойства файла" - def show_properties_dialog(self): + def show_properties_dialog(self, *args): + """Show property dialog window.""" selection = self.treeview.get_selection() (model, it) = selection.get_selected() try: @@ -202,6 +219,7 @@ class MainWindow(gtk.Window): ### Window initialization ################################################## def __init__(self, win_width, win_height, st_path): + """Create MainWindow.""" # Создаем новое окно gtk.Window.__init__(self) self.set_default_size(win_width, win_height) @@ -267,7 +285,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') ) @@ -322,6 +340,7 @@ class MainWindow(gtk.Window): self.add(main_Vbox) def run(self): + """Show all widgets and run gtk.main().""" self.show_all() gtk.main() @@ -330,6 +349,11 @@ class MainWindow(gtk.Window): if __name__ == '__main__': gobject.set_application_name( _('FindIT') ) - app = MainWindow(575, 345, '/home') - app.run() + if platform == 'win32': + startpath = 'c:\\' + else: + startpath = expanduser('~') + + app = MainWindow(575, 345, startpath) + app.run()