bec-widgets 0.116.0__py3-none-any.whl → 0.117.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- CHANGELOG.md +11 -9
- PKG-INFO +1 -1
- bec_widgets/cli/client.py +45 -0
- bec_widgets/utils/fps_counter.py +84 -0
- bec_widgets/widgets/figure/plots/image/image.py +1 -0
- bec_widgets/widgets/figure/plots/image/image_item.py +2 -2
- bec_widgets/widgets/figure/plots/plot_base.py +62 -3
- bec_widgets/widgets/figure/plots/waveform/waveform.py +1 -0
- bec_widgets/widgets/image/image_widget.py +17 -0
- bec_widgets/widgets/waveform/waveform_widget.py +23 -3
- {bec_widgets-0.116.0.dist-info → bec_widgets-0.117.0.dist-info}/METADATA +1 -1
- {bec_widgets-0.116.0.dist-info → bec_widgets-0.117.0.dist-info}/RECORD +16 -15
- pyproject.toml +1 -1
- {bec_widgets-0.116.0.dist-info → bec_widgets-0.117.0.dist-info}/WHEEL +0 -0
- {bec_widgets-0.116.0.dist-info → bec_widgets-0.117.0.dist-info}/entry_points.txt +0 -0
- {bec_widgets-0.116.0.dist-info → bec_widgets-0.117.0.dist-info}/licenses/LICENSE +0 -0
CHANGELOG.md
CHANGED
@@ -1,6 +1,17 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
3
|
|
4
|
+
## v0.117.0 (2024-10-11)
|
5
|
+
|
6
|
+
### Features
|
7
|
+
|
8
|
+
* feat(utils): FPS counter utility based on the viewBox updates, integrated to waveform and image widget ([`8c5ef26`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/8c5ef268430d5243ac05fcbbdb6b76ad24ac5735))
|
9
|
+
|
10
|
+
### Unknown
|
11
|
+
|
12
|
+
* tests(plot_base): tests extended ([`8dc892d`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/8dc892df0a47ccbdd812555b7c5775a455a23ede))
|
13
|
+
|
14
|
+
|
4
15
|
## v0.116.0 (2024-10-11)
|
5
16
|
|
6
17
|
### Build System
|
@@ -163,12 +174,3 @@ Fixes #361, do not try to change x axis when not permitted ([`efa2763`](https://
|
|
163
174
|
### Features
|
164
175
|
|
165
176
|
* feat(progressbar): added bec progressbar ([`f6d1d0b`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/f6d1d0bbe3ba30a3b7291cd36a1f7f8e6bd5b895))
|
166
|
-
|
167
|
-
* feat(generate_cli): added support for property and qproperty setter ([`a52182d`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/a52182dca978833bfc3fad755c596d3a2ef45c42))
|
168
|
-
|
169
|
-
|
170
|
-
## v0.107.0 (2024-09-06)
|
171
|
-
|
172
|
-
### Refactoring
|
173
|
-
|
174
|
-
* refactor: change style to bec_accent_colors ([`bd126dd`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/bd126dddbbec3e6c448cce263433d328d577c5c0))
|
PKG-INFO
CHANGED
bec_widgets/cli/client.py
CHANGED
@@ -1135,6 +1135,15 @@ class BECImageShow(RPCBase):
|
|
1135
1135
|
y(bool): Show grid on the y-axis.
|
1136
1136
|
"""
|
1137
1137
|
|
1138
|
+
@rpc_call
|
1139
|
+
def enable_fps_monitor(self, enable: "bool" = True):
|
1140
|
+
"""
|
1141
|
+
Enable the FPS monitor.
|
1142
|
+
|
1143
|
+
Args:
|
1144
|
+
enable(bool): True to enable, False to disable.
|
1145
|
+
"""
|
1146
|
+
|
1138
1147
|
@rpc_call
|
1139
1148
|
def lock_aspect_ratio(self, lock):
|
1140
1149
|
"""
|
@@ -1330,6 +1339,15 @@ class BECImageWidget(RPCBase):
|
|
1330
1339
|
y_grid(bool): Visibility of the y-axis grid.
|
1331
1340
|
"""
|
1332
1341
|
|
1342
|
+
@rpc_call
|
1343
|
+
def enable_fps_monitor(self, enabled: "bool"):
|
1344
|
+
"""
|
1345
|
+
Enable the FPS monitor of the plot widget.
|
1346
|
+
|
1347
|
+
Args:
|
1348
|
+
enabled(bool): If True, enable the FPS monitor.
|
1349
|
+
"""
|
1350
|
+
|
1333
1351
|
@rpc_call
|
1334
1352
|
def lock_aspect_ratio(self, lock: "bool"):
|
1335
1353
|
"""
|
@@ -1666,6 +1684,15 @@ class BECPlotBase(RPCBase):
|
|
1666
1684
|
show(bool): Show the outer axes.
|
1667
1685
|
"""
|
1668
1686
|
|
1687
|
+
@rpc_call
|
1688
|
+
def enable_fps_monitor(self, enable: "bool" = True):
|
1689
|
+
"""
|
1690
|
+
Enable the FPS monitor.
|
1691
|
+
|
1692
|
+
Args:
|
1693
|
+
enable(bool): True to enable, False to disable.
|
1694
|
+
"""
|
1695
|
+
|
1669
1696
|
@rpc_call
|
1670
1697
|
def lock_aspect_ratio(self, lock):
|
1671
1698
|
"""
|
@@ -2069,6 +2096,15 @@ class BECWaveform(RPCBase):
|
|
2069
2096
|
colormap(str, optional): Scale the colors of curves to colormap. If None, use the default color palette.
|
2070
2097
|
"""
|
2071
2098
|
|
2099
|
+
@rpc_call
|
2100
|
+
def enable_fps_monitor(self, enable: "bool" = True):
|
2101
|
+
"""
|
2102
|
+
Enable the FPS monitor.
|
2103
|
+
|
2104
|
+
Args:
|
2105
|
+
enable(bool): True to enable, False to disable.
|
2106
|
+
"""
|
2107
|
+
|
2072
2108
|
@rpc_call
|
2073
2109
|
def lock_aspect_ratio(self, lock):
|
2074
2110
|
"""
|
@@ -2374,6 +2410,15 @@ class BECWaveformWidget(RPCBase):
|
|
2374
2410
|
y_grid(bool): Visibility of the y-axis grid.
|
2375
2411
|
"""
|
2376
2412
|
|
2413
|
+
@rpc_call
|
2414
|
+
def enable_fps_monitor(self, enabled: "bool"):
|
2415
|
+
"""
|
2416
|
+
Enable the FPS monitor of the plot widget.
|
2417
|
+
|
2418
|
+
Args:
|
2419
|
+
enabled(bool): If True, enable the FPS monitor.
|
2420
|
+
"""
|
2421
|
+
|
2377
2422
|
@rpc_call
|
2378
2423
|
def lock_aspect_ratio(self, lock: "bool"):
|
2379
2424
|
"""
|
@@ -0,0 +1,84 @@
|
|
1
|
+
"""
|
2
|
+
This module provides a utility class for counting and reporting frames per second (FPS) in a PyQtGraph application.
|
3
|
+
|
4
|
+
Classes:
|
5
|
+
FPSCounter: A class that monitors the paint events of a `ViewBox` to calculate and emit FPS values.
|
6
|
+
|
7
|
+
Usage:
|
8
|
+
The `FPSCounter` class can be used to monitor the rendering performance of a `ViewBox` in a PyQtGraph application.
|
9
|
+
It connects to the `ViewBox`'s paint event and calculates the FPS over a specified interval, emitting the FPS value
|
10
|
+
at regular intervals.
|
11
|
+
|
12
|
+
Example:
|
13
|
+
from qtpy import QtWidgets, QtCore
|
14
|
+
import pyqtgraph as pg
|
15
|
+
from fps_counter import FPSCounter
|
16
|
+
|
17
|
+
app = pg.mkQApp("FPS Counter Example")
|
18
|
+
win = pg.GraphicsLayoutWidget()
|
19
|
+
win.show()
|
20
|
+
|
21
|
+
vb = pg.ViewBox()
|
22
|
+
plot_item = pg.PlotItem(viewBox=vb)
|
23
|
+
win.addItem(plot_item)
|
24
|
+
|
25
|
+
fps_counter = FPSCounter(vb)
|
26
|
+
fps_counter.sigFpsUpdate.connect(lambda fps: print(f"FPS: {fps:.2f}"))
|
27
|
+
|
28
|
+
sys.exit(app.exec_())
|
29
|
+
"""
|
30
|
+
|
31
|
+
from time import perf_counter
|
32
|
+
|
33
|
+
import pyqtgraph as pg
|
34
|
+
from qtpy import QtCore
|
35
|
+
|
36
|
+
|
37
|
+
class FPSCounter(QtCore.QObject):
|
38
|
+
"""
|
39
|
+
A utility class for counting and reporting frames per second (FPS).
|
40
|
+
|
41
|
+
This class connects to a `ViewBox`'s paint event to count the number of
|
42
|
+
frames rendered and calculates the FPS over a specified interval. It emits
|
43
|
+
a signal with the FPS value at regular intervals.
|
44
|
+
|
45
|
+
Attributes:
|
46
|
+
sigFpsUpdate (QtCore.Signal): Signal emitted with the FPS value.
|
47
|
+
view_box (pg.ViewBox): The `ViewBox` instance to monitor.
|
48
|
+
"""
|
49
|
+
|
50
|
+
sigFpsUpdate = QtCore.Signal(float)
|
51
|
+
|
52
|
+
def __init__(self, view_box):
|
53
|
+
super().__init__()
|
54
|
+
self.view_box = view_box
|
55
|
+
self.view_box.sigPaint.connect(self.increment_count)
|
56
|
+
self.count = 0
|
57
|
+
self.last_update = perf_counter()
|
58
|
+
self.timer = QtCore.QTimer()
|
59
|
+
self.timer.timeout.connect(self.calculate_fps)
|
60
|
+
self.timer.start(1000)
|
61
|
+
|
62
|
+
def increment_count(self):
|
63
|
+
"""
|
64
|
+
Increment the frame count when the `ViewBox` is painted.
|
65
|
+
"""
|
66
|
+
self.count += 1
|
67
|
+
|
68
|
+
def calculate_fps(self):
|
69
|
+
"""
|
70
|
+
Calculate the frames per second (FPS) based on the number of frames
|
71
|
+
"""
|
72
|
+
now = perf_counter()
|
73
|
+
elapsed = now - self.last_update
|
74
|
+
fps = self.count / elapsed if elapsed > 0 else 0.0
|
75
|
+
self.last_update = now
|
76
|
+
self.count = 0
|
77
|
+
self.sigFpsUpdate.emit(fps)
|
78
|
+
|
79
|
+
def cleanup(self):
|
80
|
+
"""
|
81
|
+
Clean up the FPS counter by stopping the timer and disconnecting the signal.
|
82
|
+
"""
|
83
|
+
self.timer.stop()
|
84
|
+
self.timer.timeout.disconnect(self.calculate_fps)
|
@@ -307,7 +307,7 @@ class BECImageItem(BECConnector, pg.ImageItem):
|
|
307
307
|
if vrange is not None:
|
308
308
|
self.color_bar.setLevels(low=vrange[0], high=vrange[1])
|
309
309
|
self.color_bar.setImageItem(self)
|
310
|
-
self.parent_image.addItem(self.color_bar
|
310
|
+
self.parent_image.addItem(self.color_bar, row=1, col=1)
|
311
311
|
self.config.color_bar = "simple"
|
312
312
|
elif color_bar_style == "full":
|
313
313
|
# Setting histogram
|
@@ -321,7 +321,7 @@ class BECImageItem(BECConnector, pg.ImageItem):
|
|
321
321
|
)
|
322
322
|
|
323
323
|
# Adding histogram to the layout
|
324
|
-
self.parent_image.addItem(self.color_bar
|
324
|
+
self.parent_image.addItem(self.color_bar, row=1, col=1)
|
325
325
|
|
326
326
|
# save settings
|
327
327
|
self.config.color_bar = "full"
|
@@ -1,6 +1,5 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
|
-
from collections import defaultdict
|
4
3
|
from typing import Literal, Optional
|
5
4
|
|
6
5
|
import bec_qthemes
|
@@ -12,6 +11,7 @@ from qtpy.QtWidgets import QApplication, QWidget
|
|
12
11
|
|
13
12
|
from bec_widgets.utils import BECConnector, ConnectionConfig
|
14
13
|
from bec_widgets.utils.crosshair import Crosshair
|
14
|
+
from bec_widgets.utils.fps_counter import FPSCounter
|
15
15
|
from bec_widgets.utils.plot_indicator_items import BECArrowItem, BECTickItem
|
16
16
|
|
17
17
|
logger = bec_logger.logger
|
@@ -51,6 +51,11 @@ class SubplotConfig(ConnectionConfig):
|
|
51
51
|
|
52
52
|
|
53
53
|
class BECViewBox(pg.ViewBox):
|
54
|
+
sigPaint = Signal()
|
55
|
+
|
56
|
+
def paint(self, painter, opt, widget):
|
57
|
+
super().paint(painter, opt, widget)
|
58
|
+
self.sigPaint.emit()
|
54
59
|
|
55
60
|
def itemBoundsChanged(self, item):
|
56
61
|
self._itemBoundsCache.pop(item, None)
|
@@ -79,6 +84,7 @@ class BECPlotBase(BECConnector, pg.GraphicsLayout):
|
|
79
84
|
"set_y_lim",
|
80
85
|
"set_grid",
|
81
86
|
"set_outer_axes",
|
87
|
+
"enable_fps_monitor",
|
82
88
|
"lock_aspect_ratio",
|
83
89
|
"export",
|
84
90
|
"remove",
|
@@ -100,12 +106,13 @@ class BECPlotBase(BECConnector, pg.GraphicsLayout):
|
|
100
106
|
|
101
107
|
self.figure = parent_figure
|
102
108
|
|
103
|
-
# self.plot_item = self.addPlot(row=0, col=0)
|
104
109
|
self.plot_item = pg.PlotItem(viewBox=BECViewBox(parent=self, enableMenu=True), parent=self)
|
105
|
-
self.addItem(self.plot_item, row=
|
110
|
+
self.addItem(self.plot_item, row=1, col=0)
|
106
111
|
|
107
112
|
self.add_legend()
|
108
113
|
self.crosshair = None
|
114
|
+
self.fps_monitor = None
|
115
|
+
self.fps_label = None
|
109
116
|
self.tick_item = BECTickItem(parent=self, plot_item=self.plot_item)
|
110
117
|
self.arrow_item = BECArrowItem(parent=self, plot_item=self.plot_item)
|
111
118
|
self._connect_to_theme_change()
|
@@ -379,6 +386,10 @@ class BECPlotBase(BECConnector, pg.GraphicsLayout):
|
|
379
386
|
"""
|
380
387
|
self.plot_item.enableAutoRange(axis, enabled)
|
381
388
|
|
389
|
+
############################################################
|
390
|
+
###################### Crosshair ###########################
|
391
|
+
############################################################
|
392
|
+
|
382
393
|
def hook_crosshair(self) -> None:
|
383
394
|
"""Hook the crosshair to all plots."""
|
384
395
|
if self.crosshair is None:
|
@@ -417,6 +428,54 @@ class BECPlotBase(BECConnector, pg.GraphicsLayout):
|
|
417
428
|
self.crosshair.clear_markers()
|
418
429
|
self.crosshair.update_markers()
|
419
430
|
|
431
|
+
############################################################
|
432
|
+
##################### FPS Counter ##########################
|
433
|
+
############################################################
|
434
|
+
|
435
|
+
def update_fps_label(self, fps: float) -> None:
|
436
|
+
"""
|
437
|
+
Update the FPS label.
|
438
|
+
|
439
|
+
Args:
|
440
|
+
fps(float): The frames per second.
|
441
|
+
"""
|
442
|
+
if self.fps_label:
|
443
|
+
self.fps_label.setText(f"FPS: {fps:.2f}")
|
444
|
+
|
445
|
+
def hook_fps_monitor(self):
|
446
|
+
"""Hook the FPS monitor to the plot."""
|
447
|
+
if self.fps_monitor is None:
|
448
|
+
# text_color = self.get_text_color()#TODO later
|
449
|
+
self.fps_monitor = FPSCounter(self.plot_item.vb) # text_color=text_color)
|
450
|
+
self.fps_label = pg.LabelItem(justify="right")
|
451
|
+
self.addItem(self.fps_label, row=0, col=0)
|
452
|
+
|
453
|
+
self.fps_monitor.sigFpsUpdate.connect(self.update_fps_label)
|
454
|
+
|
455
|
+
def unhook_fps_monitor(self):
|
456
|
+
"""Unhook the FPS monitor from the plot."""
|
457
|
+
if self.fps_monitor is not None:
|
458
|
+
# Remove Monitor
|
459
|
+
self.fps_monitor.cleanup()
|
460
|
+
self.fps_monitor.deleteLater()
|
461
|
+
self.fps_monitor = None
|
462
|
+
# Remove Label
|
463
|
+
self.removeItem(self.fps_label)
|
464
|
+
self.fps_label.deleteLater()
|
465
|
+
self.fps_label = None
|
466
|
+
|
467
|
+
def enable_fps_monitor(self, enable: bool = True):
|
468
|
+
"""
|
469
|
+
Enable the FPS monitor.
|
470
|
+
|
471
|
+
Args:
|
472
|
+
enable(bool): True to enable, False to disable.
|
473
|
+
"""
|
474
|
+
if enable and self.fps_monitor is None:
|
475
|
+
self.hook_fps_monitor()
|
476
|
+
elif not enable and self.fps_monitor is not None:
|
477
|
+
self.unhook_fps_monitor()
|
478
|
+
|
420
479
|
def export(self):
|
421
480
|
"""Show the Export Dialog of the plot widget."""
|
422
481
|
scene = self.plot_item.scene()
|
@@ -40,6 +40,7 @@ class BECImageWidget(BECWidget, QWidget):
|
|
40
40
|
"set_rotation",
|
41
41
|
"set_log",
|
42
42
|
"set_grid",
|
43
|
+
"enable_fps_monitor",
|
43
44
|
"lock_aspect_ratio",
|
44
45
|
]
|
45
46
|
|
@@ -104,6 +105,9 @@ class BECImageWidget(BECWidget, QWidget):
|
|
104
105
|
icon_name="reset_settings", tooltip="Reset Image Settings"
|
105
106
|
),
|
106
107
|
"separator_3": SeparatorAction(),
|
108
|
+
"fps_monitor": MaterialIconAction(
|
109
|
+
icon_name="speed", tooltip="Show FPS Monitor", checkable=True
|
110
|
+
),
|
107
111
|
"axis_settings": MaterialIconAction(
|
108
112
|
icon_name="settings", tooltip="Open Configuration Dialog"
|
109
113
|
),
|
@@ -150,6 +154,7 @@ class BECImageWidget(BECWidget, QWidget):
|
|
150
154
|
self.toolbar.widgets["reset"].action.triggered.connect(self.reset_settings)
|
151
155
|
# sepatator
|
152
156
|
self.toolbar.widgets["axis_settings"].action.triggered.connect(self.show_axis_settings)
|
157
|
+
self.toolbar.widgets["fps_monitor"].action.toggled.connect(self.enable_fps_monitor)
|
153
158
|
|
154
159
|
###################################
|
155
160
|
# Dialog Windows
|
@@ -450,6 +455,18 @@ class BECImageWidget(BECWidget, QWidget):
|
|
450
455
|
self.toolbar.widgets["rectangle_mode"].action.setChecked(False)
|
451
456
|
self._image.plot_item.getViewBox().setMouseMode(pg.ViewBox.PanMode)
|
452
457
|
|
458
|
+
@SafeSlot()
|
459
|
+
def enable_fps_monitor(self, enabled: bool):
|
460
|
+
"""
|
461
|
+
Enable the FPS monitor of the plot widget.
|
462
|
+
|
463
|
+
Args:
|
464
|
+
enabled(bool): If True, enable the FPS monitor.
|
465
|
+
"""
|
466
|
+
self._image.enable_fps_monitor(enabled)
|
467
|
+
if self.toolbar.widgets["fps_monitor"].action.isChecked() != enabled:
|
468
|
+
self.toolbar.widgets["fps_monitor"].action.setChecked(enabled)
|
469
|
+
|
453
470
|
def export(self):
|
454
471
|
"""
|
455
472
|
Show the export dialog for the plot widget.
|
@@ -52,6 +52,7 @@ class BECWaveformWidget(BECWidget, QWidget):
|
|
52
52
|
"set_legend_label_size",
|
53
53
|
"set_auto_range",
|
54
54
|
"set_grid",
|
55
|
+
"enable_fps_monitor",
|
55
56
|
"lock_aspect_ratio",
|
56
57
|
"export",
|
57
58
|
"export_to_matplotlib",
|
@@ -118,9 +119,7 @@ class BECWaveformWidget(BECWidget, QWidget):
|
|
118
119
|
"fit_params": MaterialIconAction(
|
119
120
|
icon_name="monitoring", tooltip="Open Fitting Parameters"
|
120
121
|
),
|
121
|
-
"
|
122
|
-
icon_name="settings", tooltip="Open Configuration Dialog"
|
123
|
-
),
|
122
|
+
"separator_3": SeparatorAction(),
|
124
123
|
"crosshair": MaterialIconAction(
|
125
124
|
icon_name="point_scan", tooltip="Show Crosshair", checkable=True
|
126
125
|
),
|
@@ -129,6 +128,13 @@ class BECWaveformWidget(BECWidget, QWidget):
|
|
129
128
|
tooltip="Add ROI region for DAP",
|
130
129
|
checkable=True,
|
131
130
|
),
|
131
|
+
"separator_4": SeparatorAction(),
|
132
|
+
"fps_monitor": MaterialIconAction(
|
133
|
+
icon_name="speed", tooltip="Show FPS Monitor", checkable=True
|
134
|
+
),
|
135
|
+
"axis_settings": MaterialIconAction(
|
136
|
+
icon_name="settings", tooltip="Open Configuration Dialog"
|
137
|
+
),
|
132
138
|
},
|
133
139
|
target_widget=self,
|
134
140
|
)
|
@@ -186,6 +192,7 @@ class BECWaveformWidget(BECWidget, QWidget):
|
|
186
192
|
self.toolbar.widgets["axis_settings"].action.triggered.connect(self.show_axis_settings)
|
187
193
|
self.toolbar.widgets["crosshair"].action.triggered.connect(self.waveform.toggle_crosshair)
|
188
194
|
self.toolbar.widgets["roi_select"].action.toggled.connect(self.waveform.toggle_roi)
|
195
|
+
self.toolbar.widgets["fps_monitor"].action.toggled.connect(self.enable_fps_monitor)
|
189
196
|
# self.toolbar.widgets["import"].action.triggered.connect(
|
190
197
|
# lambda: self.load_config(path=None, gui=True)
|
191
198
|
# )
|
@@ -594,6 +601,8 @@ class BECWaveformWidget(BECWidget, QWidget):
|
|
594
601
|
checked(bool): If True, enable the linear region selector.
|
595
602
|
"""
|
596
603
|
self.waveform.toggle_roi(checked)
|
604
|
+
if self.toolbar.widgets["roi_select"].action.isChecked() != checked:
|
605
|
+
self.toolbar.widgets["roi_select"].action.setChecked(checked)
|
597
606
|
|
598
607
|
def select_roi(self, region: tuple):
|
599
608
|
"""
|
@@ -604,6 +613,17 @@ class BECWaveformWidget(BECWidget, QWidget):
|
|
604
613
|
"""
|
605
614
|
self.waveform.select_roi(region)
|
606
615
|
|
616
|
+
def enable_fps_monitor(self, enabled: bool):
|
617
|
+
"""
|
618
|
+
Enable the FPS monitor of the plot widget.
|
619
|
+
|
620
|
+
Args:
|
621
|
+
enabled(bool): If True, enable the FPS monitor.
|
622
|
+
"""
|
623
|
+
self.waveform.enable_fps_monitor(enabled)
|
624
|
+
if self.toolbar.widgets["fps_monitor"].action.isChecked() != enabled:
|
625
|
+
self.toolbar.widgets["fps_monitor"].action.setChecked(enabled)
|
626
|
+
|
607
627
|
@SafeSlot()
|
608
628
|
def _auto_range_from_toolbar(self):
|
609
629
|
"""
|
@@ -2,11 +2,11 @@
|
|
2
2
|
.gitlab-ci.yml,sha256=Dc1iDjsc72UxdUtihx4uSZU0lrTQeR8hZwGx1MQBfKE,8432
|
3
3
|
.pylintrc,sha256=eeY8YwSI74oFfq6IYIbCqnx3Vk8ZncKaatv96n_Y8Rs,18544
|
4
4
|
.readthedocs.yaml,sha256=aSOc277LqXcsTI6lgvm_JY80lMlr69GbPKgivua2cS0,603
|
5
|
-
CHANGELOG.md,sha256=
|
5
|
+
CHANGELOG.md,sha256=P2FvQRmkrzZeRyx-2Okb6dqpPawiUEEua4eQjG0ffNI,7492
|
6
6
|
LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
|
7
|
-
PKG-INFO,sha256=
|
7
|
+
PKG-INFO,sha256=qzAx_QzNjl7iO4_f8Bz9YYq3XG9n3Lv2VGGKUY5X48M,1334
|
8
8
|
README.md,sha256=Od69x-RS85Hph0-WwWACwal4yUd67XkEn4APEfHhHFw,2649
|
9
|
-
pyproject.toml,sha256=
|
9
|
+
pyproject.toml,sha256=kyGOtgZp4UfDCXDm7NnGWUox2z3FHW5lri9ZUU-g3Yg,2594
|
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
|
@@ -24,7 +24,7 @@ bec_widgets/assets/app_icons/alignment_1d.png,sha256=5VouaWieb4lVv3wUBNHaO5ovUW2
|
|
24
24
|
bec_widgets/assets/app_icons/bec_widgets_icon.png,sha256=K8dgGwIjalDh9PRHUsSQBqgdX7a00nM3igZdc20pkYM,1747017
|
25
25
|
bec_widgets/cli/__init__.py,sha256=d0Q6Fn44e7wFfLabDOBxpcJ1DPKWlFunGYDUBmO-4hA,22
|
26
26
|
bec_widgets/cli/auto_updates.py,sha256=DwzRChcFIWPH2kCYvp8H7dXvyYSKGYv6LwCmK2sDR2E,5676
|
27
|
-
bec_widgets/cli/client.py,sha256=
|
27
|
+
bec_widgets/cli/client.py,sha256=5fPUNDWvzBii-0oMOL76IhKffN88q1vbrx2P7Uh90TE,83195
|
28
28
|
bec_widgets/cli/client_utils.py,sha256=EdDfo3uuYAWtZiDGGu3_GPnl94FSLkNG2N_4I9FNfMc,11809
|
29
29
|
bec_widgets/cli/generate_cli.py,sha256=C5SOlUeDzFgEptgpa5vdiF6c-YILLcfILZZtk9jr_H0,6637
|
30
30
|
bec_widgets/cli/rpc_register.py,sha256=QxXUZu5XNg00Yf5O3UHWOXg3-f_pzKjjoZYMOa-MOJc,2216
|
@@ -62,6 +62,7 @@ bec_widgets/utils/colors.py,sha256=aUQkDMTRjTjS9lQfgO5NrUllU2r4ygDTTSUROtTBX90,1
|
|
62
62
|
bec_widgets/utils/container_utils.py,sha256=0wr3ZfuMiAFKCrQHVjxjw-Vuk8wsHdridqcjy2eY840,1531
|
63
63
|
bec_widgets/utils/crosshair.py,sha256=8lik9k69WI2WMj5FGLbrKtny9duxqXUJAhpX8tHoyp0,11543
|
64
64
|
bec_widgets/utils/entry_validator.py,sha256=3skJIsUwTYicT76AMHm_M78RiWtUgyD2zb-Rxo2HdHQ,1313
|
65
|
+
bec_widgets/utils/fps_counter.py,sha256=seuCWwiNP5q2e2OEztloa66pNb3Sygh-0lEHAcYaDfc,2612
|
65
66
|
bec_widgets/utils/generate_designer_plugin.py,sha256=eidqauS8YLgoxkPntPL0oSG_lYqI2D7fSyOZvOtCU_U,5891
|
66
67
|
bec_widgets/utils/layout_manager.py,sha256=H0nKsIMaPxRkof1MEXlSmW6w1dFxA6astaGzf4stI84,4727
|
67
68
|
bec_widgets/utils/linear_region_selector.py,sha256=83qMSGnxCePdI5UL8_M4sMeK_BU9sZBzcw0o3Z_Jgxw,3286
|
@@ -163,20 +164,20 @@ bec_widgets/widgets/figure/figure.py,sha256=IzQaV_9utjViJyjMydOa3-EJ9k-FVG2PTVm8
|
|
163
164
|
bec_widgets/widgets/figure/plots/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
164
165
|
bec_widgets/widgets/figure/plots/axis_settings.py,sha256=grgrX4t4eAzccW4jj4HYtMSxy8Wgcd9N9J1aU7UHtIs,3723
|
165
166
|
bec_widgets/widgets/figure/plots/axis_settings.ui,sha256=ye-guaRU_jhu7sHZS-9AjBjLrCtA1msOD0dszu4o9x8,11785
|
166
|
-
bec_widgets/widgets/figure/plots/plot_base.py,sha256=
|
167
|
+
bec_widgets/widgets/figure/plots/plot_base.py,sha256=FIPvigIHenScR3T1NitRdlY_CXJmuAjCY8fv3GQzrRM,18053
|
167
168
|
bec_widgets/widgets/figure/plots/image/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
168
|
-
bec_widgets/widgets/figure/plots/image/image.py,sha256=
|
169
|
-
bec_widgets/widgets/figure/plots/image/image_item.py,sha256=
|
169
|
+
bec_widgets/widgets/figure/plots/image/image.py,sha256=FmvVVKLtMOAvaRL1tF30KLO0yQVCZqxCqydQIesKgdc,25044
|
170
|
+
bec_widgets/widgets/figure/plots/image/image_item.py,sha256=TwHo6FwCiQgJBdr-KKy_7Y_vYSB0pPjBl1AubuZSrE0,11002
|
170
171
|
bec_widgets/widgets/figure/plots/image/image_processor.py,sha256=GeTtWjbldy6VejMwPGQgM-o3d6bmLglCjdoktu19xfA,5262
|
171
172
|
bec_widgets/widgets/figure/plots/motor_map/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
172
173
|
bec_widgets/widgets/figure/plots/motor_map/motor_map.py,sha256=AiDq4bmcEoj9PlkRQtHCk-5cwvOFGPBcfxPNNr8E53Y,18399
|
173
174
|
bec_widgets/widgets/figure/plots/waveform/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
174
|
-
bec_widgets/widgets/figure/plots/waveform/waveform.py,sha256=
|
175
|
+
bec_widgets/widgets/figure/plots/waveform/waveform.py,sha256=WmFOwtDL5i7RSamB2B-PQS3T8BaKv-pv2Mp2ggh-t3U,56738
|
175
176
|
bec_widgets/widgets/figure/plots/waveform/waveform_curve.py,sha256=RUo4GfXwlaCei8BBvWBQF3IEB8h-KgpvaHur6JUvT6s,8682
|
176
177
|
bec_widgets/widgets/image/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
177
178
|
bec_widgets/widgets/image/bec_image_widget.pyproject,sha256=PHisdBo5_5UCApd27GkizzqgfdjsDx2bFZa_p9LiSW8,30
|
178
179
|
bec_widgets/widgets/image/bec_image_widget_plugin.py,sha256=3nOHJTukHsEkaCLAivPHIY4qdshAj86LUKb5fYF3C-Y,1369
|
179
|
-
bec_widgets/widgets/image/image_widget.py,sha256=
|
180
|
+
bec_widgets/widgets/image/image_widget.py,sha256=va8IwMWgKUhtmmig2npFjVWJgTnIdnGMFhqFHuoQvWo,17040
|
180
181
|
bec_widgets/widgets/image/register_bec_image_widget.py,sha256=01YLZQTMSSIXvH1TSL-1AYsRs1a4EbSwKLVAwh9AjeA,478
|
181
182
|
bec_widgets/widgets/jupyter_console/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
182
183
|
bec_widgets/widgets/jupyter_console/jupyter_console.py,sha256=-e7HQOECeH5eDrJYh4BFIzRL78LDkooU4otabyN0aX4,2343
|
@@ -252,7 +253,7 @@ bec_widgets/widgets/waveform/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NM
|
|
252
253
|
bec_widgets/widgets/waveform/bec_waveform_widget.pyproject,sha256=GLD8GN9dXx9wNbtnevrxqqcwk7vKV-Uv8QYSycdaoaI,33
|
253
254
|
bec_widgets/widgets/waveform/bec_waveform_widget_plugin.py,sha256=qSQTeCzIUn8rgDkjIM47Rr3-fqg1uk8rDf_lCoY9gZw,1402
|
254
255
|
bec_widgets/widgets/waveform/register_bec_waveform_widget.py,sha256=qZHVZH_lP2hvzkG1Ra0EyrXlMeLkRCy0aceH-bfJ1cs,490
|
255
|
-
bec_widgets/widgets/waveform/waveform_widget.py,sha256=
|
256
|
+
bec_widgets/widgets/waveform/waveform_widget.py,sha256=HnBRkAPecKV1U_gqLF6seyQnNcqFeR3D4olLqNeNQAw,25664
|
256
257
|
bec_widgets/widgets/waveform/waveform_popups/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
257
258
|
bec_widgets/widgets/waveform/waveform_popups/curve_dialog/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
258
259
|
bec_widgets/widgets/waveform/waveform_popups/curve_dialog/curve_dialog.py,sha256=VxbAtI_ZLfkrkTXqImQcNPwKDqFRWEj-vI8v6mmVMJ8,13025
|
@@ -264,8 +265,8 @@ bec_widgets/widgets/website/register_website_widget.py,sha256=LIQJpV9uqcBiPR9cEA
|
|
264
265
|
bec_widgets/widgets/website/website.py,sha256=42pncCc_zI2eqeMArIurVmPUukRo5bTxa2h1Skah-io,3012
|
265
266
|
bec_widgets/widgets/website/website_widget.pyproject,sha256=scOiV3cV1_BjbzpPzy2N8rIJL5P2qIZz8ObTJ-Uvdtg,25
|
266
267
|
bec_widgets/widgets/website/website_widget_plugin.py,sha256=pz38_C2cZ0yvPPS02wdIPcmhFo_yiwUhflsASocAPQQ,1341
|
267
|
-
bec_widgets-0.
|
268
|
-
bec_widgets-0.
|
269
|
-
bec_widgets-0.
|
270
|
-
bec_widgets-0.
|
271
|
-
bec_widgets-0.
|
268
|
+
bec_widgets-0.117.0.dist-info/METADATA,sha256=qzAx_QzNjl7iO4_f8Bz9YYq3XG9n3Lv2VGGKUY5X48M,1334
|
269
|
+
bec_widgets-0.117.0.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
|
270
|
+
bec_widgets-0.117.0.dist-info/entry_points.txt,sha256=dItMzmwA1wizJ1Itx15qnfJ0ZzKVYFLVJ1voxT7K7D4,214
|
271
|
+
bec_widgets-0.117.0.dist-info/licenses/LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
|
272
|
+
bec_widgets-0.117.0.dist-info/RECORD,,
|
pyproject.toml
CHANGED
File without changes
|
File without changes
|
File without changes
|