0
0
mirror of https://github.com/bec-project/bec_widgets.git synced 2025-07-14 03:31:50 +02:00

fix(widget/figure): add cleanup method to disconnect all slots before removing Waveform1D from layout

This commit is contained in:
wyzula-jan
2024-02-22 14:04:13 +01:00
parent 9a5c86ea35
commit a28b9c8981
2 changed files with 9 additions and 9 deletions

View File

@ -72,7 +72,9 @@ class WidgetHandler:
**(config if config is not None else {}),
}
widget_config = config_class(**widget_config_dict)
widget = widget_class(config=widget_config, parent_figure=parent_figure)
widget = widget_class(
config=widget_config, parent_figure=parent_figure, client=parent_figure.client
)
if axis_kwargs:
widget.set(**axis_kwargs)
@ -250,6 +252,7 @@ class BECFigure(BECConnector, pg.GraphicsLayoutWidget):
"""
if widget_id in self.widgets:
widget = self.widgets.pop(widget_id)
widget.cleanup()
self.removeItem(widget)
self.grid[widget.config.row][widget.config.col] = None
self._reindex_grid()
@ -396,7 +399,6 @@ class BECFigure(BECConnector, pg.GraphicsLayoutWidget):
##################################################
from qtconsole.inprocess import QtInProcessKernelManager
import matplotlib.pyplot as plt
from qtconsole.rich_jupyter_widget import RichJupyterWidget
@ -409,7 +411,7 @@ class JupyterConsoleWidget(RichJupyterWidget):
self.kernel_client = self.kernel_manager.client()
self.kernel_client.start_channels()
self.kernel_manager.kernel.shell.push({"np": np, "pg": pg, "plt": plt})
self.kernel_manager.kernel.shell.push({"np": np, "pg": pg})
def shutdown_kernel(self):
self.kernel_client.stop_channels()
@ -429,7 +431,6 @@ class DebugWindow(QWidget):
self.splitter.setSizes([200, 100])
# self.con_w1 =
# console push
self.console.kernel_manager.kernel.shell.push(
{"fig": self.figure, "w1": self.w1, "w2": self.w2, "c1": self.c1, "w5": self.w5}
@ -498,11 +499,6 @@ class DebugWindow(QWidget):
pen_style="dashdot",
)
self.w1.remove()
self.figure.add_plot(row=0, col=1, title="Widget 5")
self.w5 = self.figure[0, 1]
if __name__ == "__main__": # pragma: no cover
import sys

View File

@ -660,3 +660,7 @@ class BECWaveform1D(BECPlotBase):
data = self.queue.scan_storage.find_scan_by_ID(self.scanID).data
self._update_scan_curves(data)
def cleanup(self):
"""Cleanup the widget connection from BECDispatcher."""
self.bec_dispatcher.disconnect_slot(self.on_scan_segment, MessageEndpoints.scan_segment())