--- ../th/thumbnail-checker.py 2006-08-23 16:13:34.000000000 -0400 +++ thumbnail-checker.py 2006-10-20 16:19:12.000000000 -0300 @@ -18,24 +18,28 @@ class ThumbnailChecker: self.first_time = True xml = gtk.glade.XML('thumbnail-checker.glade', None, None) - self.model = gtk.TreeStore(str, str) + self.model = gtk.TreeStore(str, str, str) self.window = xml.get_widget('window') - treeview = xml.get_widget('treeview') + self.treeview = xml.get_widget('treeview') self.progressbar = xml.get_widget('progressbar') self.progress = xml.get_widget('progress') + self.button_delete = xml.get_widget ('button_delete') self.button_start = xml.get_widget('button_start') self.button_stop = xml.get_widget('button_stop') xml.signal_autoconnect(self) - treeview.set_search_column(1) - treeview.set_model(self.model) + self.treeview.set_search_column(1) + self.treeview.set_model(self.model) + selection = self.treeview.get_selection() + selection.set_mode (gtk.SELECTION_MULTIPLE) + selection.connect ("changed", self.on_selection_changed) renderer = gtk.CellRendererText() column = gtk.TreeViewColumn("File name or Thumbnail file", renderer, text=0) column.set_resizable(True) column.set_expand(True) - treeview.append_column(column) + self.treeview.append_column(column) renderer = gtk.CellRendererText() renderer.set_property('xalign', 1.0) @@ -43,7 +47,7 @@ class ThumbnailChecker: column.set_resizable(True) column.set_min_width(80) column.set_resizable(True) - treeview.append_column(column) + self.treeview.append_column(column) def show(self): self.window.show_all() @@ -51,6 +55,10 @@ class ThumbnailChecker: def on_quit(self, *args): gtk.main_quit() + def on_button_delete_clicked(self, button, *args): + selection = self.treeview.get_selection () + selection.selected_foreach (self.delete_selected_thumbnail) + def on_button_stop_clicked(self, button, *args): gobject.source_remove(self.id) self.button_stop.set_sensitive(False) @@ -70,10 +78,10 @@ class ThumbnailChecker: (orphan_size, orphan_count) = (0, 0) (external_size, external_count) = (0, 0) - orphan_iter = self.model.append(None, ["Orphans", '0']) - external_iter = self.model.append(None, ["Orphans and/or Externals", '0']) - invalid_iter = self.model.append(None, ["Invalid (broken image)", '0']) - non_fd_iter = self.model.append(None, ["No Free Desktop compliant", '0']) + orphan_iter = self.model.append(None, ["Orphans", '0', ""]) + external_iter = self.model.append(None, ["Orphans and/or Externals", '0', ""]) + invalid_iter = self.model.append(None, ["Invalid (broken image)", '0', ""]) + non_fd_iter = self.model.append(None, ["No Free Desktop compliant", '0', ""]) rootdir = os.path.expanduser('~/.thumbnails') homedir = os.path.expanduser('~') @@ -115,7 +123,7 @@ class ThumbnailChecker: external_count += 1 str_size = locale.format("%d", size, grouping=True) - self.model.append(external_iter, [uri, str_size]) + self.model.append(external_iter, [uri, str_size, filename]) str_size = locale.format("%d", external_size, grouping=True) self.model.set(external_iter, 1, str_size) @@ -130,7 +138,7 @@ class ThumbnailChecker: shortname = local_path.replace(homedir, '~') str_size = locale.format("%d", size, grouping=True) - self.model.append(orphan_iter, [shortname, str_size]) + self.model.append(orphan_iter, [shortname, str_size, filename]) str_size = locale.format("%d", orphan_size, grouping=True) self.model.set(orphan_iter, 1, str_size) @@ -143,7 +151,7 @@ class ThumbnailChecker: non_fd_count += 1 str_size = locale.format("%d", size, grouping=True) - self.model.append(non_fd_iter, [shortname, str_size]) + self.model.append(non_fd_iter, [shortname, str_size, filename]) str_size = locale.format("%d", non_fd_size, grouping=True) self.model.set(non_fd_iter, 1, str_size) @@ -158,7 +166,7 @@ class ThumbnailChecker: shortname = filename.replace(homedir, '~') str_size = locale.format("%d", size, grouping=True) - self.model.append(invalid_iter, [shortname, str_size]) + self.model.append(invalid_iter, [shortname, str_size, filename]) str_size = locale.format("%d", invalid_size, grouping=True) self.model.set(invalid_iter, 1, str_size) @@ -167,15 +175,23 @@ class ThumbnailChecker: collect() yield True - + text = "%s done. Trying the next one..." % root self.progress.set_text(text) yield True - + self.progressbar.set_text('Done') self.progress.set_text('') yield False + def delete_selected_thumbnail (self, treemodel, path, iter): + file = treemodel.get (iter, 2) [0] + os.unlink (os.path.expanduser (file)) + + def on_selection_changed (self, selection): + has_selection = (selection.count_selected_rows () != 0) + self.button_delete.set_sensitive (has_selection) + if __name__ == "__main__": (lang_code, encoding) = locale.getdefaultlocale() locale.setlocale(locale.LC_ALL, lang_code) --- ../th/thumbnail-checker.glade 2006-08-23 16:13:33.000000000 -0400 +++ thumbnail-checker.glade 2006-10-20 16:21:52.000000000 -0300 @@ -106,6 +106,16 @@ GTK_BUTTONBOX_END 6 + + + True + False + gtk-delete + True + + + + True