Fix expand tree view when connection failed for issue194
This commit is contained in:
1 parent
1a84ddf7a1
commit
e50853771c
2 files changed
+51
-5
No files matched your search
@@ -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:
|
||||
|
||||
@@ -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]))
|
||||
|
||||
Reference in new issue
Block a user