bec-widgets 0.57.5__py3-none-any.whl → 0.57.7__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.
CHANGELOG.md CHANGED
@@ -2,6 +2,24 @@
2
2
 
3
3
 
4
4
 
5
+ ## v0.57.7 (2024-06-07)
6
+
7
+ ### Documentation
8
+
9
+ * docs: added schema of BECDockArea and BECFigure ([`828067f`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/828067f486a905eb4678538df58e2bdd6c770de1))
10
+
11
+ ### Fix
12
+
13
+ * fix: add model_config to pydantic models to allow runtime checks after creation ([`ca5e8d2`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/ca5e8d2fbbffbf221cc5472710fef81a33ee29d6))
14
+
15
+
16
+ ## v0.57.6 (2024-06-06)
17
+
18
+ ### Fix
19
+
20
+ * fix(bar): docstrings extended ([`edb1775`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/edb1775967c3ff0723d0edad2b764f1ffc832b7c))
21
+
22
+
5
23
  ## v0.57.5 (2024-06-06)
6
24
 
7
25
  ### Documentation
@@ -133,27 +151,10 @@
133
151
 
134
152
  ## v0.56.0 (2024-05-29)
135
153
 
136
- ### Build
137
-
138
- * build: added pyside6 as dependency ([`db301b1`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/db301b1be27bba76c8bb21fbff93cb4902b592a5))
139
-
140
- ### Ci
141
-
142
- * ci: added tests for pyside6, pyqt6 and pyqt5, default test and e2e is python 3.11 and pyqt6 ([`855be35`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/855be3551a1372bcbebba6f8930903f99202bbca))
143
-
144
154
  ### Documentation
145
155
 
146
156
  * docs(examples): example apps section deleted ([`ad208a5`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/ad208a5ef8495c45a8b83a4850ba9a1041b42717))
147
157
 
148
- ### Feature
149
-
150
- * feat(utils/ui_loader): universal ui loader for pyside/pyqt ([`0fea8d6`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/0fea8d606574fa99dda3b117da5d5209c251f694))
151
-
152
158
  ### Fix
153
159
 
154
160
  * fix(examples): outdated examples removed (mca_plot.py, stream_plot.py, motor_example.py) ([`ddc9510`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/ddc9510c2ba8dadf291809eeb5b135a105259492))
155
-
156
- * fix: compatibility adjustment to .ui loading and tests for PySide6 ([`07b99d9`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/07b99d91a57a645cddd76294f48d78773e4c9ea5))
157
-
158
-
159
- ## v0.55.0 (2024-05-24)
PKG-INFO CHANGED
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: bec_widgets
3
- Version: 0.57.5
3
+ Version: 0.57.7
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
@@ -15,6 +15,7 @@ class ScanInfo(BaseModel):
15
15
  scan_report_devices: list
16
16
  monitored_devices: list
17
17
  status: str
18
+ model_config: dict = {"validate_assignment": True}
18
19
 
19
20
 
20
21
  class AutoUpdates:
bec_widgets/cli/client.py CHANGED
@@ -1861,43 +1861,66 @@ class Ring(RPCBase):
1861
1861
  @rpc_call
1862
1862
  def set_value(self, value: "int | float"):
1863
1863
  """
1864
- None
1864
+ Set the value for the ring widget
1865
+
1866
+ Args:
1867
+ value(int | float): Value for the ring widget
1865
1868
  """
1866
1869
 
1867
1870
  @rpc_call
1868
1871
  def set_color(self, color: "str | tuple"):
1869
1872
  """
1870
- None
1873
+ Set the color for the ring widget
1874
+
1875
+ Args:
1876
+ color(str | tuple): Color for the ring widget. Can be HEX code or tuple (R, G, B, A).
1871
1877
  """
1872
1878
 
1873
1879
  @rpc_call
1874
1880
  def set_background(self, color: "str | tuple"):
1875
1881
  """
1876
- None
1882
+ Set the background color for the ring widget
1883
+
1884
+ Args:
1885
+ color(str | tuple): Background color for the ring widget. Can be HEX code or tuple (R, G, B, A).
1877
1886
  """
1878
1887
 
1879
1888
  @rpc_call
1880
1889
  def set_line_width(self, width: "int"):
1881
1890
  """
1882
- None
1891
+ Set the line width for the ring widget
1892
+
1893
+ Args:
1894
+ width(int): Line width for the ring widget
1883
1895
  """
1884
1896
 
1885
1897
  @rpc_call
1886
1898
  def set_min_max_values(self, min_value: "int | float", max_value: "int | float"):
1887
1899
  """
1888
- None
1900
+ Set the min and max values for the ring widget.
1901
+
1902
+ Args:
1903
+ min_value(int | float): Minimum value for the ring widget
1904
+ max_value(int | float): Maximum value for the ring widget
1889
1905
  """
1890
1906
 
1891
1907
  @rpc_call
1892
1908
  def set_start_angle(self, start_angle: "int"):
1893
1909
  """
1894
- None
1910
+ Set the start angle for the ring widget
1911
+
1912
+ Args:
1913
+ start_angle(int): Start angle for the ring widget in degrees
1895
1914
  """
1896
1915
 
1897
1916
  @rpc_call
1898
1917
  def set_update(self, mode: "Literal['manual', 'scan', 'device']", device: "str" = None):
1899
1918
  """
1900
- Set the update mode for the ring widget
1919
+ Set the update mode for the ring widget.
1920
+ Modes:
1921
+ - "manual": Manual update mode, the value is set by the user.
1922
+ - "scan": Update mode for the scan progress. The value is updated by the current scan progress.
1923
+ - "device": Update mode for the device readback. The value is updated by the device readback. Take into account that user has to set the device name and limits.
1901
1924
 
1902
1925
  Args:
1903
1926
  mode(str): Update mode for the ring widget. Can be "manual", "scan" or "device"
@@ -1907,5 +1930,5 @@ class Ring(RPCBase):
1907
1930
  @rpc_call
1908
1931
  def reset_connection(self):
1909
1932
  """
1910
- None
1933
+ Reset the connections for the ring widget. Disconnect the current slot and endpoint.
1911
1934
  """
@@ -20,6 +20,7 @@ class ConnectionConfig(BaseModel):
20
20
  gui_id: Optional[str] = Field(
21
21
  default=None, validate_default=True, description="The GUI ID of the widget."
22
22
  )
23
+ model_config: dict = {"validate_assignment": True}
23
24
 
24
25
  @field_validator("gui_id")
25
26
  def generate_gui_id(cls, v, values):
@@ -19,6 +19,7 @@ class ProcessingConfig(BaseModel):
19
19
  rotation: Optional[int] = Field(
20
20
  None, description="The rotation angle of the monitor data before displaying."
21
21
  )
22
+ model_config: dict = {"validate_assignment": True}
22
23
 
23
24
 
24
25
  class ImageProcessor:
@@ -20,6 +20,7 @@ class AxisConfig(BaseModel):
20
20
  y_lim: Optional[tuple] = Field(None, description="The limits of the y-axis.")
21
21
  x_grid: bool = Field(False, description="Show grid on the x-axis.")
22
22
  y_grid: bool = Field(False, description="Show grid on the y-axis.")
23
+ model_config: dict = {"validate_assignment": True}
23
24
 
24
25
 
25
26
  class SubplotConfig(ConnectionConfig):
@@ -17,6 +17,7 @@ class SignalData(BaseModel):
17
17
  unit: Optional[str] = None # todo implement later
18
18
  modifier: Optional[str] = None # todo implement later
19
19
  limits: Optional[list[float]] = None # todo implement later
20
+ model_config: dict = {"validate_assignment": True}
20
21
 
21
22
 
22
23
  class Signal(BaseModel):
@@ -26,6 +27,7 @@ class Signal(BaseModel):
26
27
  x: SignalData # TODO maybe add metadata for config gui later
27
28
  y: SignalData
28
29
  z: Optional[SignalData] = None
30
+ model_config: dict = {"validate_assignment": True}
29
31
 
30
32
 
31
33
  class CurveConfig(ConnectionConfig):
@@ -13,6 +13,7 @@ from bec_widgets.utils import BECConnector, ConnectionConfig
13
13
  class RingConnections(BaseModel):
14
14
  slot: Literal["on_scan_progress", "on_device_readback"] = None
15
15
  endpoint: EndpointInfo | str = None
16
+ model_config: dict = {"validate_assignment": True}
16
17
 
17
18
  @field_validator("endpoint")
18
19
  def validate_endpoint(cls, v, values):
@@ -114,32 +115,75 @@ class Ring(BECConnector):
114
115
  self.set_connections(self.config.connections.slot, self.config.connections.endpoint)
115
116
 
116
117
  def set_value(self, value: int | float):
118
+ """
119
+ Set the value for the ring widget
120
+
121
+ Args:
122
+ value(int | float): Value for the ring widget
123
+ """
117
124
  self.config.value = round(
118
125
  float(max(self.config.min_value, min(self.config.max_value, value))),
119
126
  self.config.precision,
120
127
  )
121
128
 
122
129
  def set_color(self, color: str | tuple):
130
+ """
131
+ Set the color for the ring widget
132
+
133
+ Args:
134
+ color(str | tuple): Color for the ring widget. Can be HEX code or tuple (R, G, B, A).
135
+ """
123
136
  self.config.color = color
124
137
  self.color = self.convert_color(color)
125
138
 
126
139
  def set_background(self, color: str | tuple):
140
+ """
141
+ Set the background color for the ring widget
142
+
143
+ Args:
144
+ color(str | tuple): Background color for the ring widget. Can be HEX code or tuple (R, G, B, A).
145
+ """
127
146
  self.config.background_color = color
128
147
  self.color = self.convert_color(color)
129
148
 
130
149
  def set_line_width(self, width: int):
150
+ """
151
+ Set the line width for the ring widget
152
+
153
+ Args:
154
+ width(int): Line width for the ring widget
155
+ """
131
156
  self.config.line_width = width
132
157
 
133
158
  def set_min_max_values(self, min_value: int | float, max_value: int | float):
159
+ """
160
+ Set the min and max values for the ring widget.
161
+
162
+ Args:
163
+ min_value(int | float): Minimum value for the ring widget
164
+ max_value(int | float): Maximum value for the ring widget
165
+ """
134
166
  self.config.min_value = min_value
135
167
  self.config.max_value = max_value
136
168
 
137
169
  def set_start_angle(self, start_angle: int):
170
+ """
171
+ Set the start angle for the ring widget
172
+
173
+ Args:
174
+ start_angle(int): Start angle for the ring widget in degrees
175
+ """
138
176
  self.config.start_position = start_angle
139
177
  self.start_position = start_angle * 16
140
178
 
141
179
  @staticmethod
142
180
  def convert_color(color):
181
+ """
182
+ Convert the color to QColor
183
+
184
+ Args:
185
+ color(str | tuple): Color for the ring widget. Can be HEX code or tuple (R, G, B, A).
186
+ """
143
187
  converted_color = None
144
188
  if isinstance(color, str):
145
189
  converted_color = QtGui.QColor(color)
@@ -149,7 +193,11 @@ class Ring(BECConnector):
149
193
 
150
194
  def set_update(self, mode: Literal["manual", "scan", "device"], device: str = None):
151
195
  """
152
- Set the update mode for the ring widget
196
+ Set the update mode for the ring widget.
197
+ Modes:
198
+ - "manual": Manual update mode, the value is set by the user.
199
+ - "scan": Update mode for the scan progress. The value is updated by the current scan progress.
200
+ - "device": Update mode for the device readback. The value is updated by the device readback. Take into account that user has to set the device name and limits.
153
201
 
154
202
  Args:
155
203
  mode(str): Update mode for the ring widget. Can be "manual", "scan" or "device"
@@ -169,6 +217,13 @@ class Ring(BECConnector):
169
217
  self.parent_progress_widget.enable_auto_updates(False)
170
218
 
171
219
  def set_connections(self, slot: str, endpoint: str | EndpointInfo):
220
+ """
221
+ Set the connections for the ring widget
222
+
223
+ Args:
224
+ slot(str): Slot for the ring widget update. Can be "on_scan_progress" or "on_device_readback".
225
+ endpoint(str | EndpointInfo): Endpoint for the ring widget update. Endpoint has to match the slot type.
226
+ """
172
227
  if self.config.connections.endpoint == endpoint and self.config.connections.slot == slot:
173
228
  return
174
229
  else:
@@ -179,12 +234,22 @@ class Ring(BECConnector):
179
234
  self.bec_dispatcher.connect_slot(getattr(self, slot), endpoint)
180
235
 
181
236
  def reset_connection(self):
237
+ """
238
+ Reset the connections for the ring widget. Disconnect the current slot and endpoint.
239
+ """
182
240
  self.bec_dispatcher.disconnect_slot(
183
241
  self.config.connections.slot, self.config.connections.endpoint
184
242
  )
185
243
  self.config.connections = RingConnections()
186
244
 
187
245
  def on_scan_progress(self, msg, meta):
246
+ """
247
+ Update the ring widget with the scan progress.
248
+
249
+ Args:
250
+ msg(dict): Message with the scan progress
251
+ meta(dict): Metadata for the message
252
+ """
188
253
  current_RID = meta.get("RID", None)
189
254
  if current_RID != self.RID:
190
255
  self.set_min_max_values(0, msg.get("max_value", 100))
@@ -192,6 +257,13 @@ class Ring(BECConnector):
192
257
  self.parent_progress_widget.update()
193
258
 
194
259
  def on_device_readback(self, msg, meta):
260
+ """
261
+ Update the ring widget with the device readback.
262
+
263
+ Args:
264
+ msg(dict): Message with the device readback
265
+ meta(dict): Metadata for the message
266
+ """
195
267
  if isinstance(self.config.connections.endpoint, EndpointInfo):
196
268
  endpoint = self.config.connections.endpoint.endpoint
197
269
  else:
@@ -464,6 +464,13 @@ class SpiralProgressBar(BECConnector, QWidget):
464
464
 
465
465
  @Slot(dict, dict)
466
466
  def on_scan_queue_status(self, msg, meta):
467
+ """
468
+ Slot to handle scan queue status messages. Decides what update to perform based on the scan queue status.
469
+
470
+ Args:
471
+ msg(dict): Message from the BEC.
472
+ meta(dict): Metadata from the BEC.
473
+ """
467
474
  primary_queue = msg.get("queue").get("primary")
468
475
  info = primary_queue.get("info", None)
469
476
 
@@ -490,6 +497,12 @@ class SpiralProgressBar(BECConnector, QWidget):
490
497
  # print("hook device_progress")
491
498
 
492
499
  def _hook_scan_progress(self, ring_index: int = None):
500
+ """
501
+ Hook the scan progress to the progress bars.
502
+
503
+ Args:
504
+ ring_index(int): Index of the progress bar to hook the scan progress to.
505
+ """
493
506
  if ring_index is not None:
494
507
  ring = self._find_ring_by_index(ring_index)
495
508
  else:
@@ -501,6 +514,15 @@ class SpiralProgressBar(BECConnector, QWidget):
501
514
  ring.set_connections("on_scan_progress", MessageEndpoints.scan_progress())
502
515
 
503
516
  def _hook_readback(self, bar_index: int, device: str, min: float | int, max: float | int):
517
+ """
518
+ Hook the readback values to the progress bars.
519
+
520
+ Args:
521
+ bar_index(int): Index of the progress bar to hook the readback values to.
522
+ device(str): Device to readback values from.
523
+ min(float|int): Minimum value for the progress bar.
524
+ max(float|int): Maximum value for the progress bar.
525
+ """
504
526
  ring = self._find_ring_by_index(bar_index)
505
527
  ring.set_min_max_values(min, max)
506
528
  endpoint = MessageEndpoints.device_readback(device)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: bec_widgets
3
- Version: 0.57.5
3
+ Version: 0.57.7
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,11 +2,11 @@
2
2
  .gitlab-ci.yml,sha256=RF2JeGh8tG09DyAOwEu991IZy3C8Vm6lI8O_4Dr9B9Q,12239
3
3
  .pylintrc,sha256=OstrgmEyP0smNFBKoIN5_26-UmNZgMHnbjvAWX0UrLs,18535
4
4
  .readthedocs.yaml,sha256=aSOc277LqXcsTI6lgvm_JY80lMlr69GbPKgivua2cS0,603
5
- CHANGELOG.md,sha256=7H2GTncFqnR-otViaWQZ6GjWQYaXBZaVSlZi7gg1r8A,7242
5
+ CHANGELOG.md,sha256=X9H-BklqBJf16uGegYy57e9XnyvJMb5ogZs3K0ymAqc,7072
6
6
  LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
7
- PKG-INFO,sha256=FrFmymNmKhGgdnROQ1lQVuTNsR37w-FOZD83DW3gd-g,1178
7
+ PKG-INFO,sha256=c40eu7rvlul5AMf-lodtHO4hJ3auFJg22eqkir9PYpE,1178
8
8
  README.md,sha256=y4jB6wvArS7N8_iTbKWnSM_oRAqLA2GqgzUR-FMh5sU,2645
9
- pyproject.toml,sha256=pmkWfhl5AVkaAK06SsqJiwwOP4qIifYqbVh7CtIo0ac,1822
9
+ pyproject.toml,sha256=6xrwVPUUPoFrPwURWqR8v6Kr5XAsx8hXChcpP4F3ayg,1822
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
@@ -16,8 +16,8 @@ bec_widgets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
16
  bec_widgets/assets/bec_widgets_icon.png,sha256=K8dgGwIjalDh9PRHUsSQBqgdX7a00nM3igZdc20pkYM,1747017
17
17
  bec_widgets/assets/terminal_icon.png,sha256=bJl7Tft4Fi2uxvuXI8o14uMHnI9eAWKSU2uftXCH9ws,3889
18
18
  bec_widgets/cli/__init__.py,sha256=tLD8HWgyURhMjYlKZ43pBu-qvGD1LI5o3n3rEieg-70,43
19
- bec_widgets/cli/auto_updates.py,sha256=8x4_SrD8Hh1RbrUWXLfisw6X5v8Mij2DiTfjvn9dkUw,4692
20
- bec_widgets/cli/client.py,sha256=RB11oNngqo3_mqWxQJRalsehh_fwwh34o7IN2HTNTyg,53804
19
+ bec_widgets/cli/auto_updates.py,sha256=0sd7HiqOMn1jCbgVG3-H1nmQgdOMRwSjx6FAvdtVf1k,4747
20
+ bec_widgets/cli/client.py,sha256=3GiSipBcjFvQunvevSgxGgriK1dslqpu-0A5WWFN_fA,55076
21
21
  bec_widgets/cli/client_utils.py,sha256=7u8P9EYgLPJuAcHxnFiZi-gCZohO3vAn0W7dqsSrs4M,10660
22
22
  bec_widgets/cli/generate_cli.py,sha256=tBt-F4Xccg9Pj2zuDEGHd0Ho1fKLfCf3PuSa8KmelQk,4431
23
23
  bec_widgets/cli/rpc_register.py,sha256=QxXUZu5XNg00Yf5O3UHWOXg3-f_pzKjjoZYMOa-MOJc,2216
@@ -31,7 +31,7 @@ bec_widgets/examples/motor_movement/__init__.py,sha256=LzPJkxLAxOsZCbXR-fRCPmeYo
31
31
  bec_widgets/examples/motor_movement/motor_control_compilations.py,sha256=8rpA7a2xVZTDMrx7YQIj3IJew78J1gcVMkHvloS0U_Q,9055
32
32
  bec_widgets/examples/motor_movement/motor_controller.ui,sha256=83XX6NGILwntoUIghvzWnMuGf80O8khK3SduVKTAEFM,29105
33
33
  bec_widgets/utils/__init__.py,sha256=B7OZ2ArjyFaGNh4XYIbk49agnYCz704ltuFSalLCjSA,481
34
- bec_widgets/utils/bec_connector.py,sha256=CRaYgnxPS0Yxf5nOH66q3oa8HtYnjgwyWlE9lCFn0k0,5285
34
+ bec_widgets/utils/bec_connector.py,sha256=CLrf30dW-0iYiQo4cwH7qSfsog-1ypfKMjQxJJjKpmw,5340
35
35
  bec_widgets/utils/bec_dispatcher.py,sha256=nLdcj2u4dy8-ZR03XioCzr7hBg9Wq4Kw58OU6sDorT4,5593
36
36
  bec_widgets/utils/bec_table.py,sha256=nA2b8ukSeUfquFMAxGrUVOqdrzMoDYD6O_4EYbOG2zk,717
37
37
  bec_widgets/utils/colors.py,sha256=JsLxzkxbw-I8GIuvnIKyiM83n0edhyMG2Fa4Ffm62ww,2392
@@ -53,16 +53,16 @@ bec_widgets/widgets/dock/dock_area.py,sha256=zupu05KHrrdUlNNQe-x9zC-bXDk-qPXvr_m
53
53
  bec_widgets/widgets/figure/__init__.py,sha256=3hGx_KOV7QHCYAV06aNuUgKq4QIYCjUTad-DrwkUaBM,44
54
54
  bec_widgets/widgets/figure/figure.py,sha256=O--r3dyeOPXndV2400wpE9lPdBezzd0ZUt7yA2u2n0A,31468
55
55
  bec_widgets/widgets/figure/plots/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
56
- bec_widgets/widgets/figure/plots/plot_base.py,sha256=R3wiO88ZmATRy9kJoLvj_7BmkMSyayNkzrSOJzJHvtk,7994
56
+ bec_widgets/widgets/figure/plots/plot_base.py,sha256=XfOQaQUHA0qZheGiDs0CYdJswUAgQjBzjQM1XSdjo8k,8049
57
57
  bec_widgets/widgets/figure/plots/image/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
58
  bec_widgets/widgets/figure/plots/image/image.py,sha256=-rxCt1IXmS2XQu0dS0SSXAF8VaxacSmQ-_kDsFxbPm4,19653
59
59
  bec_widgets/widgets/figure/plots/image/image_item.py,sha256=1oytCY2IIgRbtS3GRrp9JV02KOif78O2-iaK0qYuHFU,9058
60
- bec_widgets/widgets/figure/plots/image/image_processor.py,sha256=59JwHMEBjLo72fmrAB7W1PFBT2oBe16heBaZfYM6MAk,4368
60
+ bec_widgets/widgets/figure/plots/image/image_processor.py,sha256=TOnHbdq9rK5--L5JNshILLm_e5_LVwuQ2-MFV8JKL9I,4423
61
61
  bec_widgets/widgets/figure/plots/motor_map/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
62
62
  bec_widgets/widgets/figure/plots/motor_map/motor_map.py,sha256=Ff2WoNHxO_A3ggsbSd_AVUP1JeOWMuJs-0GLskxn-94,15267
63
63
  bec_widgets/widgets/figure/plots/waveform/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
64
64
  bec_widgets/widgets/figure/plots/waveform/waveform.py,sha256=DgnUdH3wj0uyvZvK9jqdDKaRwPoadf14VZ4g1TOXY5A,23511
65
- bec_widgets/widgets/figure/plots/waveform/waveform_curve.py,sha256=9q7nJfyH8y9rWw_AIOd6tk7cbckoAGNLHv2oHEKCCyo,7229
65
+ bec_widgets/widgets/figure/plots/waveform/waveform_curve.py,sha256=Ynvgbc202TXaeAUkHyGYWmRBcDD2Wx5dTRyd9HjVE3o,7339
66
66
  bec_widgets/widgets/jupyter_console/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
67
67
  bec_widgets/widgets/jupyter_console/jupyter_console.py,sha256=ioLYJL31RdBoAOGFSS8PVSnUhkWPWmLC3tiKp7CouO8,2251
68
68
  bec_widgets/widgets/motor_control/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -82,8 +82,8 @@ bec_widgets/widgets/motor_control/selection/selection.ui,sha256=vXXpvNWuL6xyHhW7
82
82
  bec_widgets/widgets/scan_control/__init__.py,sha256=IOfHl15vxb_uC6KN62-PeUzbBha_vQyqkkXbJ2HU674,38
83
83
  bec_widgets/widgets/scan_control/scan_control.py,sha256=B5n2U2iVtTCY3Tx93JyBqzGCDCmWhWwAOhbPelLI-bs,17168
84
84
  bec_widgets/widgets/spiral_progress_bar/__init__.py,sha256=4efbtcqCToMIw5bkQrTzy2TzuBCXvlhuUPh1bYC_Yzg,51
85
- bec_widgets/widgets/spiral_progress_bar/ring.py,sha256=zYz_wq5f-mfI32_melkxyzMbx4RStUU1bpwMp0jm9d4,8057
86
- bec_widgets/widgets/spiral_progress_bar/spiral_progress_bar.py,sha256=BWhkuVrHUhLWDlpNNhhFfH2cU_tIhB-nhJMH-SLiPyE,23599
85
+ bec_widgets/widgets/spiral_progress_bar/ring.py,sha256=7i5oKpW8eUQGvLyKce2-2rlaGDVLec__DoWp6hfJlRw,10524
86
+ bec_widgets/widgets/spiral_progress_bar/spiral_progress_bar.py,sha256=OQzJiR0Fd4fWop4ojykEKtXVqeLL0WLNSBdhf7JvLsc,24386
87
87
  bec_widgets/widgets/toolbar/__init__.py,sha256=d-TP4_cr_VbpwreMM4ePnfZ5YXsEPQ45ibEf75nuGoE,36
88
88
  bec_widgets/widgets/toolbar/toolbar.py,sha256=e0zCD_0q7K4NVhrzD8001Qvfxt-VhqHTgofchS9NgCM,5125
89
89
  docs/Makefile,sha256=i2WHuFlgfyAPEW4ssEP8NY4cOibDJrVjvzSEU8_Ggwc,634
@@ -108,12 +108,14 @@ docs/user/customisation.md,sha256=Og0NuUsTs8HdwKtpHnycGmH8wCqOeYgj2ozlYRJ-Drk,24
108
108
  docs/user/user.md,sha256=uCTcjclIi6rdjYRQebko6bWFEVsjyfshsVU3BDYrC-Y,1403
109
109
  docs/user/api_reference/api_reference.md,sha256=q2Imc48Rq6GcAP0R4bS3KuW5ptZZdsV4wxGJb3JJQHg,174
110
110
  docs/user/applications/applications.md,sha256=yOECfaYRUEDIxF-O0duOwSJlG4f93RylrpMjbw1-8Dg,100
111
+ docs/user/getting_started/BECDockArea.png,sha256=t3vSm_rVRk371J5LOutbolETuEjStNc2aTT1YFOcSSA,2046774
111
112
  docs/user/getting_started/auto_updates.md,sha256=Gicx3lplI6JRBlnPj_VL6IhqOIcsWjYF4_EdZSCje2A,3754
112
113
  docs/user/getting_started/getting_started.md,sha256=lxZXCr6HAkM61oo5Bu-YjINSKo4wihWhAPJdotEAAVQ,358
113
114
  docs/user/getting_started/gui_complex_gui.gif,sha256=ovv9u371BGG5GqhzyBMl4mvqMHLfJS0ylr-dR0Ydwtw,6550393
114
115
  docs/user/getting_started/installation.md,sha256=nBl2Hfvo6ua3-tVZn1B-UG0hCTlrFY6_ibXHWnXeegs,1135
115
- docs/user/getting_started/quick_start.md,sha256=MNXEaww5hiQY7N7AQhrmbxdYQHimFk_iKQW8tS-72cU,9337
116
- docs/user/widgets/bec_figure.md,sha256=371T59CniH1pv2MT796kywfwYgWRBHPh17ixEWIcfVc,5093
116
+ docs/user/getting_started/quick_start.md,sha256=VGU880GwamcIZcBE8tjxuqX2syE-71jqZedtskCoBbA,9405
117
+ docs/user/widgets/BECFigure.png,sha256=8dQr4u0uk_y0VV-R1Jh9yTR3Vidd9HDEno_07R0swaE,1605920
118
+ docs/user/widgets/bec_figure.md,sha256=BwcumbhZd6a2zKmoHTvwKr8kG8WxBx9lS_QwxNiBMpQ,5155
117
119
  docs/user/widgets/image_plot.gif,sha256=_mVFhMTXGqwDOcEtrBHMZj5Thn2sLhDAHEeL2XyHN-s,14098977
118
120
  docs/user/widgets/motor.gif,sha256=FtaWdRHx4UZaGJPpq8LNhMMgX4PFcAB6IZ93JCMEh_w,2280719
119
121
  docs/user/widgets/progress_bar.gif,sha256=5jh0Zw2BBGPuNxszV1DBLJCb4_6glIRX-U2ABjnsK2k,5263592
@@ -151,7 +153,7 @@ tests/unit_tests/test_configs/config_device_no_entry.yaml,sha256=hdvue9KLc_kfNzG
151
153
  tests/unit_tests/test_configs/config_scan.yaml,sha256=vo484BbWOjA_e-h6bTjSV9k7QaQHrlAvx-z8wtY-P4E,1915
152
154
  tests/unit_tests/test_msgs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
153
155
  tests/unit_tests/test_msgs/available_scans_message.py,sha256=m_z97hIrjHXXMa2Ex-UvsPmTxOYXfjxyJaGkIY6StTY,46532
154
- bec_widgets-0.57.5.dist-info/METADATA,sha256=FrFmymNmKhGgdnROQ1lQVuTNsR37w-FOZD83DW3gd-g,1178
155
- bec_widgets-0.57.5.dist-info/WHEEL,sha256=zEMcRr9Kr03x1ozGwg5v9NQBKn3kndp6LSoSlVg-jhU,87
156
- bec_widgets-0.57.5.dist-info/licenses/LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
157
- bec_widgets-0.57.5.dist-info/RECORD,,
156
+ bec_widgets-0.57.7.dist-info/METADATA,sha256=c40eu7rvlul5AMf-lodtHO4hJ3auFJg22eqkir9PYpE,1178
157
+ bec_widgets-0.57.7.dist-info/WHEEL,sha256=zEMcRr9Kr03x1ozGwg5v9NQBKn3kndp6LSoSlVg-jhU,87
158
+ bec_widgets-0.57.7.dist-info/licenses/LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
159
+ bec_widgets-0.57.7.dist-info/RECORD,,
@@ -5,6 +5,10 @@ In order to use BEC Widgets as a plotting tool for BEC, it needs to be [installe
5
5
  ## BECDockArea
6
6
  The `bec.gui` object is your entry point to BEC Widgets. It is a [`BECDockArea`](/api_reference/_autosummary/bec_widgets.cli.client.BECDockArea) instance that can be composed of multiple [`BECDock`](/api_reference/_autosummary/bec_widgets.cli.client.BECDock)s that can be attached / detached to the main area. These docks allow users to freely arrange and customize the widgets they add to the gui, providing a flexible and customizable interface to visualize data.
7
7
 
8
+ **Schema of the BECDockArea**
9
+
10
+ ![BECDockArea.png](BECDockArea.png)
11
+
8
12
  ## Widgets
9
13
  Widgets are the building blocks of the BEC Widgets framework. They are the visual components that allow users to interact with the data and control the behavior of the application. Each dock can contain multiple widgets, albeit we recommend for most use cases a single widget per dock. BEC Widgets provides a set of core widgets (cf. [widgets](#user.widgets)). More widgets can be added by the users, and we invite you to explore the [developer documentation](developer.widgets) to learn how to create custom widgets.
10
14
  For the introduction given here, we will focus on the `BECFigure` widget, as it is the most commonly used widget for visualizing data from BEC. The same access pattern can be used for all other widgets.
Binary file
@@ -3,6 +3,10 @@
3
3
  [`BECFigure`](/api_reference/_autosummary/bec_widgets.cli.client.BECFigure) is a widget that provides a graphical user interface for creating and managing plots. It is a versatile tool that allows users to create a wide range of plots, from simple 1D waveforms to complex 2D scatter plots. BECFigure is designed to be user-friendly and interactive, enabling users to customize plots and visualize data in real-time.
4
4
  In the following, we describe 4 different type of widgets thaat are available in BECFigure.
5
5
 
6
+ **Schema of the BECFigure**
7
+
8
+ ![BECFigure.png](BECFigure.png)
9
+
6
10
  (user.widgets.waveform_1d)=
7
11
  ## [1D Waveform Widget](/api_reference/_autosummary/bec_widgets.cli.client.BECWaveform)
8
12
 
pyproject.toml CHANGED
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "bec_widgets"
7
- version = "0.57.5"
7
+ version = "0.57.7"
8
8
  description = "BEC Widgets"
9
9
  requires-python = ">=3.10"
10
10
  classifiers = [