From dca89ee1ab1ea8bc72521fd8de1e052193ef08d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 5 Feb 2008 11:41:40 +0100 Subject: [PATCH] Use tree view for search widget --- tryton/gui/window/view_form/screen/screen.py | 22 ++++++++++++-------- tryton/gui/window/win_search.py | 2 +- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/tryton/gui/window/view_form/screen/screen.py b/tryton/gui/window/view_form/screen/screen.py index f836cb644e..e17f7d755f 100644 --- a/tryton/gui/window/view_form/screen/screen.py +++ b/tryton/gui/window/view_form/screen/screen.py @@ -68,6 +68,7 @@ class Screen(SignalEvent): self.limit = limit self.readonly = readonly self.form = form + self.fields_view_tree = None if view_type: self.view_to_load = view_type[1:] @@ -81,11 +82,12 @@ class Screen(SignalEvent): def search_active(self, active=True): if active and self.show_search: if not self.filter_widget: - view_form = rpc.session.rpc_exec_auth('/object', 'execute', - self.name, 'fields_view_get', False, 'form', - self.context) - self.filter_widget = Form(view_form['arch'], - view_form['fields'], self.name, self.window, + if not self.fields_view_tree: + self.fields_view_tree = rpc.session.rpc_exec_auth('/object', + 'execute', self.name, 'fields_view_get', False, + 'tree', self.context) + self.filter_widget = Form(self.fields_view_tree['arch'], + self.fields_view_tree['fields'], self.name, self.window, self.domain, (self, self.search_filter)) self.screen_container.add_filter(self.filter_widget.widget, self.search_filter, self.search_clear) @@ -241,13 +243,16 @@ class Screen(SignalEvent): pass for node2 in node.childNodes: _parse_fields(node2, fields) - dom = xml.dom.minidom.parseString(arch) - _parse_fields(dom, fields) + xml_dom = xml.dom.minidom.parseString(arch) + _parse_fields(xml_dom, fields) for dom in self.domain: if dom[0] in fields: field_dom = str(fields[dom[0]].setdefault('domain',[])) fields[dom[0]]['domain'] = field_dom[:1] + \ str(('id', dom[1], dom[2])) + ',' + field_dom[1:] + for node in xml_dom.childNodes: + if node.localName == 'tree': + self.fields_view_tree = {'arch': arch, 'fields': fields} from tryton.gui.window.view_form.view.widget_parse import WidgetParse models = self.models.models @@ -260,8 +265,7 @@ class Screen(SignalEvent): self.fields = self.models.fields parser = WidgetParse(parent=self.parent, window=self.window) - dom = xml.dom.minidom.parseString(arch) - view = parser.parse(self, dom, self.fields, toolbar=toolbar) + view = parser.parse(self, xml_dom, self.fields, toolbar=toolbar) self.views.append(view) diff --git a/tryton/gui/window/win_search.py b/tryton/gui/window/win_search.py index 9c26df1d6a..fbda603774 100644 --- a/tryton/gui/window/win_search.py +++ b/tryton/gui/window/win_search.py @@ -54,7 +54,7 @@ class WinSearch(object): self.model_name = model view_form = rpc.session.rpc_exec_auth('/object', 'execute', - self.model_name, 'fields_view_get', False, 'form', self.context) + self.model_name, 'fields_view_get', False, 'tree', self.context) self.form = widget_search.Form(view_form['arch'], view_form['fields'], model, parent=self.win)