From: Alexandr Popov Date: Sun, 15 Mar 2009 12:08:30 +0000 (+0300) Subject: adding object gtk_ui(in file src/gtk_ui.py) - simple version X-Git-Url: https://vcs.maemo.org/git/?a=commitdiff_plain;h=5e00d07748d3a8a85b00f720137c10dab7a4b2dd;p=findit adding object gtk_ui(in file src/gtk_ui.py) - simple version --- diff --git a/src/gtk_ui.py b/src/gtk_ui.py new file mode 100644 index 0000000..e7d33cc --- /dev/null +++ b/src/gtk_ui.py @@ -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()