5 assert gtk
.pygtk_version
>= (2, 8)
10 from gazpacho
.loader
.loader
import ObjectBuilder
12 from ui
.gtk
.pysize_widget
import PysizeWidget
13 from ui
.utils
import human_unit
14 from core
.compute_size
import size_observable
16 def hover_changed(main_widget
, hover_node
, status_bar
):
18 node
= hover_node
or main_widget
.tree
.root
19 label
= human_unit(node
.size
) + ' | ' + node
.get_fullpath()
20 status_bar
.push(0, label
)
22 def size_observer(progress_bar
):
24 if now
- size_observer
.last_pulse
> 0.04:
25 size_observer
.last_pulse
= now
26 gobject
.idle_add(lambda: progress_bar
.pulse())
27 size_observer
.last_pulse
= time
.time()
29 def hide_pbar(progress_bar
, visible
):
35 def update_action(zoom_fit_action
, main_widget
):
36 zoom_fit_action
.set_sensitive(main_widget
.options
.min_size
!= 'auto')
39 def __init__(self
, options
, args
):
40 create_widget
= lambda **unused_kwargs
: PysizeWidget(options
, args
)
41 glade_filename
= os
.path
.join(os
.path
.dirname(__file__
),
43 builder
= ObjectBuilder(glade_filename
,
44 custom
= {'pysize_widget': create_widget
})
46 main_widget
= builder
.get_widget('main_widget')
47 status_bar
= builder
.get_widget('status_bar')
48 main_widget
.connect('hover_changed', hover_changed
, status_bar
)
50 progress_bar
= builder
.get_widget('progress_bar')
51 size_observable
.add_observer(lambda: size_observer(progress_bar
))
52 pbar_hider
= lambda w
, building
: hide_pbar(progress_bar
, building
)
53 main_widget
.connect('building-tree-state-changed', pbar_hider
)
55 ui_manager
= builder
.get_widget('uimanager')
56 zoom_fit_action
= ui_manager
.get_action('ui/toolbar/ZoomFit')
57 action_updater
= lambda w
, building
: update_action(zoom_fit_action
, w
)
58 main_widget
.connect('building-tree-state-changed', action_updater
)
61 'quit_action': lambda w
: gtk
.main_quit(),
62 'refresh_tree_action': lambda w
: main_widget
.refresh_tree(),
63 'zoom_fit_action': lambda w
: main_widget
.zoom_fit(),
64 'zoom_in_action': lambda w
: main_widget
.zoom_in(),
65 'zoom_out_action': lambda w
: main_widget
.zoom_out(),
66 'parent_directory_action': lambda w
: main_widget
.parent_directory()
68 builder
.signal_autoconnect(callbacks
)
70 window
= builder
.get_widget('main_window')
71 window
.set_title('Pysize - ' + args
[0])