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

fix(dock): dock saves configs of all children widgets

This commit is contained in:
2024-06-05 11:07:14 +02:00
parent 46face0ee5
commit 4be756a867
2 changed files with 16 additions and 2 deletions

View File

@ -1409,6 +1409,16 @@ class BECMotorMap(RPCBase):
class BECDock(RPCBase): class BECDock(RPCBase):
@property
@rpc_call
def config_dict(self) -> "dict":
"""
Get the configuration of the widget.
Returns:
dict: The configuration of the widget.
"""
@property @property
@rpc_call @rpc_call
def rpc_id(self) -> "str": def rpc_id(self) -> "str":

View File

@ -1,6 +1,6 @@
from __future__ import annotations from __future__ import annotations
from typing import TYPE_CHECKING, Literal, Optional from typing import TYPE_CHECKING, Literal, Optional, Any
from pydantic import Field from pydantic import Field
from pyqtgraph.dockarea import Dock from pyqtgraph.dockarea import Dock
@ -15,7 +15,7 @@ if TYPE_CHECKING:
class DockConfig(ConnectionConfig): class DockConfig(ConnectionConfig):
widgets: dict[str, ConnectionConfig] = Field({}, description="The widgets in the dock.") widgets: dict[str, Any] = Field({}, description="The widgets in the dock.")
position: Literal["bottom", "top", "left", "right", "above", "below"] = Field( position: Literal["bottom", "top", "left", "right", "above", "below"] = Field(
"bottom", description="The position of the dock." "bottom", description="The position of the dock."
) )
@ -26,6 +26,7 @@ class DockConfig(ConnectionConfig):
class BECDock(BECConnector, Dock): class BECDock(BECConnector, Dock):
USER_ACCESS = [ USER_ACCESS = [
"config_dict",
"rpc_id", "rpc_id",
"widget_list", "widget_list",
"show_title_bar", "show_title_bar",
@ -179,6 +180,7 @@ class BECDock(BECConnector, Dock):
widget = RPCWidgetHandler.create_widget(widget_type) widget = RPCWidgetHandler.create_widget(widget_type)
self.addWidget(widget, row=row, col=col, rowspan=rowspan, colspan=colspan) self.addWidget(widget, row=row, col=col, rowspan=rowspan, colspan=colspan)
self.config.widgets[widget.gui_id] = widget.config
return widget return widget
@ -209,6 +211,7 @@ class BECDock(BECConnector, Dock):
self.layout_manager.shift_widgets(shift, start_row=row) self.layout_manager.shift_widgets(shift, start_row=row)
self.addWidget(widget, row=row, col=col, rowspan=rowspan, colspan=colspan) self.addWidget(widget, row=row, col=col, rowspan=rowspan, colspan=colspan)
self.config.widgets[widget.gui_id] = widget.config
def move_widget(self, widget: QWidget, new_row: int, new_col: int): def move_widget(self, widget: QWidget, new_row: int, new_col: int):
""" """
@ -242,6 +245,7 @@ class BECDock(BECConnector, Dock):
""" """
widget = self.rpc_register.get_rpc_by_id(widget_rpc_id) widget = self.rpc_register.get_rpc_by_id(widget_rpc_id)
self.layout.removeWidget(widget) self.layout.removeWidget(widget)
self.config.widgets.pop(widget_rpc_id, None)
widget.close() widget.close()
def remove(self): def remove(self):