3 # vim: sw=4 ts=4 expandtab ai
5 from os.path import abspath
9 #==============================================================================
11 class Cli_Presentation(object):
12 def __init__(self, filelist): ###
13 self.toplevel = self.print_results(filelist)
15 def print_results(self, filelist):
16 for bsize, path, size in filelist:
17 print '%10d' % bsize, path
19 #==============================================================================
21 class Gtk_Presentation(object):
22 def __init__(self, results): ###
24 global gtk # for save_results
27 self.filelist, self.start_path = results
34 self.liststore = gtk.ListStore(str, str, gobject.TYPE_INT64)
35 self._show_relpaths(None)
37 treeview = gtk.TreeView(self.liststore)
40 size_col = gtk.TreeViewColumn(_('Size'))
41 cell1 = gtk.CellRendererText()
42 cell1.set_property('width', 90)
43 size_col.pack_start(cell1, True)
44 size_col.add_attribute(cell1, 'text', 1)
45 treeview.append_column(size_col)
48 path_col = gtk.TreeViewColumn(_('Path'))
49 cell2 = gtk.CellRendererText()
50 path_col.pack_start(cell2, True)
51 path_col.add_attribute(cell2, 'markup', 0)
52 treeview.append_column(path_col)
55 treeview.set_search_column(1)
56 path_col.set_sort_column_id(0)
57 size_col.set_sort_column_id(2)
59 # Add treeview to scrolled window
60 swin = gtk.ScrolledWindow()
61 swin.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
68 toolbar = gtk.Toolbar()
70 relpaths_tbtn = gtk.RadioToolButton(None)
71 abspaths_tbtn = gtk.RadioToolButton(relpaths_tbtn)
73 relpaths_tbtn.set_label(_('Relative paths'))
74 abspaths_tbtn.set_label(_('Absolute paths'))
76 relpaths_tbtn.connect('clicked', self._show_relpaths)
77 abspaths_tbtn.connect('clicked', self._show_abspaths)
79 saveresults_tbtn = gtk.ToolButton()
80 saveresults_tbtn.set_label(_('Save results'))
81 saveresults_tbtn.connect('clicked', self.save_results)
83 toolbar.insert(relpaths_tbtn, -1)
84 toolbar.insert(abspaths_tbtn, -1)
85 toolbar.insert(saveresults_tbtn, -1)
91 vbox = gtk.VBox(False, 4)
92 vbox.pack_start(swin, True, True, 0)
93 vbox.pack_start(toolbar, False, False, 0)
97 #=== Functions ============================================================
99 def _show_relpaths(self, btn):
100 self.liststore.clear()
101 for bsize, path, size in self.filelist:
102 self.liststore.append([path.replace(self.start_path,'', 1),
105 def _show_abspaths(self, btn):
106 self.liststore.clear()
107 for bsize, path, size in self.filelist:
108 #self.liststore.append([abspath(path), size, bsize])
109 # Mark absolute part of path with color
110 self.liststore.append([
111 '<span background="lawngreen">' + abspath(self.start_path) + '</span>' +
112 path.replace(self.start_path,'', 1),
115 def save_results(self, btn):
116 # 'Save to file' dialog
117 dialog = gtk.FileChooserDialog(title='Save to...',
119 buttons=(gtk.STOCK_OK, gtk.RESPONSE_OK,
120 gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL))
122 response = dialog.run()
123 if response == gtk.RESPONSE_OK:
124 filepath = dialog.get_filename()
125 outfile = open(filepath, 'w')
126 # Saving results as "bite size\tabsolute path"
127 for bsize, path, size in self.filelist:
128 outfile.write(`bsize` + '\t' + abspath(path) + '\n')
132 #==============================================================================
134 class Hildon_Presentation(object):
135 def __init__(self, filelist): ###
140 # На таблетке не отображаються заголовки столбцов по умолчанию -
141 # след строка заставляет их отображаться принудительно
142 treeview.set_headers_visible(1)