3 from model
import Interface
6 from policy
import policy
8 class InterfaceBrowser(gtk
.ScrolledWindow
):
11 edit_properties
= None
18 def __init__(self
, root
):
19 assert isinstance(root
, Interface
)
21 self
.edit_properties
= gtk
.Action('edit_properties',
22 'Interface Properties...',
23 'Set which implementation of this interface to use.',
25 self
.edit_properties
.set_property('sensitive', False)
27 gtk
.ScrolledWindow
.__init
__(self
)
28 self
.set_policy(gtk
.POLICY_AUTOMATIC
, gtk
.POLICY_ALWAYS
)
29 self
.set_shadow_type(gtk
.SHADOW_IN
)
31 self
.model
= gtk
.TreeStore(object, str, str, str)
32 self
.tree_view
= tree_view
= gtk
.TreeView(self
.model
)
34 text
= gtk
.CellRendererText()
36 column
= gtk
.TreeViewColumn(_('Interface'), text
,
37 text
= InterfaceBrowser
.INTERFACE_NAME
)
38 tree_view
.append_column(column
)
40 column
= gtk
.TreeViewColumn(_('Version'), text
,
41 text
= InterfaceBrowser
.VERSION
)
42 tree_view
.append_column(column
)
44 column
= gtk
.TreeViewColumn(_('Description'), text
,
45 text
= InterfaceBrowser
.SUMMARY
)
46 tree_view
.append_column(column
)
51 tree_view
.set_enable_search(True)
53 selection
= tree_view
.get_selection()
56 store
, iter = sel
.get_selected()
57 self
.edit_properties
.set_property('sensitive', iter != None)
58 selection
.connect('changed', sel_changed
)
60 def button_press(tree_view
, bev
):
61 if bev
.button
!= 1 or bev
.type != gtk
.gdk
._2BUTTON
_PRESS
:
63 pos
= tree_view
.get_path_at_pos(int(bev
.x
), int(bev
.y
))
67 properties
.edit(self
.model
[path
][InterfaceBrowser
.INTERFACE
])
68 tree_view
.connect('button-press-event', button_press
)
70 def edit_selected(action
):
71 store
, iter = selection
.get_selected()
73 properties
.edit(self
.model
[iter][InterfaceBrowser
.INTERFACE
])
74 self
.edit_properties
.connect('activate', edit_selected
)
76 self
.connect('destroy', lambda s
: policy
.watchers
.remove(self
.build_tree
))
77 policy
.watchers
.append(self
.build_tree
)
84 def add_node(parent
, iface
):
85 iter = self
.model
.append(parent
)
86 self
.model
[iter][InterfaceBrowser
.INTERFACE
] = iface
87 self
.model
[iter][InterfaceBrowser
.INTERFACE_NAME
] = iface
.get_name()
88 self
.model
[iter][InterfaceBrowser
.SUMMARY
] = iface
.summary
90 impl
= policy
.implementation
.get(iface
, None)
92 self
.model
[iter][InterfaceBrowser
.VERSION
] = impl
.get_version()
93 for child
in impl
.dependencies
.values():
94 add_node(iter, policy
.get_interface(child
.interface
))
96 self
.model
[iter][InterfaceBrowser
.VERSION
] = '(choose)'
97 add_node(None, self
.root
)
98 self
.tree_view
.expand_all()