4 assert gtk
.pygtk_version
>= (2, 8)
6 from pysize
.core
import compute_size
7 from pysize
.ui
.utils
import human_unit
9 class PysizeWidget_Menu(object):
10 def __init__(self
, options
, args
):
11 self
.connect('popup-menu', type(self
)._pop
_menu
)
12 self
.connect('button-press-event', type(self
)._menu
_mouse
_button
)
15 def _add_menu_item(menu
, name
, action
):
16 item
= gtk
.MenuItem(name
)
17 item
.connect('activate', action
)
21 def _pop_menu(self
, event
=None):
25 props
= lambda item
: self
.show_properties(self
.cursor_node
)
26 self
._add
_menu
_item
(menu
, 'Show properties...', props
)
30 event_time
= event
.time
33 event_time
= gtk
.get_current_event_time()
34 menu
.attach_to_widget(self
, None)
35 menu
.popup(None, None, None, button
, event_time
)
38 def _menu_mouse_button(self
, event
):
39 if event
.button
== 3 and event
.type == gtk
.gdk
.BUTTON_PRESS
:
40 return self
._pop
_menu
(event
)
43 def show_properties(self
, item
):
44 fullpaths
= item
.get_fullpaths()
45 human_size
= lambda fp
: human_unit(compute_size
.slow(fp
))
46 size_fullpaths
= [human_size(fp
) + " | " + fp
for fp
in fullpaths
]
47 dialog
= gtk
.Dialog('Properties for ' + item
.get_name(), None, 0,
48 (gtk
.STOCK_CLOSE
, gtk
.RESPONSE_CLOSE
))
49 label
= gtk
.Label('\n'.join(size_fullpaths
))
50 label
.set_selectable(True)
52 dialog
.vbox
.add(label
)