adding object gtk_ui(in file src/gtk_ui.py) - simple version
authorAlexandr Popov <popov2al@gmail.com>
Sun, 15 Mar 2009 12:08:30 +0000 (15:08 +0300)
committerAlexandr Popov <popov2al@gmail.com>
Sun, 15 Mar 2009 12:08:30 +0000 (15:08 +0300)
src/gtk_ui.py [new file with mode: 0644]

diff --git a/src/gtk_ui.py b/src/gtk_ui.py
new file mode 100644 (file)
index 0000000..e7d33cc
--- /dev/null
@@ -0,0 +1,164 @@
+#!/usr/bin/env python
+# -*-coding: utf-8 -*-
+# vim: sw=4 ts=4 expandtab ai
+# pylint: disable-msg=C0301
+
+"""findIT: Gui prorgram to find various information.
+   At the moment it only finds largest files
+"""
+
+import gtk
+import gobject
+import gettext
+
+try:
+    LANGRU = gettext.translation('findit')
+    LANGRU.install()
+except IOError:
+    def _(text):
+        return text
+
+### Main window ################################################################
+
+class GtkWindow(gtk.Window):
+    """Main window class."""
+
+        ### 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)
+        self.set_border_width(4)
+        self.fullscreen = False
+        self.connect('delete_event', gtk.main_quit)
+        self.set_wmclass('GtkWindow', 'FindIT')
+
+        #########  Добавляем элементы ################
+        # 1. Строка ввода каталога с которого начинать поиск
+        #    переменная в которой храниться стартовый каталог = self.start_path
+        self.srch_p_entr = gtk.Entry()
+        self.start_path = st_path
+        self.srch_p_entr.set_text(self.start_path)
+        # Нажатие Enter в поле ввода
+        self.srch_p_entr.connect("activate", self.start_print)
+
+        # 2. Кнопка "Обзор"
+
+        # 3. Надпись1 "Количество отображаемых файлов:"
+        label1 = gtk.Label( _('Files quantity') )
+
+        # 4. Окошко ввода количества файлов, мин значение=1 макс=65536 по умолчанию 10
+        #    данные храняться в переменной self.fl_cnt
+        self.fl_cnt = 10
+        adj = gtk.Adjustment(self.fl_cnt, 1, 65536, 1, 5, 0)
+        self.file_cnt = gtk.SpinButton(adj, 0, 0)
+
+        # 5.1 Кнопка "Показать"
+        self.butt_start = gtk.Button( _('Go') )
+        self.butt_start.connect('released', self.start_print)
+
+        # 5.2 Кнопка "Остановить"
+        self.butt_stop = gtk.Button( _('Stop') )
+        self.butt_stop.set_sensitive(False)
+        self.butt_stop.connect('clicked', self.stop_print)
+        self.stopit = False
+
+        # 5.3 Кнопка "Свойства файла"
+
+        # 6. Закладки
+
+        # 6.1 Список файлов
+        scrollwind = gtk.ScrolledWindow()
+        scrollwind.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+
+        # Определяем переменную в которой будет храниться выводимый список
+        self.treestore = gtk.TreeStore(str, str, int)
+        self.treeview = gtk.TreeView(self.treestore)
+        # На таблетке не отображаються заголовки столбцов по умолчанию -
+        # след строка заставляет их отображаться принудительно
+        self.treeview.set_headers_visible(1)
+
+        self.treestore.append(None, ['', '', 0])
+
+        # Создаем и настраиваем колонку с размером файла
+        size_col = gtk.TreeViewColumn( _('Size') )
+        cell = gtk.CellRendererText()
+        cell.set_property('width', 90)
+        size_col.pack_start(cell, True)
+        size_col.add_attribute(cell, 'text', 1)
+        self.treeview.append_column(size_col)
+        # Создаем и настраиваем колонку с именем файла
+        path_col = gtk.TreeViewColumn( _('Path') )
+        cell2 = gtk.CellRendererText()
+        path_col.pack_start(cell2, True)
+        path_col.add_attribute(cell2, 'text', 0)
+        self.treeview.append_column(path_col)
+
+        # Добавляем сортировку для колонок
+        self.treeview.set_search_column(1)
+        path_col.set_sort_column_id(0)
+        size_col.set_sort_column_id(2)
+
+        # 6.2 Надпись "Найти"
+
+        # 6.3 Строка выводящая текущий осматриваемый файл
+
+        #########  Упаковываем элементы ################
+        # Создаем основной вертикальный контейнер
+        main_vbox = gtk.VBox(False, 4)
+
+        # Создаем вспомогательный горизонтальный контейнер для Надписи1,
+        # окошка ввода количества файлов и кнопки "Показать"
+        hbox1 = gtk.HBox(False, 5)
+        # Добавляем вышеперечисленные элементы во вспомогат. контейнер
+        hbox1.pack_start(label1, False, False, 5)
+        hbox1.pack_start(self.file_cnt, False, False, 0)
+        hbox1.pack_start(self.butt_start, True, True, 0)
+        hbox1.pack_start(self.butt_stop, True, True, 0)
+
+        # Добавляем элементы в основной контейнер
+        main_vbox.pack_start(self.srch_p_entr, False, False, 0)
+        main_vbox.pack_start(hbox1, False, False, 0)
+        scrollwind.add(self.treeview)
+        main_vbox.pack_start(scrollwind, True, True, 0)
+
+        self.add(main_vbox)
+
+    def run(self):
+        """Show all widgets and run gtk.main()."""
+        self.show_all()
+        gtk.main()
+    
+    # Окно сообщения заданного типа с заданным текстом
+    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)
+        dialog.set_wmclass('ErrorDialog', 'FindIT')
+        dialog.set_title( _('Error!') )
+        dialog.run()
+        dialog.destroy()
+
+    # Функция выполняющаяся при нажатии на кнопку "Показать"
+    def start_print(self, widget):
+        """Start file search. Button "Go" activate callback."""         
+    
+    # Функция выполняющаяся при нажатии на кнопку "Стоп"
+    def stop_print(self, widget):
+        """Stop search. "Stop" button clicked callback."""
+        self.stopit = True
+
+### Main call ##################################################################
+def main():
+    """Main function."""
+    gobject.set_application_name( _('FindIT') )
+
+    startpath = '/home/'
+
+    GtkWindow(575, 345, startpath).run()
+
+if __name__ == '__main__':
+    main()