bec-widgets 0.53.2__py3-none-any.whl → 0.54.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. CHANGELOG.md +24 -25
  2. PKG-INFO +1 -1
  3. bec_widgets/cli/client.py +13 -13
  4. bec_widgets/cli/client_utils.py +0 -4
  5. bec_widgets/cli/generate_cli.py +7 -5
  6. bec_widgets/cli/server.py +5 -7
  7. bec_widgets/examples/jupyter_console/jupyter_console_window.py +7 -3
  8. bec_widgets/examples/motor_movement/motor_control_compilations.py +17 -16
  9. bec_widgets/widgets/__init__.py +0 -10
  10. bec_widgets/widgets/figure/figure.py +40 -23
  11. bec_widgets/widgets/figure/plots/__init__.py +0 -0
  12. bec_widgets/widgets/figure/plots/image/__init__.py +0 -0
  13. bec_widgets/widgets/{plots → figure/plots/image}/image.py +6 -416
  14. bec_widgets/widgets/figure/plots/image/image_item.py +277 -0
  15. bec_widgets/widgets/figure/plots/image/image_processor.py +152 -0
  16. bec_widgets/widgets/figure/plots/motor_map/__init__.py +0 -0
  17. bec_widgets/widgets/{plots → figure/plots/motor_map}/motor_map.py +2 -2
  18. bec_widgets/widgets/figure/plots/waveform/__init__.py +0 -0
  19. bec_widgets/widgets/{plots → figure/plots/waveform}/waveform.py +9 -222
  20. bec_widgets/widgets/figure/plots/waveform/waveform_curve.py +227 -0
  21. bec_widgets/widgets/motor_control/__init__.py +0 -7
  22. bec_widgets/widgets/motor_control/motor_control.py +2 -948
  23. bec_widgets/widgets/motor_control/motor_table/__init__.py +0 -0
  24. bec_widgets/widgets/motor_control/motor_table/motor_table.py +483 -0
  25. bec_widgets/widgets/motor_control/movement_absolute/__init__.py +0 -0
  26. bec_widgets/widgets/motor_control/movement_absolute/movement_absolute.py +157 -0
  27. bec_widgets/widgets/motor_control/movement_relative/__init__.py +0 -0
  28. bec_widgets/widgets/motor_control/movement_relative/movement_relative.py +227 -0
  29. bec_widgets/widgets/motor_control/selection/__init__.py +0 -0
  30. bec_widgets/widgets/motor_control/selection/selection.py +110 -0
  31. {bec_widgets-0.53.2.dist-info → bec_widgets-0.54.0.dist-info}/METADATA +1 -1
  32. {bec_widgets-0.53.2.dist-info → bec_widgets-0.54.0.dist-info}/RECORD +51 -52
  33. docs/requirements.txt +1 -0
  34. pyproject.toml +1 -1
  35. tests/end-2-end/test_bec_dock_rpc_e2e.py +1 -1
  36. tests/end-2-end/test_bec_figure_rpc_e2e.py +4 -4
  37. tests/end-2-end/test_rpc_register_e2e.py +1 -1
  38. tests/unit_tests/test_bec_dock.py +1 -1
  39. tests/unit_tests/test_bec_figure.py +6 -4
  40. tests/unit_tests/test_bec_motor_map.py +2 -3
  41. tests/unit_tests/test_motor_control.py +6 -5
  42. tests/unit_tests/test_waveform1d.py +13 -1
  43. bec_widgets/validation/__init__.py +0 -2
  44. bec_widgets/validation/monitor_config_validator.py +0 -258
  45. bec_widgets/widgets/monitor/__init__.py +0 -1
  46. bec_widgets/widgets/monitor/config_dialog.py +0 -574
  47. bec_widgets/widgets/monitor/config_dialog.ui +0 -210
  48. bec_widgets/widgets/monitor/example_configs/config_device.yaml +0 -60
  49. bec_widgets/widgets/monitor/example_configs/config_scans.yaml +0 -92
  50. bec_widgets/widgets/monitor/monitor.py +0 -845
  51. bec_widgets/widgets/monitor/tab_template.ui +0 -180
  52. bec_widgets/widgets/motor_map/__init__.py +0 -1
  53. bec_widgets/widgets/motor_map/motor_map.py +0 -594
  54. bec_widgets/widgets/plots/__init__.py +0 -4
  55. tests/unit_tests/test_bec_monitor.py +0 -220
  56. tests/unit_tests/test_config_dialog.py +0 -178
  57. tests/unit_tests/test_motor_map.py +0 -171
  58. tests/unit_tests/test_validator_errors.py +0 -110
  59. /bec_widgets/{cli → assets}/bec_widgets_icon.png +0 -0
  60. /bec_widgets/{examples/jupyter_console → assets}/terminal_icon.png +0 -0
  61. /bec_widgets/widgets/{plots → figure/plots}/plot_base.py +0 -0
  62. /bec_widgets/widgets/motor_control/{motor_control_table.ui → motor_table/motor_table.ui} +0 -0
  63. /bec_widgets/widgets/motor_control/{motor_control_absolute.ui → movement_absolute/movement_absolute.ui} +0 -0
  64. /bec_widgets/widgets/motor_control/{motor_control_relative.ui → movement_relative/movement_relative.ui} +0 -0
  65. /bec_widgets/widgets/motor_control/{motor_control_selection.ui → selection/selection.ui} +0 -0
  66. {bec_widgets-0.53.2.dist-info → bec_widgets-0.54.0.dist-info}/WHEEL +0 -0
  67. {bec_widgets-0.53.2.dist-info → bec_widgets-0.54.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,227 @@
1
+ import os
2
+
3
+ from qtpy import uic
4
+ from qtpy.QtCore import Qt
5
+ from qtpy.QtCore import Signal as pyqtSignal
6
+ from qtpy.QtCore import Slot as pyqtSlot
7
+ from qtpy.QtGui import QKeySequence
8
+ from qtpy.QtWidgets import QDoubleSpinBox, QShortcut, QWidget
9
+
10
+ from bec_widgets.widgets.motor_control.motor_control import MotorControlWidget
11
+
12
+
13
+ class MotorControlRelative(MotorControlWidget):
14
+ """
15
+ Widget for controlling the motors to relative coordinates.
16
+
17
+ Signals:
18
+ precision_signal (pyqtSignal): Signal to emit the precision of the coordinates.
19
+ Slots:
20
+ change_motors (pyqtSlot(str,str)): Slot to change the active motors.
21
+ enable_motor_controls (pyqtSlot): Slot to enable/disable the motor controls.
22
+ """
23
+
24
+ precision_signal = pyqtSignal(int)
25
+
26
+ def _load_ui(self):
27
+ """Load the UI from the .ui file."""
28
+ # Loading UI
29
+ current_path = os.path.dirname(__file__)
30
+ uic.loadUi(os.path.join(current_path, "movement_relative.ui"), self)
31
+
32
+ def _init_ui(self):
33
+ """Initialize the UI."""
34
+ self._init_ui_motor_control()
35
+ self._init_keyboard_shortcuts()
36
+
37
+ @pyqtSlot(dict)
38
+ def on_config_update(self, config: dict) -> None:
39
+ """
40
+ Update config dict
41
+ Args:
42
+ config(dict): New config dict
43
+ """
44
+ self.config = config
45
+
46
+ # Get motor names
47
+ self.motor_x, self.motor_y = (
48
+ self.config["motor_control"]["motor_x"],
49
+ self.config["motor_control"]["motor_y"],
50
+ )
51
+
52
+ # Update step precision
53
+ self.precision = self.config["motor_control"]["precision"]
54
+ self.spinBox_precision.setValue(self.precision)
55
+
56
+ # Update step sizes
57
+ self.spinBox_step_x.setValue(self.config["motor_control"]["step_size_x"])
58
+ self.spinBox_step_y.setValue(self.config["motor_control"]["step_size_y"])
59
+
60
+ # Checkboxes for keyboard shortcuts and x/y step size link
61
+ self.checkBox_same_xy.setChecked(self.config["motor_control"]["step_x_y_same"])
62
+ self.checkBox_enableArrows.setChecked(self.config["motor_control"]["move_with_arrows"])
63
+
64
+ self._init_ui()
65
+
66
+ def _init_ui_motor_control(self) -> None:
67
+ """Initialize the motor control elements"""
68
+
69
+ # Connect checkbox and spinBoxes
70
+ self.checkBox_same_xy.stateChanged.connect(self._sync_step_sizes)
71
+ self.spinBox_step_x.valueChanged.connect(self._update_step_size_x)
72
+ self.spinBox_step_y.valueChanged.connect(self._update_step_size_y)
73
+
74
+ self.toolButton_right.clicked.connect(
75
+ lambda: self.move_motor_relative(self.motor_x, "x", 1)
76
+ )
77
+ self.toolButton_left.clicked.connect(
78
+ lambda: self.move_motor_relative(self.motor_x, "x", -1)
79
+ )
80
+ self.toolButton_up.clicked.connect(lambda: self.move_motor_relative(self.motor_y, "y", 1))
81
+ self.toolButton_down.clicked.connect(
82
+ lambda: self.move_motor_relative(self.motor_y, "y", -1)
83
+ )
84
+
85
+ # Switch between key shortcuts active
86
+ self.checkBox_enableArrows.stateChanged.connect(self._update_arrow_key_shortcuts)
87
+ self._update_arrow_key_shortcuts()
88
+
89
+ # Enable/Disable GUI
90
+ self.motor_thread.lock_gui.connect(self.enable_motor_controls)
91
+
92
+ # Precision update
93
+ self.spinBox_precision.valueChanged.connect(lambda x: self._update_precision(x))
94
+
95
+ # Error messages
96
+ self.motor_thread.motor_error.connect(
97
+ lambda error: MotorControlErrors.display_error_message(error)
98
+ )
99
+
100
+ # Stop Button
101
+ self.pushButton_stop.clicked.connect(self.motor_thread.stop_movement)
102
+
103
+ def _init_keyboard_shortcuts(self) -> None:
104
+ """Initialize the keyboard shortcuts"""
105
+
106
+ # Increase/decrease step size for X motor
107
+ increase_x_shortcut = QShortcut(QKeySequence("Ctrl+A"), self)
108
+ decrease_x_shortcut = QShortcut(QKeySequence("Ctrl+Z"), self)
109
+ increase_x_shortcut.activated.connect(
110
+ lambda: self._change_step_size(self.spinBox_step_x, 2)
111
+ )
112
+ decrease_x_shortcut.activated.connect(
113
+ lambda: self._change_step_size(self.spinBox_step_x, 0.5)
114
+ )
115
+ self.spinBox_step_x.setToolTip("Increase step size: Ctrl+A\nDecrease step size: Ctrl+Z")
116
+
117
+ # Increase/decrease step size for Y motor
118
+ increase_y_shortcut = QShortcut(QKeySequence("Alt+A"), self)
119
+ decrease_y_shortcut = QShortcut(QKeySequence("Alt+Z"), self)
120
+ increase_y_shortcut.activated.connect(
121
+ lambda: self._change_step_size(self.spinBox_step_y, 2)
122
+ )
123
+ decrease_y_shortcut.activated.connect(
124
+ lambda: self._change_step_size(self.spinBox_step_y, 0.5)
125
+ )
126
+ self.spinBox_step_y.setToolTip("Increase step size: Alt+A\nDecrease step size: Alt+Z")
127
+
128
+ # Stop Button
129
+ self.pushButton_stop.setShortcut("Ctrl+X")
130
+ self.pushButton_stop.setToolTip("Ctrl+X")
131
+
132
+ def _update_arrow_key_shortcuts(self) -> None:
133
+ """Update the arrow key shortcuts based on the checkbox state."""
134
+ if self.checkBox_enableArrows.isChecked():
135
+ # Set the arrow key shortcuts for motor movement
136
+ self.toolButton_right.setShortcut(Qt.Key_Right)
137
+ self.toolButton_left.setShortcut(Qt.Key_Left)
138
+ self.toolButton_up.setShortcut(Qt.Key_Up)
139
+ self.toolButton_down.setShortcut(Qt.Key_Down)
140
+ else:
141
+ # Clear the shortcuts
142
+ self.toolButton_right.setShortcut("")
143
+ self.toolButton_left.setShortcut("")
144
+ self.toolButton_up.setShortcut("")
145
+ self.toolButton_down.setShortcut("")
146
+
147
+ def _update_precision(self, precision: int) -> None:
148
+ """
149
+ Update the precision of the coordinates.
150
+ Args:
151
+ precision(int): Precision of the coordinates.
152
+ """
153
+ self.spinBox_step_x.setDecimals(precision)
154
+ self.spinBox_step_y.setDecimals(precision)
155
+ self.precision_signal.emit(precision)
156
+
157
+ def _change_step_size(self, spinBox: QDoubleSpinBox, factor: float) -> None:
158
+ """
159
+ Change the step size of the spinbox.
160
+ Args:
161
+ spinBox(QDoubleSpinBox): Spinbox to change the step size.
162
+ factor(float): Factor to change the step size.
163
+ """
164
+ old_step = spinBox.value()
165
+ new_step = old_step * factor
166
+ spinBox.setValue(new_step)
167
+
168
+ def _sync_step_sizes(self):
169
+ """Sync step sizes based on checkbox state."""
170
+ if self.checkBox_same_xy.isChecked():
171
+ value = self.spinBox_step_x.value()
172
+ self.spinBox_step_y.setValue(value)
173
+
174
+ def _update_step_size_x(self):
175
+ """Update step size for x if checkbox is checked."""
176
+ if self.checkBox_same_xy.isChecked():
177
+ value = self.spinBox_step_x.value()
178
+ self.spinBox_step_y.setValue(value)
179
+
180
+ def _update_step_size_y(self):
181
+ """Update step size for y if checkbox is checked."""
182
+ if self.checkBox_same_xy.isChecked():
183
+ value = self.spinBox_step_y.value()
184
+ self.spinBox_step_x.setValue(value)
185
+
186
+ @pyqtSlot(str, str)
187
+ def change_motors(self, motor_x: str, motor_y: str):
188
+ """
189
+ Change the active motors and update config.
190
+ Can be connected to the selected_motors_signal from MotorControlSelection.
191
+ Args:
192
+ motor_x(str): New motor X to be controlled.
193
+ motor_y(str): New motor Y to be controlled.
194
+ """
195
+ self.motor_x = motor_x
196
+ self.motor_y = motor_y
197
+ self.config["motor_control"]["motor_x"] = motor_x
198
+ self.config["motor_control"]["motor_y"] = motor_y
199
+
200
+ @pyqtSlot(bool)
201
+ def enable_motor_controls(self, disable: bool) -> None:
202
+ """
203
+ Enable or disable the motor controls.
204
+ Args:
205
+ disable(bool): True to disable, False to enable.
206
+ """
207
+
208
+ # Disable or enable all controls within the motorControl_absolute group box
209
+ for widget in self.motorControl.findChildren(QWidget):
210
+ widget.setEnabled(disable)
211
+
212
+ # Enable the pushButton_stop if the motor is moving
213
+ self.pushButton_stop.setEnabled(True)
214
+
215
+ def move_motor_relative(self, motor, axis: str, direction: int) -> None:
216
+ """
217
+ Move the motor relative to the current position.
218
+ Args:
219
+ motor: Motor to move.
220
+ axis(str): Axis to move.
221
+ direction(int): Direction to move. 1 for positive, -1 for negative.
222
+ """
223
+ if axis == "x":
224
+ step = direction * self.spinBox_step_x.value()
225
+ elif axis == "y":
226
+ step = direction * self.spinBox_step_y.value()
227
+ self.motor_thread.move_relative(motor, step)
@@ -0,0 +1,110 @@
1
+ # pylint: disable = no-name-in-module,missing-module-docstring
2
+ import os
3
+
4
+ from qtpy import uic
5
+ from qtpy.QtCore import Signal as pyqtSignal
6
+ from qtpy.QtCore import Slot as pyqtSlot
7
+ from qtpy.QtWidgets import QComboBox
8
+
9
+ from bec_widgets.widgets.motor_control.motor_control import MotorControlWidget
10
+
11
+
12
+ class MotorControlSelection(MotorControlWidget):
13
+ """
14
+ Widget for selecting the motors to control.
15
+
16
+ Signals:
17
+ selected_motors_signal (pyqtSignal(str,str)): Signal to emit the selected motors.
18
+ Slots:
19
+ get_available_motors (pyqtSlot): Slot to populate the available motors in the combo boxes and set the index based on the configuration.
20
+ enable_motor_controls (pyqtSlot(bool)): Slot to enable/disable the motor controls GUI.
21
+ on_config_update (pyqtSlot(dict)): Slot to update the config dict.
22
+ """
23
+
24
+ selected_motors_signal = pyqtSignal(str, str)
25
+
26
+ def _load_ui(self):
27
+ """Load the UI from the .ui file."""
28
+ current_path = os.path.dirname(__file__)
29
+ uic.loadUi(os.path.join(current_path, "selection.ui"), self)
30
+
31
+ def _init_ui(self):
32
+ """Initialize the UI."""
33
+ # Lock GUI while motors are moving
34
+ self.motor_thread.lock_gui.connect(self.enable_motor_controls)
35
+
36
+ self.pushButton_connecMotors.clicked.connect(self.select_motor)
37
+ self.get_available_motors()
38
+
39
+ # Connect change signals to change color
40
+ self.comboBox_motor_x.currentIndexChanged.connect(
41
+ lambda: self.set_combobox_style(self.comboBox_motor_x, "#ffa700")
42
+ )
43
+ self.comboBox_motor_y.currentIndexChanged.connect(
44
+ lambda: self.set_combobox_style(self.comboBox_motor_y, "#ffa700")
45
+ )
46
+
47
+ @pyqtSlot(dict)
48
+ def on_config_update(self, config: dict) -> None:
49
+ """
50
+ Update config dict
51
+ Args:
52
+ config(dict): New config dict
53
+ """
54
+ self.config = config
55
+
56
+ # Get motor names
57
+ self.motor_x, self.motor_y = (
58
+ self.config["motor_control"]["motor_x"],
59
+ self.config["motor_control"]["motor_y"],
60
+ )
61
+
62
+ self._init_ui()
63
+
64
+ @pyqtSlot(bool)
65
+ def enable_motor_controls(self, enable: bool) -> None:
66
+ """
67
+ Enable or disable the motor controls.
68
+ Args:
69
+ enable(bool): True to enable, False to disable.
70
+ """
71
+ self.motorSelection.setEnabled(enable)
72
+
73
+ @pyqtSlot()
74
+ def get_available_motors(self) -> None:
75
+ """
76
+ Slot to populate the available motors in the combo boxes and set the index based on the configuration.
77
+ """
78
+ # Get all available motors
79
+ self.motor_list = self.motor_thread.get_all_motors_names()
80
+
81
+ # Populate the combo boxes
82
+ self.comboBox_motor_x.addItems(self.motor_list)
83
+ self.comboBox_motor_y.addItems(self.motor_list)
84
+
85
+ # Set the index based on the config if provided
86
+ if self.config:
87
+ index_x = self.comboBox_motor_x.findText(self.motor_x)
88
+ index_y = self.comboBox_motor_y.findText(self.motor_y)
89
+ self.comboBox_motor_x.setCurrentIndex(index_x if index_x != -1 else 0)
90
+ self.comboBox_motor_y.setCurrentIndex(index_y if index_y != -1 else 0)
91
+
92
+ def set_combobox_style(self, combobox, color: str) -> None:
93
+ """
94
+ Set the combobox style to a specific color.
95
+ Args:
96
+ combobox(QComboBox): Combobox to change the color.
97
+ color(str): Color to set the combobox to.
98
+ """
99
+ combobox.setStyleSheet(f"QComboBox {{ background-color: {color}; }}")
100
+
101
+ def select_motor(self):
102
+ """Emit the selected motors"""
103
+ motor_x = self.comboBox_motor_x.currentText()
104
+ motor_y = self.comboBox_motor_y.currentText()
105
+
106
+ # Reset the combobox color to normal after selection
107
+ self.set_combobox_style(self.comboBox_motor_x, "")
108
+ self.set_combobox_style(self.comboBox_motor_y, "")
109
+
110
+ self.selected_motors_signal.emit(motor_x, motor_y)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: bec_widgets
3
- Version: 0.53.2
3
+ Version: 0.54.0
4
4
  Summary: BEC Widgets
5
5
  Project-URL: Bug Tracker, https://gitlab.psi.ch/bec/bec_widgets/issues
6
6
  Project-URL: Homepage, https://gitlab.psi.ch/bec/bec_widgets
@@ -2,34 +2,34 @@
2
2
  .gitlab-ci.yml,sha256=_PqbjtXpiMv7OxzoU-B47YU7majkBeE_JSKBtjGC5bQ,7431
3
3
  .pylintrc,sha256=OstrgmEyP0smNFBKoIN5_26-UmNZgMHnbjvAWX0UrLs,18535
4
4
  .readthedocs.yaml,sha256=aSOc277LqXcsTI6lgvm_JY80lMlr69GbPKgivua2cS0,603
5
- CHANGELOG.md,sha256=bnzC8RWkjZxz_Fztht4Vd0Fd47SxINN_nQfZXJCOSTQ,6890
5
+ CHANGELOG.md,sha256=WvYpUPepbaVY0ekmMlIfdQauN2zBi05qT2HbAGGfo28,7064
6
6
  LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
7
- PKG-INFO,sha256=J6k1s4Wh3sKQNB2flOk5lwfRkCUAKUDFbGwXYfMF6Tk,1063
7
+ PKG-INFO,sha256=apS5ixyctj9LOrWzs0N1yFvgfM4L2M-MuzdiPWV_-ck,1063
8
8
  README.md,sha256=y4jB6wvArS7N8_iTbKWnSM_oRAqLA2GqgzUR-FMh5sU,2645
9
- pyproject.toml,sha256=5gV_xHg0yZ-pGSUwgMz8CEkhbEtBvnCuc3POCuA1lbY,1776
9
+ pyproject.toml,sha256=UcAdJ8fUfKwv8JZUD79z0YWEMxEte8nwtFfihxcZQcM,1776
10
10
  .git_hooks/pre-commit,sha256=n3RofIZHJl8zfJJIUomcMyYGFi_rwq4CC19z0snz3FI,286
11
11
  .gitlab/issue_templates/bug_report_template.md,sha256=gAuyEwl7XlnebBrkiJ9AqffSNOywmr8vygUFWKTuQeI,386
12
12
  .gitlab/issue_templates/documentation_update_template.md,sha256=FHLdb3TS_D9aL4CYZCjyXSulbaW5mrN2CmwTaeLPbNw,860
13
13
  .gitlab/issue_templates/feature_request_template.md,sha256=vjxCnmj53Mp4FPzCrNxhkO-8StRQUZ36PlXu4K8VGaI,1543
14
14
  .gitlab/merge_request_templates/default.md,sha256=tfyFA0hRCsIunbLGSlGbxWBQFeB3USpsA3H7IvwQ5UY,715
15
15
  bec_widgets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
+ bec_widgets/assets/bec_widgets_icon.png,sha256=K8dgGwIjalDh9PRHUsSQBqgdX7a00nM3igZdc20pkYM,1747017
17
+ bec_widgets/assets/terminal_icon.png,sha256=bJl7Tft4Fi2uxvuXI8o14uMHnI9eAWKSU2uftXCH9ws,3889
16
18
  bec_widgets/cli/__init__.py,sha256=v5oaQMydRVEaqKNI73A3_AbQ0efXxBt2SLoUBKANrV8,301
17
19
  bec_widgets/cli/auto_updates.py,sha256=ptZeBKr13o9THc8oKLn93K_16i6G3pxzw8hZ4MUgjW4,3845
18
- bec_widgets/cli/bec_widgets_icon.png,sha256=K8dgGwIjalDh9PRHUsSQBqgdX7a00nM3igZdc20pkYM,1747017
19
- bec_widgets/cli/client.py,sha256=0qM-Zve4cXKNXrSNkxvTDtiWo6NvsYZGauOwLn4Rk3w,45622
20
- bec_widgets/cli/client_utils.py,sha256=eQ7eDjyrXToQ5es_INFA5YIzhH166E1s4zIEVYj95mA,10676
21
- bec_widgets/cli/generate_cli.py,sha256=FFDAogkEewfXMP20jkBBB08vcQdg5k1gnHpldXUcgOw,4101
20
+ bec_widgets/cli/client.py,sha256=MrLr7pg3Fn4AuVBNdZ_GWppjC2C6woI79_mXH14BYsE,45669
21
+ bec_widgets/cli/client_utils.py,sha256=IPWfseFBYFjCmBp4LsXyNUOcV5KTTdiW1jsLvG3jF5A,10536
22
+ bec_widgets/cli/generate_cli.py,sha256=SrcDnvSdvJs2IJe3CdONACApsS6F07CgC84cjfX64vM,4305
22
23
  bec_widgets/cli/rpc_register.py,sha256=QxXUZu5XNg00Yf5O3UHWOXg3-f_pzKjjoZYMOa-MOJc,2216
23
24
  bec_widgets/cli/rpc_wigdet_handler.py,sha256=u54ctT3-pHIf_4788didF4YBXbvNFQI1TqleSILEaZU,783
24
- bec_widgets/cli/server.py,sha256=puRWFzb2HAjeWQYgTFp2gw9RVlNZh95Dd7JUeGVf0Uk,5868
25
+ bec_widgets/cli/server.py,sha256=rsj31Vsx6ayThNe4PQelQFahGjYXFZjfrNyB2fnm6Ro,5737
25
26
  bec_widgets/examples/__init__.py,sha256=WWQ0cu7m8sA4Ehy-DWdTIqSISjaHsbxhsNmNrMnhDZU,202
26
27
  bec_widgets/examples/eiger_plot/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
28
  bec_widgets/examples/eiger_plot/eiger_plot.py,sha256=Uxl2Usf8jEzaX7AT8zVqa1x8ZIEgI1HmazSlb-tRFWE,10359
28
29
  bec_widgets/examples/eiger_plot/eiger_plot.ui,sha256=grHfnO3OG_lelJhdRsnA0badCvRdDunPrIMIyNQ5N-w,5809
29
30
  bec_widgets/examples/jupyter_console/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
- bec_widgets/examples/jupyter_console/jupyter_console_window.py,sha256=s8ysnlktLv3932ody8pRA1mghH1QQcxLjQK1HTZ59b8,5642
31
+ bec_widgets/examples/jupyter_console/jupyter_console_window.py,sha256=eY_sSzc-XvH2S9xsoyeU1S6Qd99jaQOZ0wVBTwDeiP4,5788
31
32
  bec_widgets/examples/jupyter_console/jupyter_console_window.ui,sha256=2A2mNTUMZBYygz8K4qWzrcjnNqZBMVyeHm26iLZVRWI,1473
32
- bec_widgets/examples/jupyter_console/terminal_icon.png,sha256=bJl7Tft4Fi2uxvuXI8o14uMHnI9eAWKSU2uftXCH9ws,3889
33
33
  bec_widgets/examples/mca_readout/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
34
  bec_widgets/examples/mca_readout/mca_plot.py,sha256=vjIOcTtHIsLmHW6N-bI7RTyjeYg0r8Ob-nZvvGC0kro,5124
35
35
  bec_widgets/examples/mca_readout/mca_sim.py,sha256=IbVW10lmorsxP0Ctqe81-b_WBi96jBPgzAHCUBoPzTY,818
@@ -40,7 +40,7 @@ bec_widgets/examples/motor_movement/__init__.py,sha256=LzPJkxLAxOsZCbXR-fRCPmeYo
40
40
  bec_widgets/examples/motor_movement/config_example.yaml,sha256=YT8Bl3ViTaP03cX9X8kIgWnkoxaQOFqS-oRrclGS2hc,356
41
41
  bec_widgets/examples/motor_movement/csax_bec_config.yaml,sha256=cqhzwfIhFgHfCt90oVW3no8aVlWg7V42t4iiJCnydSw,146
42
42
  bec_widgets/examples/motor_movement/csaxs_config.yaml,sha256=poNndp-1ptdnriIJ_RTnbAimFlOJ45VdxfkclGEQlgc,344
43
- bec_widgets/examples/motor_movement/motor_control_compilations.py,sha256=gj7SRjdKXDuX4jl4e8bnpM9U6l7B1wvwgGUPcVFOGCU,8978
43
+ bec_widgets/examples/motor_movement/motor_control_compilations.py,sha256=hEkhCOjRgY1t7vZ1e_Olus2IeYDorybd8waHoVaM53Y,9303
44
44
  bec_widgets/examples/motor_movement/motor_controller.ui,sha256=83XX6NGILwntoUIghvzWnMuGf80O8khK3SduVKTAEFM,29105
45
45
  bec_widgets/examples/motor_movement/motor_example.py,sha256=P7gYgHldDR1tmAsEBePQRT7xIylsaN_jNWviwpDNek4,53350
46
46
  bec_widgets/examples/stream_plot/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -61,34 +61,37 @@ bec_widgets/utils/thread_checker.py,sha256=rDNuA3X6KQyA7JPb67mccTg0z8YkInynLAENQ
61
61
  bec_widgets/utils/validator_delegate.py,sha256=Emj1WF6W8Ke1ruBWUfmHdVJpmOSPezuOt4zvQTay_44,442
62
62
  bec_widgets/utils/widget_io.py,sha256=f36198CvT_EzWQ_cg2G-4tRRsaMdJ3yVqsZWKJCQEfA,10880
63
63
  bec_widgets/utils/yaml_dialog.py,sha256=cMVif-39SB9WjwGH5FWBJcFs4tnfFJFs5cacydRyhy0,1853
64
- bec_widgets/validation/__init__.py,sha256=ismd1bU5FhFb0zFPwNKuq7oT48G4Y2GfaMZOdNKUtGk,132
65
- bec_widgets/validation/monitor_config_validator.py,sha256=LJ0kk1cT0x6rAMuEM5XnmlUb-7caP-jqn4-UXe0Jjho,8145
66
- bec_widgets/widgets/__init__.py,sha256=NOgRDV9-uwrH1OK2JdfG5c0WcW77TSRz3PeNlGw22Lc,392
64
+ bec_widgets/widgets/__init__.py,sha256=Pit_duh28VlsEIRfjLIVJ0EIRHJj7WFb-33SpMCmAEg,121
67
65
  bec_widgets/widgets/dock/__init__.py,sha256=B7foHt02gnhM7mFksa7GJVwT7n0j_JvYDCt6wc6XR5g,61
68
66
  bec_widgets/widgets/dock/dock.py,sha256=vnOQnOWWnd-3X07kniSW_I5l0uEHZOaWhfuqZkDGIqE,8467
69
67
  bec_widgets/widgets/dock/dock_area.py,sha256=UaI5Z-c9C16lhTbXmEVzfl55Y8ymKSk4sPWGleIsUVY,7182
70
68
  bec_widgets/widgets/figure/__init__.py,sha256=3hGx_KOV7QHCYAV06aNuUgKq4QIYCjUTad-DrwkUaBM,44
71
- bec_widgets/widgets/figure/figure.py,sha256=OSF5y9iMEjhZmPC1MvjCVASfDXapf_o4jeUH3JRhAl0,28565
72
- bec_widgets/widgets/monitor/__init__.py,sha256=afXuZcBOxNAuYdCkIQXX5J60R5A3Q_86lNEW2vpFtPI,32
73
- bec_widgets/widgets/monitor/config_dialog.py,sha256=ThR1ZGnIUHqsW4t6ns9pBLTINYLBQwDtS-ipjOg4snU,19993
74
- bec_widgets/widgets/monitor/config_dialog.ui,sha256=ISMcF7CLTAMXhfZh2Yv5yezzAjMtb9fxY1pmX4B_jCg,5932
75
- bec_widgets/widgets/monitor/monitor.py,sha256=3PU0NnbnE-CjGggT7IadDfiOjXGY_85g2HSyU8BmrBM,30229
76
- bec_widgets/widgets/monitor/tab_template.ui,sha256=JVB5fkzVhTjxMn9EdZCXsnfzBkeZpFMdTRuqTNSDSSo,4904
77
- bec_widgets/widgets/monitor/example_configs/config_device.yaml,sha256=jn8EGvL_fk4gizCAA8P--OGn1RZGnz2aSlzQI9BcYlU,1172
78
- bec_widgets/widgets/monitor/example_configs/config_scans.yaml,sha256=TwMhiE_4p88gBlaeoztmkwNObAeoVXLeBFIUsV1Nwu0,1889
79
- bec_widgets/widgets/motor_control/__init__.py,sha256=_4-G9AKcEnOyS6qVE26meRw3grEohNeMzACNMU5Sig0,153
80
- bec_widgets/widgets/motor_control/motor_control.py,sha256=sfH_uGes4B3mOFPP9BYVMtqMSCFD5fWJNQwNxV06288,42458
81
- bec_widgets/widgets/motor_control/motor_control_absolute.ui,sha256=nR3p6oevAkIBTLW5wM_zYOVWsCAUgeMZdRm10Q77COE,4126
82
- bec_widgets/widgets/motor_control/motor_control_relative.ui,sha256=PulNJNiws7TRAxHM2snNyvlmQ0tRShdArHmtaC85h4U,8684
83
- bec_widgets/widgets/motor_control/motor_control_selection.ui,sha256=vXXpvNWuL6xyHhW7Lx1zmVFX-95Z5AXGlhKQD2HmM1A,1779
84
- bec_widgets/widgets/motor_control/motor_control_table.ui,sha256=t6aRKiSmutMfp0AyupavbCs0cal-FANEnlKQiPzC9PQ,2792
85
- bec_widgets/widgets/motor_map/__init__.py,sha256=K3c-3A_LbxK0UJ0_bV3opL-wGLTwBLendsJXsg8GAqE,32
86
- bec_widgets/widgets/motor_map/motor_map.py,sha256=Gd6pl5kPwWwMn_guKA6znz5Rbkw711uoAAUzmdWvi2I,21723
87
- bec_widgets/widgets/plots/__init__.py,sha256=yaCWQEXiEVj3Oh9qvD3UDzY2HE2PiDKKyKINEcVeL2k,238
88
- bec_widgets/widgets/plots/image.py,sha256=cfxdd_CQsEy-N_jgcjJICLIY4FZH9yJ7qcBsfjrqTdo,32444
89
- bec_widgets/widgets/plots/motor_map.py,sha256=CVlPG_zO1Di_v1Vs4AMxZFtlGjm_R8Lrw9cBe6bRGS4,15223
90
- bec_widgets/widgets/plots/plot_base.py,sha256=oNUXEe94bD0_fVu-HPMRaoAuwPMW0DOAN8vvOeRz254,8513
91
- bec_widgets/widgets/plots/waveform.py,sha256=MEtgEVgZrz7K5axO4nuGXU0KJPngb0bqWABhi_eRUao,28621
69
+ bec_widgets/widgets/figure/figure.py,sha256=MbnG6d738aYgNiFuOFHgyaGre0eVLA8OdSg-Xx7XIYU,29712
70
+ bec_widgets/widgets/figure/plots/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
71
+ bec_widgets/widgets/figure/plots/plot_base.py,sha256=oNUXEe94bD0_fVu-HPMRaoAuwPMW0DOAN8vvOeRz254,8513
72
+ bec_widgets/widgets/figure/plots/image/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
+ bec_widgets/widgets/figure/plots/image/image.py,sha256=fdANm_lMzmKeddwCq3Arc1p48VakAYRlhY2q3pZspDI,19669
74
+ bec_widgets/widgets/figure/plots/image/image_item.py,sha256=1oytCY2IIgRbtS3GRrp9JV02KOif78O2-iaK0qYuHFU,9058
75
+ bec_widgets/widgets/figure/plots/image/image_processor.py,sha256=59JwHMEBjLo72fmrAB7W1PFBT2oBe16heBaZfYM6MAk,4368
76
+ bec_widgets/widgets/figure/plots/motor_map/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
77
+ bec_widgets/widgets/figure/plots/motor_map/motor_map.py,sha256=HKRbt8sD8fmzpYcEWD8-nYs1Mv7pLup1BfRAEVmKN3A,15246
78
+ bec_widgets/widgets/figure/plots/waveform/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
79
+ bec_widgets/widgets/figure/plots/waveform/waveform.py,sha256=k6Lh08V00N9gATppaLgaSaij4Husf8sYU_HXTvF3oB4,21664
80
+ bec_widgets/widgets/figure/plots/waveform/waveform_curve.py,sha256=9q7nJfyH8y9rWw_AIOd6tk7cbckoAGNLHv2oHEKCCyo,7229
81
+ bec_widgets/widgets/motor_control/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
82
+ bec_widgets/widgets/motor_control/motor_control.py,sha256=UrLCvp3J6uiVxWV2jqQbsA2nsMf9s_rrDH2KjnUm-bk,7890
83
+ bec_widgets/widgets/motor_control/motor_table/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
84
+ bec_widgets/widgets/motor_control/motor_table/motor_table.py,sha256=XSTaNfTXg6qeycxxQ0Y0SBwJLW2toRPj7cGGbkzcEB0,17387
85
+ bec_widgets/widgets/motor_control/motor_table/motor_table.ui,sha256=t6aRKiSmutMfp0AyupavbCs0cal-FANEnlKQiPzC9PQ,2792
86
+ bec_widgets/widgets/motor_control/movement_absolute/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
87
+ bec_widgets/widgets/motor_control/movement_absolute/movement_absolute.py,sha256=Ol50UpMvF2_MJR7wesETUG5gUkNBmqRP5qTOeA4prH8,5516
88
+ bec_widgets/widgets/motor_control/movement_absolute/movement_absolute.ui,sha256=nR3p6oevAkIBTLW5wM_zYOVWsCAUgeMZdRm10Q77COE,4126
89
+ bec_widgets/widgets/motor_control/movement_relative/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
90
+ bec_widgets/widgets/motor_control/movement_relative/movement_relative.py,sha256=5gqdWvDfadT_DZm6o3qYw8UgdKlcpEwKDtU7_usP3oo,8706
91
+ bec_widgets/widgets/motor_control/movement_relative/movement_relative.ui,sha256=PulNJNiws7TRAxHM2snNyvlmQ0tRShdArHmtaC85h4U,8684
92
+ bec_widgets/widgets/motor_control/selection/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
93
+ bec_widgets/widgets/motor_control/selection/selection.py,sha256=WNHndvv4JvxeAMnDFBMTvUILcn9u_0mWGRsgNiBZEsM,3988
94
+ bec_widgets/widgets/motor_control/selection/selection.ui,sha256=vXXpvNWuL6xyHhW7Lx1zmVFX-95Z5AXGlhKQD2HmM1A,1779
92
95
  bec_widgets/widgets/scan_control/__init__.py,sha256=IOfHl15vxb_uC6KN62-PeUzbBha_vQyqkkXbJ2HU674,38
93
96
  bec_widgets/widgets/scan_control/scan_control.py,sha256=B5n2U2iVtTCY3Tx93JyBqzGCDCmWhWwAOhbPelLI-bs,17168
94
97
  bec_widgets/widgets/toolbar/__init__.py,sha256=d-TP4_cr_VbpwreMM4ePnfZ5YXsEPQ45ibEf75nuGoE,36
@@ -97,7 +100,7 @@ docs/Makefile,sha256=i2WHuFlgfyAPEW4ssEP8NY4cOibDJrVjvzSEU8_Ggwc,634
97
100
  docs/conf.py,sha256=pASMheaNEMnHl91PHQWUW0uu3OqXByYnDeSrlrVAUeI,2474
98
101
  docs/index.md,sha256=6HrqaPXb5uUPEtM2gZaVUi1wM1kUYmdC2aIFpmItzZ0,453
99
102
  docs/make.bat,sha256=vKazJE8RW49Cy8K7hm8QYbletvAd8YkeKsaPA_dWnXs,800
100
- docs/requirements.txt,sha256=5IJN7-VApjTeFouHsaWAb5b4p6wS6wI9fKcJBxcX9QY,134
103
+ docs/requirements.txt,sha256=SbcWrLYX6tEZNMCUETgsE50Y7VioR1VX6YCeifuJWEc,140
101
104
  docs/_templates/custom-class-template.rst,sha256=HPuPaGJob2zXlWOl5FmA-hAZRbUTGQmdqo3HS1iIFog,711
102
105
  docs/_templates/custom-module-template.rst,sha256=MXYXAz06HP_mbblO--iFwL08xROmSBo7U4O-hPbMcZU,1228
103
106
  docs/developer/developer.md,sha256=xJvO-EAf-9SqDARRnqFLRd8k_o258U97V0DmvgZKMos,477
@@ -118,31 +121,27 @@ docs/user/widgets/w1D.gif,sha256=tuHbleJpl6bJFNNC2OdndF5LF7IyfvlkFCMGZajrQPs,622
118
121
  tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
119
122
  tests/end-2-end/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
120
123
  tests/end-2-end/conftest.py,sha256=b5Yebbj8C1-IcXq23XGbOnXF0kOZD_Po46Z-p4cBwfs,1346
121
- tests/end-2-end/test_bec_dock_rpc_e2e.py,sha256=NnvlTpyHrA8DJ0RHXtQfp4rApuszv7NXZuWrlvthkC0,4558
122
- tests/end-2-end/test_bec_figure_rpc_e2e.py,sha256=rQh9H6k-Ln4yDfCYIYv2DW-l70PXY_MjzshmZdirBgQ,5471
123
- tests/end-2-end/test_rpc_register_e2e.py,sha256=Jrv46F-fyJa0tls1KPTeIxXQ4oUNgWkhAMwzvMQBRR8,1581
124
+ tests/end-2-end/test_bec_dock_rpc_e2e.py,sha256=V4GC1G_qjtOapwkj7jrR8xfeALBsXeQBmEtAJd2uyB4,4572
125
+ tests/end-2-end/test_bec_figure_rpc_e2e.py,sha256=X8lQLx2NsB6-nU61IhVtAw1-pJ4A2qFgx5PxOWC0V7Q,5527
126
+ tests/end-2-end/test_rpc_register_e2e.py,sha256=M7sSq3us2yQIW5tAIFOFfBULatZTQNLdt0frh1bINts,1595
124
127
  tests/unit_tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
125
128
  tests/unit_tests/client_mocks.py,sha256=ErrklY7446jXE2_XGKebs_a-2Pqif5ECOPvxVAKRZXY,4170
126
129
  tests/unit_tests/conftest.py,sha256=KrnktXPWmZhnKNue-xGWOLD1XGEvdz9Vf7V2eO3XQ3A,596
127
130
  tests/unit_tests/test_bec_connector.py,sha256=f2XXGGw3NoZLIUrDuZuEWwF_ttOYmmquCgUrV5XkIOY,1951
128
131
  tests/unit_tests/test_bec_dispatcher.py,sha256=rYPiRizHaswhGZw55IBMneDFxmPiCCLAZQBqjEkpdyY,3992
129
- tests/unit_tests/test_bec_dock.py,sha256=ZnHUoVQCGbikd0mM64XBL_k0Kxp0d3UqCHpcyY59emg,3596
130
- tests/unit_tests/test_bec_figure.py,sha256=1nRSX2lJE_wv_R4WteECBxD0NwpQT8NaZH5q66gT-jo,7829
131
- tests/unit_tests/test_bec_monitor.py,sha256=mN7gBY7oXY6j65zzihpy8r-FvwVoCQlie3F6SoVq0mo,7042
132
- tests/unit_tests/test_bec_motor_map.py,sha256=oAhnahV9UcPknsCgoP_TwTIlagKola2HFajmtkxzSyo,4588
132
+ tests/unit_tests/test_bec_dock.py,sha256=gvtNkkCPrDFY_1qZ53ZXChdgmQFSwwQrr1VeZC5ybKc,3610
133
+ tests/unit_tests/test_bec_figure.py,sha256=xYAftY8bI_EH-SlNPD0Tjd7FS_47ouZ1E4hrpjPt7O4,8002
134
+ tests/unit_tests/test_bec_motor_map.py,sha256=AfD_9-x6VV3TPnkQgNfFYRndPHDsGx-a_YknFeDr6hc,4588
133
135
  tests/unit_tests/test_client_utils.py,sha256=fIApd5WgnJuyIzV-hdSABn6T-aOel2Wr2xuUX4Z651A,774
134
- tests/unit_tests/test_config_dialog.py,sha256=Y8I9zGG8G9jh0MRCsNl5dQT17bZL6BWaDja7fW1ncCs,6924
135
136
  tests/unit_tests/test_crosshair.py,sha256=d7fX-ymboZPALNqqiAj86PZ96llmGZ_3jf0yjVP0S94,5039
136
137
  tests/unit_tests/test_eiger_plot.py,sha256=bWnKBQid0YcLMQeBLy6ojb4ZpwTG-rFVT0kMg9Y08p8,4427
137
138
  tests/unit_tests/test_generate_cli_client.py,sha256=J7CFoO67txGu_u1Mwk32EejRX204FRuvmVg_yhAr1WM,2397
138
- tests/unit_tests/test_motor_control.py,sha256=210qBSZdg4hSDflgwez-pWsoU4m3W8hmGCJEdCeu6MA,20321
139
- tests/unit_tests/test_motor_map.py,sha256=aKhJtgHOLMOlpniguuH5iGKh72ihYZ1L2S2KEmZUC0k,5875
139
+ tests/unit_tests/test_motor_control.py,sha256=ksjzcml9hAr-mMxL4NVAeEYGBaSDvE2pR_n3Rvz8fEQ,20579
140
140
  tests/unit_tests/test_plot_base.py,sha256=bOdlgAxh9oKk5PwiQ_MSFmzr44uJ61Tlg242RCIhl5c,2610
141
141
  tests/unit_tests/test_rpc_register.py,sha256=hECjZEimd440mwRrO0rg7L3PKN7__3DgjmESN6wx3bo,1179
142
142
  tests/unit_tests/test_scan_control.py,sha256=7dtGpE0g4FqUhhQeCkyJl-9o7NH3DFZJgEaqDmBYbBc,7551
143
143
  tests/unit_tests/test_stream_plot.py,sha256=gMd-ga72OCGzE09vRuoLDH8dqeEJOnrvK-4Lu-TG5RY,5760
144
- tests/unit_tests/test_validator_errors.py,sha256=NFxyv0TIOXeZKZRRUBfVQ7bpunwY4KkG95yTUdQmvns,3532
145
- tests/unit_tests/test_waveform1d.py,sha256=cBtESTQgsVQdv-Wl75eHK9D8YY-b60Z5wqtPCo9ohu0,15002
144
+ tests/unit_tests/test_waveform1d.py,sha256=Xi9TdZmxoMmmje37lq03FG9lytEdZCTUEjtOC0LvZjA,15263
146
145
  tests/unit_tests/test_widget_io.py,sha256=FeL3ZYSBQnRt6jxj8VGYw1cmcicRQyHKleahw7XIyR0,3475
147
146
  tests/unit_tests/test_yaml_dialog.py,sha256=HNrqferkdg02-9ieOhhI2mr2Qvt7GrYgXmQ061YCTbg,5794
148
147
  tests/unit_tests/test_configs/config_device.yaml,sha256=h3zNb5ZaT_sA59Sf-24qsXs54MgUsspo-GOJmKWHx3o,695
@@ -150,7 +149,7 @@ tests/unit_tests/test_configs/config_device_no_entry.yaml,sha256=hdvue9KLc_kfNzG
150
149
  tests/unit_tests/test_configs/config_scan.yaml,sha256=vo484BbWOjA_e-h6bTjSV9k7QaQHrlAvx-z8wtY-P4E,1915
151
150
  tests/unit_tests/test_msgs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
152
151
  tests/unit_tests/test_msgs/available_scans_message.py,sha256=m_z97hIrjHXXMa2Ex-UvsPmTxOYXfjxyJaGkIY6StTY,46532
153
- bec_widgets-0.53.2.dist-info/METADATA,sha256=J6k1s4Wh3sKQNB2flOk5lwfRkCUAKUDFbGwXYfMF6Tk,1063
154
- bec_widgets-0.53.2.dist-info/WHEEL,sha256=zEMcRr9Kr03x1ozGwg5v9NQBKn3kndp6LSoSlVg-jhU,87
155
- bec_widgets-0.53.2.dist-info/licenses/LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
156
- bec_widgets-0.53.2.dist-info/RECORD,,
152
+ bec_widgets-0.54.0.dist-info/METADATA,sha256=apS5ixyctj9LOrWzs0N1yFvgfM4L2M-MuzdiPWV_-ck,1063
153
+ bec_widgets-0.54.0.dist-info/WHEEL,sha256=zEMcRr9Kr03x1ozGwg5v9NQBKn3kndp6LSoSlVg-jhU,87
154
+ bec_widgets-0.54.0.dist-info/licenses/LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
155
+ bec_widgets-0.54.0.dist-info/RECORD,,
docs/requirements.txt CHANGED
@@ -6,5 +6,6 @@ pydata-sphinx-theme
6
6
  sphinx-copybutton
7
7
  myst-parser
8
8
  sphinx-design
9
+ PyQt6
9
10
  bec-widgets
10
11
  tomli
pyproject.toml CHANGED
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "bec_widgets"
7
- version = "0.53.2"
7
+ version = "0.54.0"
8
8
  description = "BEC Widgets"
9
9
  requires-python = ">=3.10"
10
10
  classifiers = [
@@ -38,7 +38,7 @@ def test_rpc_add_dock_with_figure_e2e(rpc_server_dock, qtbot):
38
38
  assert fig2.__class__ == BECFigure
39
39
 
40
40
  mm = fig0.motor_map("samx", "samy")
41
- plt = fig1.plot("samx", "bpm4i")
41
+ plt = fig1.plot(x_name="samx", y_name="bpm4i")
42
42
  im = fig2.image("eiger")
43
43
 
44
44
  assert mm.__class__.__name__ == "BECMotorMap"
@@ -23,7 +23,7 @@ def test_rpc_plotting_shortcuts_init_configs(rpc_server_figure, qtbot):
23
23
  fig = BECFigure(rpc_server_figure.gui_id)
24
24
  fig_server = rpc_server_figure.gui
25
25
 
26
- plt = fig.plot("samx", "bpm4i")
26
+ plt = fig.plot(x_name="samx", y_name="bpm4i")
27
27
  im = fig.image("eiger")
28
28
  motor_map = fig.motor_map("samx", "samy")
29
29
  plt_z = fig.add_plot("samx", "samy", "bpm4i")
@@ -79,9 +79,9 @@ def test_rpc_waveform_scan(rpc_server_figure, qtbot):
79
79
  fig = BECFigure(rpc_server_figure.gui_id)
80
80
 
81
81
  # add 3 different curves to track
82
- plt = fig.plot("samx", "bpm4i")
83
- fig.plot("samx", "bpm3a")
84
- fig.plot("samx", "bpm4d")
82
+ plt = fig.plot(x_name="samx", y_name="bpm4i")
83
+ fig.plot(x_name="samx", y_name="bpm3a")
84
+ fig.plot(x_name="samx", y_name="bpm4d")
85
85
 
86
86
  client = rpc_server_figure.client
87
87
  dev = client.device_manager.devices
@@ -22,7 +22,7 @@ def test_rpc_register_list_connections(rpc_server_figure, rpc_register, qtbot):
22
22
  fig = BECFigure(rpc_server_figure.gui_id)
23
23
  fig_server = rpc_server_figure.gui
24
24
 
25
- plt = fig.plot("samx", "bpm4i")
25
+ plt = fig.plot(x_name="samx", y_name="bpm4i")
26
26
  im = fig.image("eiger")
27
27
  motor_map = fig.motor_map("samx", "samy")
28
28
  plt_z = fig.add_plot("samx", "samy", "bpm4i")
@@ -59,7 +59,7 @@ def test_bec_dock_area_add_remove_dock(bec_dock_area, qtbot):
59
59
  def test_add_remove_bec_figure_to_dock(bec_dock_area):
60
60
  d0 = bec_dock_area.add_dock()
61
61
  fig = d0.add_widget_bec("BECFigure")
62
- plt = fig.plot("samx", "bpm4i")
62
+ plt = fig.plot(x_name="samx", y_name="bpm4i")
63
63
  im = fig.image("eiger")
64
64
  mm = fig.motor_map("samx", "samy")
65
65
 
@@ -3,8 +3,10 @@
3
3
  import numpy as np
4
4
  import pytest
5
5
 
6
- from bec_widgets.widgets import BECFigure, BECMotorMap, BECWaveform
7
- from bec_widgets.widgets.plots import BECImageShow
6
+ from bec_widgets.widgets import BECFigure
7
+ from bec_widgets.widgets.figure.plots.image.image import BECImageShow
8
+ from bec_widgets.widgets.figure.plots.motor_map.motor_map import BECMotorMap
9
+ from bec_widgets.widgets.figure.plots.waveform.waveform import BECWaveform
8
10
 
9
11
  from .client_mocks import mocked_client
10
12
 
@@ -63,7 +65,7 @@ def test_bec_figure_add_remove_plot(bec_figure):
63
65
 
64
66
 
65
67
  def test_add_different_types_of_widgets(bec_figure):
66
- plt = bec_figure.plot("samx", "bpm4i")
68
+ plt = bec_figure.plot(x_name="samx", y_name="bpm4i")
67
69
  im = bec_figure.image("eiger")
68
70
  motor_map = bec_figure.motor_map("samx", "samy")
69
71
 
@@ -226,7 +228,7 @@ def test_clear_all(bec_figure):
226
228
 
227
229
 
228
230
  def test_shortcuts(bec_figure):
229
- plt = bec_figure.plot("samx", "bpm4i")
231
+ plt = bec_figure.plot(x_name="samx", y_name="bpm4i")
230
232
  im = bec_figure.image("eiger")
231
233
  motor_map = bec_figure.motor_map("samx", "samy")
232
234
 
@@ -1,8 +1,7 @@
1
1
  import pytest
2
2
 
3
- from bec_widgets.widgets import BECMotorMap
4
- from bec_widgets.widgets.plots.motor_map import MotorMapConfig
5
- from bec_widgets.widgets.plots.waveform import Signal, SignalData
3
+ from bec_widgets.widgets.figure.plots.motor_map.motor_map import BECMotorMap, MotorMapConfig
4
+ from bec_widgets.widgets.figure.plots.waveform.waveform_curve import SignalData
6
5
 
7
6
  from .client_mocks import mocked_client
8
7