From 832bb9eec25b8fc84afb6b64d296f3bbf31f136e Mon Sep 17 00:00:00 2001 From: "g@localhost.localdomain" Date: Sat, 7 Oct 2006 12:50:37 +0200 Subject: [PATCH] "Show properties..." dialog --- pysize/ui/gtk/pysize_widget_menu.py | 43 +++++++++++++++++++++++++------------ 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/pysize/ui/gtk/pysize_widget_menu.py b/pysize/ui/gtk/pysize_widget_menu.py index 2fd40d6..d2fd5b0 100644 --- a/pysize/ui/gtk/pysize_widget_menu.py +++ b/pysize/ui/gtk/pysize_widget_menu.py @@ -3,6 +3,9 @@ pygtk.require('2.0') import gtk assert gtk.pygtk_version >= (2, 8) +from pysize.core import compute_size +from pysize.ui.utils import human_unit + class PysizeWidget_Menu(object): def __init__(self, options, args): self.connect('popup-menu', type(self)._pop_menu) @@ -16,24 +19,36 @@ class PysizeWidget_Menu(object): menu.append(item) def _pop_menu(self, event=None): - menu = gtk.Menu() + if self.cursor_node: + menu = gtk.Menu() - self._add_menu_item(menu, 'Say hello', self.say_hello) + props = lambda item: self.show_properties(self.cursor_node) + self._add_menu_item(menu, 'Show properties...', props) - if event: - button = event.button - event_time = event.time - else: - button = 0 - event_time = gtk.get_current_event_time() - menu.attach_to_widget(self, None) - menu.popup(None, None, None, button, event_time) + if event: + button = event.button + event_time = event.time + else: + button = 0 + event_time = gtk.get_current_event_time() + menu.attach_to_widget(self, None) + menu.popup(None, None, None, button, event_time) + return True def _menu_mouse_button(self, event): if event.button == 3 and event.type == gtk.gdk.BUTTON_PRESS: - self._pop_menu(event) - return True + return self._pop_menu(event) return False - def say_hello(self, item): - print 'hello' + def show_properties(self, item): + fullpaths = item.get_fullpaths() + human_size = lambda fp: human_unit(compute_size.slow(fp)) + size_fullpaths = [human_size(fp) + " | " + fp for fp in fullpaths] + dialog = gtk.Dialog('Properties for ' + item.get_name(), None, 0, + (gtk.STOCK_CLOSE, gtk.RESPONSE_CLOSE)) + label = gtk.Label('\n'.join(size_fullpaths)) + label.set_selectable(True) + label.show() + dialog.vbox.add(label) + dialog.run() + dialog.destroy() -- 2.11.4.GIT