Properties dialog cleaning & gtk|hildon windows
authorEugene Gagarin <mosfet07@ya.ru>
Fri, 20 Feb 2009 14:38:54 +0000 (17:38 +0300)
committerEugene Gagarin <mosfet07@ya.ru>
Fri, 20 Feb 2009 14:38:54 +0000 (17:38 +0300)
findit.py

index 9f22d55..93608ef 100755 (executable)
--- a/findit.py
+++ b/findit.py
@@ -6,8 +6,8 @@ import gtk
 import gobject
 import pango
 from os import walk
-from os.path import join, abspath, normcase, basename
-from os.path import isdir, getsize, getatime, getmtime
+from os.path import join, abspath, normcase, basename, \
+                    isdir, getsize, getatime, getmtime
 from heapq import nlargest
 import gettext
 import sys
@@ -16,20 +16,19 @@ import time
 try: import hildon; hildonFound = True
 except: hildonFound = False
 
-
 try:
-    # Ищем перевод в /usr/share/locale
-    lang = gettext.translation('findit')
-    lang.install()
+    # Подразумевается, что ru/LC_MESSAGES/program.mo находится в текущем каталоге (sys.path[0])
+    # Для стандартного /usr/share/locale писать gettext.translation('findit')
+    langRU = gettext.translation('findit', sys.path[0], languages=['ru'])
+    langRU.install()
 except:
-    try:
-        # Иначе, ищем в ./ru/LC_MESSAGES/findit.mo
-        langRU = gettext.translation('findit', sys.path[0], languages=['ru'])
-        langRU.install()
-    except:
-        # Нет и там - используем захардкоженный текст
-        # (закомментировать перед использованием pygettext)
-        def _(text): return text
+    def _(text): return text
+
+
+if hildonFound:
+    winType = hildon.Window
+else:
+    winType = gtk.Window
 
 
 ### Common functions ###########################################################
@@ -91,17 +90,20 @@ class PropertiesDialog(gtk.Dialog):
         self.set_transient_for(app)
         self.set_wmclass('PropertiesDialog', 'FindIT')
         self.add_buttons(gtk.STOCK_OK, gtk.RESPONSE_OK)
+        self.set_resizable(False)
 
+        # Достаем свойства выбранного файла
         name = basename(path)
-
         access = time.strftime('%x %X', time.localtime(getatime(path)))
         modified = time.strftime('%x %X', time.localtime(getmtime(path)))
 
-        table = gtk.Table(2, 2, True)
+        # Таблица надписей
+        table = gtk.Table()
         table.set_border_width(10)
         table.set_col_spacings(10)
         table.set_row_spacings(10)
 
+        # Надписи (подпись: значение)
         nameLbl = gtk.Label( _('Name') )
         nameValueLbl = gtk.Label(name)
 
@@ -114,15 +116,19 @@ class PropertiesDialog(gtk.Dialog):
         modifiedLbl = gtk.Label( _('Modified') )
         modifiedValueLbl = gtk.Label(modified)
 
-        table.attach(nameLbl, 0, 1, 0, 1)
-        table.attach(nameValueLbl, 1, 2, 0, 1)
-        table.attach(sizeLbl, 0, 1, 1, 2)
-        table.attach(sizeValueLbl, 1, 2, 1, 2)
-        table.attach(accessLbl, 0, 1, 2, 3)
-        table.attach(accessValueLbl, 1, 2, 2, 3)
-        table.attach(modifiedLbl, 0, 1, 3, 4)
-        table.attach(modifiedValueLbl, 1, 2, 3, 4)
+        # Список надписей
+        lbls = [(nameLbl,   nameValueLbl),   (sizeLbl,     sizeValueLbl),
+                (accessLbl, accessValueLbl), (modifiedLbl, modifiedValueLbl)]
+
+        # Упаковка надписей в таблицу и выравнивание
+        for i, lbl in enumerate(lbls):
+            name, value = lbl
+            table.attach(name, 0, 1, i, i+1)
+            table.attach(value, 1, 2, i, i+1)
+            name.set_alignment(1, 0.5)
+            value.set_alignment(0, 0.5)
 
+        # Упаковка таблицы в vbox диалога
         self.vbox.add(table)
         self.show_all()
         self.run()
@@ -130,7 +136,7 @@ class PropertiesDialog(gtk.Dialog):
 
 ### Main window ################################################################
 
-class MainWindow(gtk.Window):
+class MainWindow(winType):
 
     # Окно сообщения заданного типа с заданным текстом
     def mess_window(self, mestype, content):