-#!/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
-
- def get_st_par(self):
- self.start_path = self.srch_p_entr.get_text()
- self.fl_cnt = int( self.file_cnt.get_value() )
- return self.start_path, self.fl_cnt
-
- def show(self):
- pass
-
-### Main call ##################################################################
-def main():
- """Main function."""
- gobject.set_application_name( _('FindIT') )
-
- startpath = '/home/'
-
- GtkWindow(575, 345, startpath).run()
-
-if __name__ == '__main__':
- main()