bec-widgets 0.99.10__py3-none-any.whl → 0.99.12__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 (34) hide show
  1. CHANGELOG.md +22 -16
  2. PKG-INFO +1 -1
  3. bec_widgets/assets/app_icons/BEC-General-App.png +0 -0
  4. bec_widgets/cli/client.py +59 -2
  5. bec_widgets/examples/general_app/general_app.py +1 -1
  6. bec_widgets/examples/jupyter_console/jupyter_console_window.py +2 -4
  7. bec_widgets/qt_utils/toolbar.py +25 -0
  8. bec_widgets/widgets/button_abort/__init__.py +0 -0
  9. bec_widgets/widgets/button_abort/abort_button.pyproject +1 -0
  10. bec_widgets/widgets/button_abort/abort_button_plugin.py +54 -0
  11. bec_widgets/widgets/button_abort/button_abort.py +49 -0
  12. bec_widgets/widgets/button_abort/register_abort_button.py +15 -0
  13. bec_widgets/widgets/button_reset/__init__.py +0 -0
  14. bec_widgets/widgets/button_reset/button_reset.py +42 -0
  15. bec_widgets/widgets/button_reset/register_reset_button.py +15 -0
  16. bec_widgets/widgets/button_reset/reset_button.pyproject +1 -0
  17. bec_widgets/widgets/button_reset/reset_button_plugin.py +54 -0
  18. bec_widgets/widgets/button_resume/__init__.py +0 -0
  19. bec_widgets/widgets/button_resume/button_resume.py +42 -0
  20. bec_widgets/widgets/button_resume/register_resume_button.py +15 -0
  21. bec_widgets/widgets/button_resume/resume_button.pyproject +1 -0
  22. bec_widgets/widgets/button_resume/resume_button_plugin.py +54 -0
  23. bec_widgets/widgets/positioner_box/positioner_box.py +2 -0
  24. bec_widgets/widgets/scan_control/scan_control.py +65 -2
  25. bec_widgets/widgets/stop_button/stop_button.py +10 -5
  26. bec_widgets/widgets/stop_button/stop_button_plugin.py +1 -1
  27. {bec_widgets-0.99.10.dist-info → bec_widgets-0.99.12.dist-info}/METADATA +1 -1
  28. {bec_widgets-0.99.10.dist-info → bec_widgets-0.99.12.dist-info}/RECORD +32 -18
  29. pyproject.toml +1 -1
  30. bec_widgets/assets/app_icons/BEC-Dark.png +0 -0
  31. bec_widgets/assets/app_icons/terminal_icon.png +0 -0
  32. {bec_widgets-0.99.10.dist-info → bec_widgets-0.99.12.dist-info}/WHEEL +0 -0
  33. {bec_widgets-0.99.10.dist-info → bec_widgets-0.99.12.dist-info}/entry_points.txt +0 -0
  34. {bec_widgets-0.99.10.dist-info → bec_widgets-0.99.12.dist-info}/licenses/LICENSE +0 -0
CHANGELOG.md CHANGED
@@ -1,5 +1,27 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## v0.99.12 (2024-08-29)
4
+
5
+ ### Fix
6
+
7
+ * fix(toolbar): widget action added ([`2efd487`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/2efd48736cbe04e84533f7933c552ea8274e2162))
8
+
9
+ * fix(reset_button): reset button added ([`6ed1efc`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/6ed1efc6af193908f70aa37fb73157d2ca6a62f4))
10
+
11
+ * fix(abort_button): abort button added; some minor fixes ([`a568633`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/a568633c3206a8c26069d140f2d9a548bf4124b0))
12
+
13
+ ## v0.99.11 (2024-08-29)
14
+
15
+ ### Fix
16
+
17
+ * fix(resume_button): resume button added ([`8be8295`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/8be8295b2b38f36da210ab36c5da6d0a00e330cc))
18
+
19
+ ### Refactor
20
+
21
+ * refactor(icons): general app icon changed; jupyter app icon changed to material icon ([`5d73fe4`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/5d73fe455a568ad40a9fadc5ce6e249d782ad20d))
22
+
23
+ * refactor: add option to select scan and hide arg bundle buttons ([`7dadab1`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/7dadab1f14aa41876ad39e8cdc7f7732248cc643))
24
+
3
25
  ## v0.99.10 (2024-08-29)
4
26
 
5
27
  ### Fix
@@ -128,10 +150,6 @@ If not theme is set, the init of the BECWidget base class sets the default theme
128
150
 
129
151
  ## v0.98.0 (2024-08-25)
130
152
 
131
- ### Feature
132
-
133
- * feat(themes): added set_theme method ([`2b4449a`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/2b4449afebdda0a97f95712a1353cf40ec55c283))
134
-
135
153
  ### Fix
136
154
 
137
155
  * fix(toolbar): removed hardcoded color values ([`afdf4e8`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/afdf4e8782a22566932180224fa1c924d24c810f))
@@ -142,18 +160,6 @@ If not theme is set, the init of the BECWidget base class sets the default theme
142
160
 
143
161
  * fix: fix color palette if qtheme was not called ([`3f3b207`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/3f3b207295ebd406ebaeecee465c774965161b8b))
144
162
 
145
- * fix(figure): removed theme from figure init ([`e42b84c`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/e42b84c63650297d67feffccc02a2c2ba111ca79))
146
-
147
- * fix: use globally set theme instead of the internal bec widgets theme ([`77c5aa7`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/77c5aa741cf1f5b969a42aa878aa2965176dbf41))
148
-
149
- * fix(waveform): fixed icon appearance ([`36ad464`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/36ad4641594b67c9b789515c28f7db78a12757ee))
150
-
151
163
  ### Refactor
152
164
 
153
165
  * refactor(waveform): use set theme for demo ([`44cfda1`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/44cfda1c07306669c9a4e09706d95e6b91dee370))
154
-
155
- ## v0.97.0 (2024-08-23)
156
-
157
- ### Fix
158
-
159
- * fix(toolbar icon): fixed material icon toolbar for theme changes ([`3ecbd60`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/3ecbd60627994417c9175364e5909710dbcdceb2))
PKG-INFO CHANGED
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: bec_widgets
3
- Version: 0.99.10
3
+ Version: 0.99.12
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
bec_widgets/cli/client.py CHANGED
@@ -13,6 +13,7 @@ class Widgets(str, enum.Enum):
13
13
  Enum for the available widgets.
14
14
  """
15
15
 
16
+ AbortButton = "AbortButton"
16
17
  BECDock = "BECDock"
17
18
  BECDockArea = "BECDockArea"
18
19
  BECFigure = "BECFigure"
@@ -27,6 +28,8 @@ class Widgets(str, enum.Enum):
27
28
  DeviceLineEdit = "DeviceLineEdit"
28
29
  PositionerBox = "PositionerBox"
29
30
  PositionerControlLine = "PositionerControlLine"
31
+ ResetButton = "ResetButton"
32
+ ResumeButton = "ResumeButton"
30
33
  RingProgressBar = "RingProgressBar"
31
34
  ScanControl = "ScanControl"
32
35
  StopButton = "StopButton"
@@ -35,6 +38,24 @@ class Widgets(str, enum.Enum):
35
38
  WebsiteWidget = "WebsiteWidget"
36
39
 
37
40
 
41
+ class AbortButton(RPCBase):
42
+ @property
43
+ @rpc_call
44
+ def _config_dict(self) -> "dict":
45
+ """
46
+ Get the configuration of the widget.
47
+
48
+ Returns:
49
+ dict: The configuration of the widget.
50
+ """
51
+
52
+ @rpc_call
53
+ def _get_all_rpc(self) -> "dict":
54
+ """
55
+ Get all registered RPC objects.
56
+ """
57
+
58
+
38
59
  class BECCurve(RPCBase):
39
60
  @rpc_call
40
61
  def remove(self):
@@ -2373,7 +2394,7 @@ class DeviceLineEdit(RPCBase):
2373
2394
 
2374
2395
  class PositionerBox(RPCBase):
2375
2396
  @rpc_call
2376
- def set_positioner(self, positioner: str):
2397
+ def set_positioner(self, positioner: "str | Positioner"):
2377
2398
  """
2378
2399
  Set the device
2379
2400
 
@@ -2384,7 +2405,7 @@ class PositionerBox(RPCBase):
2384
2405
 
2385
2406
  class PositionerControlLine(RPCBase):
2386
2407
  @rpc_call
2387
- def set_positioner(self, positioner: str):
2408
+ def set_positioner(self, positioner: "str | Positioner"):
2388
2409
  """
2389
2410
  Set the device
2390
2411
 
@@ -2393,6 +2414,42 @@ class PositionerControlLine(RPCBase):
2393
2414
  """
2394
2415
 
2395
2416
 
2417
+ class ResetButton(RPCBase):
2418
+ @property
2419
+ @rpc_call
2420
+ def _config_dict(self) -> "dict":
2421
+ """
2422
+ Get the configuration of the widget.
2423
+
2424
+ Returns:
2425
+ dict: The configuration of the widget.
2426
+ """
2427
+
2428
+ @rpc_call
2429
+ def _get_all_rpc(self) -> "dict":
2430
+ """
2431
+ Get all registered RPC objects.
2432
+ """
2433
+
2434
+
2435
+ class ResumeButton(RPCBase):
2436
+ @property
2437
+ @rpc_call
2438
+ def _config_dict(self) -> "dict":
2439
+ """
2440
+ Get the configuration of the widget.
2441
+
2442
+ Returns:
2443
+ dict: The configuration of the widget.
2444
+ """
2445
+
2446
+ @rpc_call
2447
+ def _get_all_rpc(self) -> "dict":
2448
+ """
2449
+ Get all registered RPC objects.
2450
+ """
2451
+
2452
+
2396
2453
  class Ring(RPCBase):
2397
2454
  @rpc_call
2398
2455
  def _get_all_rpc(self) -> "dict":
@@ -80,7 +80,7 @@ def main(): # pragma: no cover
80
80
  app = QApplication(sys.argv)
81
81
  icon = QIcon()
82
82
  icon.addFile(
83
- os.path.join(MODULE_PATH, "assets", "app_icons", "BEC-Dark.png"), size=QSize(48, 48)
83
+ os.path.join(MODULE_PATH, "assets", "app_icons", "BEC-General-App.png"), size=QSize(48, 48)
84
84
  )
85
85
  app.setWindowIcon(icon)
86
86
  main_window = BECGeneralApp()
@@ -2,6 +2,7 @@ import os
2
2
 
3
3
  import numpy as np
4
4
  import pyqtgraph as pg
5
+ from bec_qthemes import material_icon
5
6
  from qtpy.QtCore import QSize
6
7
  from qtpy.QtGui import QIcon
7
8
  from qtpy.QtWidgets import (
@@ -200,10 +201,7 @@ if __name__ == "__main__": # pragma: no cover
200
201
  app.setApplicationName("Jupyter Console")
201
202
  app.setApplicationDisplayName("Jupyter Console")
202
203
  apply_theme("dark")
203
- icon = QIcon()
204
- icon.addFile(
205
- os.path.join(module_path, "assets", "app_icons", "terminal_icon.png"), size=QSize(48, 48)
206
- )
204
+ icon = material_icon("terminal", color="#434343", filled=True)
207
205
  app.setWindowIcon(icon)
208
206
 
209
207
  bec_dispatcher = BECDispatcher()
@@ -142,6 +142,31 @@ class DeviceSelectionAction(ToolBarAction):
142
142
  self.device_combobox.setStyleSheet(f"QComboBox {{ background-color: {color}; }}")
143
143
 
144
144
 
145
+ class WidgetAction(ToolBarAction):
146
+ """
147
+ Action for adding any widget to the toolbar.
148
+
149
+ Args:
150
+ label (str|None): The label for the widget.
151
+ widget (QWidget): The widget to be added to the toolbar.
152
+
153
+ """
154
+
155
+ def __init__(self, label: str | None = None, widget: QWidget = None):
156
+ super().__init__()
157
+ self.label = label
158
+ self.widget = widget
159
+
160
+ def add_to_toolbar(self, toolbar, target):
161
+ widget = QWidget()
162
+ layout = QHBoxLayout(widget)
163
+ if self.label is not None:
164
+ label = QLabel(f"{self.label}")
165
+ layout.addWidget(label)
166
+ layout.addWidget(self.widget)
167
+ toolbar.addWidget(widget)
168
+
169
+
145
170
  class ExpandableMenuAction(ToolBarAction):
146
171
  """
147
172
  Action for an expandable menu in the toolbar.
File without changes
@@ -0,0 +1 @@
1
+ {'files': ['button_abort.py']}
@@ -0,0 +1,54 @@
1
+ # Copyright (C) 2022 The Qt Company Ltd.
2
+ # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
3
+
4
+ from qtpy.QtDesigner import QDesignerCustomWidgetInterface
5
+
6
+ from bec_widgets.utils.bec_designer import designer_material_icon
7
+ from bec_widgets.widgets.button_abort.button_abort import AbortButton
8
+
9
+ DOM_XML = """
10
+ <ui language='c++'>
11
+ <widget class='AbortButton' name='abort_button'>
12
+ </widget>
13
+ </ui>
14
+ """
15
+
16
+
17
+ class AbortButtonPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
18
+ def __init__(self):
19
+ super().__init__()
20
+ self._form_editor = None
21
+
22
+ def createWidget(self, parent):
23
+ t = AbortButton(parent)
24
+ return t
25
+
26
+ def domXml(self):
27
+ return DOM_XML
28
+
29
+ def group(self):
30
+ return "BEC Buttons"
31
+
32
+ def icon(self):
33
+ return designer_material_icon(AbortButton.ICON_NAME)
34
+
35
+ def includeFile(self):
36
+ return "abort_button"
37
+
38
+ def initialize(self, form_editor):
39
+ self._form_editor = form_editor
40
+
41
+ def isContainer(self):
42
+ return False
43
+
44
+ def isInitialized(self):
45
+ return self._form_editor is not None
46
+
47
+ def name(self):
48
+ return "AbortButton"
49
+
50
+ def toolTip(self):
51
+ return "A button that abort the scan."
52
+
53
+ def whatsThis(self):
54
+ return self.toolTip()
@@ -0,0 +1,49 @@
1
+ from bec_qthemes import material_icon
2
+ from qtpy.QtCore import Qt
3
+ from qtpy.QtWidgets import QHBoxLayout, QPushButton, QToolButton, QWidget
4
+
5
+ from bec_widgets.qt_utils.error_popups import SafeSlot
6
+ from bec_widgets.utils.bec_widget import BECWidget
7
+
8
+
9
+ class AbortButton(BECWidget, QWidget):
10
+ """A button that abort the scan."""
11
+
12
+ ICON_NAME = "cancel"
13
+
14
+ def __init__(self, parent=None, client=None, config=None, gui_id=None, toolbar=False):
15
+ super().__init__(client=client, config=config, gui_id=gui_id)
16
+ QWidget.__init__(self, parent=parent)
17
+
18
+ self.get_bec_shortcuts()
19
+
20
+ self.layout = QHBoxLayout(self)
21
+ self.layout.setSpacing(0)
22
+ self.layout.setContentsMargins(0, 0, 0, 0)
23
+ self.layout.setAlignment(Qt.AlignmentFlag.AlignVCenter)
24
+
25
+ if toolbar:
26
+ icon = material_icon("cancel", color="#666666", filled=True)
27
+ self.button = QToolButton(icon=icon)
28
+ self.button.triggered.connect(self.abort_scan)
29
+ else:
30
+ self.button = QPushButton()
31
+ self.button.setText("Abort")
32
+ self.button.setStyleSheet(
33
+ "background-color: #666666; color: white; font-weight: bold; font-size: 12px;"
34
+ )
35
+ self.button.clicked.connect(self.abort_scan)
36
+
37
+ self.layout.addWidget(self.button)
38
+
39
+ @SafeSlot()
40
+ def abort_scan(
41
+ self,
42
+ ): # , scan_id: str | None = None): #FIXME scan_id will be added when combining with Queue widget
43
+ """
44
+ Abort the scan.
45
+
46
+ Args:
47
+ scan_id(str|None): The scan id to abort. If None, the current scan will be aborted.
48
+ """
49
+ self.queue.request_scan_abortion()
@@ -0,0 +1,15 @@
1
+ def main(): # pragma: no cover
2
+ from qtpy import PYSIDE6
3
+
4
+ if not PYSIDE6:
5
+ print("PYSIDE6 is not available in the environment. Cannot patch designer.")
6
+ return
7
+ from PySide6.QtDesigner import QPyDesignerCustomWidgetCollection
8
+
9
+ from bec_widgets.widgets.button_abort.abort_button_plugin import AbortButtonPlugin
10
+
11
+ QPyDesignerCustomWidgetCollection.addCustomWidget(AbortButtonPlugin())
12
+
13
+
14
+ if __name__ == "__main__": # pragma: no cover
15
+ main()
File without changes
@@ -0,0 +1,42 @@
1
+ from bec_qthemes import material_icon
2
+ from qtpy.QtCore import Qt
3
+ from qtpy.QtWidgets import QHBoxLayout, QPushButton, QToolButton, QWidget
4
+
5
+ from bec_widgets.qt_utils.error_popups import SafeSlot
6
+ from bec_widgets.utils.bec_widget import BECWidget
7
+
8
+
9
+ class ResetButton(BECWidget, QWidget):
10
+ """A button that reset the scan queue."""
11
+
12
+ ICON_NAME = "restart_alt"
13
+
14
+ def __init__(self, parent=None, client=None, config=None, gui_id=None, toolbar=False):
15
+ super().__init__(client=client, config=config, gui_id=gui_id)
16
+ QWidget.__init__(self, parent=parent)
17
+
18
+ self.get_bec_shortcuts()
19
+
20
+ self.layout = QHBoxLayout(self)
21
+ self.layout.setSpacing(0)
22
+ self.layout.setContentsMargins(0, 0, 0, 0)
23
+ self.layout.setAlignment(Qt.AlignmentFlag.AlignVCenter)
24
+
25
+ if toolbar:
26
+ icon = material_icon("restart_alt", color="#F19E39", filled=True)
27
+ self.button = QToolButton(icon=icon)
28
+ self.button.triggered.connect(self.reset_queue)
29
+ else:
30
+ self.button = QPushButton()
31
+ self.button.setText("Reset Queue")
32
+ self.button.setStyleSheet(
33
+ "background-color: #F19E39; color: white; font-weight: bold; font-size: 12px;"
34
+ )
35
+ self.button.clicked.connect(self.reset_queue)
36
+
37
+ self.layout.addWidget(self.button)
38
+
39
+ @SafeSlot()
40
+ def reset_queue(self):
41
+ """Stop the scan."""
42
+ self.queue.request_queue_reset()
@@ -0,0 +1,15 @@
1
+ def main(): # pragma: no cover
2
+ from qtpy import PYSIDE6
3
+
4
+ if not PYSIDE6:
5
+ print("PYSIDE6 is not available in the environment. Cannot patch designer.")
6
+ return
7
+ from PySide6.QtDesigner import QPyDesignerCustomWidgetCollection
8
+
9
+ from bec_widgets.widgets.button_reset.reset_button_plugin import ResetButtonPlugin
10
+
11
+ QPyDesignerCustomWidgetCollection.addCustomWidget(ResetButtonPlugin())
12
+
13
+
14
+ if __name__ == "__main__": # pragma: no cover
15
+ main()
@@ -0,0 +1 @@
1
+ {'files': ['button_reset.py']}
@@ -0,0 +1,54 @@
1
+ # Copyright (C) 2022 The Qt Company Ltd.
2
+ # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
3
+
4
+ from qtpy.QtDesigner import QDesignerCustomWidgetInterface
5
+
6
+ from bec_widgets.utils.bec_designer import designer_material_icon
7
+ from bec_widgets.widgets.button_reset.button_reset import ResetButton
8
+
9
+ DOM_XML = """
10
+ <ui language='c++'>
11
+ <widget class='ResetButton' name='reset_button'>
12
+ </widget>
13
+ </ui>
14
+ """
15
+
16
+
17
+ class ResetButtonPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
18
+ def __init__(self):
19
+ super().__init__()
20
+ self._form_editor = None
21
+
22
+ def createWidget(self, parent):
23
+ t = ResetButton(parent)
24
+ return t
25
+
26
+ def domXml(self):
27
+ return DOM_XML
28
+
29
+ def group(self):
30
+ return "BEC Buttons"
31
+
32
+ def icon(self):
33
+ return designer_material_icon(ResetButton.ICON_NAME)
34
+
35
+ def includeFile(self):
36
+ return "reset_button"
37
+
38
+ def initialize(self, form_editor):
39
+ self._form_editor = form_editor
40
+
41
+ def isContainer(self):
42
+ return False
43
+
44
+ def isInitialized(self):
45
+ return self._form_editor is not None
46
+
47
+ def name(self):
48
+ return "ResetButton"
49
+
50
+ def toolTip(self):
51
+ return "A button that reset the scan queue."
52
+
53
+ def whatsThis(self):
54
+ return self.toolTip()
File without changes
@@ -0,0 +1,42 @@
1
+ from bec_qthemes import material_icon
2
+ from qtpy.QtCore import Qt
3
+ from qtpy.QtWidgets import QHBoxLayout, QPushButton, QToolButton, QWidget
4
+
5
+ from bec_widgets.qt_utils.error_popups import SafeSlot
6
+ from bec_widgets.utils.bec_widget import BECWidget
7
+
8
+
9
+ class ResumeButton(BECWidget, QWidget):
10
+ """A button that continue scan queue."""
11
+
12
+ ICON_NAME = "resume"
13
+
14
+ def __init__(self, parent=None, client=None, config=None, gui_id=None, toolbar=False):
15
+ super().__init__(client=client, config=config, gui_id=gui_id)
16
+ QWidget.__init__(self, parent=parent)
17
+
18
+ self.get_bec_shortcuts()
19
+
20
+ self.layout = QHBoxLayout(self)
21
+ self.layout.setSpacing(0)
22
+ self.layout.setContentsMargins(0, 0, 0, 0)
23
+ self.layout.setAlignment(Qt.AlignmentFlag.AlignVCenter)
24
+
25
+ if toolbar:
26
+ icon = material_icon("resume", color="#2793e8", filled=True)
27
+ self.button = QToolButton(icon=icon)
28
+ self.button.triggered.connect(self.continue_scan)
29
+ else:
30
+ self.button = QPushButton()
31
+ self.button.setText("Resume")
32
+ self.button.setStyleSheet(
33
+ "background-color: #2793e8; color: white; font-weight: bold; font-size: 12px;"
34
+ )
35
+ self.button.clicked.connect(self.continue_scan)
36
+
37
+ self.layout.addWidget(self.button)
38
+
39
+ @SafeSlot()
40
+ def continue_scan(self):
41
+ """Stop the scan."""
42
+ self.queue.request_scan_continuation()
@@ -0,0 +1,15 @@
1
+ def main(): # pragma: no cover
2
+ from qtpy import PYSIDE6
3
+
4
+ if not PYSIDE6:
5
+ print("PYSIDE6 is not available in the environment. Cannot patch designer.")
6
+ return
7
+ from PySide6.QtDesigner import QPyDesignerCustomWidgetCollection
8
+
9
+ from bec_widgets.widgets.button_resume.resume_button_plugin import ResumeButtonPlugin
10
+
11
+ QPyDesignerCustomWidgetCollection.addCustomWidget(ResumeButtonPlugin())
12
+
13
+
14
+ if __name__ == "__main__": # pragma: no cover
15
+ main()
@@ -0,0 +1 @@
1
+ {'files': ['button_resume.py']}
@@ -0,0 +1,54 @@
1
+ # Copyright (C) 2022 The Qt Company Ltd.
2
+ # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
3
+
4
+ from qtpy.QtDesigner import QDesignerCustomWidgetInterface
5
+
6
+ from bec_widgets.utils.bec_designer import designer_material_icon
7
+ from bec_widgets.widgets.button_resume.button_resume import ResumeButton
8
+
9
+ DOM_XML = """
10
+ <ui language='c++'>
11
+ <widget class='ResumeButton' name='resume_button'>
12
+ </widget>
13
+ </ui>
14
+ """
15
+
16
+
17
+ class ResumeButtonPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
18
+ def __init__(self):
19
+ super().__init__()
20
+ self._form_editor = None
21
+
22
+ def createWidget(self, parent):
23
+ t = ResumeButton(parent)
24
+ return t
25
+
26
+ def domXml(self):
27
+ return DOM_XML
28
+
29
+ def group(self):
30
+ return "BEC Buttons"
31
+
32
+ def icon(self):
33
+ return designer_material_icon(ResumeButton.ICON_NAME)
34
+
35
+ def includeFile(self):
36
+ return "resume_button"
37
+
38
+ def initialize(self, form_editor):
39
+ self._form_editor = form_editor
40
+
41
+ def isContainer(self):
42
+ return False
43
+
44
+ def isInitialized(self):
45
+ return self._form_editor is not None
46
+
47
+ def name(self):
48
+ return "ResumeButton"
49
+
50
+ def toolTip(self):
51
+ return "A button that continue scan queue."
52
+
53
+ def whatsThis(self):
54
+ return self.toolTip()
@@ -1,5 +1,7 @@
1
1
  """ Module for a PositionerBox widget to control a positioner device."""
2
2
 
3
+ from __future__ import annotations
4
+
3
5
  import os
4
6
  import uuid
5
7
 
@@ -126,12 +126,43 @@ class ScanControl(BECWidget, QWidget):
126
126
  selected_scan_name = self.comboBox_scan_selection.currentText()
127
127
  self.scan_selected.emit(selected_scan_name)
128
128
 
129
+ @Property(str)
130
+ def current_scan(self):
131
+ """Returns the scan name for the currently selected scan."""
132
+ return self.comboBox_scan_selection.currentText()
133
+
134
+ @current_scan.setter
135
+ def current_scan(self, scan_name: str):
136
+ """Sets the current scan to the given scan name.
137
+
138
+ Args:
139
+ scan_name(str): Name of the scan to set as current.
140
+ """
141
+ if scan_name not in self.available_scans:
142
+ return
143
+ self.comboBox_scan_selection.setCurrentText(scan_name)
144
+
145
+ @Slot(str)
146
+ def set_current_scan(self, scan_name: str):
147
+ """Slot for setting the current scan to the given scan name.
148
+
149
+ Args:
150
+ scan_name(str): Name of the scan to set as current.
151
+ """
152
+ self.current_scan = scan_name
153
+
129
154
  @Property(bool)
130
155
  def hide_scan_control_buttons(self):
156
+ """Property to hide the scan control buttons."""
131
157
  return not self.button_run_scan.isVisible()
132
158
 
133
159
  @hide_scan_control_buttons.setter
134
160
  def hide_scan_control_buttons(self, hide: bool):
161
+ """Setter for the hide_scan_control_buttons property.
162
+
163
+ Args:
164
+ hide(bool): Hide or show the scan control buttons.
165
+ """
135
166
  self.show_scan_control_buttons(not hide)
136
167
 
137
168
  @Slot(bool)
@@ -145,10 +176,16 @@ class ScanControl(BECWidget, QWidget):
145
176
 
146
177
  @Property(bool)
147
178
  def hide_scan_selection_combobox(self):
179
+ """Property to hide the scan selection combobox."""
148
180
  return not self.comboBox_scan_selection.isVisible()
149
181
 
150
182
  @hide_scan_selection_combobox.setter
151
183
  def hide_scan_selection_combobox(self, hide: bool):
184
+ """Setter for the hide_scan_selection_combobox property.
185
+
186
+ Args:
187
+ hide(bool): Hide or show the scan selection combobox.
188
+ """
152
189
  self.show_scan_selection_combobox(not hide)
153
190
 
154
191
  @Slot(bool)
@@ -176,8 +213,7 @@ class ScanControl(BECWidget, QWidget):
176
213
 
177
214
  show_bundle_buttons = bool(self.arg_group["arg_inputs"])
178
215
 
179
- self.button_add_bundle.setVisible(show_bundle_buttons)
180
- self.button_remove_bundle.setVisible(show_bundle_buttons)
216
+ self._show_bundle_buttons(show_bundle_buttons)
181
217
 
182
218
  if show_bundle_buttons:
183
219
  self.add_arg_group(self.arg_group)
@@ -187,6 +223,29 @@ class ScanControl(BECWidget, QWidget):
187
223
  self.update()
188
224
  self.adjustSize()
189
225
 
226
+ def _show_bundle_buttons(self, show: bool):
227
+ """Shows or hides the bundle buttons based on the show argument.
228
+
229
+ Args:
230
+ show(bool): Show or hide the bundle buttons.
231
+ """
232
+ self.button_add_bundle.setVisible(show)
233
+ self.button_remove_bundle.setVisible(show)
234
+
235
+ @Property(bool)
236
+ def hide_bundle_buttons(self):
237
+ """Property to hide the bundle buttons."""
238
+ return not self.button_add_bundle.isVisible()
239
+
240
+ @hide_bundle_buttons.setter
241
+ def hide_bundle_buttons(self, hide: bool):
242
+ """Setter for the hide_bundle_buttons property.
243
+
244
+ Args:
245
+ hide(bool): Hide or show the bundle buttons.
246
+ """
247
+ self._show_bundle_buttons(not hide)
248
+
190
249
  def add_kwargs_boxes(self, groups: list):
191
250
  """
192
251
  Adds the given gui_groups to the scan control layout.
@@ -212,10 +271,12 @@ class ScanControl(BECWidget, QWidget):
212
271
 
213
272
  @Slot()
214
273
  def add_arg_bundle(self):
274
+ """Adds a new argument bundle to the scan control layout."""
215
275
  self.arg_box.add_widget_bundle()
216
276
 
217
277
  @Slot()
218
278
  def remove_arg_bundle(self):
279
+ """Removes the last argument bundle from the scan control layout."""
219
280
  self.arg_box.remove_widget_bundle()
220
281
 
221
282
  def reset_layout(self):
@@ -235,6 +296,7 @@ class ScanControl(BECWidget, QWidget):
235
296
 
236
297
  @Slot()
237
298
  def run_scan(self):
299
+ """Starts the selected scan with the given parameters."""
238
300
  self.scan_started.emit()
239
301
  args = []
240
302
  kwargs = {}
@@ -248,6 +310,7 @@ class ScanControl(BECWidget, QWidget):
248
310
  scan_function(*args, **kwargs)
249
311
 
250
312
  def cleanup(self):
313
+ """Cleanup the scan control widget."""
251
314
  self.button_stop_scan.cleanup()
252
315
  if self.arg_box:
253
316
  for widget in self.arg_box.widgets:
@@ -23,9 +23,7 @@ class StopButton(BECWidget, QWidget):
23
23
  self.layout.setAlignment(Qt.AlignmentFlag.AlignVCenter)
24
24
 
25
25
  if toolbar:
26
- icon = material_icon(
27
- "stop", size=(20, 20), color="#cc181e", filled=True, convert_to_pixmap=False
28
- )
26
+ icon = material_icon("stop", color="#cc181e", filled=True)
29
27
  self.button = QToolButton(icon=icon)
30
28
  self.button.triggered.connect(self.stop_scan)
31
29
  else:
@@ -39,6 +37,13 @@ class StopButton(BECWidget, QWidget):
39
37
  self.layout.addWidget(self.button)
40
38
 
41
39
  @SafeSlot()
42
- def stop_scan(self):
43
- """Stop the scan."""
40
+ def stop_scan(
41
+ self,
42
+ ): # , scan_id: str | None = None): #FIXME scan_id will be added when combining with Queue widget
43
+ """
44
+ Stop the scan.
45
+
46
+ Args:
47
+ scan_id(str|None): The scan id to stop. If None, the current scan will be stopped.
48
+ """
44
49
  self.queue.request_scan_halt()
@@ -31,7 +31,7 @@ class StopButtonPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
31
31
  return DOM_XML
32
32
 
33
33
  def group(self):
34
- return "BEC Utils"
34
+ return "BEC Buttons"
35
35
 
36
36
  def icon(self):
37
37
  return designer_material_icon(StopButton.ICON_NAME)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: bec_widgets
3
- Version: 0.99.10
3
+ Version: 0.99.12
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,20 +2,19 @@
2
2
  .gitlab-ci.yml,sha256=HE_stq5wl-0wE5ZetfEmaaDbectk20jX7Z2cxwsBegg,8348
3
3
  .pylintrc,sha256=eeY8YwSI74oFfq6IYIbCqnx3Vk8ZncKaatv96n_Y8Rs,18544
4
4
  .readthedocs.yaml,sha256=aSOc277LqXcsTI6lgvm_JY80lMlr69GbPKgivua2cS0,603
5
- CHANGELOG.md,sha256=8YPpCwOpu5V6FgaplOkX0H_LvOWYNXwuJyKAtAueZ1Y,6862
5
+ CHANGELOG.md,sha256=6c9TNioj6VAiLpKefbh4exckHJCVVPUQqjFqFq0F9Q0,7069
6
6
  LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
7
- PKG-INFO,sha256=JQ0kq0C_gndkxeyqnay6w3QQyYb8ShQvxfkqEH3Rd4Q,1334
7
+ PKG-INFO,sha256=meqZoR4X-i0IEv8GXcSeCQBGzHpF6CdYR9oCul-5syA,1334
8
8
  README.md,sha256=Od69x-RS85Hph0-WwWACwal4yUd67XkEn4APEfHhHFw,2649
9
- pyproject.toml,sha256=monX0rBwlphrV8Hyu2hYn4hMDQ4DIYl0-KpKCqpJfiA,2544
9
+ pyproject.toml,sha256=8epLbMmPD9IdOXkD8j_T6lAGr8Lkf_QX-6Nz1gUKzX0,2544
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/app_icons/BEC-Dark.png,sha256=TUebkoQX26eY7CIbXXVzyen5rph0loTQot7FfqWzsQs,1683654
16
+ bec_widgets/assets/app_icons/BEC-General-App.png,sha256=hc2ktly53DZAbl_rE3cb-vdRa5gtdCmBEjfwm2y5P4g,447581
17
17
  bec_widgets/assets/app_icons/bec_widgets_icon.png,sha256=K8dgGwIjalDh9PRHUsSQBqgdX7a00nM3igZdc20pkYM,1747017
18
- bec_widgets/assets/app_icons/terminal_icon.png,sha256=bJl7Tft4Fi2uxvuXI8o14uMHnI9eAWKSU2uftXCH9ws,3889
19
18
  bec_widgets/assets/status_icons/error.svg,sha256=U_-8qDHAeCH8Z9sUXoU5zSPf0RyVx-CAWK6h2gH99C4,718
20
19
  bec_widgets/assets/status_icons/not_connected.svg,sha256=wuNdFzNHuZrd_pguRi-mUw3l6uRSkb37yGFJ6kKyMQo,721
21
20
  bec_widgets/assets/status_icons/refresh.svg,sha256=Em_236ARgCdkSof-HU5EYGwv2hXPhOH0NYj2mKaIrwI,559
@@ -23,7 +22,7 @@ bec_widgets/assets/status_icons/running.svg,sha256=nlc6rKh_f-uOxQSk0BkBNyWnPAJU5
23
22
  bec_widgets/assets/status_icons/warning.svg,sha256=CNx88p9kbDG51s9ztKf-cfYan4JdDBbk3-IFKfOOFlI,364
24
23
  bec_widgets/cli/__init__.py,sha256=d0Q6Fn44e7wFfLabDOBxpcJ1DPKWlFunGYDUBmO-4hA,22
25
24
  bec_widgets/cli/auto_updates.py,sha256=DwzRChcFIWPH2kCYvp8H7dXvyYSKGYv6LwCmK2sDR2E,5676
26
- bec_widgets/cli/client.py,sha256=M0o5UVEaj7H4hpmHXNFBXuDCTrTtWmip5Lhj2bjys88,76916
25
+ bec_widgets/cli/client.py,sha256=Go09tb7lnsDSljF-7rtWu4x8x_ooL-F4WWuu_yFaTNA,78098
27
26
  bec_widgets/cli/client_utils.py,sha256=l35LtTkD7PdvVCckjMU8-y6f5a5pp1u6cFPpD-Dkvow,11713
28
27
  bec_widgets/cli/generate_cli.py,sha256=Ea5px9KblUlcGg-1JbJBTIU7laGg2n8PM7Efw9WVVzM,5889
29
28
  bec_widgets/cli/rpc_register.py,sha256=QxXUZu5XNg00Yf5O3UHWOXg3-f_pzKjjoZYMOa-MOJc,2216
@@ -31,11 +30,11 @@ bec_widgets/cli/rpc_wigdet_handler.py,sha256=6kQng2DyS6rhLJqSJ7xa0kdgSxp-35A2upc
31
30
  bec_widgets/cli/server.py,sha256=I3gZ5xwygEOnL4ga3zOoD3jRUXNjPRop4u7a0emfejs,7921
32
31
  bec_widgets/examples/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
33
32
  bec_widgets/examples/general_app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
- bec_widgets/examples/general_app/general_app.py,sha256=Ks9CKtIQIFOzKosh204zVg1ltSnp07LDqkwoVAaCd9k,3046
33
+ bec_widgets/examples/general_app/general_app.py,sha256=PoFCTuA_1yqrpgthASpYFgH7JDUZTcXAPZ5h0e3XZfc,3053
35
34
  bec_widgets/examples/general_app/general_app.ui,sha256=TsejkM3Z8znnixyqxoj4SwhIIpIzTAuGAMkGXSS1aT8,10479
36
35
  bec_widgets/examples/general_app/web_links.py,sha256=d5OgzgI9zb-NAC0pOGanOtJX3nZoe4x8QuQTw-_hK_8,434
37
36
  bec_widgets/examples/jupyter_console/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
- bec_widgets/examples/jupyter_console/jupyter_console_window.py,sha256=2PDhUevxU5YlZcoVokH5fgGdwFGIQFSN8x0DChhxoxE,6803
37
+ bec_widgets/examples/jupyter_console/jupyter_console_window.py,sha256=C1GeB-RuL7Uo2IJS8DghNsPY41FJJi60EVXVJrwz3Do,6767
39
38
  bec_widgets/examples/plugin_example_pyside/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
40
39
  bec_widgets/examples/plugin_example_pyside/main.py,sha256=zDP5wO7wb3BVsQ15HOCRT1nNmCujIVRvSXZ3Txje8L0,549
41
40
  bec_widgets/examples/plugin_example_pyside/registertictactoe.py,sha256=cVhBnP0qx5j9Jft-VeKvlTFE-bX58hbP45CX0f4r5pM,535
@@ -47,7 +46,7 @@ bec_widgets/qt_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
47
46
  bec_widgets/qt_utils/error_popups.py,sha256=y9gKKWaafp468ioHr96nBhf02ZpEgjDc-BAVOTWh-e8,7680
48
47
  bec_widgets/qt_utils/redis_message_waiter.py,sha256=fvL_QgC0cTDv_FPJdRyp5AKjf401EJU4z3r38p47ydY,1745
49
48
  bec_widgets/qt_utils/settings_dialog.py,sha256=NhtzTer_xzlB2lLLrGklkI1QYLJEWQpJoZbCz4o5daI,3645
50
- bec_widgets/qt_utils/toolbar.py,sha256=9TEthLa3ijoXl7njMyWhXvDYP2Jr9DFZNEd5D3L52X0,7806
49
+ bec_widgets/qt_utils/toolbar.py,sha256=NhpXw5An2qNefv0iQdCyDUbkanPcsQoD_8vDOGhQEOs,8494
51
50
  bec_widgets/utils/__init__.py,sha256=1930ji1Jj6dVuY81Wd2kYBhHYNV-2R0bN_L4o9zBj1U,533
52
51
  bec_widgets/utils/bec_connector.py,sha256=SivHKXVyNVqeu3kCXYEPpbleTVw8g1cW0FKq1QrQgco,9987
53
52
  bec_widgets/utils/bec_designer.py,sha256=Z3MeMju-KmTz8POtm23VQfp4rvtD2sF6eIOKQkl2F7w,4729
@@ -84,6 +83,21 @@ bec_widgets/widgets/bec_status_box/bec_status_box.pyproject,sha256=JWtx3Csfn2h7O
84
83
  bec_widgets/widgets/bec_status_box/bec_status_box_plugin.py,sha256=UmsXAmeHg7FRkzirOLBPi3LwbRbG75w8LglYt4jn6Fc,1412
85
84
  bec_widgets/widgets/bec_status_box/register_bec_status_box.py,sha256=EiQITnkNw7IU7hE776wAeXro97eZd9XlsB9essgCebE,481
86
85
  bec_widgets/widgets/bec_status_box/status_item.py,sha256=3aNaa-e64PmkBoAWfItYAmhB1EFhWRiFLzXWWz0dS_8,5317
86
+ bec_widgets/widgets/button_abort/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
87
+ bec_widgets/widgets/button_abort/abort_button.pyproject,sha256=UtuaE0Lvs6uOGufhatUyJS_n2l6EBbYaGuILj_BNCLs,30
88
+ bec_widgets/widgets/button_abort/abort_button_plugin.py,sha256=3q0a4UE2O9s96Jjg6wi03CpXdQ7CnOI20ep7etEdxMo,1285
89
+ bec_widgets/widgets/button_abort/button_abort.py,sha256=TpmxyG3GP-4RWTDJ9gSLyoD8aOYGJRzLC65fpxNSJTE,1688
90
+ bec_widgets/widgets/button_abort/register_abort_button.py,sha256=IthCqJIaCR25ELRqMssSzve_7CE8G54wDlBVY0gPSNI,475
91
+ bec_widgets/widgets/button_reset/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
92
+ bec_widgets/widgets/button_reset/button_reset.py,sha256=AnWC6i1j7yVudmX6FKGOZBNd5KKmhvl7DzDKYKxLwxg,1470
93
+ bec_widgets/widgets/button_reset/register_reset_button.py,sha256=IuCaPrqKqF9acVBL2k1St0exsb3rwQF_Y1-QciDEVjw,475
94
+ bec_widgets/widgets/button_reset/reset_button.pyproject,sha256=JC7XLsjgYzTAh6BV3KmxtT3w4ZUH91wiqIeGefnCjMk,30
95
+ bec_widgets/widgets/button_reset/reset_button_plugin.py,sha256=QW4ToNqnwh55hN6GMAId1C65vkPYRTAoPTWcXRFvWLw,1291
96
+ bec_widgets/widgets/button_resume/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
97
+ bec_widgets/widgets/button_resume/button_resume.py,sha256=MH6JqiA2GkModbS0EC0_k5cYHIVVkuY9P3hylYLYfE0,1467
98
+ bec_widgets/widgets/button_resume/register_resume_button.py,sha256=01t5Ruz7FkKt7vHUVHvRNgEKqRLbKDza3ZQxd4w0i8A,479
99
+ bec_widgets/widgets/button_resume/resume_button.pyproject,sha256=QEPSupXQtXZDfT1Y0PuCv7Fj6NhBTq1dyvRiFNkvhH8,31
100
+ bec_widgets/widgets/button_resume/resume_button_plugin.py,sha256=sqGn2I5XlsEpCjqZQBX8KNYpONJVAkBbzfFZL8OAsxI,1300
87
101
  bec_widgets/widgets/color_button/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
88
102
  bec_widgets/widgets/color_button/color_button.py,sha256=qGyZgQSFfF-IuZeEhdZv8t7hSx3YDFs22evmZejKC0Y,1229
89
103
  bec_widgets/widgets/color_button/color_button.pyproject,sha256=LUYF4VkDOB4ttVe7YfvLh64K-XZg0-xaVT06BqCT3UA,30
@@ -160,7 +174,7 @@ bec_widgets/widgets/position_indicator/position_indicator.pyproject,sha256=s0JEf
160
174
  bec_widgets/widgets/position_indicator/position_indicator_plugin.py,sha256=ehQPpwkjJ7k365i4gdwtmAmCbVmB1tvQLEo60J_ivo4,1413
161
175
  bec_widgets/widgets/position_indicator/register_position_indicator.py,sha256=OZNiMgM_80TPSAXK_0hXAkne4vUh8DGvh_OdpOiMpwI,516
162
176
  bec_widgets/widgets/positioner_box/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
163
- bec_widgets/widgets/positioner_box/positioner_box.py,sha256=BKRzfvWVjsjxb56g7FvjuMpY9Gks4DMe08sQuFAQDy4,11187
177
+ bec_widgets/widgets/positioner_box/positioner_box.py,sha256=XJFbHiPkVbqp2wS6wgwzQUjqI_Iqu3CFmyQrDl0xFSY,11223
164
178
  bec_widgets/widgets/positioner_box/positioner_box.pyproject,sha256=7966pHdDseaHciaPNEKgdQgbUThSZf5wEDCeAEJh9po,32
165
179
  bec_widgets/widgets/positioner_box/positioner_box.ui,sha256=Y-Xp0z32okT7X4-rL5r7dF_QH_QpXvPes3f778cC7_k,5633
166
180
  bec_widgets/widgets/positioner_box/positioner_box_plugin.py,sha256=kJtQgRFGkJYWbZqJ7K7o0UhdsgAlODUVZL8pKJWwMhs,1413
@@ -178,7 +192,7 @@ bec_widgets/widgets/ring_progress_bar/ring_progress_bar.pyproject,sha256=ZNYDnKD
178
192
  bec_widgets/widgets/ring_progress_bar/ring_progress_bar_plugin.py,sha256=-rw9ZSThgAH0Ubbr3X-L5x-ZqMXUGnauyFb4OmfUvD4,1394
179
193
  bec_widgets/widgets/scan_control/__init__.py,sha256=IOfHl15vxb_uC6KN62-PeUzbBha_vQyqkkXbJ2HU674,38
180
194
  bec_widgets/widgets/scan_control/register_scan_control.py,sha256=xUX2yR0-MaIMg9_y9qe50yDDphzsh2x1b5PMrF90yPM,475
181
- bec_widgets/widgets/scan_control/scan_control.py,sha256=_GRqKd_hmLAJWaXwVUx4NXtGexyETLbRWki-3LJ9QkI,9458
195
+ bec_widgets/widgets/scan_control/scan_control.py,sha256=pQkc9mPfGxOCJaJPuPUudSStuBk9lqUZovbGdY1cx7M,11587
182
196
  bec_widgets/widgets/scan_control/scan_control.pyproject,sha256=eTgVDFKToIH8_BbJjM2RvbOLr7HnYoidX0SAHx640DM,30
183
197
  bec_widgets/widgets/scan_control/scan_control_plugin.py,sha256=7GaqmaRgbwIPjVoXcyKVDl8UpfqC2weViup-YFfzUsM,1270
184
198
  bec_widgets/widgets/scan_control/scan_group_box.py,sha256=BpX9ZphqOhdEbQnGzNeNlmuZsMS__U97CkBMical2FY,9300
@@ -189,9 +203,9 @@ bec_widgets/widgets/spinner/spinner_widget.pyproject,sha256=zzLajGB3DTgVnrSqMey2
189
203
  bec_widgets/widgets/spinner/spinner_widget_plugin.py,sha256=AZYJJe40olMzqL6Edk6J-X_iNHcXrU-EQN4mCUCp_Fo,1355
190
204
  bec_widgets/widgets/stop_button/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
191
205
  bec_widgets/widgets/stop_button/register_stop_button.py,sha256=U7r3fEOH-uPhAQI-nTituHXDDXDWR4JQZ7_vD6b_dfM,471
192
- bec_widgets/widgets/stop_button/stop_button.py,sha256=GAssgEV_F6NJxmcdrQYfI2egVqYhQeMotdgnwLn9ISs,1517
206
+ bec_widgets/widgets/stop_button/stop_button.py,sha256=TiCXLisaTdHKCcsNl5yMBUsYH9zUfwbeEe3zJrGH8qQ,1686
193
207
  bec_widgets/widgets/stop_button/stop_button.pyproject,sha256=Cc_xbv-zfzNVpsdg_1QyzuTlrJaM9_BkIjes70umrx0,29
194
- bec_widgets/widgets/stop_button/stop_button_plugin.py,sha256=Si1MSJo0izUxM4Bl_cPbihOCQWr9QUjTDpA7dKV8x5Y,1363
208
+ bec_widgets/widgets/stop_button/stop_button_plugin.py,sha256=VT-WVLq89fw7PwML7JDMCF1bqfopLCZIgMA4yetl65M,1365
195
209
  bec_widgets/widgets/text_box/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
196
210
  bec_widgets/widgets/text_box/register_text_box.py,sha256=UwrmCoYjAAtJJK8BwC0P_wSb-lOlOvxPe3-Bemg_9nw,459
197
211
  bec_widgets/widgets/text_box/text_box.py,sha256=urkHtDQBSf4ws5BcpYIe5cfj-r-GXQOngcGUVYWvgRo,4297
@@ -224,8 +238,8 @@ bec_widgets/widgets/website/register_website_widget.py,sha256=LIQJpV9uqcBiPR9cEA
224
238
  bec_widgets/widgets/website/website.py,sha256=kDlqjwtx0yft1ZNRhTdHnYh_5KZHfqT_ZGPOKT4C-yI,2619
225
239
  bec_widgets/widgets/website/website_widget.pyproject,sha256=scOiV3cV1_BjbzpPzy2N8rIJL5P2qIZz8ObTJ-Uvdtg,25
226
240
  bec_widgets/widgets/website/website_widget_plugin.py,sha256=pz38_C2cZ0yvPPS02wdIPcmhFo_yiwUhflsASocAPQQ,1341
227
- bec_widgets-0.99.10.dist-info/METADATA,sha256=JQ0kq0C_gndkxeyqnay6w3QQyYb8ShQvxfkqEH3Rd4Q,1334
228
- bec_widgets-0.99.10.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
229
- bec_widgets-0.99.10.dist-info/entry_points.txt,sha256=3otEkCdDB9LZJuBLzG4pFLK5Di0CVybN_12IsZrQ-58,166
230
- bec_widgets-0.99.10.dist-info/licenses/LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
231
- bec_widgets-0.99.10.dist-info/RECORD,,
241
+ bec_widgets-0.99.12.dist-info/METADATA,sha256=meqZoR4X-i0IEv8GXcSeCQBGzHpF6CdYR9oCul-5syA,1334
242
+ bec_widgets-0.99.12.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
243
+ bec_widgets-0.99.12.dist-info/entry_points.txt,sha256=3otEkCdDB9LZJuBLzG4pFLK5Di0CVybN_12IsZrQ-58,166
244
+ bec_widgets-0.99.12.dist-info/licenses/LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
245
+ bec_widgets-0.99.12.dist-info/RECORD,,
pyproject.toml CHANGED
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "bec_widgets"
7
- version = "0.99.10"
7
+ version = "0.99.12"
8
8
  description = "BEC Widgets"
9
9
  requires-python = ">=3.10"
10
10
  classifiers = [
Binary file