mirror of
https://github.com/bec-project/bec_widgets.git
synced 2025-07-14 11:41:49 +02:00
fix: server shutdown widgets
This commit is contained in:
@ -172,9 +172,6 @@ class BECWidgetsCLIServer:
|
|||||||
|
|
||||||
# We only need to broadcast the dock areas
|
# We only need to broadcast the dock areas
|
||||||
data = {key: self.serialize_object(val) for key, val in connections.items()}
|
data = {key: self.serialize_object(val) for key, val in connections.items()}
|
||||||
# logger.info(f"All registered connections: {list(connections.keys())}")
|
|
||||||
for k, v in data.items():
|
|
||||||
logger.info(f"key: {k}, value: {v}")
|
|
||||||
self.client.connector.xadd(
|
self.client.connector.xadd(
|
||||||
MessageEndpoints.gui_registry_state(self.gui_id),
|
MessageEndpoints.gui_registry_state(self.gui_id),
|
||||||
msg_dict={"data": messages.GUIRegistryStateMessage(state=data)},
|
msg_dict={"data": messages.GUIRegistryStateMessage(state=data)},
|
||||||
@ -182,12 +179,9 @@ class BECWidgetsCLIServer:
|
|||||||
)
|
)
|
||||||
|
|
||||||
def shutdown(self): # TODO not sure if needed when cleanup is done at level of BECConnector
|
def shutdown(self): # TODO not sure if needed when cleanup is done at level of BECConnector
|
||||||
logger.info(f"Shutting down server with gui_id: {self.gui_id}")
|
|
||||||
self.status = messages.BECStatus.IDLE
|
self.status = messages.BECStatus.IDLE
|
||||||
self._heartbeat_timer.stop()
|
self._heartbeat_timer.stop()
|
||||||
self.emit_heartbeat()
|
self.emit_heartbeat()
|
||||||
logger.info(f"Shutting down app with {self.gui.gui_id}")
|
|
||||||
self.gui.close()
|
|
||||||
logger.info("Succeded in shutting down gui")
|
logger.info("Succeded in shutting down gui")
|
||||||
self.client.shutdown()
|
self.client.shutdown()
|
||||||
|
|
||||||
@ -318,11 +312,10 @@ def main():
|
|||||||
def sigint_handler(*args):
|
def sigint_handler(*args):
|
||||||
# display message, for people to let it terminate gracefully
|
# display message, for people to let it terminate gracefully
|
||||||
print("Caught SIGINT, exiting")
|
print("Caught SIGINT, exiting")
|
||||||
# Close all widgets
|
# Widgets should be all closed.
|
||||||
with RPCRegister.delayed_broadcast():
|
with RPCRegister.delayed_broadcast():
|
||||||
for widget in QApplication.instance().topLevelWidgets():
|
for widget in QApplication.instance().topLevelWidgets():
|
||||||
widget.close()
|
widget.close()
|
||||||
|
|
||||||
app.quit()
|
app.quit()
|
||||||
|
|
||||||
# gui.bec.close()
|
# gui.bec.close()
|
||||||
|
@ -406,14 +406,20 @@ class BECDock(BECWidget, Dock):
|
|||||||
"""
|
"""
|
||||||
Clean up the dock, including all its widgets.
|
Clean up the dock, including all its widgets.
|
||||||
"""
|
"""
|
||||||
|
# # FIXME Cleanup might be called twice
|
||||||
|
try:
|
||||||
|
logger.info(f"Cleaning up dock {self.name()}")
|
||||||
|
self.label.close()
|
||||||
|
self.label.deleteLater()
|
||||||
|
except Exception as e:
|
||||||
|
logger.error(f"Error while closing dock label: {e}")
|
||||||
|
|
||||||
# Remove the dock from the parent dock area
|
# Remove the dock from the parent dock area
|
||||||
if self.parent_dock_area:
|
if self.parent_dock_area:
|
||||||
self.parent_dock_area.dock_area.docks.pop(self.name(), None)
|
self.parent_dock_area.dock_area.docks.pop(self.name(), None)
|
||||||
self.parent_dock_area.config.docks.pop(self.name(), None)
|
self.parent_dock_area.config.docks.pop(self.name(), None)
|
||||||
self.delete_all()
|
self.delete_all()
|
||||||
self.widgets.clear()
|
self.widgets.clear()
|
||||||
self.label.close()
|
|
||||||
self.label.deleteLater()
|
|
||||||
super().cleanup()
|
super().cleanup()
|
||||||
|
|
||||||
def close(self):
|
def close(self):
|
||||||
|
Reference in New Issue
Block a user