bec-widgets 2.0.2__py3-none-any.whl → 2.1.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.
- .gitlab-ci.yml +17 -3
- CHANGELOG.md +49 -0
- PKG-INFO +3 -2
- bec_widgets/applications/launch_window.py +4 -4
- bec_widgets/cli/client.py +3 -3
- bec_widgets/cli/generate_cli.py +5 -5
- bec_widgets/utils/bec_plugin_helper.py +1 -1
- bec_widgets/utils/bec_signal_proxy.py +2 -2
- bec_widgets/utils/container_utils.py +35 -3
- bec_widgets/utils/error_popups.py +21 -7
- bec_widgets/utils/linear_region_selector.py +2 -2
- bec_widgets/widgets/containers/dock/dock.py +1 -5
- bec_widgets/widgets/containers/dock/dock_area.py +2 -5
- bec_widgets/widgets/control/device_control/positioner_group/positioner_group.py +1 -1
- bec_widgets/widgets/dap/dap_combo_box/dap_combo_box.py +1 -1
- bec_widgets/widgets/editors/console/console.py +12 -12
- bec_widgets/widgets/plots/image/image_item.py +2 -2
- bec_widgets/widgets/services/bec_status_box/status_item.py +1 -1
- bec_widgets/widgets/utility/logpanel/_util.py +1 -1
- bec_widgets/widgets/utility/visual/colormap_widget/colormap_widget.py +19 -1
- {bec_widgets-2.0.2.dist-info → bec_widgets-2.1.0.dist-info}/METADATA +3 -2
- {bec_widgets-2.0.2.dist-info → bec_widgets-2.1.0.dist-info}/RECORD +26 -26
- pyproject.toml +3 -2
- {bec_widgets-2.0.2.dist-info → bec_widgets-2.1.0.dist-info}/WHEEL +0 -0
- {bec_widgets-2.0.2.dist-info → bec_widgets-2.1.0.dist-info}/entry_points.txt +0 -0
- {bec_widgets-2.0.2.dist-info → bec_widgets-2.1.0.dist-info}/licenses/LICENSE +0 -0
.gitlab-ci.yml
CHANGED
@@ -13,7 +13,7 @@ variables:
|
|
13
13
|
value: main
|
14
14
|
CHILD_PIPELINE_BRANCH: $CI_DEFAULT_BRANCH
|
15
15
|
CHECK_PKG_VERSIONS:
|
16
|
-
description: Whether to run additional tests against min/max/random selection of dependencies. Set to 1 for running.
|
16
|
+
description: Whether to run additional tests against min/max/random selection of dependencies. Set to 1 for running.
|
17
17
|
value: 0
|
18
18
|
|
19
19
|
workflow:
|
@@ -77,7 +77,7 @@ formatter:
|
|
77
77
|
stage: Formatter
|
78
78
|
needs: []
|
79
79
|
script:
|
80
|
-
- pip install
|
80
|
+
- pip install -e ./[dev]
|
81
81
|
- isort --check --diff --line-length=100 --profile=black --multi-line=3 --trailing-comma ./
|
82
82
|
- black --check --diff --color --line-length=100 --skip-magic-trailing-comma ./
|
83
83
|
rules:
|
@@ -162,6 +162,20 @@ tests:
|
|
162
162
|
- tests/reference_failures/
|
163
163
|
when: always
|
164
164
|
|
165
|
+
generate-client-check:
|
166
|
+
stage: test
|
167
|
+
needs: []
|
168
|
+
variables:
|
169
|
+
QT_QPA_PLATFORM: "offscreen"
|
170
|
+
script:
|
171
|
+
- *clone-repos
|
172
|
+
- *install-os-packages
|
173
|
+
- *install-repos
|
174
|
+
- pip install -e .[dev,pyside6]
|
175
|
+
- bw-generate-cli --target bec_widgets
|
176
|
+
# if there are changes in the generated files, fail the job
|
177
|
+
- git diff --exit-code
|
178
|
+
|
165
179
|
test-matrix:
|
166
180
|
parallel:
|
167
181
|
matrix:
|
@@ -231,7 +245,7 @@ end-2-end-conda:
|
|
231
245
|
- if: '$CI_PIPELINE_SOURCE == "parent_pipeline"'
|
232
246
|
- if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main"'
|
233
247
|
- if: '$CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "production"'
|
234
|
-
- if:
|
248
|
+
- if: "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME =~ /^pre_release.*$/"
|
235
249
|
|
236
250
|
semver:
|
237
251
|
stage: Deploy
|
CHANGELOG.md
CHANGED
@@ -1,6 +1,55 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
3
|
|
4
|
+
## v2.1.0 (2025-05-05)
|
5
|
+
|
6
|
+
### Bug Fixes
|
7
|
+
|
8
|
+
- Ensure rpc object do not collide with protected names
|
9
|
+
([`94463af`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/94463afdba11fe2da5958a371ef49572889b8622))
|
10
|
+
|
11
|
+
### Chores
|
12
|
+
|
13
|
+
- **formatter**: Upgrade to black v25
|
14
|
+
([`452124b`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/452124b528c41db14d1e34ab98db95f6f7230ad6))
|
15
|
+
|
16
|
+
### Continuous Integration
|
17
|
+
|
18
|
+
- Install dev dependencies for formatter
|
19
|
+
([`fff4af2`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/fff4af2489bdea0cf4f6f8db68db59fba411c25e))
|
20
|
+
|
21
|
+
### Features
|
22
|
+
|
23
|
+
- **SafeSlot**: Slot parameters can be overridden with kwarg; add option to raise
|
24
|
+
([`9387275`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/93872758517177503b1f868376a6095670131844))
|
25
|
+
|
26
|
+
### Refactoring
|
27
|
+
|
28
|
+
- **colormap_widget**: Widget is rounded
|
29
|
+
([`02563b1`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/02563b10f3c90bddc069446dfe4137aa5a9727cb))
|
30
|
+
|
31
|
+
### Testing
|
32
|
+
|
33
|
+
- **Dock**: Add validation for new dock creation with invalid name
|
34
|
+
([`c16b9dc`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/c16b9dce9ce629b794d731cd7f3282a59f8b8c59))
|
35
|
+
|
36
|
+
|
37
|
+
## v2.0.3 (2025-05-02)
|
38
|
+
|
39
|
+
### Bug Fixes
|
40
|
+
|
41
|
+
- **generate_cli**: Apply isort config
|
42
|
+
([`770dbd4`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/770dbd4b63baba588871a4d4ffa77d44872d085b))
|
43
|
+
|
44
|
+
- **image_item**: Wrong user access name for rotation
|
45
|
+
([`58a0bc7`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/58a0bc79742e7e7578988711a9840ed6041d9a69))
|
46
|
+
|
47
|
+
### Continuous Integration
|
48
|
+
|
49
|
+
- Add job to test that the generated client is up to date
|
50
|
+
([`d22035f`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/d22035f8974ac51ae1b6efc0e2b3749ca0a674ff))
|
51
|
+
|
52
|
+
|
4
53
|
## v2.0.2 (2025-05-01)
|
5
54
|
|
6
55
|
### Bug Fixes
|
PKG-INFO
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: bec_widgets
|
3
|
-
Version: 2.0
|
3
|
+
Version: 2.1.0
|
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
|
@@ -12,7 +12,7 @@ Requires-Python: >=3.10
|
|
12
12
|
Requires-Dist: bec-ipython-client<=4.0,>=2.21.4
|
13
13
|
Requires-Dist: bec-lib<=4.0,>=3.29
|
14
14
|
Requires-Dist: bec-qthemes>=0.7,~=0.7
|
15
|
-
Requires-Dist: black~=
|
15
|
+
Requires-Dist: black~=25.0
|
16
16
|
Requires-Dist: isort>=5.13.2,~=5.13
|
17
17
|
Requires-Dist: pydantic~=2.0
|
18
18
|
Requires-Dist: pyqtgraph~=0.13
|
@@ -23,6 +23,7 @@ Requires-Dist: qtpy~=2.4
|
|
23
23
|
Provides-Extra: dev
|
24
24
|
Requires-Dist: coverage~=7.0; extra == 'dev'
|
25
25
|
Requires-Dist: fakeredis>=2.23.2,~=2.23; extra == 'dev'
|
26
|
+
Requires-Dist: isort>=5.13.2,~=5.13; extra == 'dev'
|
26
27
|
Requires-Dist: pytest-bec-e2e<=4.0,>=2.21.4; extra == 'dev'
|
27
28
|
Requires-Dist: pytest-qt~=4.4; extra == 'dev'
|
28
29
|
Requires-Dist: pytest-random-order~=1.1; extra == 'dev'
|
@@ -235,10 +235,8 @@ class LaunchWindow(BECMainWindow):
|
|
235
235
|
raise ValueError(
|
236
236
|
f"Name {name} must be unique for dock areas, but already exists: {existing_dock_areas}."
|
237
237
|
)
|
238
|
-
|
239
|
-
|
240
|
-
f"Name {name} contains invalid characters. Only alphanumeric characters, underscores, and dashes are allowed."
|
241
|
-
)
|
238
|
+
WidgetContainerUtils.raise_for_invalid_name(name)
|
239
|
+
|
242
240
|
else:
|
243
241
|
name = "dock_area"
|
244
242
|
name = WidgetContainerUtils.generate_unique_name(name, existing_dock_areas)
|
@@ -284,6 +282,8 @@ class LaunchWindow(BECMainWindow):
|
|
284
282
|
raise ValueError("UI file must be provided for custom UI file launch.")
|
285
283
|
filename = os.path.basename(ui_file).split(".")[0]
|
286
284
|
|
285
|
+
WidgetContainerUtils.raise_for_invalid_name(filename)
|
286
|
+
|
287
287
|
tree = ET.parse(ui_file)
|
288
288
|
root = tree.getroot()
|
289
289
|
# Check if the top-level widget is a QMainWindow
|
bec_widgets/cli/client.py
CHANGED
@@ -1317,14 +1317,14 @@ class ImageItem(RPCBase):
|
|
1317
1317
|
|
1318
1318
|
@property
|
1319
1319
|
@rpc_call
|
1320
|
-
def
|
1320
|
+
def num_rotation_90(self) -> "Optional[int]":
|
1321
1321
|
"""
|
1322
1322
|
Get or set the number of 90° rotations to apply.
|
1323
1323
|
"""
|
1324
1324
|
|
1325
|
-
@
|
1325
|
+
@num_rotation_90.setter
|
1326
1326
|
@rpc_call
|
1327
|
-
def
|
1327
|
+
def num_rotation_90(self) -> "Optional[int]":
|
1328
1328
|
"""
|
1329
1329
|
Get or set the number of 90° rotations to apply.
|
1330
1330
|
"""
|
bec_widgets/cli/generate_cli.py
CHANGED
@@ -222,18 +222,18 @@ class {class_name}(RPCBase):"""
|
|
222
222
|
# Combine header and content, then format with black
|
223
223
|
full_content = self.header + "\n" + self.content
|
224
224
|
try:
|
225
|
-
formatted_content = black.format_str(full_content, mode=black.
|
225
|
+
formatted_content = black.format_str(full_content, mode=black.Mode(line_length=100))
|
226
226
|
except black.NothingChanged:
|
227
227
|
formatted_content = full_content
|
228
228
|
|
229
|
-
isort.Config(
|
229
|
+
config = isort.Config(
|
230
230
|
profile="black",
|
231
231
|
line_length=100,
|
232
232
|
multi_line_output=3,
|
233
|
-
include_trailing_comma=
|
233
|
+
include_trailing_comma=False,
|
234
234
|
known_first_party=["bec_widgets"],
|
235
235
|
)
|
236
|
-
formatted_content = isort.code(formatted_content)
|
236
|
+
formatted_content = isort.code(formatted_content, config=config)
|
237
237
|
|
238
238
|
with open(file_name, "w", encoding="utf-8") as file:
|
239
239
|
file.write(formatted_content)
|
@@ -318,5 +318,5 @@ def main():
|
|
318
318
|
if __name__ == "__main__": # pragma: no cover
|
319
319
|
import sys
|
320
320
|
|
321
|
-
sys.argv = ["bw-generate-cli", "--target", "
|
321
|
+
sys.argv = ["bw-generate-cli", "--target", "bec_widgets"]
|
322
322
|
main()
|
@@ -21,7 +21,7 @@ def _submodule_specs(module: ModuleType) -> tuple[ModuleSpec | None, ...]:
|
|
21
21
|
|
22
22
|
|
23
23
|
def _loaded_submodules_from_specs(
|
24
|
-
submodule_specs: tuple[ModuleSpec | None, ...]
|
24
|
+
submodule_specs: tuple[ModuleSpec | None, ...],
|
25
25
|
) -> Generator[ModuleType, None, None]:
|
26
26
|
"""Load all submodules from the given specs."""
|
27
27
|
for submodule in (
|
@@ -1,6 +1,6 @@
|
|
1
|
-
"""
|
1
|
+
"""This custom class is a thin wrapper around the SignalProxy class to allow signal calls to be blocked.
|
2
2
|
Unblocking the proxy needs to be done through the slot unblock_proxy. The most likely use case for this class is
|
3
|
-
when the callback function is potentially initiating a slower progress, i.e. requesting a data analysis routine to
|
3
|
+
when the callback function is potentially initiating a slower progress, i.e. requesting a data analysis routine to
|
4
4
|
analyse data. Requesting a new fit may lead to request piling up and an overall slow done of performance. This proxy
|
5
5
|
will allow you to decide by yourself when to unblock and execute the callback again."""
|
6
6
|
|
@@ -1,11 +1,10 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
|
-
import
|
4
|
-
from typing import Literal, Type
|
3
|
+
from typing import Any, Type
|
5
4
|
|
6
5
|
from qtpy.QtWidgets import QWidget
|
7
6
|
|
8
|
-
from bec_widgets.cli.
|
7
|
+
from bec_widgets.cli.client_utils import BECGuiClient
|
9
8
|
|
10
9
|
|
11
10
|
class WidgetContainerUtils:
|
@@ -73,3 +72,36 @@ class WidgetContainerUtils:
|
|
73
72
|
return None
|
74
73
|
else:
|
75
74
|
raise ValueError(f"No widget of class {widget_class} found.")
|
75
|
+
|
76
|
+
@staticmethod
|
77
|
+
def name_is_protected(name: str, container: Any = None) -> bool:
|
78
|
+
"""
|
79
|
+
Check if the name is not protected.
|
80
|
+
|
81
|
+
Args:
|
82
|
+
name(str): The name to be checked.
|
83
|
+
|
84
|
+
Returns:
|
85
|
+
bool: True if the name is not protected, False otherwise.
|
86
|
+
"""
|
87
|
+
if container is None:
|
88
|
+
container = BECGuiClient
|
89
|
+
gui_client_methods = set(filter(lambda x: not x.startswith("_"), dir(container)))
|
90
|
+
return name in gui_client_methods
|
91
|
+
|
92
|
+
@staticmethod
|
93
|
+
def raise_for_invalid_name(name: str, container: Any = None) -> None:
|
94
|
+
"""
|
95
|
+
Check if the name is valid. If not, raise a ValueError.
|
96
|
+
|
97
|
+
Args:
|
98
|
+
name(str): The name to be checked.
|
99
|
+
Raises:
|
100
|
+
ValueError: If the name is not valid.
|
101
|
+
"""
|
102
|
+
if not WidgetContainerUtils.has_name_valid_chars(name):
|
103
|
+
raise ValueError(
|
104
|
+
f"Name '{name}' contains invalid characters. Only alphanumeric characters, underscores, and dashes are allowed."
|
105
|
+
)
|
106
|
+
if WidgetContainerUtils.name_is_protected(name, container):
|
107
|
+
raise ValueError(f"Name '{name}' is protected. Please choose another name.")
|
@@ -99,16 +99,30 @@ def SafeSlot(*slot_args, **slot_kwargs): # pylint: disable=invalid-name
|
|
99
99
|
'verify_sender' keyword argument can be passed with boolean value if the sender should be verified
|
100
100
|
before executing the slot. If True, the slot will only execute if the sender is a QObject. This is
|
101
101
|
useful to prevent function calls from already deleted objects.
|
102
|
+
'raise_error' keyword argument can be passed with boolean value if the error should be raised
|
103
|
+
after the error is displayed. This is useful to propagate the error to the caller but should be used
|
104
|
+
with great care to avoid segfaults.
|
105
|
+
|
106
|
+
The keywords above are stored in a container which can be overridden by passing
|
107
|
+
'_override_slot_params' keyword argument with a dictionary containing the keywords to override.
|
108
|
+
This is useful to override the default behavior of the decorator for a specific function call.
|
109
|
+
|
102
110
|
"""
|
103
|
-
|
104
|
-
|
111
|
+
_slot_params = {
|
112
|
+
"popup_error": bool(slot_kwargs.pop("popup_error", False)),
|
113
|
+
"verify_sender": bool(slot_kwargs.pop("verify_sender", False)),
|
114
|
+
"raise_error": bool(slot_kwargs.pop("raise_error", False)),
|
115
|
+
}
|
105
116
|
|
106
117
|
def error_managed(method):
|
107
118
|
@Slot(*slot_args, **slot_kwargs)
|
108
119
|
@functools.wraps(method)
|
109
120
|
def wrapper(*args, **kwargs):
|
121
|
+
|
122
|
+
_override_slot_params = kwargs.pop("_override_slot_params", {})
|
123
|
+
_slot_params.update(_override_slot_params)
|
110
124
|
try:
|
111
|
-
if not verify_sender or len(args) == 0:
|
125
|
+
if not _slot_params["verify_sender"] or len(args) == 0:
|
112
126
|
return method(*args, **kwargs)
|
113
127
|
|
114
128
|
_instance = args[0]
|
@@ -126,11 +140,11 @@ def SafeSlot(*slot_args, **slot_kwargs): # pylint: disable=invalid-name
|
|
126
140
|
except Exception:
|
127
141
|
slot_name = f"{method.__module__}.{method.__qualname__}"
|
128
142
|
error_msg = traceback.format_exc()
|
129
|
-
if popup_error:
|
130
|
-
ErrorPopupUtility().custom_exception_hook(
|
131
|
-
*sys.exc_info(), popup_error=popup_error
|
132
|
-
)
|
143
|
+
if _slot_params["popup_error"]:
|
144
|
+
ErrorPopupUtility().custom_exception_hook(*sys.exc_info(), popup_error=True)
|
133
145
|
logger.error(f"SafeSlot error in slot '{slot_name}':\n{error_msg}")
|
146
|
+
if _slot_params["raise_error"]:
|
147
|
+
raise
|
134
148
|
|
135
149
|
return wrapper
|
136
150
|
|
@@ -1,5 +1,5 @@
|
|
1
|
-
"""
|
2
|
-
The class is mainly designed for usage with the BECWaveform and 1D plots.
|
1
|
+
"""Module for a thin wrapper (LinearRegionWrapper) around the LinearRegionItem in pyqtgraph.
|
2
|
+
The class is mainly designed for usage with the BECWaveform and 1D plots."""
|
3
3
|
|
4
4
|
from __future__ import annotations
|
5
5
|
|
@@ -303,11 +303,7 @@ class BECDock(BECWidget, Dock):
|
|
303
303
|
shift(Literal["down", "up", "left", "right"]): The direction to shift the widgets if the position is occupied.
|
304
304
|
"""
|
305
305
|
if name is not None:
|
306
|
-
|
307
|
-
raise ValueError(
|
308
|
-
f"Name {name} contains invalid characters. "
|
309
|
-
f"Only alphanumeric characters and underscores are allowed."
|
310
|
-
)
|
306
|
+
WidgetContainerUtils.raise_for_invalid_name(name, container=self)
|
311
307
|
|
312
308
|
if row is None:
|
313
309
|
row = self.layout.rowCount()
|
@@ -366,11 +366,8 @@ class BECDockArea(BECWidget, QWidget):
|
|
366
366
|
f"Name {name} must be unique for docks, but already exists in DockArea "
|
367
367
|
f"with name: {self.object_name} and id {self.gui_id}."
|
368
368
|
)
|
369
|
-
|
370
|
-
|
371
|
-
f"Name {name} contains invalid characters. "
|
372
|
-
f"Only alphanumeric characters and underscores are allowed."
|
373
|
-
)
|
369
|
+
WidgetContainerUtils.raise_for_invalid_name(name, container=self)
|
370
|
+
|
374
371
|
else: # Name is not provided
|
375
372
|
name = WidgetContainerUtils.generate_unique_name(name="dock", list_of_names=dock_names)
|
376
373
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
"""
|
2
|
-
BECConsole is a Qt widget that runs a Bash shell.
|
2
|
+
BECConsole is a Qt widget that runs a Bash shell.
|
3
3
|
|
4
4
|
BECConsole VT100 emulation is powered by Pyte,
|
5
5
|
(https://github.com/selectel/pyte).
|
@@ -56,12 +56,12 @@ control_keys_mapping = {
|
|
56
56
|
QtCore.Qt.Key_G: b"\x07", # Ctrl-G (Bell)
|
57
57
|
QtCore.Qt.Key_H: b"\x08", # Ctrl-H (Backspace)
|
58
58
|
QtCore.Qt.Key_I: b"\x09", # Ctrl-I (Tab)
|
59
|
-
QtCore.Qt.Key_J: b"\
|
60
|
-
QtCore.Qt.Key_K: b"\
|
61
|
-
QtCore.Qt.Key_L: b"\
|
62
|
-
QtCore.Qt.Key_M: b"\
|
63
|
-
QtCore.Qt.Key_N: b"\
|
64
|
-
QtCore.Qt.Key_O: b"\
|
59
|
+
QtCore.Qt.Key_J: b"\x0a", # Ctrl-J (Line Feed)
|
60
|
+
QtCore.Qt.Key_K: b"\x0b", # Ctrl-K (Vertical Tab)
|
61
|
+
QtCore.Qt.Key_L: b"\x0c", # Ctrl-L (Form Feed)
|
62
|
+
QtCore.Qt.Key_M: b"\x0d", # Ctrl-M (Carriage Return)
|
63
|
+
QtCore.Qt.Key_N: b"\x0e", # Ctrl-N
|
64
|
+
QtCore.Qt.Key_O: b"\x0f", # Ctrl-O
|
65
65
|
QtCore.Qt.Key_P: b"\x10", # Ctrl-P
|
66
66
|
QtCore.Qt.Key_Q: b"\x11", # Ctrl-Q
|
67
67
|
QtCore.Qt.Key_R: b"\x12", # Ctrl-R
|
@@ -72,10 +72,10 @@ control_keys_mapping = {
|
|
72
72
|
QtCore.Qt.Key_W: b"\x17", # Ctrl-W
|
73
73
|
QtCore.Qt.Key_X: b"\x18", # Ctrl-X
|
74
74
|
QtCore.Qt.Key_Y: b"\x19", # Ctrl-Y
|
75
|
-
QtCore.Qt.Key_Z: b"\
|
76
|
-
QtCore.Qt.Key_Escape: b"\
|
77
|
-
QtCore.Qt.Key_Backslash: b"\
|
78
|
-
QtCore.Qt.Key_Underscore: b"\
|
75
|
+
QtCore.Qt.Key_Z: b"\x1a", # Ctrl-Z
|
76
|
+
QtCore.Qt.Key_Escape: b"\x1b", # Ctrl-Escape
|
77
|
+
QtCore.Qt.Key_Backslash: b"\x1c", # Ctrl-\
|
78
|
+
QtCore.Qt.Key_Underscore: b"\x1f", # Ctrl-_
|
79
79
|
}
|
80
80
|
|
81
81
|
normal_keys_mapping = {
|
@@ -89,7 +89,7 @@ normal_keys_mapping = {
|
|
89
89
|
QtCore.Qt.Key_Left: b"\x02",
|
90
90
|
QtCore.Qt.Key_Up: b"\x10",
|
91
91
|
QtCore.Qt.Key_Right: b"\x06",
|
92
|
-
QtCore.Qt.Key_Down: b"\
|
92
|
+
QtCore.Qt.Key_Down: b"\x0e",
|
93
93
|
QtCore.Qt.Key_PageUp: b"\x49",
|
94
94
|
QtCore.Qt.Key_PageDown: b"\x51",
|
95
95
|
QtCore.Qt.Key_F1: b"\x1b\x31",
|
@@ -1,4 +1,5 @@
|
|
1
1
|
from pyqtgraph.widgets.ColorMapButton import ColorMapButton
|
2
|
+
from qtpy import QtCore, QtGui
|
2
3
|
from qtpy.QtCore import Property, Signal, Slot
|
3
4
|
from qtpy.QtWidgets import QSizePolicy, QVBoxLayout, QWidget
|
4
5
|
|
@@ -6,6 +7,23 @@ from bec_widgets.utils import Colors
|
|
6
7
|
from bec_widgets.utils.bec_widget import BECWidget
|
7
8
|
|
8
9
|
|
10
|
+
class RoundedColorMapButton(ColorMapButton):
|
11
|
+
"""Thin wrapper around pyqtgraph ColorMapButton to add rounded clipping."""
|
12
|
+
|
13
|
+
def __init__(self, *args, **kwargs):
|
14
|
+
super().__init__(*args, **kwargs)
|
15
|
+
self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
|
16
|
+
|
17
|
+
def paintEvent(self, evt):
|
18
|
+
painter = QtGui.QPainter(self)
|
19
|
+
painter.setRenderHint(QtGui.QPainter.Antialiasing)
|
20
|
+
path = QtGui.QPainterPath()
|
21
|
+
path.addRoundedRect(self.rect(), 8, 8)
|
22
|
+
painter.setClipPath(path)
|
23
|
+
self.paintColorMap(painter, self.contentsRect())
|
24
|
+
painter.end()
|
25
|
+
|
26
|
+
|
9
27
|
class BECColorMapWidget(BECWidget, QWidget):
|
10
28
|
colormap_changed_signal = Signal(str)
|
11
29
|
ICON_NAME = "palette"
|
@@ -15,7 +33,7 @@ class BECColorMapWidget(BECWidget, QWidget):
|
|
15
33
|
def __init__(self, parent=None, cmap: str = "plasma", **kwargs):
|
16
34
|
super().__init__(parent=parent, **kwargs)
|
17
35
|
# Create the ColorMapButton
|
18
|
-
self.button =
|
36
|
+
self.button = RoundedColorMapButton()
|
19
37
|
|
20
38
|
# Set the size policy and minimum width
|
21
39
|
size_policy = QSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: bec_widgets
|
3
|
-
Version: 2.0
|
3
|
+
Version: 2.1.0
|
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
|
@@ -12,7 +12,7 @@ Requires-Python: >=3.10
|
|
12
12
|
Requires-Dist: bec-ipython-client<=4.0,>=2.21.4
|
13
13
|
Requires-Dist: bec-lib<=4.0,>=3.29
|
14
14
|
Requires-Dist: bec-qthemes>=0.7,~=0.7
|
15
|
-
Requires-Dist: black~=
|
15
|
+
Requires-Dist: black~=25.0
|
16
16
|
Requires-Dist: isort>=5.13.2,~=5.13
|
17
17
|
Requires-Dist: pydantic~=2.0
|
18
18
|
Requires-Dist: pyqtgraph~=0.13
|
@@ -23,6 +23,7 @@ Requires-Dist: qtpy~=2.4
|
|
23
23
|
Provides-Extra: dev
|
24
24
|
Requires-Dist: coverage~=7.0; extra == 'dev'
|
25
25
|
Requires-Dist: fakeredis>=2.23.2,~=2.23; extra == 'dev'
|
26
|
+
Requires-Dist: isort>=5.13.2,~=5.13; extra == 'dev'
|
26
27
|
Requires-Dist: pytest-bec-e2e<=4.0,>=2.21.4; extra == 'dev'
|
27
28
|
Requires-Dist: pytest-qt~=4.4; extra == 'dev'
|
28
29
|
Requires-Dist: pytest-random-order~=1.1; extra == 'dev'
|
@@ -1,12 +1,12 @@
|
|
1
1
|
.gitignore,sha256=cMQ1MLmnoR88aMCCJwUyfoTnufzl4-ckmHtlFUqHcT4,3253
|
2
|
-
.gitlab-ci.yml,sha256=
|
2
|
+
.gitlab-ci.yml,sha256=raWZUDLdRkfQT18hNSaxS0C3e0BLaFCtiVISY7UExuE,9514
|
3
3
|
.pylintrc,sha256=eeY8YwSI74oFfq6IYIbCqnx3Vk8ZncKaatv96n_Y8Rs,18544
|
4
4
|
.readthedocs.yaml,sha256=aSOc277LqXcsTI6lgvm_JY80lMlr69GbPKgivua2cS0,603
|
5
|
-
CHANGELOG.md,sha256=
|
5
|
+
CHANGELOG.md,sha256=dKAUndU9I2TKPEIV_FLGY60yd7xdz7zk51xYnvpNYVc,270252
|
6
6
|
LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
|
7
|
-
PKG-INFO,sha256=
|
7
|
+
PKG-INFO,sha256=bd1jIFJCtSLFIuk_OZpNQD3JTAva7u-BnkNDU0yY-IY,1224
|
8
8
|
README.md,sha256=KgdKusjlvEvFtdNZCeDMO91y77MWK2iDcYMDziksOr4,2553
|
9
|
-
pyproject.toml,sha256=
|
9
|
+
pyproject.toml,sha256=vB5noNu7DZBgkqnwU-rOjqzIIrjppKaoVVCREnjM2y0,2568
|
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
|
@@ -15,16 +15,16 @@ pyproject.toml,sha256=I3j9HVYwuUjoAAAfcIuHc-kOhQOyLnekW9ykCcFWsTU,2539
|
|
15
15
|
bec_widgets/__init__.py,sha256=mZhbU6zfFt8-A7q_do74ie89budSevwpKZ6FKtEBdmo,170
|
16
16
|
bec_widgets/applications/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
17
17
|
bec_widgets/applications/bw_launch.py,sha256=4lngXb8Ht_cvQtCwjjbAoqPNuE2V0Ja5WIPHpwgjcRI,687
|
18
|
-
bec_widgets/applications/launch_window.py,sha256=
|
18
|
+
bec_widgets/applications/launch_window.py,sha256=MGkhdLhNODDILuWgBkOhcxe92kWCLUfvemNE3029GDA,15594
|
19
19
|
bec_widgets/assets/app_icons/BEC-General-App.png,sha256=hc2ktly53DZAbl_rE3cb-vdRa5gtdCmBEjfwm2y5P4g,447581
|
20
20
|
bec_widgets/assets/app_icons/alignment_1d.png,sha256=5VouaWieb4lVv3wUBNHaO5ovUW2Fk25aTKYQzOWy0mg,2071069
|
21
21
|
bec_widgets/assets/app_icons/auto_update.png,sha256=YKoAJTWAlWzreYvOm0BttDRFr29tulolZgKirRhAFlA,2197066
|
22
22
|
bec_widgets/assets/app_icons/bec_widgets_icon.png,sha256=K8dgGwIjalDh9PRHUsSQBqgdX7a00nM3igZdc20pkYM,1747017
|
23
23
|
bec_widgets/assets/app_icons/ui_loader_tile.png,sha256=qSK3XHqvnAVGV9Q0ulORcGFbXJ9LDq2uz8l9uTtMsNk,1812476
|
24
24
|
bec_widgets/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
25
|
-
bec_widgets/cli/client.py,sha256
|
25
|
+
bec_widgets/cli/client.py,sha256=kvAdg7lTsS9_w-qnXNf6Zq-WU2jUYbUt8bx-izsbGeY,80036
|
26
26
|
bec_widgets/cli/client_utils.py,sha256=F2hyt--jL53bN8NoWifNUMqwwx5FbpS6I1apERdTRzM,18114
|
27
|
-
bec_widgets/cli/generate_cli.py,sha256=
|
27
|
+
bec_widgets/cli/generate_cli.py,sha256=gxotNNdSs92bjO5B6VjRYbbbQetI1JYwNZZydBziNzk,10951
|
28
28
|
bec_widgets/cli/server.py,sha256=lYEkOaokLbND4KjbXyySzb5nq3YQ6m4L0NAmHAjMCIU,5633
|
29
29
|
bec_widgets/cli/rpc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
30
30
|
bec_widgets/cli/rpc/rpc_base.py,sha256=lqRr3IUqEKNLS_wHYrFbIr824kj6OYH6ky0Lwb-NovU,11130
|
@@ -50,23 +50,23 @@ bec_widgets/utils/__init__.py,sha256=1930ji1Jj6dVuY81Wd2kYBhHYNV-2R0bN_L4o9zBj1U
|
|
50
50
|
bec_widgets/utils/bec_connector.py,sha256=Ao_DN6oiHlpbVDHDK0RLpAgz2zDbhmwYee8yc3y7m2g,18875
|
51
51
|
bec_widgets/utils/bec_designer.py,sha256=rllImDxo7-1diJ7uzesO_qnJv7Euu4lgV7oRYMLDY2U,5319
|
52
52
|
bec_widgets/utils/bec_dispatcher.py,sha256=R0TDylR1ghYzNZj_1DavAEvswbK3iD1bI9IcWWwzhMc,8374
|
53
|
-
bec_widgets/utils/bec_plugin_helper.py,sha256=
|
54
|
-
bec_widgets/utils/bec_signal_proxy.py,sha256=
|
53
|
+
bec_widgets/utils/bec_plugin_helper.py,sha256=efg97QDAqhZYeqE1wk3vEgkFuhNewg4rvJrtB7mRCAE,3139
|
54
|
+
bec_widgets/utils/bec_signal_proxy.py,sha256=Yc08fdBEDABrowwNPSngT9-28R8FD4ml7oTL6BoMyEE,3263
|
55
55
|
bec_widgets/utils/bec_table.py,sha256=nA2b8ukSeUfquFMAxGrUVOqdrzMoDYD6O_4EYbOG2zk,717
|
56
56
|
bec_widgets/utils/bec_widget.py,sha256=jS888GioWKIJafMq5r1YhJ4vgORqiw0qHbxeSbE0Aec,4119
|
57
57
|
bec_widgets/utils/collapsible_panel_manager.py,sha256=tvv77-9YTfYpsU6M_Le3bHR6wtANC83DEOrJ2Hhj6rs,14201
|
58
58
|
bec_widgets/utils/colors.py,sha256=4Oms3kcstf7-WddGMB2TZXPqJwFMGVjFyBO8tHZHnxk,18308
|
59
59
|
bec_widgets/utils/compact_popup.py,sha256=xVK_lQqL5Hy1ZnUzHXB8GU-Ru-mXevKcdM8ync3ssiA,10269
|
60
|
-
bec_widgets/utils/container_utils.py,sha256=
|
60
|
+
bec_widgets/utils/container_utils.py,sha256=J8YXombOlAPa3M8NGZdhntp2NirBu4raDEQZOgP4elM,3791
|
61
61
|
bec_widgets/utils/crosshair.py,sha256=z2Db0tz-SqDGn3wwyCOuQ5mZn9gQU8wQ7YrCVAAAU_A,18892
|
62
62
|
bec_widgets/utils/entry_validator.py,sha256=8NCsQCYecPz-tn6AW0LtBoxRnjz-KI5oecU7bQNjqMg,1384
|
63
|
-
bec_widgets/utils/error_popups.py,sha256=
|
63
|
+
bec_widgets/utils/error_popups.py,sha256=UBAmD1YlAgKodpihudyf0VWtI59KGFiLgnjiKmKGjgk,13254
|
64
64
|
bec_widgets/utils/expandable_frame.py,sha256=VV4mgwz4lXbO3r-dNCX2QFUguwWCCXSUkXyjDSTJHbU,2345
|
65
65
|
bec_widgets/utils/filter_io.py,sha256=GKO6GOTiKxTuTp_SHp5Ewou54N7wIZXgWWvlFvhbBmw,5114
|
66
66
|
bec_widgets/utils/fps_counter.py,sha256=seuCWwiNP5q2e2OEztloa66pNb3Sygh-0lEHAcYaDfc,2612
|
67
67
|
bec_widgets/utils/generate_designer_plugin.py,sha256=VbyuSOZ8Bhb08Pv_iu_XWzoLKmt_o8zQzOdWSt7tHi8,6126
|
68
68
|
bec_widgets/utils/layout_manager.py,sha256=H0nKsIMaPxRkof1MEXlSmW6w1dFxA6astaGzf4stI84,4727
|
69
|
-
bec_widgets/utils/linear_region_selector.py,sha256=
|
69
|
+
bec_widgets/utils/linear_region_selector.py,sha256=3C8Ebozchj1cWj6Dfx0zZzXo_6E-OllVlcPNlUGv1Cg,3320
|
70
70
|
bec_widgets/utils/name_utils.py,sha256=VEHq6lRty1yif3h1EK2nBRNQquGK-l_p-6H9Fmp6BEA,340
|
71
71
|
bec_widgets/utils/ophyd_kind_util.py,sha256=3azqxajYZY4crM04NqDqbEx7zPkWzZGYtWeCzfJu6UE,603
|
72
72
|
bec_widgets/utils/palette_viewer.py,sha256=9FEkDy4sDkVpgazGyk149_Qv1DzJdXX6SpzlIPKoHqc,6304
|
@@ -97,8 +97,8 @@ bec_widgets/widgets/containers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5
|
|
97
97
|
bec_widgets/widgets/containers/auto_update/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
98
98
|
bec_widgets/widgets/containers/auto_update/auto_updates.py,sha256=tUaYgInedGwDMKOiYzAPDMnAysPQ70AF7ZcqgRXa6vw,12083
|
99
99
|
bec_widgets/widgets/containers/dock/__init__.py,sha256=B7foHt02gnhM7mFksa7GJVwT7n0j_JvYDCt6wc6XR5g,61
|
100
|
-
bec_widgets/widgets/containers/dock/dock.py,sha256=
|
101
|
-
bec_widgets/widgets/containers/dock/dock_area.py,sha256=
|
100
|
+
bec_widgets/widgets/containers/dock/dock.py,sha256=G-I9zGyZ6gIXA4oyNVKI7Uj487QVAsBab96yFEmI2rE,13860
|
101
|
+
bec_widgets/widgets/containers/dock/dock_area.py,sha256=Aa4pDyeYKr-nL2c2ym2mgvgMsGVg8aLu5EPOmpw8-2w,20454
|
102
102
|
bec_widgets/widgets/containers/dock/dock_area.pyproject,sha256=URW0UrDXCnkzk80rbQmUMgF6Uqay2TjHsq8Dq0g1j-c,37
|
103
103
|
bec_widgets/widgets/containers/dock/dock_area_plugin.py,sha256=fDVXKPZuHr85B2fLfAYf_Ic5d9mZQpnZrODTDquzZpM,1331
|
104
104
|
bec_widgets/widgets/containers/dock/register_dock_area.py,sha256=L7BL4qknCjtqsDP-RMQzk2qRPpcYuzXWlb7sJB_0DDM,475
|
@@ -157,7 +157,7 @@ bec_widgets/widgets/control/device_control/positioner_box/positioner_control_lin
|
|
157
157
|
bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line_plugin.py,sha256=GAIFfXXxNRWj39gqKKjMFNtYLJ8yvMTGGN5vS5rDSyM,1494
|
158
158
|
bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/register_positioner_control_line.py,sha256=HmHP1P46GqHM1Rh3UCwKqIg0i4TzXsGxTzUJUc4UYGU,572
|
159
159
|
bec_widgets/widgets/control/device_control/positioner_group/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
160
|
-
bec_widgets/widgets/control/device_control/positioner_group/positioner_group.py,sha256
|
160
|
+
bec_widgets/widgets/control/device_control/positioner_group/positioner_group.py,sha256=KKz4BkcDb1d4UabkeHews4nxd5LMaXV9FlHbSitgs3g,5809
|
161
161
|
bec_widgets/widgets/control/device_control/positioner_group/positioner_group.pyproject,sha256=NV-Hupn3uA4T9KXhxFO3r4MVuUAfdfWaLH4CIm71eqc,35
|
162
162
|
bec_widgets/widgets/control/device_control/positioner_group/positioner_group_plugin.py,sha256=gVzc1yzfs0NyTNM00p8-UDfLqtSF9wgeJOe0E4Ibzmo,1482
|
163
163
|
bec_widgets/widgets/control/device_control/positioner_group/register_positioner_group.py,sha256=vjoIwn1CQbg3gEwKzgY2MuscfGab2agM5YV0r1_UL0k,531
|
@@ -193,7 +193,7 @@ bec_widgets/widgets/control/scan_control/scan_control_plugin.py,sha256=_XzNzBv9y
|
|
193
193
|
bec_widgets/widgets/control/scan_control/scan_group_box.py,sha256=OhqjaYVpGnWBmlVi99DGA_wP48uPRQ2b75H_aaEz8D0,13673
|
194
194
|
bec_widgets/widgets/dap/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
195
195
|
bec_widgets/widgets/dap/dap_combo_box/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
196
|
-
bec_widgets/widgets/dap/dap_combo_box/dap_combo_box.py,sha256=
|
196
|
+
bec_widgets/widgets/dap/dap_combo_box/dap_combo_box.py,sha256=SPZqpaIz41NwUjuOLb7ZActQ7dBYDAjs6DPveezg9UU,5842
|
197
197
|
bec_widgets/widgets/dap/dap_combo_box/dap_combo_box.pyproject,sha256=3TzD8j0F6UYw8TPwKxVDeXdobnYIRXNrAUrXzqWjk4M,31
|
198
198
|
bec_widgets/widgets/dap/dap_combo_box/dap_combo_box_plugin.py,sha256=UyMQ9n-SbjRU8xQys7UibMTMOArxaZUKT-peLulB3Cs,1270
|
199
199
|
bec_widgets/widgets/dap/dap_combo_box/register_dap_combo_box.py,sha256=IDeZWx4z2Ke-SK8IJOJqJiAtcaxYkGieMAbhEBiBDtQ,481
|
@@ -207,7 +207,7 @@ bec_widgets/widgets/dap/lmfit_dialog/register_lm_fit_dialog.py,sha256=7tB1gsvv31
|
|
207
207
|
bec_widgets/widgets/editors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
208
208
|
bec_widgets/widgets/editors/dict_backed_table.py,sha256=QQ-ktAQ4odp7SKFnRbLJ9PEH2pErgy5c8GLyfj5nEK0,6151
|
209
209
|
bec_widgets/widgets/editors/console/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
210
|
-
bec_widgets/widgets/editors/console/console.py,sha256=
|
210
|
+
bec_widgets/widgets/editors/console/console.py,sha256=OB5vvqpYNhUGWzn5Dx5rR1n0rQulef5Yv-by5RGjr2w,29323
|
211
211
|
bec_widgets/widgets/editors/console/console.pyproject,sha256=JcoDuZG03g1Bxkd3Aipo7jjLexujfbibIZqXHIgLSWc,26
|
212
212
|
bec_widgets/widgets/editors/console/console_plugin.py,sha256=EvFTruYDVHiS4pHIwZnuEvJhS9eQoktuB_k5mcPuEts,1357
|
213
213
|
bec_widgets/widgets/editors/console/register_console.py,sha256=zoF-i3R9sRGzb85sdoxVunebYOfOD53fkCELTPtrFRc,471
|
@@ -244,7 +244,7 @@ bec_widgets/widgets/plots/plot_base.py,sha256=NliWkXihJIPHRJHe-CNIrdjgxONk7uExG_
|
|
244
244
|
bec_widgets/widgets/plots/image/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
245
245
|
bec_widgets/widgets/plots/image/image.py,sha256=IBu06Okf1VLGRmeq-2aQTYvoQKkHvJZSwZaHx4dYm1I,31506
|
246
246
|
bec_widgets/widgets/plots/image/image.pyproject,sha256=_sRCIu4MNgToaB4D7tUMWq3xKX6T2VoRS3UzGNIseHQ,23
|
247
|
-
bec_widgets/widgets/plots/image/image_item.py,sha256=
|
247
|
+
bec_widgets/widgets/plots/image/image_item.py,sha256=2bn9H5YLmo7ohQnnf1mLlL24TASnlZNzMvF7buMutmI,8728
|
248
248
|
bec_widgets/widgets/plots/image/image_plugin.py,sha256=R0Hzh2GgYlfZLPZwOMgqLKKIA5DxEnTcSrbI7zTe-tI,1204
|
249
249
|
bec_widgets/widgets/plots/image/image_processor.py,sha256=0qsQIyB__xxBwNIoXhFbB0wSiB8n7n_oX4cvfFsUzOs,4304
|
250
250
|
bec_widgets/widgets/plots/image/register_image.py,sha256=0rvFyAMGRZcknc7nMVwsMGSfY8L2j9cdtQhbO5TMzeM,455
|
@@ -325,7 +325,7 @@ bec_widgets/widgets/services/bec_status_box/bec_status_box.py,sha256=Iw69xY0NvR4
|
|
325
325
|
bec_widgets/widgets/services/bec_status_box/bec_status_box.pyproject,sha256=JWtx3Csfn2h7ODtk10HtyBNLf6tFIqyU6g04rMWOO1U,32
|
326
326
|
bec_widgets/widgets/services/bec_status_box/bec_status_box_plugin.py,sha256=2tBPwcEIlQa_fH9lNiwgSqzU23g8VSwEvNvTVmHQA_U,1421
|
327
327
|
bec_widgets/widgets/services/bec_status_box/register_bec_status_box.py,sha256=_1gr5nid6D5ZEvvt-GPyXhEGfacSh_QW0oWKxmZrUmY,490
|
328
|
-
bec_widgets/widgets/services/bec_status_box/status_item.py,sha256=
|
328
|
+
bec_widgets/widgets/services/bec_status_box/status_item.py,sha256=CNhGk6J8iNvlldibcuy4PFQULRHvgqHyot-UJ8xfVJw,5609
|
329
329
|
bec_widgets/widgets/services/device_browser/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
330
330
|
bec_widgets/widgets/services/device_browser/device_browser.py,sha256=tvI_T31wxUFP5xFKMNhaEq1omljkuLq44MSfBbHLUbM,3672
|
331
331
|
bec_widgets/widgets/services/device_browser/device_browser.pyproject,sha256=s0vM1xYUwyU6Je68_hSCSBLK8ZPfHB-ftt4flfdpkXY,32
|
@@ -336,7 +336,7 @@ bec_widgets/widgets/services/device_browser/device_item/__init__.py,sha256=VGY-u
|
|
336
336
|
bec_widgets/widgets/services/device_browser/device_item/device_item.py,sha256=BoOspOJb5pvtXl07OqXJvU6G2naPAnwnN4gy5q85mks,1921
|
337
337
|
bec_widgets/widgets/utility/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
338
338
|
bec_widgets/widgets/utility/logpanel/__init__.py,sha256=HldSvPLYgrqBjCgIQj0f7Wa4slkSMksk4bsRJOQi__Y,91
|
339
|
-
bec_widgets/widgets/utility/logpanel/_util.py,sha256=
|
339
|
+
bec_widgets/widgets/utility/logpanel/_util.py,sha256=GqzHbdOTmWBru9OR4weeYdziWj_cWxqSJhS4_6W3Qjg,1836
|
340
340
|
bec_widgets/widgets/utility/logpanel/log_panel.pyproject,sha256=2ncs1bsu-wICstR1gOYwFFdr0UuZmrBQEpwhvNKVFMY,26
|
341
341
|
bec_widgets/widgets/utility/logpanel/log_panel_plugin.py,sha256=KY7eS1uGZzLYtDAdBv6S2mw8UjcDGVt3UklN_D5M06A,1250
|
342
342
|
bec_widgets/widgets/utility/logpanel/logpanel.py,sha256=tnjczAwtfe1biL-u9h9tntoQerWo3iLVD9RTSLOvd5o,20651
|
@@ -370,15 +370,15 @@ bec_widgets/widgets/utility/visual/colormap_selector/register_colormap_selector.
|
|
370
370
|
bec_widgets/widgets/utility/visual/colormap_widget/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
371
371
|
bec_widgets/widgets/utility/visual/colormap_widget/bec_color_map_widget.pyproject,sha256=mGOToBLJAbXOuDLMXzQgcrAvLs9CuMKAucwlpntd6-M,33
|
372
372
|
bec_widgets/widgets/utility/visual/colormap_widget/bec_color_map_widget_plugin.py,sha256=Q0DSu0Kc_nyEvI9t3RvOvfbwra0mB0HvFV30LD9Ob4U,1346
|
373
|
-
bec_widgets/widgets/utility/visual/colormap_widget/colormap_widget.py,sha256=
|
373
|
+
bec_widgets/widgets/utility/visual/colormap_widget/colormap_widget.py,sha256=LWGo5TtYTURPNqkTWVKKAC4K4eGQe1TmDZudGl_xi0c,2847
|
374
374
|
bec_widgets/widgets/utility/visual/colormap_widget/register_bec_color_map_widget.py,sha256=K8H7hmtwo-W2_Z35nbZsVcrsPpDhsr6LCue7w85i-qA,530
|
375
375
|
bec_widgets/widgets/utility/visual/dark_mode_button/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
376
376
|
bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button.py,sha256=OotpMs4uk8EBGpbz-I0kEJdhov2fGVPwyai1WWzBnMI,3184
|
377
377
|
bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button.pyproject,sha256=Lbi9zb6HNlIq14k6hlzR-oz6PIFShBuF7QxE6d87d64,34
|
378
378
|
bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button_plugin.py,sha256=CzChz2SSETYsR8-36meqWnsXCT-FIy_J_xeU5coWDY8,1350
|
379
379
|
bec_widgets/widgets/utility/visual/dark_mode_button/register_dark_mode_button.py,sha256=rMpZ1CaoucwobgPj1FuKTnt07W82bV1GaSYdoqcdMb8,521
|
380
|
-
bec_widgets-2.0.
|
381
|
-
bec_widgets-2.0.
|
382
|
-
bec_widgets-2.0.
|
383
|
-
bec_widgets-2.0.
|
384
|
-
bec_widgets-2.0.
|
380
|
+
bec_widgets-2.1.0.dist-info/METADATA,sha256=bd1jIFJCtSLFIuk_OZpNQD3JTAva7u-BnkNDU0yY-IY,1224
|
381
|
+
bec_widgets-2.1.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
382
|
+
bec_widgets-2.1.0.dist-info/entry_points.txt,sha256=dItMzmwA1wizJ1Itx15qnfJ0ZzKVYFLVJ1voxT7K7D4,214
|
383
|
+
bec_widgets-2.1.0.dist-info/licenses/LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
|
384
|
+
bec_widgets-2.1.0.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 = "2.0
|
7
|
+
version = "2.1.0"
|
8
8
|
description = "BEC Widgets"
|
9
9
|
requires-python = ">=3.10"
|
10
10
|
classifiers = [
|
@@ -16,7 +16,7 @@ dependencies = [
|
|
16
16
|
"bec_ipython_client>=2.21.4, <=4.0", # needed for jupyter console
|
17
17
|
"bec_lib>=3.29, <=4.0",
|
18
18
|
"bec_qthemes~=0.7, >=0.7",
|
19
|
-
"black~=
|
19
|
+
"black~=25.0", # needed for bw-generate-cli
|
20
20
|
"isort~=5.13, >=5.13.2", # needed for bw-generate-cli
|
21
21
|
"pydantic~=2.0",
|
22
22
|
"pyqtgraph~=0.13",
|
@@ -31,6 +31,7 @@ dependencies = [
|
|
31
31
|
dev = [
|
32
32
|
"coverage~=7.0",
|
33
33
|
"fakeredis~=2.23, >=2.23.2",
|
34
|
+
"isort~=5.13, >=5.13.2",
|
34
35
|
"pytest-bec-e2e>=2.21.4, <=4.0",
|
35
36
|
"pytest-qt~=4.4",
|
36
37
|
"pytest-random-order~=1.1",
|
File without changes
|
File without changes
|
File without changes
|