bec-widgets 0.99.11__py3-none-any.whl → 0.99.13__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
@@ -1,5 +1,27 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## v0.99.13 (2024-08-30)
4
+
5
+ ### Documentation
6
+
7
+ * docs: minor updates to the widget tutorial ([`ec9c8f2`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/ec9c8f29633364c45ebd998a5411d428c1ce488d))
8
+
9
+ * docs(widget tutorial): step by step guide added ([`b32ced8`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/b32ced85fff628a9e1303a781630cdae3865238e))
10
+
11
+ ### Fix
12
+
13
+ * fix(dark mode button): fixed dark mode button state for external updates, including auto ([`a3110d9`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/a3110d98147295dcb1f9353f9aaf5461cba9232a))
14
+
15
+ ## v0.99.12 (2024-08-29)
16
+
17
+ ### Fix
18
+
19
+ * fix(toolbar): widget action added ([`2efd487`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/2efd48736cbe04e84533f7933c552ea8274e2162))
20
+
21
+ * fix(reset_button): reset button added ([`6ed1efc`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/6ed1efc6af193908f70aa37fb73157d2ca6a62f4))
22
+
23
+ * fix(abort_button): abort button added; some minor fixes ([`a568633`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/a568633c3206a8c26069d140f2d9a548bf4124b0))
24
+
3
25
  ## v0.99.11 (2024-08-29)
4
26
 
5
27
  ### Fix
@@ -137,23 +159,3 @@ If not theme is set, the init of the BECWidget base class sets the default theme
137
159
  ### Test
138
160
 
139
161
  * test(dark_mode_button): added tests for dark mode button ([`df35aab`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/df35aabff30c5d00b1c441132bd370446653741e))
140
-
141
- ## v0.98.0 (2024-08-25)
142
-
143
- ### Fix
144
-
145
- * fix(toolbar): removed hardcoded color values ([`afdf4e8`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/afdf4e8782a22566932180224fa1c924d24c810f))
146
-
147
- * fix: transitioning to material icons ([`2a82032`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/2a82032644a84e38df04e2035a6aa63f4a046360))
148
-
149
- * fix(dock_area): transitioned to MaterialIconAction ([`88a2f66`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/88a2f667588e9aeb34ae556fa327898824052bc3))
150
-
151
- * fix: fix color palette if qtheme was not called ([`3f3b207`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/3f3b207295ebd406ebaeecee465c774965161b8b))
152
-
153
- * fix(figure): removed theme from figure init ([`e42b84c`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/e42b84c63650297d67feffccc02a2c2ba111ca79))
154
-
155
- * fix: use globally set theme instead of the internal bec widgets theme ([`77c5aa7`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/77c5aa741cf1f5b969a42aa878aa2965176dbf41))
156
-
157
- ### Refactor
158
-
159
- * refactor(waveform): use set theme for demo ([`44cfda1`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/44cfda1c07306669c9a4e09706d95e6b91dee370))
PKG-INFO CHANGED
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: bec_widgets
3
- Version: 0.99.11
3
+ Version: 0.99.13
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,7 @@ class Widgets(str, enum.Enum):
27
28
  DeviceLineEdit = "DeviceLineEdit"
28
29
  PositionerBox = "PositionerBox"
29
30
  PositionerControlLine = "PositionerControlLine"
31
+ ResetButton = "ResetButton"
30
32
  ResumeButton = "ResumeButton"
31
33
  RingProgressBar = "RingProgressBar"
32
34
  ScanControl = "ScanControl"
@@ -36,6 +38,24 @@ class Widgets(str, enum.Enum):
36
38
  WebsiteWidget = "WebsiteWidget"
37
39
 
38
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
+
39
59
  class BECCurve(RPCBase):
40
60
  @rpc_call
41
61
  def remove(self):
@@ -2374,7 +2394,7 @@ class DeviceLineEdit(RPCBase):
2374
2394
 
2375
2395
  class PositionerBox(RPCBase):
2376
2396
  @rpc_call
2377
- def set_positioner(self, positioner: str):
2397
+ def set_positioner(self, positioner: "str | Positioner"):
2378
2398
  """
2379
2399
  Set the device
2380
2400
 
@@ -2385,7 +2405,7 @@ class PositionerBox(RPCBase):
2385
2405
 
2386
2406
  class PositionerControlLine(RPCBase):
2387
2407
  @rpc_call
2388
- def set_positioner(self, positioner: str):
2408
+ def set_positioner(self, positioner: "str | Positioner"):
2389
2409
  """
2390
2410
  Set the device
2391
2411
 
@@ -2394,6 +2414,24 @@ class PositionerControlLine(RPCBase):
2394
2414
  """
2395
2415
 
2396
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
+
2397
2435
  class ResumeButton(RPCBase):
2398
2436
  @property
2399
2437
  @rpc_call
@@ -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.
@@ -8,7 +8,7 @@ import pyqtgraph as pg
8
8
  from bec_qthemes._os_appearance.listener import OSThemeSwitchListener
9
9
  from pydantic_core import PydanticCustomError
10
10
  from qtpy.QtGui import QColor
11
- from qtpy.QtWidgets import QApplication
11
+ from qtpy.QtWidgets import QApplication, QPushButton, QToolButton
12
12
 
13
13
 
14
14
  def get_theme_palette():
@@ -56,6 +56,17 @@ def apply_theme(theme: Literal["dark", "light"]):
56
56
  for pg_widget in children:
57
57
  pg_widget.setBackground("k" if theme == "dark" else "w")
58
58
 
59
+ dark_mode_buttons = [
60
+ button
61
+ for button in app.topLevelWidgets()
62
+ if hasattr(button, "dark_mode_enabled")
63
+ and hasattr(button, "mode_button")
64
+ and isinstance(button.mode_button, (QPushButton, QToolButton))
65
+ ]
66
+
67
+ for button in dark_mode_buttons:
68
+ button.dark_mode_enabled = theme == "dark"
69
+ button.update_mode_button()
59
70
  # now define stylesheet according to theme and apply it
60
71
  style = bec_qthemes.load_stylesheet(theme)
61
72
  app.setStyleSheet(style)
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()
@@ -30,7 +30,7 @@ class ResumeButton(BECWidget, QWidget):
30
30
  self.button = QPushButton()
31
31
  self.button.setText("Resume")
32
32
  self.button.setStyleSheet(
33
- "background-color: #2793e8 color: white; font-weight: bold; font-size: 12px;"
33
+ "background-color: #2793e8; color: white; font-weight: bold; font-size: 12px;"
34
34
  )
35
35
  self.button.clicked.connect(self.continue_scan)
36
36
 
@@ -1,6 +1,6 @@
1
1
  from bec_qthemes import material_icon
2
2
  from qtpy.QtCore import Property, Qt, Slot
3
- from qtpy.QtWidgets import QHBoxLayout, QPushButton, QToolButton, QWidget
3
+ from qtpy.QtWidgets import QApplication, QHBoxLayout, QPushButton, QToolButton, QWidget
4
4
 
5
5
  from bec_widgets.utils.bec_widget import BECWidget
6
6
  from bec_widgets.utils.colors import set_theme
@@ -27,17 +27,31 @@ class DarkModeButton(BECWidget, QWidget):
27
27
  self.layout.setContentsMargins(0, 0, 0, 0)
28
28
  self.layout.setAlignment(Qt.AlignmentFlag.AlignVCenter)
29
29
 
30
- icon = material_icon("dark_mode", size=(20, 20), convert_to_pixmap=False)
31
30
  if toolbar:
32
- self.mode_button = QToolButton(icon=icon)
31
+ self.mode_button = QToolButton()
33
32
  else:
34
- self.mode_button = QPushButton(icon=icon)
33
+ self.mode_button = QPushButton()
34
+
35
+ self.dark_mode_enabled = self._get_qapp_dark_mode_state()
35
36
  self.update_mode_button()
36
37
  self.mode_button.clicked.connect(self.toggle_dark_mode)
37
38
  self.layout.addWidget(self.mode_button)
38
39
  self.setLayout(self.layout)
39
40
  self.setFixedSize(40, 40)
40
41
 
42
+ def _get_qapp_dark_mode_state(self) -> bool:
43
+ """
44
+ Get the dark mode state from the QApplication.
45
+
46
+ Returns:
47
+ bool: True if dark mode is enabled, False otherwise.
48
+ """
49
+ qapp = QApplication.instance()
50
+ if hasattr(qapp, "theme") and qapp.theme["theme"] == "dark":
51
+ return True
52
+
53
+ return False
54
+
41
55
  @Property(bool)
42
56
  def dark_mode_enabled(self) -> bool:
43
57
  """
@@ -72,8 +86,10 @@ class DarkModeButton(BECWidget, QWidget):
72
86
  if __name__ == "__main__":
73
87
  from qtpy.QtWidgets import QApplication
74
88
 
75
- app = QApplication([])
89
+ from bec_widgets.utils.colors import set_theme
76
90
 
91
+ app = QApplication([])
92
+ set_theme("auto")
77
93
  w = DarkModeButton()
78
94
  w.show()
79
95
 
@@ -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
 
@@ -37,6 +37,13 @@ class StopButton(BECWidget, QWidget):
37
37
  self.layout.addWidget(self.button)
38
38
 
39
39
  @SafeSlot()
40
- def stop_scan(self):
41
- """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
+ """
42
49
  self.queue.request_scan_halt()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: bec_widgets
3
- Version: 0.99.11
3
+ Version: 0.99.13
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=HE_stq5wl-0wE5ZetfEmaaDbectk20jX7Z2cxwsBegg,8348
3
3
  .pylintrc,sha256=eeY8YwSI74oFfq6IYIbCqnx3Vk8ZncKaatv96n_Y8Rs,18544
4
4
  .readthedocs.yaml,sha256=aSOc277LqXcsTI6lgvm_JY80lMlr69GbPKgivua2cS0,603
5
- CHANGELOG.md,sha256=uyj1HPysG1Q9y_0ZT9PodLmfxEjuNl-brZ7U95b_F9o,6914
5
+ CHANGELOG.md,sha256=INE_XxIw2paIS1rKnad9YIxTW6Ik-jAUMx7gWFYN2yo,6819
6
6
  LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
7
- PKG-INFO,sha256=SBL-QnIL_1I0tFldH4lQW2WrkOJFIDjqkmufk5UMfSg,1334
7
+ PKG-INFO,sha256=wJQzigYAwf7RY6soP0JaYqw7ytnmwdxdn95c_8r_EUg,1334
8
8
  README.md,sha256=Od69x-RS85Hph0-WwWACwal4yUd67XkEn4APEfHhHFw,2649
9
- pyproject.toml,sha256=Rp3ub_LI2ufrx1gdNOh_v_pIDJcjrKRCB2ZQaC35q34,2544
9
+ pyproject.toml,sha256=2cFWlhLsnZBTnLgOqX1LktBeto948IZF_s-XGJgYFhQ,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
@@ -22,7 +22,7 @@ bec_widgets/assets/status_icons/running.svg,sha256=nlc6rKh_f-uOxQSk0BkBNyWnPAJU5
22
22
  bec_widgets/assets/status_icons/warning.svg,sha256=CNx88p9kbDG51s9ztKf-cfYan4JdDBbk3-IFKfOOFlI,364
23
23
  bec_widgets/cli/__init__.py,sha256=d0Q6Fn44e7wFfLabDOBxpcJ1DPKWlFunGYDUBmO-4hA,22
24
24
  bec_widgets/cli/auto_updates.py,sha256=DwzRChcFIWPH2kCYvp8H7dXvyYSKGYv6LwCmK2sDR2E,5676
25
- bec_widgets/cli/client.py,sha256=q62GTZ2uyBj_FBCceBEcnpHN2Gt-r8GJehMGmVpJHD4,77302
25
+ bec_widgets/cli/client.py,sha256=Go09tb7lnsDSljF-7rtWu4x8x_ooL-F4WWuu_yFaTNA,78098
26
26
  bec_widgets/cli/client_utils.py,sha256=l35LtTkD7PdvVCckjMU8-y6f5a5pp1u6cFPpD-Dkvow,11713
27
27
  bec_widgets/cli/generate_cli.py,sha256=Ea5px9KblUlcGg-1JbJBTIU7laGg2n8PM7Efw9WVVzM,5889
28
28
  bec_widgets/cli/rpc_register.py,sha256=QxXUZu5XNg00Yf5O3UHWOXg3-f_pzKjjoZYMOa-MOJc,2216
@@ -46,14 +46,14 @@ bec_widgets/qt_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
46
46
  bec_widgets/qt_utils/error_popups.py,sha256=y9gKKWaafp468ioHr96nBhf02ZpEgjDc-BAVOTWh-e8,7680
47
47
  bec_widgets/qt_utils/redis_message_waiter.py,sha256=fvL_QgC0cTDv_FPJdRyp5AKjf401EJU4z3r38p47ydY,1745
48
48
  bec_widgets/qt_utils/settings_dialog.py,sha256=NhtzTer_xzlB2lLLrGklkI1QYLJEWQpJoZbCz4o5daI,3645
49
- bec_widgets/qt_utils/toolbar.py,sha256=9TEthLa3ijoXl7njMyWhXvDYP2Jr9DFZNEd5D3L52X0,7806
49
+ bec_widgets/qt_utils/toolbar.py,sha256=NhpXw5An2qNefv0iQdCyDUbkanPcsQoD_8vDOGhQEOs,8494
50
50
  bec_widgets/utils/__init__.py,sha256=1930ji1Jj6dVuY81Wd2kYBhHYNV-2R0bN_L4o9zBj1U,533
51
51
  bec_widgets/utils/bec_connector.py,sha256=SivHKXVyNVqeu3kCXYEPpbleTVw8g1cW0FKq1QrQgco,9987
52
52
  bec_widgets/utils/bec_designer.py,sha256=Z3MeMju-KmTz8POtm23VQfp4rvtD2sF6eIOKQkl2F7w,4729
53
53
  bec_widgets/utils/bec_dispatcher.py,sha256=NkObWO_gRO9Uobz-fy0gVTZqQsbFRaKj6fbjYZoErFI,6400
54
54
  bec_widgets/utils/bec_table.py,sha256=nA2b8ukSeUfquFMAxGrUVOqdrzMoDYD6O_4EYbOG2zk,717
55
55
  bec_widgets/utils/bec_widget.py,sha256=vMJy-mR0kmcGaI5u1WytEuIoTJfMEcgepxIpv8yVmHY,1113
56
- bec_widgets/utils/colors.py,sha256=XB4s7zpzoqR_2dGOue-xKjRl8MLpZn7c2k1NJSbYC0Y,11921
56
+ bec_widgets/utils/colors.py,sha256=bdURzbrIv7UWXTlaj1wJYq2JmI_gw1pi6LVYqijbLKA,12325
57
57
  bec_widgets/utils/container_utils.py,sha256=0wr3ZfuMiAFKCrQHVjxjw-Vuk8wsHdridqcjy2eY840,1531
58
58
  bec_widgets/utils/crosshair.py,sha256=8lik9k69WI2WMj5FGLbrKtny9duxqXUJAhpX8tHoyp0,11543
59
59
  bec_widgets/utils/entry_validator.py,sha256=3skJIsUwTYicT76AMHm_M78RiWtUgyD2zb-Rxo2HdHQ,1313
@@ -83,8 +83,18 @@ bec_widgets/widgets/bec_status_box/bec_status_box.pyproject,sha256=JWtx3Csfn2h7O
83
83
  bec_widgets/widgets/bec_status_box/bec_status_box_plugin.py,sha256=UmsXAmeHg7FRkzirOLBPi3LwbRbG75w8LglYt4jn6Fc,1412
84
84
  bec_widgets/widgets/bec_status_box/register_bec_status_box.py,sha256=EiQITnkNw7IU7hE776wAeXro97eZd9XlsB9essgCebE,481
85
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
86
96
  bec_widgets/widgets/button_resume/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
87
- bec_widgets/widgets/button_resume/button_resume.py,sha256=thEDTYmIolLd-WDki15i9i_qxsN7-tKTK2gRxTY6hYg,1466
97
+ bec_widgets/widgets/button_resume/button_resume.py,sha256=MH6JqiA2GkModbS0EC0_k5cYHIVVkuY9P3hylYLYfE0,1467
88
98
  bec_widgets/widgets/button_resume/register_resume_button.py,sha256=01t5Ruz7FkKt7vHUVHvRNgEKqRLbKDza3ZQxd4w0i8A,479
89
99
  bec_widgets/widgets/button_resume/resume_button.pyproject,sha256=QEPSupXQtXZDfT1Y0PuCv7Fj6NhBTq1dyvRiFNkvhH8,31
90
100
  bec_widgets/widgets/button_resume/resume_button_plugin.py,sha256=sqGn2I5XlsEpCjqZQBX8KNYpONJVAkBbzfFZL8OAsxI,1300
@@ -100,7 +110,7 @@ bec_widgets/widgets/colormap_selector/colormap_selector_plugin.py,sha256=c5Kk4do
100
110
  bec_widgets/widgets/colormap_selector/register_colormap_selector.py,sha256=bfw7RWmTmMLTLxGT-izSwcGtxGLKvL3jdivJw2z8oN4,512
101
111
  bec_widgets/widgets/console/console.py,sha256=NG0cBuqqPX4hC-sHhk_UEkT-nHhhN9Y7karJITPLzyo,17864
102
112
  bec_widgets/widgets/dark_mode_button/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
103
- bec_widgets/widgets/dark_mode_button/dark_mode_button.py,sha256=SOixqA9ylbpAgH1ZQnhoA_lO1P4WlN36brcWldkyAuc,2509
113
+ bec_widgets/widgets/dark_mode_button/dark_mode_button.py,sha256=2mjLC6FiICy_xucxLlvwZPGinJoJYYDqdCbsAj1qtLs,2929
104
114
  bec_widgets/widgets/dark_mode_button/dark_mode_button.pyproject,sha256=Lbi9zb6HNlIq14k6hlzR-oz6PIFShBuF7QxE6d87d64,34
105
115
  bec_widgets/widgets/dark_mode_button/dark_mode_button_plugin.py,sha256=RJWeBEqR9BueUxUSuPcU-AmnzfIzt3j4jtsIacp-2Ug,1335
106
116
  bec_widgets/widgets/dark_mode_button/register_dark_mode_button.py,sha256=_4Fw6j1KLuluko8X2B7zf_DT5eA07G0CqR-aRMAn0iA,489
@@ -164,7 +174,7 @@ bec_widgets/widgets/position_indicator/position_indicator.pyproject,sha256=s0JEf
164
174
  bec_widgets/widgets/position_indicator/position_indicator_plugin.py,sha256=ehQPpwkjJ7k365i4gdwtmAmCbVmB1tvQLEo60J_ivo4,1413
165
175
  bec_widgets/widgets/position_indicator/register_position_indicator.py,sha256=OZNiMgM_80TPSAXK_0hXAkne4vUh8DGvh_OdpOiMpwI,516
166
176
  bec_widgets/widgets/positioner_box/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
167
- bec_widgets/widgets/positioner_box/positioner_box.py,sha256=BKRzfvWVjsjxb56g7FvjuMpY9Gks4DMe08sQuFAQDy4,11187
177
+ bec_widgets/widgets/positioner_box/positioner_box.py,sha256=XJFbHiPkVbqp2wS6wgwzQUjqI_Iqu3CFmyQrDl0xFSY,11223
168
178
  bec_widgets/widgets/positioner_box/positioner_box.pyproject,sha256=7966pHdDseaHciaPNEKgdQgbUThSZf5wEDCeAEJh9po,32
169
179
  bec_widgets/widgets/positioner_box/positioner_box.ui,sha256=Y-Xp0z32okT7X4-rL5r7dF_QH_QpXvPes3f778cC7_k,5633
170
180
  bec_widgets/widgets/positioner_box/positioner_box_plugin.py,sha256=kJtQgRFGkJYWbZqJ7K7o0UhdsgAlODUVZL8pKJWwMhs,1413
@@ -193,7 +203,7 @@ bec_widgets/widgets/spinner/spinner_widget.pyproject,sha256=zzLajGB3DTgVnrSqMey2
193
203
  bec_widgets/widgets/spinner/spinner_widget_plugin.py,sha256=AZYJJe40olMzqL6Edk6J-X_iNHcXrU-EQN4mCUCp_Fo,1355
194
204
  bec_widgets/widgets/stop_button/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
195
205
  bec_widgets/widgets/stop_button/register_stop_button.py,sha256=U7r3fEOH-uPhAQI-nTituHXDDXDWR4JQZ7_vD6b_dfM,471
196
- bec_widgets/widgets/stop_button/stop_button.py,sha256=-GLdO_pC2i4Jt5CcXgua0EGGrZRaFhsCT2zZSPI1H4c,1447
206
+ bec_widgets/widgets/stop_button/stop_button.py,sha256=TiCXLisaTdHKCcsNl5yMBUsYH9zUfwbeEe3zJrGH8qQ,1686
197
207
  bec_widgets/widgets/stop_button/stop_button.pyproject,sha256=Cc_xbv-zfzNVpsdg_1QyzuTlrJaM9_BkIjes70umrx0,29
198
208
  bec_widgets/widgets/stop_button/stop_button_plugin.py,sha256=VT-WVLq89fw7PwML7JDMCF1bqfopLCZIgMA4yetl65M,1365
199
209
  bec_widgets/widgets/text_box/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -228,8 +238,8 @@ bec_widgets/widgets/website/register_website_widget.py,sha256=LIQJpV9uqcBiPR9cEA
228
238
  bec_widgets/widgets/website/website.py,sha256=kDlqjwtx0yft1ZNRhTdHnYh_5KZHfqT_ZGPOKT4C-yI,2619
229
239
  bec_widgets/widgets/website/website_widget.pyproject,sha256=scOiV3cV1_BjbzpPzy2N8rIJL5P2qIZz8ObTJ-Uvdtg,25
230
240
  bec_widgets/widgets/website/website_widget_plugin.py,sha256=pz38_C2cZ0yvPPS02wdIPcmhFo_yiwUhflsASocAPQQ,1341
231
- bec_widgets-0.99.11.dist-info/METADATA,sha256=SBL-QnIL_1I0tFldH4lQW2WrkOJFIDjqkmufk5UMfSg,1334
232
- bec_widgets-0.99.11.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
233
- bec_widgets-0.99.11.dist-info/entry_points.txt,sha256=3otEkCdDB9LZJuBLzG4pFLK5Di0CVybN_12IsZrQ-58,166
234
- bec_widgets-0.99.11.dist-info/licenses/LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
235
- bec_widgets-0.99.11.dist-info/RECORD,,
241
+ bec_widgets-0.99.13.dist-info/METADATA,sha256=wJQzigYAwf7RY6soP0JaYqw7ytnmwdxdn95c_8r_EUg,1334
242
+ bec_widgets-0.99.13.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
243
+ bec_widgets-0.99.13.dist-info/entry_points.txt,sha256=3otEkCdDB9LZJuBLzG4pFLK5Di0CVybN_12IsZrQ-58,166
244
+ bec_widgets-0.99.13.dist-info/licenses/LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
245
+ bec_widgets-0.99.13.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.11"
7
+ version = "0.99.13"
8
8
  description = "BEC Widgets"
9
9
  requires-python = ">=3.10"
10
10
  classifiers = [