Fix expand tree view when connection failed for issue194

This commit is contained in:
Cédric Krier committed 2008-07-21 15:18:18 +02:00
1 parent 1a84ddf7a1
commit e50853771c
2 files changed
+51 -5

No files matched your search

+20
View File
@@ -67,6 +67,8 @@ class Tree(SignalEvent):
context=context)
self.tree_res.view.connect('row-activated', self.sig_activate)
self.tree_res.view.connect('key_press_event', self.sig_key_press)
self.tree_res.view.connect_after('test-expand-row',
self.sig_test_expand_row)
if not name:
self.name = self.tree_res.name
@@ -259,6 +261,24 @@ class Tree(SignalEvent):
for path in paths:
self.tree_res.view.expand_row(path, False)
def sig_test_expand_row(self, widget, iter, path):
model = self.tree_res.view.get_model()
iter_children = model.iter_children(iter)
if iter_children and model.get(iter_children, 0)[0] in model.to_reload:
host = rpc._SOCK.host
port = rpc._SOCK.port
while True:
password = common.ask(_('Password:'), self.window,
visibility=False)
if password is None:
return True
res = rpc.login(rpc._USERNAME, password, host, port,
rpc._DATABASE)
if res < 0:
continue
return False
return False
def sig_edit(self):
obj_ids = self.ids_get()
if self.tree_res.toolbar:
+31 -5
View File
@@ -43,6 +43,7 @@ class ViewTreeModel(gtk.GenericTreeModel, gtk.TreeSortable):
self.view = view
self.roots = ids
self.context = context or {}
self.to_reload = []
self.tree = self._node_process(self.roots)
self.pixbufs = pixbufs or {}
self.treeview = treeview
@@ -57,7 +58,10 @@ class ViewTreeModel(gtk.GenericTreeModel, gtk.TreeSortable):
ctx)
try:
res_ids = rpc.execute(*args)
except:
for obj_id in ids:
if obj_id in self.to_reload:
self.to_reload.remove(obj_id)
except Exception, exception:
for obj_id in ids:
val = {'id': obj_id}
for field in fields:
@@ -68,6 +72,8 @@ class ViewTreeModel(gtk.GenericTreeModel, gtk.TreeSortable):
else:
val[field] = ''
res_ids.append(val)
if obj_id not in self.to_reload:
self.to_reload.append(obj_id)
for field in self.fields:
field_type = self.fields_type[field]['type']
if field in self.fields_attrs \
@@ -165,7 +171,6 @@ class ViewTreeModel(gtk.GenericTreeModel, gtk.TreeSortable):
def _node_expand(self, node):
node[2] = self._node_process(node[3])
del node[3]
#Mandatory GenericTreeModel method
def on_get_path(self, node):
@@ -233,7 +238,14 @@ class ViewTreeModel(gtk.GenericTreeModel, gtk.TreeSortable):
return [(0, self.tree)]
node = node[:]
(i, values) = node[-1]
if values[i][2] is None:
to_reload = False
if len(values[i]) >= 4:
for obj_id in values[i][3]:
if obj_id in self.to_reload:
to_reload = True
if values[i][2] is None or to_reload:
self._node_expand(values[i])
if values[i][2] == []:
return None
@@ -250,7 +262,14 @@ class ViewTreeModel(gtk.GenericTreeModel, gtk.TreeSortable):
if node is None:
return len(self.tree)
(i, values) = node[-1]
if values[i][2] is None:
to_reload = False
if len(values[i]) >= 4:
for obj_id in values[i][3]:
if obj_id in self.to_reload:
to_reload = True
if values[i][2] is None or to_reload:
self._node_expand(values[i])
return len(values[i][2])
@@ -262,7 +281,14 @@ class ViewTreeModel(gtk.GenericTreeModel, gtk.TreeSortable):
return None
node = node[:]
(i, values) = node[-1]
if values[i][2] is None:
to_reload = False
if len(values[i]) >= 4:
for obj_id in values[i][3]:
if obj_id in self.to_reload:
to_reload = True
if values[i][2] is None or to_reload:
self._node_expand(values[i])
if child < len(values[i][2]):
node.append((child, values[i][2]))