3 # vim: sw=4 ts=4 expandtab ai
4 # pylint: disable-msg=C0301
6 """findIT: Gui prorgram to find various information.
7 At the moment it only finds largest files
15 LANGRU = gettext.translation('findit')
21 ### Main window ################################################################
23 class GtkWindow(gtk.Window):
24 """Main window class."""
26 ### Window initialization ##################################################
28 def __init__(self, win_width, win_height, st_path):
29 """Create MainWindow."""
31 gtk.Window.__init__(self)
32 self.set_default_size(win_width, win_height)
33 self.set_border_width(4)
34 self.fullscreen = False
35 self.connect('delete_event', gtk.main_quit)
36 self.set_wmclass('GtkWindow', 'FindIT')
38 ######### Добавляем элементы ################
39 # 1. Строка ввода каталога с которого начинать поиск
40 # переменная в которой храниться стартовый каталог = self.start_path
41 self.srch_p_entr = gtk.Entry()
42 self.start_path = st_path
43 self.srch_p_entr.set_text(self.start_path)
44 # Нажатие Enter в поле ввода
45 self.srch_p_entr.connect("activate", self.start_print)
49 # 3. Надпись1 "Количество отображаемых файлов:"
50 label1 = gtk.Label( _('Files quantity') )
52 # 4. Окошко ввода количества файлов, мин значение=1 макс=65536 по умолчанию 10
53 # данные храняться в переменной self.fl_cnt
55 adj = gtk.Adjustment(self.fl_cnt, 1, 65536, 1, 5, 0)
56 self.file_cnt = gtk.SpinButton(adj, 0, 0)
58 # 5.1 Кнопка "Показать"
59 self.butt_start = gtk.Button( _('Go') )
60 self.butt_start.connect('released', self.start_print)
62 # 5.2 Кнопка "Остановить"
63 self.butt_stop = gtk.Button( _('Stop') )
64 self.butt_stop.set_sensitive(False)
65 self.butt_stop.connect('clicked', self.stop_print)
68 # 5.3 Кнопка "Свойства файла"
73 scrollwind = gtk.ScrolledWindow()
74 scrollwind.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
76 # Определяем переменную в которой будет храниться выводимый список
77 self.treestore = gtk.TreeStore(str, str, int)
78 self.treeview = gtk.TreeView(self.treestore)
79 # На таблетке не отображаються заголовки столбцов по умолчанию -
80 # след строка заставляет их отображаться принудительно
81 self.treeview.set_headers_visible(1)
83 self.treestore.append(None, ['', '', 0])
85 # Создаем и настраиваем колонку с размером файла
86 size_col = gtk.TreeViewColumn( _('Size') )
87 cell = gtk.CellRendererText()
88 cell.set_property('width', 90)
89 size_col.pack_start(cell, True)
90 size_col.add_attribute(cell, 'text', 1)
91 self.treeview.append_column(size_col)
92 # Создаем и настраиваем колонку с именем файла
93 path_col = gtk.TreeViewColumn( _('Path') )
94 cell2 = gtk.CellRendererText()
95 path_col.pack_start(cell2, True)
96 path_col.add_attribute(cell2, 'text', 0)
97 self.treeview.append_column(path_col)
99 # Добавляем сортировку для колонок
100 self.treeview.set_search_column(1)
101 path_col.set_sort_column_id(0)
102 size_col.set_sort_column_id(2)
104 # 6.2 Надпись "Найти"
106 # 6.3 Строка выводящая текущий осматриваемый файл
108 ######### Упаковываем элементы ################
109 # Создаем основной вертикальный контейнер
110 main_vbox = gtk.VBox(False, 4)
112 # Создаем вспомогательный горизонтальный контейнер для Надписи1,
113 # окошка ввода количества файлов и кнопки "Показать"
114 hbox1 = gtk.HBox(False, 5)
115 # Добавляем вышеперечисленные элементы во вспомогат. контейнер
116 hbox1.pack_start(label1, False, False, 5)
117 hbox1.pack_start(self.file_cnt, False, False, 0)
118 hbox1.pack_start(self.butt_start, True, True, 0)
119 hbox1.pack_start(self.butt_stop, True, True, 0)
121 # Добавляем элементы в основной контейнер
122 main_vbox.pack_start(self.srch_p_entr, False, False, 0)
123 main_vbox.pack_start(hbox1, False, False, 0)
124 scrollwind.add(self.treeview)
125 main_vbox.pack_start(scrollwind, True, True, 0)
130 """Show all widgets and run gtk.main()."""
134 # Окно сообщения заданного типа с заданным текстом
135 def mess_window(self, mestype, content):
136 """Show popup message window."""
137 dialog = gtk.MessageDialog(parent=self, flags=gtk.DIALOG_MODAL,
138 type=mestype, buttons=gtk.BUTTONS_OK,
139 message_format=content)
140 dialog.set_wmclass('ErrorDialog', 'FindIT')
141 dialog.set_title( _('Error!') )
145 # Функция выполняющаяся при нажатии на кнопку "Показать"
146 def start_print(self, widget):
147 """Start file search. Button "Go" activate callback."""
149 # Функция выполняющаяся при нажатии на кнопку "Стоп"
150 def stop_print(self, widget):
151 """Stop search. "Stop" button clicked callback."""
154 ### Main call ##################################################################
157 gobject.set_application_name( _('FindIT') )
161 GtkWindow(575, 345, startpath).run()
163 if __name__ == '__main__':