diff --git a/bec_widgets/cli/client_utils.py b/bec_widgets/cli/client_utils.py index cfaadd23..b90edac5 100644 --- a/bec_widgets/cli/client_utils.py +++ b/bec_widgets/cli/client_utils.py @@ -208,6 +208,7 @@ class BECGuiClientMixin: self._process.terminate() if self._process_output_processing_thread: self._process_output_processing_thread.join() + self._process.wait() self._process = None diff --git a/bec_widgets/cli/server.py b/bec_widgets/cli/server.py index 420a267e..4791b44e 100644 --- a/bec_widgets/cli/server.py +++ b/bec_widgets/cli/server.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import inspect import signal import sys @@ -29,7 +31,7 @@ class BECWidgetsCLIServer: dispatcher: BECDispatcher = None, client=None, config=None, - gui_class: Union["BECFigure", "BECDockArea"] = BECFigure, + gui_class: Union[BECFigure, BECDockArea] = BECFigure, ) -> None: self.dispatcher = BECDispatcher(config=config) if dispatcher is None else dispatcher self.client = self.dispatcher.client if client is None else client @@ -118,6 +120,7 @@ class BECWidgetsCLIServer: def shutdown(self): # TODO not sure if needed when cleanup is done at level of BECConnector self._shutdown_event = True self._heartbeat_timer.stop() + self.gui.close() self.client.shutdown() @@ -207,6 +210,7 @@ def main(): app.quit() signal.signal(signal.SIGINT, sigint_handler) + signal.signal(signal.SIGTERM, sigint_handler) sys.exit(app.exec()) diff --git a/bec_widgets/widgets/vscode/vscode.py b/bec_widgets/widgets/vscode/vscode.py index 13a2a72c..63de3a68 100644 --- a/bec_widgets/widgets/vscode/vscode.py +++ b/bec_widgets/widgets/vscode/vscode.py @@ -72,6 +72,13 @@ class VSCodeEditor(WebsiteWidget): self.cleanup_vscode() return super().cleanup() + def close(self): + """ + Close the widget. + """ + self.cleanup_vscode() + return super().close() + if __name__ == "__main__": # pragma: no cover import sys