# HG changeset patch # User Edouard Tisserant <edouard@beremiz.fr> # Date 1740664542 -3600 # Node ID 6b4e1452fa166104688aede34e28551a0ed9667a # Parent 766f3e0e72777d03f5b1aa316420c4400ed3f8bc IDE/CLI: cleaner implementation of actions To Do Before Quit diff -r 766f3e0e7277 -r 6b4e1452fa16 BeremizIDE.py --- a/BeremizIDE.py Thu Feb 27 09:38:10 2025 +0100 +++ b/BeremizIDE.py Thu Feb 27 14:55:42 2025 +0100 @@ -65,7 +65,7 @@ ITEM_RESOURCE, \ ITEM_CONFNODE -from ProjectController import ProjectController, GetAddMenuItems, MATIEC_ERROR_MODEL +from ProjectController import ProjectController, GetAddMenuItems, MATIEC_ERROR_MODEL, ToDoBeforeQuit from IDEFrame import \ TITLE,\ @@ -614,14 +614,6 @@ else: return IDEFrame.LoadTab(self, notebook, page_infos) - # Strange hack required by WAMP connector, using twisted. - # Twisted reactor needs to be stopped only before quit, - # since it cannot be restarted - ToDoBeforeQuit = [] - - def AddToDoBeforeQuit(self, Thing): - self.ToDoBeforeQuit.append(Thing) - def TryCloseFrame(self): if self.CTR is None or self.CheckSaveBeforeClosing(_("Close Application")): if self.CTR is not None: @@ -631,9 +623,9 @@ self.SaveLastState() - for Thing in self.ToDoBeforeQuit: + for Thing in ToDoBeforeQuit: Thing() - self.ToDoBeforeQuit = [] + ToDoBeforeQuit = [] return True return False diff -r 766f3e0e7277 -r 6b4e1452fa16 CLIController.py --- a/CLIController.py Thu Feb 27 09:38:10 2025 +0100 +++ b/CLIController.py Thu Feb 27 14:55:42 2025 +0100 @@ -11,7 +11,7 @@ import fake_wx -from ProjectController import ProjectController +from ProjectController import ProjectController, ToDoBeforeQuit from LocalRuntimeMixin import LocalRuntimeMixin from runtime.loglevels import LogLevelsCount, LogLevels @@ -154,9 +154,14 @@ def finish(self): + global ToDoBeforeQuit self._Disconnect() + for Thing in ToDoBeforeQuit: + Thing() + ToDoBeforeQuit = [] + if not self.session.keep: self.KillLocalRuntime() diff -r 766f3e0e7277 -r 6b4e1452fa16 ProjectController.py --- a/ProjectController.py Thu Feb 27 09:38:10 2025 +0100 +++ b/ProjectController.py Thu Feb 27 14:55:42 2025 +0100 @@ -2141,3 +2141,10 @@ for d in self.StatusMethods: if d["method"] == method and d.get("enabled", True) and d.get("shown", True): getattr(self, method)() + + +# Strange hack required by WAMP connector, using twisted. +# Twisted reactor needs to be stopped only before quit, +# since it cannot be restarted +ToDoBeforeQuit = [] + diff -r 766f3e0e7277 -r 6b4e1452fa16 connectors/WAMP/__init__.py --- a/connectors/WAMP/__init__.py Thu Feb 27 09:38:10 2025 +0100 +++ b/connectors/WAMP/__init__.py Thu Feb 27 14:55:42 2025 +0100 @@ -90,12 +90,11 @@ confnodesroot.logger.write(_("WAMP connecting to URL : %s\n") % url) return conn - AddToDoBeforeQuit = confnodesroot.AppFrame.AddToDoBeforeQuit def ThreadProc(): global _WampConnection _WampConnection = RegisterWampClient() - AddToDoBeforeQuit(reactor.stop) + ToDoBeforeQuit.append(reactor.stop) reactor.run(installSignalHandlers=False) class WampPLCObjectProxy(object):