Handle tree_state on reloads and fix tree_state on tab closing

review850003
This commit is contained in:
Nicolas Évrard committed 2013-06-14 13:33:16 +02:00
1 parent df4b707855
commit d655ea6bfe
3 files changed
+26 -21

No files matched your search

+3
View File
@@ -943,6 +943,7 @@ class Main(object):
else:
res = False
if self.menu_screen:
self.menu_screen.save_tree_state()
self.menu_screen.destroy()
self.menu_screen = None
self.menu_expander_clear()
@@ -1023,6 +1024,8 @@ class Main(object):
vbox.pack_start(self.global_search_entry, False, False)
vbox.show_all()
if self.menu_screen:
self.menu_screen.save_tree_state()
self.menu_screen = None
self.menu_expander_clear()
action = PYSONDecoder().decode(prefs['pyson_menu'])
+1
View File
@@ -356,6 +356,7 @@ class Form(SignalEvent, TabContent):
return False
self.screen.cancel_current()
set_cursor = False
self.screen.save_tree_state(store=False)
if self.screen.current_view.view_type != 'form':
obj_id = self.id_get()
self.screen.search_filter(self.screen.screen_container.get_text())
+22 -21
View File
@@ -312,7 +312,6 @@ class Screen(SignalEvent):
return False
def destroy(self):
self.save_tree_state()
self.group.destroy()
for view in self.views:
view.destroy()
@@ -633,27 +632,29 @@ class Screen(SignalEvent):
self.expanded_nodes[parent][view.children_field] = expanded_nodes
view.expand_nodes(expanded_nodes)
def save_tree_state(self):
view = self.current_view
if (not CONFIG['client.save_tree_expanded_state']
or not view
or view.view_type != 'tree'
or not view.children_field
or not (self.parent is None
or isinstance(self.parent, Record))):
def save_tree_state(self, store=True):
if not CONFIG['client.save_tree_expanded_state']:
return
parent = self.parent.id if self.parent else None
paths = view.get_expanded_paths()
self.expanded_nodes[parent][view.children_field] = paths
json_domain = self.get_tree_domain(parent)
json_paths = json.dumps(paths)
try:
RPCExecute('model', 'ir.ui.view_tree_expanded_state',
'set_expanded', self.model_name, json_domain,
self.current_view.children_field, json_paths,
process_exception=False)
except (TrytonServerError, TrytonServerUnavailable):
pass
for view in self.views:
if view.view_type == 'form':
for widgets in view.widgets.itervalues():
for widget in widgets:
if hasattr(widget, 'screen'):
widget.screen.save_tree_state(store)
elif (view.view_type == 'tree' and view.children_field):
parent = self.parent.id if self.parent else None
paths = view.get_expanded_paths()
self.expanded_nodes[parent][view.children_field] = paths
if store:
json_domain = self.get_tree_domain(parent)
json_paths = json.dumps(paths)
try:
RPCExecute('model', 'ir.ui.view_tree_expanded_state',
'set_expanded', self.model_name, json_domain,
view.children_field, json_paths,
process_exception=False)
except (TrytonServerError, TrytonServerUnavailable):
pass
def get_tree_domain(self, parent):
if parent: