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:
@ -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
|
||||
|
@ -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())
|
||||
|
Reference in New Issue
Block a user