bec-widgets 0.88.0__py3-none-any.whl → 0.88.1__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 (29) hide show
  1. CHANGELOG.md +14 -8
  2. PKG-INFO +1 -1
  3. bec_widgets/assets/designer_icons/motor_map.png +0 -0
  4. bec_widgets/cli/client.py +13 -0
  5. bec_widgets/qt_utils/toolbar.py +74 -2
  6. bec_widgets/widgets/figure/plots/plot_base.py +13 -0
  7. bec_widgets/widgets/motor_map/bec_motor_map_widget_plugin.py +4 -2
  8. bec_widgets/widgets/motor_map/motor_map_widget.py +11 -12
  9. bec_widgets/widgets/waveform/waveform_widget.py +24 -16
  10. {bec_widgets-0.88.0.dist-info → bec_widgets-0.88.1.dist-info}/METADATA +1 -1
  11. {bec_widgets-0.88.0.dist-info → bec_widgets-0.88.1.dist-info}/RECORD +25 -28
  12. docs/conf.py +1 -1
  13. pyproject.toml +1 -1
  14. bec_widgets/widgets/motor_map/assets/motor_map.png +0 -0
  15. bec_widgets/widgets/motor_map/assets/settings.svg +0 -4
  16. bec_widgets/widgets/motor_map/motor_map_dialog/motor_map_toolbar.py +0 -59
  17. bec_widgets/widgets/waveform/waveform_toolbar/waveform_toolbar.py +0 -117
  18. /bec_widgets/{widgets/motor_map/assets → assets/toolbar_icons}/connection.svg +0 -0
  19. /bec_widgets/{widgets/motor_map/assets → assets/toolbar_icons}/history.svg +0 -0
  20. /bec_widgets/widgets/waveform/{waveform_toolbar → waveform_popups}/__init__.py +0 -0
  21. /bec_widgets/widgets/waveform/{waveform_toolbar → waveform_popups}/curve_dialog/__init__.py +0 -0
  22. /bec_widgets/widgets/waveform/{waveform_toolbar → waveform_popups}/curve_dialog/curve_dialog.py +0 -0
  23. /bec_widgets/widgets/waveform/{waveform_toolbar → waveform_popups}/curve_dialog/curve_dialog.ui +0 -0
  24. /bec_widgets/widgets/waveform/{waveform_toolbar → waveform_popups}/dap_summary_dialog/__init__.py +0 -0
  25. /bec_widgets/widgets/waveform/{waveform_toolbar → waveform_popups}/dap_summary_dialog/dap_summary.ui +0 -0
  26. /bec_widgets/widgets/waveform/{waveform_toolbar → waveform_popups}/dap_summary_dialog/dap_summary_dialog.py +0 -0
  27. {bec_widgets-0.88.0.dist-info → bec_widgets-0.88.1.dist-info}/WHEEL +0 -0
  28. {bec_widgets-0.88.0.dist-info → bec_widgets-0.88.1.dist-info}/entry_points.txt +0 -0
  29. {bec_widgets-0.88.0.dist-info → bec_widgets-0.88.1.dist-info}/licenses/LICENSE +0 -0
CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## v0.88.1 (2024-07-22)
4
+
5
+ ### Documentation
6
+
7
+ * docs: readthedocs icon path fixed ([`2bcaa42`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/2bcaa4256d6daaefacb3ead8c72458d7b1498e29))
8
+
9
+ ### Fix
10
+
11
+ * fix(plot_base): set_xy autorange moved to plotbase from waveform ([`a3dff7d`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/a3dff7decc16115c12dc6b4ef1572552368da309))
12
+
13
+ ### Refactor
14
+
15
+ * refactor(toolbar): generalizations of the ToolBarAction ([`ad112d1`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/ad112d1f08157f6987edd48a0bacf9f669ef1997))
16
+
3
17
  ## v0.88.0 (2024-07-19)
4
18
 
5
19
  ### Feature
@@ -112,8 +126,6 @@ Handles closeEvent() and RPC registering/unregistering ([`c7feb69`](https://gitl
112
126
 
113
127
  * feat(waveform): async readback update implemented for async devices ([`0c6a9f2`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/0c6a9f2310df31ddcd68050a17cfbf52c3e2e226))
114
128
 
115
- * feat(waveform): data are taken directly from ScanItem which is defined from scan_status endpoint; scan update is triggered from scan_segment; plots can be added just specifying y_name -> best effort for setting x reported device ([`b8717f1`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/b8717f13276734dd655ab03cd6005985ad5af9fb))
116
-
117
129
  ### Fix
118
130
 
119
131
  * fix(waveform): timestamp are not converted to human readable format ([`e495fd3`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/e495fd30c4c16474689943c7263e3060cb09ffb4))
@@ -124,12 +136,6 @@ Handles closeEvent() and RPC registering/unregistering ([`c7feb69`](https://gitl
124
136
 
125
137
  * fix(waveform): dap leaked RID for all daps in current process; dap RID is now f"{scan_id}-{gui_id}" to distinguish for each plot instance ([`d23fd8b`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/d23fd8bd074ede6e14eb8e85e025cbced4bd45ef))
126
138
 
127
- * fix(waveform): only one type of x axis allowed; x mode validated ([`9d6ae87`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/9d6ae87d0f03ca227570fcca8af2d8190828d271))
128
-
129
- * fix(waveform): data for axis are taken by separate method; validation consolidated ([`fc5a8bd`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/fc5a8bdd8b260f5e9b59ec71a4610c57442e43fe))
130
-
131
- * fix(bec_dispatcher): connect_slot can accept kwargs ([`0aa317a`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/0aa317aae58d3612d46f05b85f8b0db3d12bbe14))
132
-
133
139
  ### Refactor
134
140
 
135
141
  * refactor(waveform): plot can be prompted without specifying kwargs ([`48911e9`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/48911e934815923c94edb5ced6042058a11a97f5))
PKG-INFO CHANGED
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: bec_widgets
3
- Version: 0.88.0
3
+ Version: 0.88.1
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
@@ -2057,6 +2057,19 @@ class BECWaveformWidget(RPCBase):
2057
2057
  legend_label_size(int): Size of the legend labels.
2058
2058
  """
2059
2059
 
2060
+ @rpc_call
2061
+ def set_auto_range(self, enabled: "bool", axis: "str" = "xy"):
2062
+ """
2063
+ Set the auto range of the plot widget.
2064
+
2065
+ Args:
2066
+ enabled(bool): If True, enable the auto range.
2067
+ axis(str, optional): The axis to enable the auto range.
2068
+ - "xy": Enable auto range for both x and y axis.
2069
+ - "x": Enable auto range for x axis.
2070
+ - "y": Enable auto range for y axis.
2071
+ """
2072
+
2060
2073
  @rpc_call
2061
2074
  def set_grid(self, x_grid: "bool", y_grid: "bool"):
2062
2075
  """
@@ -1,12 +1,35 @@
1
+ # pylint: disable=no-name-in-module
2
+ import os
1
3
  from abc import ABC, abstractmethod
2
4
  from collections import defaultdict
3
5
 
4
- # pylint: disable=no-name-in-module
5
6
  from qtpy.QtCore import QSize
6
- from qtpy.QtWidgets import QToolBar, QToolButton, QWidget
7
+ from qtpy.QtGui import QAction, QIcon
8
+ from qtpy.QtWidgets import QHBoxLayout, QLabel, QToolBar, QToolButton, QWidget
9
+
10
+ import bec_widgets
11
+
12
+ MODULE_PATH = os.path.dirname(bec_widgets.__file__)
7
13
 
8
14
 
9
15
  class ToolBarAction(ABC):
16
+ """
17
+ Abstract base class for toolbar actions.
18
+
19
+ Args:
20
+ icon_path (str, optional): The name of the icon file from `assets/toolbar_icons`. Defaults to None.
21
+ tooltip (bool, optional): The tooltip for the action. Defaults to None.
22
+ checkable (bool, optional): Whether the action is checkable. Defaults to False.
23
+ """
24
+
25
+ def __init__(self, icon_path: str = None, tooltip: str = None, checkable: bool = False):
26
+ self.icon_path = (
27
+ os.path.join(MODULE_PATH, "assets", "toolbar_icons", icon_path) if icon_path else None
28
+ )
29
+ self.tooltip = tooltip
30
+ self.checkable = checkable
31
+ self.action = None
32
+
10
33
  @abstractmethod
11
34
  def add_to_toolbar(self, toolbar: QToolBar, target: QWidget):
12
35
  """Adds an action or widget to a toolbar.
@@ -26,6 +49,55 @@ class SeparatorAction(ToolBarAction):
26
49
  toolbar.addWidget(self.separator)
27
50
 
28
51
 
52
+ class IconAction(ToolBarAction):
53
+ """
54
+ Action with an icon for the toolbar.
55
+
56
+ Args:
57
+ icon_path (str): The path to the icon file.
58
+ tooltip (str): The tooltip for the action.
59
+ checkable (bool, optional): Whether the action is checkable. Defaults to False.
60
+ """
61
+
62
+ def __init__(self, icon_path: str = None, tooltip: str = None, checkable: bool = False):
63
+ super().__init__(icon_path, tooltip, checkable)
64
+
65
+ def add_to_toolbar(self, toolbar: QToolBar, target: QWidget):
66
+ icon = QIcon()
67
+ icon.addFile(self.icon_path, size=QSize(20, 20))
68
+ self.action = QAction(icon, self.tooltip, target)
69
+ self.action.setCheckable(self.checkable)
70
+ toolbar.addAction(self.action)
71
+
72
+
73
+ class DeviceSelectionAction(ToolBarAction):
74
+ """
75
+ Action for selecting a device in a combobox.
76
+
77
+ Args:
78
+ label (str): The label for the combobox.
79
+ device_combobox (DeviceComboBox): The combobox for selecting the device.
80
+
81
+ """
82
+
83
+ def __init__(self, label: str, device_combobox):
84
+ super().__init__()
85
+ self.label = label
86
+ self.device_combobox = device_combobox
87
+ self.device_combobox.currentIndexChanged.connect(lambda: self.set_combobox_style("#ffa700"))
88
+
89
+ def add_to_toolbar(self, toolbar, target):
90
+ widget = QWidget()
91
+ layout = QHBoxLayout(widget)
92
+ label = QLabel(f"{self.label}")
93
+ layout.addWidget(label)
94
+ layout.addWidget(self.device_combobox)
95
+ toolbar.addWidget(widget)
96
+
97
+ def set_combobox_style(self, color: str):
98
+ self.device_combobox.setStyleSheet(f"QComboBox {{ background-color: {color}; }}")
99
+
100
+
29
101
  class ModularToolBar(QToolBar):
30
102
  """Modular toolbar with optional automatic initialization.
31
103
  Args:
@@ -291,6 +291,19 @@ class BECPlotBase(BECConnector, pg.GraphicsLayout):
291
291
  """
292
292
  self.plot_item.setAspectLocked(lock)
293
293
 
294
+ def set_auto_range(self, enabled: bool, axis: str = "xy"):
295
+ """
296
+ Set the auto range of the plot widget.
297
+
298
+ Args:
299
+ enabled(bool): If True, enable the auto range.
300
+ axis(str, optional): The axis to enable the auto range.
301
+ - "xy": Enable auto range for both x and y axis.
302
+ - "x": Enable auto range for x axis.
303
+ - "y": Enable auto range for y axis.
304
+ """
305
+ self.plot_item.enableAutoRange(axis, enabled)
306
+
294
307
  def export(self):
295
308
  """Show the Export Dialog of the plot widget."""
296
309
  scene = self.plot_item.scene()
@@ -3,6 +3,7 @@ import os
3
3
  from qtpy.QtDesigner import QDesignerCustomWidgetInterface
4
4
  from qtpy.QtGui import QIcon
5
5
 
6
+ import bec_widgets
6
7
  from bec_widgets.widgets.motor_map.motor_map_widget import BECMotorMapWidget
7
8
 
8
9
  DOM_XML = """
@@ -12,6 +13,8 @@ DOM_XML = """
12
13
  </ui>
13
14
  """
14
15
 
16
+ MODULE_PATH = os.path.dirname(bec_widgets.__file__)
17
+
15
18
 
16
19
  class BECMotorMapWidgetPlugin(QDesignerCustomWidgetInterface): # pragma: no cover
17
20
  def __init__(self):
@@ -29,8 +32,7 @@ class BECMotorMapWidgetPlugin(QDesignerCustomWidgetInterface): # pragma: no cov
29
32
  return "BEC Plots"
30
33
 
31
34
  def icon(self):
32
- current_path = os.path.dirname(__file__)
33
- icon_path = os.path.join(current_path, "assets", "motor_map.png")
35
+ icon_path = os.path.join(MODULE_PATH, "assets", "designer_icons", "motor_map.png")
34
36
  return QIcon(icon_path)
35
37
 
36
38
  def includeFile(self):
@@ -5,17 +5,12 @@ import sys
5
5
  from qtpy.QtWidgets import QVBoxLayout, QWidget
6
6
 
7
7
  from bec_widgets.qt_utils.settings_dialog import SettingsDialog
8
- from bec_widgets.qt_utils.toolbar import ModularToolBar
8
+ from bec_widgets.qt_utils.toolbar import DeviceSelectionAction, IconAction, ModularToolBar
9
9
  from bec_widgets.utils.bec_widget import BECWidget
10
+ from bec_widgets.widgets.device_combobox.device_combobox import DeviceComboBox
10
11
  from bec_widgets.widgets.figure import BECFigure
11
12
  from bec_widgets.widgets.figure.plots.motor_map.motor_map import MotorMapConfig
12
13
  from bec_widgets.widgets.motor_map.motor_map_dialog.motor_map_settings import MotorMapSettings
13
- from bec_widgets.widgets.motor_map.motor_map_dialog.motor_map_toolbar import (
14
- ConnectAction,
15
- DeviceSelectionAction,
16
- ResetHistoryAction,
17
- SettingsAction,
18
- )
19
14
 
20
15
 
21
16
  class BECMotorMapWidget(BECWidget, QWidget):
@@ -53,11 +48,15 @@ class BECMotorMapWidget(BECWidget, QWidget):
53
48
  self.fig = BECFigure()
54
49
  self.toolbar = ModularToolBar(
55
50
  actions={
56
- "motor_x": DeviceSelectionAction("Motor X:"),
57
- "motor_y": DeviceSelectionAction("Motor Y:"),
58
- "connect": ConnectAction(),
59
- "history": ResetHistoryAction(),
60
- "config": SettingsAction(),
51
+ "motor_x": DeviceSelectionAction(
52
+ "Motor X:", DeviceComboBox(device_filter="Positioner")
53
+ ),
54
+ "motor_y": DeviceSelectionAction(
55
+ "Motor Y:", DeviceComboBox(device_filter="Positioner")
56
+ ),
57
+ "connect": IconAction(icon_path="connection.svg", tooltip="Connect Motors"),
58
+ "history": IconAction(icon_path="history.svg", tooltip="Reset Trace History"),
59
+ "config": IconAction(icon_path="settings.svg", tooltip="Open Configuration Dialog"),
61
60
  },
62
61
  target_widget=self,
63
62
  )
@@ -5,22 +5,20 @@ from typing import Literal
5
5
 
6
6
  import numpy as np
7
7
  import pyqtgraph as pg
8
- from qtpy.QtCore import Slot
9
8
  from qtpy.QtWidgets import QVBoxLayout, QWidget
10
9
 
11
10
  from bec_widgets.qt_utils.error_popups import SafeSlot, WarningPopupUtility
12
11
  from bec_widgets.qt_utils.settings_dialog import SettingsDialog
13
- from bec_widgets.qt_utils.toolbar import ModularToolBar, SeparatorAction
12
+ from bec_widgets.qt_utils.toolbar import IconAction, ModularToolBar, SeparatorAction
14
13
  from bec_widgets.utils.bec_widget import BECWidget
15
14
  from bec_widgets.widgets.figure import BECFigure
16
15
  from bec_widgets.widgets.figure.plots.axis_settings import AxisSettings
17
16
  from bec_widgets.widgets.figure.plots.waveform.waveform import Waveform1DConfig
18
17
  from bec_widgets.widgets.figure.plots.waveform.waveform_curve import BECCurve
19
- from bec_widgets.widgets.waveform.waveform_toolbar.curve_dialog.curve_dialog import CurveSettings
20
- from bec_widgets.widgets.waveform.waveform_toolbar.dap_summary_dialog.dap_summary_dialog import (
18
+ from bec_widgets.widgets.waveform.waveform_popups.curve_dialog.curve_dialog import CurveSettings
19
+ from bec_widgets.widgets.waveform.waveform_popups.dap_summary_dialog.dap_summary_dialog import (
21
20
  FitSummaryWidget,
22
21
  )
23
- from bec_widgets.widgets.waveform.waveform_toolbar.waveform_toolbar import *
24
22
 
25
23
  try:
26
24
  import pandas as pd
@@ -47,6 +45,7 @@ class BECWaveformWidget(BECWidget, QWidget):
47
45
  "set_x_lim",
48
46
  "set_y_lim",
49
47
  "set_legend_label_size",
48
+ "set_auto_range",
50
49
  "set_grid",
51
50
  "lock_aspect_ratio",
52
51
  "export",
@@ -75,19 +74,28 @@ class BECWaveformWidget(BECWidget, QWidget):
75
74
  self.fig = BECFigure()
76
75
  self.toolbar = ModularToolBar(
77
76
  actions={
78
- "save": SaveAction(),
79
- "matplotlib": MatplotlibAction(),
77
+ "save": IconAction(icon_path="save.svg", tooltip="Open Export Dialog"),
78
+ "matplotlib": IconAction(
79
+ icon_path="photo_library.svg", tooltip="Open Matplotlib Plot"
80
+ ),
80
81
  "separator_1": SeparatorAction(),
81
- "drag_mode": DragModeAction(),
82
- "rectangle_mode": RectangeModeAction(),
83
- "auto_range": AutoRangeAction(),
82
+ "drag_mode": IconAction(
83
+ icon_path="drag_pan_mode.svg", tooltip="Drag Mouse Mode", checkable=True
84
+ ),
85
+ "rectangle_mode": IconAction(
86
+ icon_path="rectangle_mode.svg", tooltip="Rectangle Zoom Mode", checkable=True
87
+ ),
88
+ "auto_range": IconAction(icon_path="auto_range.svg", tooltip="Autorange Plot"),
84
89
  "separator_2": SeparatorAction(),
85
- "curves": CurveAction(),
86
- "fit_params": FitParamsAction(),
87
- "axis_settings": SettingsAction(),
88
- # "separator_3": SeparatorAction(),
89
- # "import": ImportAction(),
90
- # "export": ExportAction(),
90
+ "curves": IconAction(
91
+ icon_path="line_axis.svg", tooltip="Open Curves Configuration"
92
+ ),
93
+ "fit_params": IconAction(
94
+ icon_path="fitting_parameters.svg", tooltip="Open Fitting Parameters"
95
+ ),
96
+ "axis_settings": IconAction(
97
+ icon_path="settings.svg", tooltip="Open Configuration Dialog"
98
+ ),
91
99
  },
92
100
  target_widget=self,
93
101
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: bec_widgets
3
- Version: 0.88.0
3
+ Version: 0.88.1
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=zvb4A6QI5lQTsdfI5nPPL-tUNfcrz__SQjxW03QZ5Ek,8204
3
3
  .pylintrc,sha256=eeY8YwSI74oFfq6IYIbCqnx3Vk8ZncKaatv96n_Y8Rs,18544
4
4
  .readthedocs.yaml,sha256=aSOc277LqXcsTI6lgvm_JY80lMlr69GbPKgivua2cS0,603
5
- CHANGELOG.md,sha256=Cg7hwqHhrIkyyabuoKi2_GBGf2qCr5D4-41C1-kKuFo,8161
5
+ CHANGELOG.md,sha256=HlkAp2hTCYOR0AGFikpdOCSm3k4dOGmdIqhAU-hKIB8,7845
6
6
  LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
7
- PKG-INFO,sha256=Q7jSMAX05ltg_SwmOLHmPtuTqoUeD06Z7WdFJnDLIMc,1308
7
+ PKG-INFO,sha256=PhNXXQmzzTVoVSMDhrCnMZDZWDJq9NgDdg9W56mXnfg,1308
8
8
  README.md,sha256=Od69x-RS85Hph0-WwWACwal4yUd67XkEn4APEfHhHFw,2649
9
- pyproject.toml,sha256=p3KQpk_Kzo3cOeqBMjLywMn9OO3ygOO9In4jTzXPRfk,2357
9
+ pyproject.toml,sha256=vQNtHmvPPn_W8rQf_4N6FH0JxA1rV254WjNiZan3A5I,2357
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
@@ -17,11 +17,14 @@ bec_widgets/assets/app_icons/bec_widgets_icon.png,sha256=K8dgGwIjalDh9PRHUsSQBqg
17
17
  bec_widgets/assets/app_icons/terminal_icon.png,sha256=bJl7Tft4Fi2uxvuXI8o14uMHnI9eAWKSU2uftXCH9ws,3889
18
18
  bec_widgets/assets/designer_icons/BECWaveformWidget.png,sha256=QKocOi6e1frT6anrTwIQqQEwkalbl2AoOrTpvN1dr90,3764
19
19
  bec_widgets/assets/designer_icons/colormap_selector.png,sha256=KULLUA5T9SLhcSyrdouG07nXHZtE-LNNOn0ghG7T-OQ,6831
20
+ bec_widgets/assets/designer_icons/motor_map.png,sha256=8iqST5mTnZfv9rN9rx3D-XBm232Mwvzz9D0Wx6QaT8I,7293
20
21
  bec_widgets/assets/toolbar_icons/add.svg,sha256=Co1Iueh0sqQ1LMQcvNXPLg6tC6MLtQviH-F79uhM2o0,228
21
22
  bec_widgets/assets/toolbar_icons/auto_range.svg,sha256=hq6YMySVWF01SeEXzpF_h7BaqUPdsipTk_Z3nOjD8bg,487
23
+ bec_widgets/assets/toolbar_icons/connection.svg,sha256=czIb1BnshmxJnER8ssU3WcLENrFSIUfMwberajWOGAk,341
22
24
  bec_widgets/assets/toolbar_icons/drag_pan_mode.svg,sha256=ruinkJ0dVEPSH7ll4Pufl9c7oTwVXvcN57oTgiVRY5I,470
23
25
  bec_widgets/assets/toolbar_icons/export.svg,sha256=-kDEfxzloR1fOpZ5d4KIkxGH7wS_4Z1uJImtnKA5XxU,371
24
26
  bec_widgets/assets/toolbar_icons/fitting_parameters.svg,sha256=k57fFm2xPyYQD0y1K4Mb-7uqDeVA6GBWq_oh4-rQQeE,366
27
+ bec_widgets/assets/toolbar_icons/history.svg,sha256=bd6p5saxRiNRpd5OsSwIOvRWvel0WFEHul9zw4y9vH0,392
25
28
  bec_widgets/assets/toolbar_icons/import.svg,sha256=57-0ahjyIng5d3c0pSVCC2YwEYmQSyVVUdWkQXiVEVY,377
26
29
  bec_widgets/assets/toolbar_icons/line_axis.svg,sha256=uguelNycsOl6DmjYfUPnPnkIxfrDHEiLCpHW7iKEyfk,450
27
30
  bec_widgets/assets/toolbar_icons/photo_library.svg,sha256=weiDCYiHh9dzcA21D-37zpYts2CyoGAd9x-N_h292Mo,564
@@ -31,7 +34,7 @@ bec_widgets/assets/toolbar_icons/save.svg,sha256=rexWzbFExkh-NiAFP1909-1mm1BKU76
31
34
  bec_widgets/assets/toolbar_icons/settings.svg,sha256=ro30oa9CF1YijOXoUl-hz2DilJcqTy4rlTrMYhggumQ,1473
32
35
  bec_widgets/cli/__init__.py,sha256=d0Q6Fn44e7wFfLabDOBxpcJ1DPKWlFunGYDUBmO-4hA,22
33
36
  bec_widgets/cli/auto_updates.py,sha256=DyBV3HnjMSH-cvVkYNcDiYKVf0Xut4Qy2qGQqkW47Bw,4833
34
- bec_widgets/cli/client.py,sha256=-fJ0QirirJ4ZGXNgfXLUL1VmuYfYJdp_50o3jpEvY_Q,70291
37
+ bec_widgets/cli/client.py,sha256=RfaS3iyxPG8yUXDdFo-b0S9F4S62f7cwbAgDTO47tOs,70757
35
38
  bec_widgets/cli/client_utils.py,sha256=cDhabblwaP88a0jlVpbn_RWWKVbsyjhmmGtMh9gesEw,12388
36
39
  bec_widgets/cli/generate_cli.py,sha256=Ea5px9KblUlcGg-1JbJBTIU7laGg2n8PM7Efw9WVVzM,5889
37
40
  bec_widgets/cli/rpc_register.py,sha256=QxXUZu5XNg00Yf5O3UHWOXg3-f_pzKjjoZYMOa-MOJc,2216
@@ -50,7 +53,7 @@ bec_widgets/examples/plugin_example_pyside/tictactoetaskmenu.py,sha256=LNwplI6de
50
53
  bec_widgets/qt_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
54
  bec_widgets/qt_utils/error_popups.py,sha256=WAN3Qtccy9Yww29kZ3HbLt9VyipgrIamJ6y4PhGTe3I,7983
52
55
  bec_widgets/qt_utils/settings_dialog.py,sha256=rR_Zk4RGTnI4dz5OEzCc13lVpxlOKuwOf4_7wqXSbRw,3373
53
- bec_widgets/qt_utils/toolbar.py,sha256=yzxCmZ7c00B2JD1TkUpPeQgM_-v7zuTYe38Qkw_yvrc,2430
56
+ bec_widgets/qt_utils/toolbar.py,sha256=Ob7zItx06CbQIibInLLKyOXDJ2QiAneGL8Ubyn5iwNo,4892
54
57
  bec_widgets/utils/__init__.py,sha256=1930ji1Jj6dVuY81Wd2kYBhHYNV-2R0bN_L4o9zBj1U,533
55
58
  bec_widgets/utils/bec_connector.py,sha256=UK0GIWgcC_JTwgKCOmmuXnQvSwD3wiPsJQw6NBW3p74,9961
56
59
  bec_widgets/utils/bec_designer.py,sha256=ak3G8FdojUPjVBBwdPXw7tN5P2Uxr-SSoQt394jXeAA,4308
@@ -125,7 +128,7 @@ bec_widgets/widgets/figure/figure.py,sha256=IP8Kr8mWOBRSeWsB17UYoU5bpE4WcrOCuN5H
125
128
  bec_widgets/widgets/figure/plots/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
126
129
  bec_widgets/widgets/figure/plots/axis_settings.py,sha256=_z20SrMu5iRM0eqhQjsCV1MDOY80hN2dqtvkeofXs0w,3510
127
130
  bec_widgets/widgets/figure/plots/axis_settings.ui,sha256=zMKZK6lH_3KJGO4RA_paXAH7UzZJ4Snlil3MK4pK3L8,11589
128
- bec_widgets/widgets/figure/plots/plot_base.py,sha256=xU2aRfSOdGNsIl-fJ1PZDNm5b4h70akFbtHq7h38ydk,10419
131
+ bec_widgets/widgets/figure/plots/plot_base.py,sha256=AxzH2J-bLngxlWcgWWgNpLhIQxQzFz-H6yLf5Dou93Y,10921
129
132
  bec_widgets/widgets/figure/plots/image/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
130
133
  bec_widgets/widgets/figure/plots/image/image.py,sha256=CoD1ODroBL0M-9xCyAyELz-UBSHGMoXqe_1GqhGrRN0,21294
131
134
  bec_widgets/widgets/figure/plots/image/image_item.py,sha256=TyarahdWEn0jgalj5fqSAmcznXSbENkqHrrlL2GVdU4,10558
@@ -139,17 +142,12 @@ bec_widgets/widgets/jupyter_console/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQ
139
142
  bec_widgets/widgets/jupyter_console/jupyter_console.py,sha256=mBKM89H6SuHuFy1lQg1n8s1gQiN5QEkZf0xua8aPDns,2402
140
143
  bec_widgets/widgets/motor_map/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
141
144
  bec_widgets/widgets/motor_map/bec_motor_map_widget.pyproject,sha256=NAI8s5gRKz80ED4KY7OgD2OgSH5HEsjt2ux2BYp66yg,63
142
- bec_widgets/widgets/motor_map/bec_motor_map_widget_plugin.py,sha256=TpRrkyUpdsDhzn7yZnbqk2FktXH98Gjo-gH8UN4Dis0,1276
143
- bec_widgets/widgets/motor_map/motor_map_widget.py,sha256=HoGS9mbaNG0pPIMQ7Xm0LB3p2trtINj1wq9_oLJEQ3w,7296
145
+ bec_widgets/widgets/motor_map/bec_motor_map_widget_plugin.py,sha256=V6iN82E8Za8BharR_cSyZZShh4fI9yc5ky2TQBGELR0,1316
146
+ bec_widgets/widgets/motor_map/motor_map_widget.py,sha256=URcysThbJKGsCZUqQm2lCtVn5FG8t4kT7DaN5EJUexg,7555
144
147
  bec_widgets/widgets/motor_map/register_bec_motor_map_widget.py,sha256=qRG8PtWGjso0pWbvj_DXKnbUfmQzfGqPSrnAozXfM7o,492
145
- bec_widgets/widgets/motor_map/assets/connection.svg,sha256=czIb1BnshmxJnER8ssU3WcLENrFSIUfMwberajWOGAk,341
146
- bec_widgets/widgets/motor_map/assets/history.svg,sha256=bd6p5saxRiNRpd5OsSwIOvRWvel0WFEHul9zw4y9vH0,392
147
- bec_widgets/widgets/motor_map/assets/motor_map.png,sha256=xd6GFBM8gAb5c-xRgswxTZFtvo449yK57-EbkFvidOI,9746
148
- bec_widgets/widgets/motor_map/assets/settings.svg,sha256=ro30oa9CF1YijOXoUl-hz2DilJcqTy4rlTrMYhggumQ,1473
149
148
  bec_widgets/widgets/motor_map/motor_map_dialog/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
150
149
  bec_widgets/widgets/motor_map/motor_map_dialog/motor_map_settings.py,sha256=terJ5NHRzAsiUwdqg-hTbkQ5gadnRT0Ol0_Fm66kPF4,2011
151
150
  bec_widgets/widgets/motor_map/motor_map_dialog/motor_map_settings.ui,sha256=nv5vPftt6vcIl60OOZLRvwD29rdHVWOoGmz168BnwKw,2685
152
- bec_widgets/widgets/motor_map/motor_map_dialog/motor_map_toolbar.py,sha256=R6pmxhB_1ouc6f6cNQQvbxTHb3Ko3K_gTGs5WIYgnRI,2194
153
151
  bec_widgets/widgets/position_indicator/position_indicator.py,sha256=QVlWvs_RvEJe5IMxGYCpi-CXYF7vFeMqEMFCs6u5NGc,2020
154
152
  bec_widgets/widgets/position_indicator/position_indicator.pyproject,sha256=s0JEf5YkpMag19ddFSYeRZ8erBau7erO3bqw05YrTyg,36
155
153
  bec_widgets/widgets/position_indicator/position_indicator_plugin.py,sha256=h9EQU4t6KdKVAZh5ILalpl1K8b7JMHf-2AFYREej2-w,1241
@@ -184,19 +182,18 @@ bec_widgets/widgets/waveform/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NM
184
182
  bec_widgets/widgets/waveform/bec_waveform_widget.pyproject,sha256=GLD8GN9dXx9wNbtnevrxqqcwk7vKV-Uv8QYSycdaoaI,33
185
183
  bec_widgets/widgets/waveform/bec_waveform_widget_plugin.py,sha256=LjJJoRFlkcQWs7SUIPX859AeCiqVRsjgRWMNKE596uY,1429
186
184
  bec_widgets/widgets/waveform/register_bec_waveform_widget.py,sha256=qZHVZH_lP2hvzkG1Ra0EyrXlMeLkRCy0aceH-bfJ1cs,490
187
- bec_widgets/widgets/waveform/waveform_widget.py,sha256=ZRhwyxhrCwQxQJIusHy8oMi-PKmDzebP0GPiQawP-Sg,18636
188
- bec_widgets/widgets/waveform/waveform_toolbar/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
189
- bec_widgets/widgets/waveform/waveform_toolbar/waveform_toolbar.py,sha256=n3hwAzLCQul-FviDn0ikhDsYvza7JOb30ekTmbhu9JY,3896
190
- bec_widgets/widgets/waveform/waveform_toolbar/curve_dialog/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
191
- bec_widgets/widgets/waveform/waveform_toolbar/curve_dialog/curve_dialog.py,sha256=jCtWjNxsdOW7fA9BLdMAMrlCKHr2tFMHcVMxpeJ6YZE,13107
192
- bec_widgets/widgets/waveform/waveform_toolbar/curve_dialog/curve_dialog.ui,sha256=OaQE5HlyBQ3RQoHqxOFHiUoNcx8SDZP5sHJ9NNGhsPI,10404
193
- bec_widgets/widgets/waveform/waveform_toolbar/dap_summary_dialog/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
194
- bec_widgets/widgets/waveform/waveform_toolbar/dap_summary_dialog/dap_summary.ui,sha256=PFEKro61UXd-jmx65U4pqJ5D29DXtVnhQRnsnDvN-wM,6138
195
- bec_widgets/widgets/waveform/waveform_toolbar/dap_summary_dialog/dap_summary_dialog.py,sha256=a5n_gBebETdj80TU7Dgy1cnazPFyxLlWk_lRdvy3qA4,2403
185
+ bec_widgets/widgets/waveform/waveform_widget.py,sha256=zErnkgwm69QZEVvNRLi57v9-zRQeu0IaJpYRj34mGmA,19125
186
+ bec_widgets/widgets/waveform/waveform_popups/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
187
+ bec_widgets/widgets/waveform/waveform_popups/curve_dialog/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
188
+ bec_widgets/widgets/waveform/waveform_popups/curve_dialog/curve_dialog.py,sha256=jCtWjNxsdOW7fA9BLdMAMrlCKHr2tFMHcVMxpeJ6YZE,13107
189
+ bec_widgets/widgets/waveform/waveform_popups/curve_dialog/curve_dialog.ui,sha256=OaQE5HlyBQ3RQoHqxOFHiUoNcx8SDZP5sHJ9NNGhsPI,10404
190
+ bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
191
+ bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog/dap_summary.ui,sha256=PFEKro61UXd-jmx65U4pqJ5D29DXtVnhQRnsnDvN-wM,6138
192
+ bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog/dap_summary_dialog.py,sha256=a5n_gBebETdj80TU7Dgy1cnazPFyxLlWk_lRdvy3qA4,2403
196
193
  bec_widgets/widgets/website/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
197
194
  bec_widgets/widgets/website/website.py,sha256=FmhVaasAU3ZSdKP-HHSnJHFbG8lIsNAPH9pZq55fhic,1731
198
195
  docs/Makefile,sha256=i2WHuFlgfyAPEW4ssEP8NY4cOibDJrVjvzSEU8_Ggwc,634
199
- docs/conf.py,sha256=HxLxupNGu0Smhwn57g1kFdjZzFuaWVREgRJKhT1zi2k,2464
196
+ docs/conf.py,sha256=__ETwe00VJvH5_570r-oZpLkTrHYlobMCEcknjYPyjo,2474
200
197
  docs/index.md,sha256=8ZCgaLIbJsYvt-jwi--QxsNwnK4-k3rejIeOOLclG40,1101
201
198
  docs/make.bat,sha256=vKazJE8RW49Cy8K7hm8QYbletvAd8YkeKsaPA_dWnXs,800
202
199
  docs/requirements.txt,sha256=TcjRnzVYFOg64N-lJc2sn-G6YQdhPjzp0lrLuPsPMXY,156
@@ -300,8 +297,8 @@ tests/unit_tests/test_configs/config_device_no_entry.yaml,sha256=hdvue9KLc_kfNzG
300
297
  tests/unit_tests/test_configs/config_scan.yaml,sha256=vo484BbWOjA_e-h6bTjSV9k7QaQHrlAvx-z8wtY-P4E,1915
301
298
  tests/unit_tests/test_msgs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
302
299
  tests/unit_tests/test_msgs/available_scans_message.py,sha256=m_z97hIrjHXXMa2Ex-UvsPmTxOYXfjxyJaGkIY6StTY,46532
303
- bec_widgets-0.88.0.dist-info/METADATA,sha256=Q7jSMAX05ltg_SwmOLHmPtuTqoUeD06Z7WdFJnDLIMc,1308
304
- bec_widgets-0.88.0.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
305
- bec_widgets-0.88.0.dist-info/entry_points.txt,sha256=3otEkCdDB9LZJuBLzG4pFLK5Di0CVybN_12IsZrQ-58,166
306
- bec_widgets-0.88.0.dist-info/licenses/LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
307
- bec_widgets-0.88.0.dist-info/RECORD,,
300
+ bec_widgets-0.88.1.dist-info/METADATA,sha256=PhNXXQmzzTVoVSMDhrCnMZDZWDJq9NgDdg9W56mXnfg,1308
301
+ bec_widgets-0.88.1.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
302
+ bec_widgets-0.88.1.dist-info/entry_points.txt,sha256=3otEkCdDB9LZJuBLzG4pFLK5Di0CVybN_12IsZrQ-58,166
303
+ bec_widgets-0.88.1.dist-info/licenses/LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
304
+ bec_widgets-0.88.1.dist-info/RECORD,,
docs/conf.py CHANGED
@@ -78,4 +78,4 @@ language = "Python"
78
78
  html_theme = "pydata_sphinx_theme"
79
79
  html_static_path = ["_static"]
80
80
  html_css_files = ["custom.css"]
81
- html_logo = "../bec_widgets/assets/bec_widgets_icon.png"
81
+ html_logo = "../bec_widgets/assets/app_icons/bec_widgets_icon.png"
pyproject.toml CHANGED
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "bec_widgets"
7
- version = "0.88.0"
7
+ version = "0.88.1"
8
8
  description = "BEC Widgets"
9
9
  requires-python = ">=3.10"
10
10
  classifiers = [
@@ -1,4 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" height="48px" viewBox="0 0 24 24" width="48px" fill="#FFFFFF">
2
- <path d="M0 0h24v24H0V0z" fill="none"/>
3
- <path d="M19.43 12.98c.04-.32.07-.64.07-.98 0-.34-.03-.66-.07-.98l2.11-1.65c.19-.15.24-.42.12-.64l-2-3.46c-.09-.16-.26-.25-.44-.25-.06 0-.12.01-.17.03l-2.49 1c-.52-.4-1.08-.73-1.69-.98l-.38-2.65C14.46 2.18 14.25 2 14 2h-4c-.25 0-.46.18-.49.42l-.38 2.65c-.61.25-1.17.59-1.69.98l-2.49-1c-.06-.02-.12-.03-.18-.03-.17 0-.34.09-.43.25l-2 3.46c-.13.22-.07.49.12.64l2.11 1.65c-.04.32-.07.65-.07.98 0 .33.03.66.07.98l-2.11 1.65c-.19.15-.24.42-.12.64l2 3.46c.09.16.26.25.44.25.06 0 .12-.01.17-.03l2.49-1c.52.4 1.08.73 1.69.98l.38 2.65c.03.24.24.42.49.42h4c.25 0 .46-.18.49-.42l.38-2.65c.61-.25 1.17-.59 1.69-.98l2.49 1c.06.02.12.03.18.03.17 0 .34-.09.43-.25l2-3.46c.12-.22.07-.49-.12-.64l-2.11-1.65zm-1.98-1.71c.04.31.05.52.05.73 0 .21-.02.43-.05.73l-.14 1.13.89.7 1.08.84-.7 1.21-1.27-.51-1.04-.42-.9.68c-.43.32-.84.56-1.25.73l-1.06.43-.16 1.13-.2 1.35h-1.4l-.19-1.35-.16-1.13-1.06-.43c-.43-.18-.83-.41-1.23-.71l-.91-.7-1.06.43-1.27.51-.7-1.21 1.08-.84.89-.7-.14-1.13c-.03-.31-.05-.54-.05-.74s.02-.43.05-.73l.14-1.13-.89-.7-1.08-.84.7-1.21 1.27.51 1.04.42.9-.68c.43-.32.84-.56 1.25-.73l1.06-.43.16-1.13.2-1.35h1.39l.19 1.35.16 1.13 1.06.43c.43.18.83.41 1.23.71l.91.7 1.06-.43 1.27-.51.7 1.21-1.07.85-.89.7.14 1.13zM12 8c-2.21 0-4 1.79-4 4s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm0 6c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2z"/>
4
- </svg>
@@ -1,59 +0,0 @@
1
- import os
2
-
3
- from qtpy.QtCore import QSize
4
- from qtpy.QtGui import QAction, QIcon
5
- from qtpy.QtWidgets import QHBoxLayout, QLabel, QWidget
6
-
7
- from bec_widgets.qt_utils.toolbar import ToolBarAction
8
- from bec_widgets.widgets.device_combobox.device_combobox import DeviceComboBox
9
-
10
-
11
- class DeviceSelectionAction(ToolBarAction):
12
- def __init__(self, label: str):
13
- self.label = label
14
- self.device_combobox = DeviceComboBox(device_filter="Positioner")
15
-
16
- self.device_combobox.currentIndexChanged.connect(lambda: self.set_combobox_style("#ffa700"))
17
-
18
- def add_to_toolbar(self, toolbar, target):
19
- widget = QWidget()
20
- layout = QHBoxLayout(widget)
21
-
22
- label = QLabel(f"{self.label}")
23
-
24
- layout.addWidget(label)
25
- layout.addWidget(self.device_combobox)
26
- toolbar.addWidget(widget)
27
-
28
- def set_combobox_style(self, color: str):
29
- self.device_combobox.setStyleSheet(f"QComboBox {{ background-color: {color}; }}")
30
-
31
-
32
- class ConnectAction(ToolBarAction):
33
- def add_to_toolbar(self, toolbar, target):
34
- current_path = os.path.dirname(__file__)
35
- parent_path = os.path.dirname(current_path)
36
- icon = QIcon()
37
- icon.addFile(os.path.join(parent_path, "assets", "connection.svg"), size=QSize(20, 20))
38
- self.action = QAction(icon, "Connect Motors", target)
39
- toolbar.addAction(self.action)
40
-
41
-
42
- class ResetHistoryAction(ToolBarAction):
43
- def add_to_toolbar(self, toolbar, target):
44
- current_path = os.path.dirname(__file__)
45
- parent_path = os.path.dirname(current_path)
46
- icon = QIcon()
47
- icon.addFile(os.path.join(parent_path, "assets", "history.svg"), size=QSize(20, 20))
48
- self.action = QAction(icon, "Reset Trace History", target)
49
- toolbar.addAction(self.action)
50
-
51
-
52
- class SettingsAction(ToolBarAction):
53
- def add_to_toolbar(self, toolbar, target):
54
- current_path = os.path.dirname(__file__)
55
- parent_path = os.path.dirname(current_path)
56
- icon = QIcon()
57
- icon.addFile(os.path.join(parent_path, "assets", "settings.svg"), size=QSize(20, 20))
58
- self.action = QAction(icon, "Open Configuration Dialog", target)
59
- toolbar.addAction(self.action)
@@ -1,117 +0,0 @@
1
- import os
2
-
3
- from qtpy.QtCore import QSize
4
- from qtpy.QtGui import QAction, QIcon
5
-
6
- import bec_widgets
7
- from bec_widgets.qt_utils.toolbar import ToolBarAction
8
-
9
- MODULE_PATH = os.path.dirname(bec_widgets.__file__)
10
-
11
-
12
- class SaveAction(ToolBarAction):
13
- def add_to_toolbar(self, toolbar, target):
14
- icon = QIcon()
15
- icon.addFile(
16
- os.path.join(MODULE_PATH, "assets", "toolbar_icons", "save.svg"), size=QSize(20, 20)
17
- )
18
- self.action = QAction(icon, "Open Export Dialog", target)
19
- toolbar.addAction(self.action)
20
-
21
-
22
- class MatplotlibAction(ToolBarAction):
23
- def add_to_toolbar(self, toolbar, target):
24
- icon = QIcon()
25
- icon.addFile(
26
- os.path.join(MODULE_PATH, "assets", "toolbar_icons", "photo_library.svg"),
27
- size=QSize(20, 20),
28
- )
29
- self.action = QAction(icon, "Open Matplotlib Plot", target)
30
- toolbar.addAction(self.action)
31
-
32
-
33
- class DragModeAction(ToolBarAction):
34
- def add_to_toolbar(self, toolbar, target):
35
- icon = QIcon()
36
- icon.addFile(
37
- os.path.join(MODULE_PATH, "assets", "toolbar_icons", "drag_pan_mode.svg"),
38
- size=QSize(20, 20),
39
- )
40
- self.action = QAction(icon, "Drag Mouse Mode", target)
41
- self.action.setCheckable(True)
42
- toolbar.addAction(self.action)
43
-
44
-
45
- class RectangeModeAction(ToolBarAction):
46
- def add_to_toolbar(self, toolbar, target):
47
- icon = QIcon()
48
- icon.addFile(
49
- os.path.join(MODULE_PATH, "assets", "toolbar_icons", "rectangle_mode.svg"),
50
- size=QSize(20, 20),
51
- )
52
- self.action = QAction(icon, "Rectangle Zoom Mode", target)
53
- self.action.setCheckable(True)
54
- toolbar.addAction(self.action)
55
-
56
-
57
- class AutoRangeAction(ToolBarAction):
58
- def add_to_toolbar(self, toolbar, target):
59
- icon = QIcon()
60
- icon.addFile(
61
- os.path.join(MODULE_PATH, "assets", "toolbar_icons", "auto_range.svg"),
62
- size=QSize(20, 20),
63
- )
64
- self.action = QAction(icon, "Autorange Plot", target)
65
- toolbar.addAction(self.action)
66
-
67
-
68
- class CurveAction(ToolBarAction):
69
- def add_to_toolbar(self, toolbar, target):
70
- icon = QIcon()
71
- icon.addFile(
72
- os.path.join(MODULE_PATH, "assets", "toolbar_icons", "line_axis.svg"),
73
- size=QSize(20, 20),
74
- )
75
- self.action = QAction(icon, "Open Curves Configuration", target)
76
- toolbar.addAction(self.action)
77
-
78
-
79
- class FitParamsAction(ToolBarAction):
80
- def add_to_toolbar(self, toolbar, target):
81
- icon = QIcon()
82
- icon.addFile(
83
- os.path.join(MODULE_PATH, "assets", "toolbar_icons", "fitting_parameters.svg"),
84
- size=QSize(20, 20),
85
- )
86
- self.action = QAction(icon, "Open Fitting Parameters", target)
87
- toolbar.addAction(self.action)
88
-
89
-
90
- class SettingsAction(ToolBarAction):
91
- def add_to_toolbar(self, toolbar, target):
92
- icon = QIcon()
93
- icon.addFile(
94
- os.path.join(MODULE_PATH, "assets", "toolbar_icons", "settings.svg"), size=QSize(20, 20)
95
- )
96
- self.action = QAction(icon, "Open Configuration Dialog", target)
97
- toolbar.addAction(self.action)
98
-
99
-
100
- class ImportAction(ToolBarAction):
101
- def add_to_toolbar(self, toolbar, target):
102
- icon = QIcon()
103
- icon.addFile(
104
- os.path.join(MODULE_PATH, "assets", "toolbar_icons", "import.svg"), size=QSize(20, 20)
105
- )
106
- self.action = QAction(icon, "Import Configuration from YAML", target)
107
- toolbar.addAction(self.action)
108
-
109
-
110
- class ExportAction(ToolBarAction):
111
- def add_to_toolbar(self, toolbar, target):
112
- icon = QIcon()
113
- icon.addFile(
114
- os.path.join(MODULE_PATH, "assets", "toolbar_icons", "export.svg"), size=QSize(20, 20)
115
- )
116
- self.action = QAction(icon, "Export Current Configuration to YAML", target)
117
- toolbar.addAction(self.action)