From 62f502a4d290897e2d465bd8b26d2fb401fd8379 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sun, 18 Apr 2010 14:08:12 +0200 Subject: [PATCH] Modify screen window in WinForm for issue1519 --- tryton/gui/window/view_form/model/group.py | 12 +++++++++++- tryton/gui/window/view_form/screen/screen.py | 11 ++++++++++- tryton/gui/window/win_form.py | 4 ++++ 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/tryton/gui/window/view_form/model/group.py b/tryton/gui/window/view_form/model/group.py index 366ee0592d..2f5824b4f4 100644 --- a/tryton/gui/window/view_form/model/group.py +++ b/tryton/gui/window/view_form/model/group.py @@ -14,7 +14,7 @@ class Group(SignalEvent, list): parent_datetime_field=None): super(Group, self).__init__() self.lock_signal = False - self.window = window + self.__window = window self.parent = parent self.parent_name = parent_name self.parent_datetime_field = parent_datetime_field @@ -32,6 +32,16 @@ class Group(SignalEvent, list): self.readonly = True self.__id2record = {} + def __get_window(self): + return self.__window + + def __set_window(self, window): + for record in self: + record.window = window + self.__window = window + + window = property(__get_window, __set_window) + def insert(self, pos, record): if pos >= 1: self.__getitem__(pos - 1).next[id(self)] = record diff --git a/tryton/gui/window/view_form/screen/screen.py b/tryton/gui/window/view_form/screen/screen.py index 065a003809..bafc63b3d5 100644 --- a/tryton/gui/window/view_form/screen/screen.py +++ b/tryton/gui/window/view_form/screen/screen.py @@ -48,7 +48,7 @@ class Screen(SignalEvent): self.view_ids = view_ids self.parent = None self.parent_name = None - self.window = window + self.__window = window self.__group = None self.group = Group(model_name, {}, self.window, context=self.context, readonly=readonly) @@ -217,6 +217,15 @@ class Screen(SignalEvent): current_record = property(__get_current_record, __set_current_record) + def __get_window(self): + return self.__window + + def __set_window(self, window): + self.group.window = window + self.__window = window + + window = property(__get_window, __set_window) + def update_attachment(self, record): if record != self.current_record: return False diff --git a/tryton/gui/window/win_form.py b/tryton/gui/window/win_form.py index f903b5babf..5190a3d91a 100644 --- a/tryton/gui/window/win_form.py +++ b/tryton/gui/window/win_form.py @@ -188,6 +188,9 @@ class WinForm(object): self.win.show() + self.prev_window = self.screen.window + self.screen.window = self.win + self.screen.display() self.screen.current_view.set_cursor() @@ -312,5 +315,6 @@ class WinForm(object): viewport.remove(viewport.get_child()) self.screen.switch_view(view_type=self.prev_view.view_type) self.screen.signal_unconnect(self) + self.screen.window = self.prev_window self.win.destroy() self.parent.present()