bec-widgets 0.113.0__py3-none-any.whl → 0.115.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 +59 -43
- PKG-INFO +2 -2
- bec_widgets/applications/alignment/alignment_1d/alignment_1d.py +10 -10
- bec_widgets/applications/alignment/alignment_1d/alignment_1d.ui +50 -32
- bec_widgets/applications/bec_app.py +84 -0
- bec_widgets/widgets/figure/plots/waveform/waveform.py +11 -0
- bec_widgets/widgets/scan_control/scan_control.py +4 -1
- {bec_widgets-0.113.0.dist-info → bec_widgets-0.115.0.dist-info}/METADATA +2 -2
- {bec_widgets-0.113.0.dist-info → bec_widgets-0.115.0.dist-info}/RECORD +13 -12
- {bec_widgets-0.113.0.dist-info → bec_widgets-0.115.0.dist-info}/entry_points.txt +1 -0
- pyproject.toml +3 -2
- {bec_widgets-0.113.0.dist-info → bec_widgets-0.115.0.dist-info}/WHEEL +0 -0
- {bec_widgets-0.113.0.dist-info → bec_widgets-0.115.0.dist-info}/licenses/LICENSE +0 -0
CHANGELOG.md
CHANGED
@@ -1,18 +1,51 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
+
|
4
|
+
## v0.115.0 (2024-10-08)
|
5
|
+
|
6
|
+
### Features
|
7
|
+
|
8
|
+
* feat: add bec-app script to launch applications ([`8bf4842`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/8bf48427884338672a8e3de3deb20439b0bfdf99))
|
9
|
+
|
10
|
+
### Fixes
|
11
|
+
|
12
|
+
* fix: make Alignment1D a MainWindow as it is an application ([`c5e9ed6`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/c5e9ed6e422acb908e1ada32822f5d7cc256ade7))
|
13
|
+
|
14
|
+
* fix: adjust bec_qthemes dependency ([`b207e45`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/b207e45a67818ee061272ce00a09fe7ea31cd1ba))
|
15
|
+
|
16
|
+
|
17
|
+
## v0.114.0 (2024-10-02)
|
18
|
+
|
19
|
+
### Features
|
20
|
+
|
21
|
+
* feat: new 'scan_axis' signal
|
22
|
+
|
23
|
+
Signal is emitted before "scan_started", to inform about scan positioner
|
24
|
+
and (start, stop) positions. In case of multiple bundles, the signal
|
25
|
+
is emitted multiple times. ([`f084e25`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/f084e2514bc9459cccaa951b79044bc25884e738))
|
26
|
+
|
27
|
+
### Fixes
|
28
|
+
|
29
|
+
* fix: prevent exception when empty string updates are coming from widget ([`04cfb1e`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/04cfb1edf19437d54f07b868bcf3cfc2a35fd3bc))
|
30
|
+
|
31
|
+
* fix: use new 'scan_axis' signal, to set_x and select x axis on waveform
|
32
|
+
|
33
|
+
Fixes #361, do not try to change x axis when not permitted ([`efa2763`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/efa276358b0f5a45cce9fa84fa5f9aafaf4284f7))
|
34
|
+
|
35
|
+
|
3
36
|
## v0.113.0 (2024-10-02)
|
4
37
|
|
5
|
-
###
|
38
|
+
### Features
|
6
39
|
|
7
40
|
* feat: add first draft for alignment_1d GUI ([`63c24f9`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/63c24f97a355edaa928b6e222909252b276bcada))
|
8
41
|
|
9
42
|
* feat: add move to position button to lmfit dialog ([`281cb27`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/281cb27d8b5433e27a7ba0ca0a19e4b45b9c544f))
|
10
43
|
|
11
|
-
###
|
44
|
+
### Fixes
|
12
45
|
|
13
46
|
* fix: add is_log checks and functionality to plot_indicator_items ([`0f9953e`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/0f9953e8fdcf3f9b5a09f994c69edb6b34756df9))
|
14
47
|
|
15
|
-
###
|
48
|
+
### Refactoring
|
16
49
|
|
17
50
|
* refactor: various minor improvements for the alignment gui ([`f554f3c`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/f554f3c1672c4fe32968a5991dc98802556a6f3b))
|
18
51
|
|
@@ -26,7 +59,7 @@
|
|
26
59
|
|
27
60
|
* refactor: use accent colors for bec_status_box icons; closes #338 ([`e039304`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/e039304fd3ee03dc4a3fa22a69c207139e0c0d28))
|
28
61
|
|
29
|
-
###
|
62
|
+
### Testing
|
30
63
|
|
31
64
|
* test: add tests for scan_status_callback ([`dc0c825`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/dc0c825fd594c093a24543ff803d6c6564010e92))
|
32
65
|
|
@@ -34,6 +67,7 @@
|
|
34
67
|
|
35
68
|
* feat : Add bec_signal_proxy to handle signals with option to unblock them manually. ([`1dcfeb6`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/1dcfeb6cfce3c69f0c5401731d4d3f9a1981b22e))
|
36
69
|
|
70
|
+
|
37
71
|
## v0.112.1 (2024-09-19)
|
38
72
|
|
39
73
|
### Documentation
|
@@ -42,27 +76,29 @@
|
|
42
76
|
|
43
77
|
* docs(device_box): updated screenshot ([`c8e614b`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/c8e614b575b48be788a6389a7aa0cfa033d86ab8))
|
44
78
|
|
45
|
-
###
|
79
|
+
### Fixes
|
46
80
|
|
47
81
|
* fix: test e2e dap wait_for_fit ([`b2f7d3c`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/b2f7d3c5f3f4bf00cc628f788e2c278ebb5688ae))
|
48
82
|
|
83
|
+
|
49
84
|
## v0.112.0 (2024-09-17)
|
50
85
|
|
51
|
-
###
|
86
|
+
### Features
|
52
87
|
|
53
88
|
* feat: console: various improvements, auto-adapt rows to widget size, Qt Designer plugin ([`286ad71`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/286ad7196b0b8562d648fb304eab7d759b6a959b))
|
54
89
|
|
90
|
+
|
55
91
|
## v0.111.0 (2024-09-17)
|
56
92
|
|
57
93
|
### Documentation
|
58
94
|
|
59
95
|
* docs(position_indicator): updated position indicator documentation and added designer properties ([`60f7d54`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/60f7d54e2b4c3129de6c95729b8b4aea1757174f))
|
60
96
|
|
61
|
-
###
|
97
|
+
### Features
|
62
98
|
|
63
99
|
* feat(position_indicator): improved design and added more customization options ([`d15b222`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/d15b22250fbceb708d89872c0380693e04acb107))
|
64
100
|
|
65
|
-
###
|
101
|
+
### Fixes
|
66
102
|
|
67
103
|
* fix(position_indicator): fixed user access ([`dd932dd`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/dd932dd8f3910ab67ec8403124f4e176d048e542))
|
68
104
|
|
@@ -72,86 +108,66 @@
|
|
72
108
|
|
73
109
|
* fix(palette viewer): fixed background for tool tip ([`9045323`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/9045323049d2a39c36fc8845f3b2883d6933436b))
|
74
110
|
|
111
|
+
|
75
112
|
## v0.110.0 (2024-09-12)
|
76
113
|
|
77
|
-
###
|
114
|
+
### Features
|
78
115
|
|
79
116
|
* feat(palette_viewer): added widget to display the current palette and accent colors ([`a8576c1`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/a8576c164cad17746ec4fcd5c775fb78f70c055c))
|
80
117
|
|
118
|
+
|
81
119
|
## v0.109.1 (2024-09-09)
|
82
120
|
|
83
|
-
###
|
121
|
+
### Fixes
|
84
122
|
|
85
123
|
* fix: refactor textbox widget, remove inheritance, adhere to bec style; closes #324 ([`b0d786b`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/b0d786b991677c0846a0c6ba3f2252d48d94ccaa))
|
86
124
|
|
125
|
+
|
87
126
|
## v0.109.0 (2024-09-06)
|
88
127
|
|
89
|
-
###
|
128
|
+
### Features
|
90
129
|
|
91
130
|
* feat(accent colors): added helper function to get all accent colors ([`84a59f7`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/84a59f70eed6d8a3c3aeeabc77a5f9ea4e864f61))
|
92
131
|
|
93
|
-
###
|
132
|
+
### Fixes
|
94
133
|
|
95
134
|
* fix(theme): fixed theme access for themecontainer ([`de303f0`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/de303f0227fc9d3a74a0410f1e7999ac5132273c))
|
96
135
|
|
136
|
+
|
97
137
|
## v0.108.0 (2024-09-06)
|
98
138
|
|
99
139
|
### Documentation
|
100
140
|
|
101
141
|
* docs(progressbar): added docs ([`7d07cea`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/7d07cea946f9c884477b01bebfb60b332ff09e0a))
|
102
142
|
|
103
|
-
###
|
143
|
+
### Features
|
104
144
|
|
105
145
|
* feat(progressbar): added bec progressbar ([`f6d1d0b`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/f6d1d0bbe3ba30a3b7291cd36a1f7f8e6bd5b895))
|
106
146
|
|
107
147
|
* feat(generate_cli): added support for property and qproperty setter ([`a52182d`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/a52182dca978833bfc3fad755c596d3a2ef45c42))
|
108
148
|
|
149
|
+
|
109
150
|
## v0.107.0 (2024-09-06)
|
110
151
|
|
111
152
|
### Documentation
|
112
153
|
|
113
154
|
* docs: extend waveform docs ([`e6976dc`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/e6976dc15105209852090a00a97b7cda723142e9))
|
114
155
|
|
115
|
-
###
|
156
|
+
### Features
|
116
157
|
|
117
158
|
* feat: add roi select for dap, allow automatic clear curves on plot request ([`7bdca84`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/7bdca8431496fe6562d2c28f5a6af869d1a2e654))
|
118
159
|
|
119
|
-
###
|
160
|
+
### Refactoring
|
120
161
|
|
121
162
|
* refactor: change style to bec_accent_colors ([`bd126dd`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/bd126dddbbec3e6c448cce263433d328d577c5c0))
|
122
163
|
|
123
|
-
###
|
164
|
+
### Testing
|
124
165
|
|
125
166
|
* test: add tests, including extension to end-2-end test ([`b1aff6d`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/b1aff6d791ff847eb2f628e66ccaa4672fdeea08))
|
126
167
|
|
168
|
+
|
127
169
|
## v0.106.0 (2024-09-05)
|
128
170
|
|
129
|
-
###
|
171
|
+
### Features
|
130
172
|
|
131
173
|
* feat(plot_base): toggle to switch outer axes for plotting widgets ([`06d7741`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/06d7741622aea8556208cd17cae521c37333f8b6))
|
132
|
-
|
133
|
-
### Refactor
|
134
|
-
|
135
|
-
* refactor: use DAPComboBox in curve_dialog selection ([`998a745`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/998a7451335b1b35c3e18691d3bab8d882e2d30b))
|
136
|
-
|
137
|
-
### Test
|
138
|
-
|
139
|
-
* test: fix tests ([`6b15abc`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/6b15abcc73170cb49292741a619a08ee615e6250))
|
140
|
-
|
141
|
-
## v0.105.0 (2024-09-04)
|
142
|
-
|
143
|
-
### Feature
|
144
|
-
|
145
|
-
* feat: add dap_combobox ([`cc691d4`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/cc691d4039bde710e78f362d2f0e712f9e8f196f))
|
146
|
-
|
147
|
-
### Refactor
|
148
|
-
|
149
|
-
* refactor: cleanup and renaming of slot/signals ([`0fd5cee`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/0fd5cee77611b6645326eaefa68455ea8de26597))
|
150
|
-
|
151
|
-
* refactor(logger): changed prints to logger calls ([`3a5d7d0`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/3a5d7d07966ab9b38ba33bda0bed38c30f500c66))
|
152
|
-
|
153
|
-
## v0.104.0 (2024-09-04)
|
154
|
-
|
155
|
-
### Fix
|
156
|
-
|
157
|
-
* fix(scan_control): SafeSlot applied to run_scan to avoid faulty scan requests ([`9047916`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/90479167fb5cae393c884e71a80fcfdb48a76427))
|
PKG-INFO
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: bec_widgets
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.115.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
|
@@ -11,7 +11,7 @@ Classifier: Topic :: Scientific/Engineering
|
|
11
11
|
Requires-Python: >=3.10
|
12
12
|
Requires-Dist: bec-ipython-client>=2.21.4,~=2.21
|
13
13
|
Requires-Dist: bec-lib>=2.21.4,~=2.21
|
14
|
-
Requires-Dist: bec-qthemes>=0.
|
14
|
+
Requires-Dist: bec-qthemes>=0.7,~=0.7
|
15
15
|
Requires-Dist: black~=24.0
|
16
16
|
Requires-Dist: isort>=5.13.2,~=5.13
|
17
17
|
Requires-Dist: pydantic~=2.0
|
@@ -10,7 +10,7 @@ from bec_lib.device import Signal as BECSignal
|
|
10
10
|
from bec_lib.endpoints import MessageEndpoints
|
11
11
|
from qtpy.QtCore import QSize, Signal
|
12
12
|
from qtpy.QtGui import QIcon
|
13
|
-
from qtpy.QtWidgets import QCheckBox, QDoubleSpinBox, QPushButton, QSpinBox
|
13
|
+
from qtpy.QtWidgets import QCheckBox, QDoubleSpinBox, QMainWindow, QPushButton, QSpinBox
|
14
14
|
|
15
15
|
import bec_widgets
|
16
16
|
from bec_widgets.qt_utils.error_popups import SafeSlot as Slot
|
@@ -29,15 +29,13 @@ from bec_widgets.widgets.waveform.waveform_widget import BECWaveformWidget
|
|
29
29
|
MODULE_PATH = os.path.dirname(bec_widgets.__file__)
|
30
30
|
|
31
31
|
|
32
|
-
class Alignment1D(BECWidget,
|
32
|
+
class Alignment1D(BECWidget, QMainWindow):
|
33
33
|
"""Alignment GUI to perform 1D scans"""
|
34
34
|
|
35
35
|
# Emit a signal when a motion is ongoing
|
36
36
|
motion_is_active = Signal(bool)
|
37
37
|
|
38
|
-
def __init__(
|
39
|
-
self, parent: Optional[QWidget] = None, client=None, gui_id: Optional[str] = None
|
40
|
-
) -> None:
|
38
|
+
def __init__(self, client=None, gui_id: Optional[str] = None) -> None:
|
41
39
|
"""Initialise the widget
|
42
40
|
|
43
41
|
Args:
|
@@ -47,7 +45,7 @@ class Alignment1D(BECWidget, QWidget):
|
|
47
45
|
gui_id: GUI ID.
|
48
46
|
"""
|
49
47
|
super().__init__(client=client, gui_id=gui_id)
|
50
|
-
|
48
|
+
QMainWindow.__init__(self)
|
51
49
|
self.get_bec_shortcuts()
|
52
50
|
self._accent_colors = get_accent_colors()
|
53
51
|
self.ui_file = "alignment_1d.ui"
|
@@ -60,9 +58,7 @@ class Alignment1D(BECWidget, QWidget):
|
|
60
58
|
"""Initialise the UI from QT Designer file"""
|
61
59
|
current_path = os.path.dirname(__file__)
|
62
60
|
self.ui = UILoader(self).loader(os.path.join(current_path, self.ui_file))
|
63
|
-
|
64
|
-
layout.addWidget(self.ui)
|
65
|
-
self.setLayout(layout)
|
61
|
+
self.setCentralWidget(self.ui)
|
66
62
|
# Customize the plotting widget
|
67
63
|
self.waveform = self.ui.findChild(BECWaveformWidget, "bec_waveform_widget")
|
68
64
|
self._customise_bec_waveform_widget()
|
@@ -249,7 +245,7 @@ class Alignment1D(BECWidget, QWidget):
|
|
249
245
|
box.ui.position_indicator.setFixedHeight(20)
|
250
246
|
|
251
247
|
|
252
|
-
|
248
|
+
def main():
|
253
249
|
import sys
|
254
250
|
|
255
251
|
from qtpy.QtWidgets import QApplication # pylint: disable=ungrouped-imports
|
@@ -263,3 +259,7 @@ if __name__ == "__main__": # pragma: no cover
|
|
263
259
|
window = Alignment1D()
|
264
260
|
window.show()
|
265
261
|
sys.exit(app.exec_())
|
262
|
+
|
263
|
+
|
264
|
+
if __name__ == "__main__": # pragma: no cover
|
265
|
+
main()
|
@@ -721,22 +721,6 @@
|
|
721
721
|
</tabstops>
|
722
722
|
<resources/>
|
723
723
|
<connections>
|
724
|
-
<connection>
|
725
|
-
<sender>device_combobox</sender>
|
726
|
-
<signal>currentTextChanged(QString)</signal>
|
727
|
-
<receiver>dap_combo_box</receiver>
|
728
|
-
<slot>select_x_axis(QString)</slot>
|
729
|
-
<hints>
|
730
|
-
<hint type="sourcelabel">
|
731
|
-
<x>162</x>
|
732
|
-
<y>170</y>
|
733
|
-
</hint>
|
734
|
-
<hint type="destinationlabel">
|
735
|
-
<x>467</x>
|
736
|
-
<y>170</y>
|
737
|
-
</hint>
|
738
|
-
</hints>
|
739
|
-
</connection>
|
740
724
|
<connection>
|
741
725
|
<sender>device_combobox_2</sender>
|
742
726
|
<signal>currentTextChanged(QString)</signal>
|
@@ -801,22 +785,6 @@
|
|
801
785
|
</hint>
|
802
786
|
</hints>
|
803
787
|
</connection>
|
804
|
-
<connection>
|
805
|
-
<sender>device_combobox</sender>
|
806
|
-
<signal>currentTextChanged(QString)</signal>
|
807
|
-
<receiver>bec_waveform_widget</receiver>
|
808
|
-
<slot>set_x(QString)</slot>
|
809
|
-
<hints>
|
810
|
-
<hint type="sourcelabel">
|
811
|
-
<x>162</x>
|
812
|
-
<y>170</y>
|
813
|
-
</hint>
|
814
|
-
<hint type="destinationlabel">
|
815
|
-
<x>1099</x>
|
816
|
-
<y>258</y>
|
817
|
-
</hint>
|
818
|
-
</hints>
|
819
|
-
</connection>
|
820
788
|
<connection>
|
821
789
|
<sender>toggle_switch</sender>
|
822
790
|
<signal>enabled(bool)</signal>
|
@@ -865,5 +833,55 @@
|
|
865
833
|
</hint>
|
866
834
|
</hints>
|
867
835
|
</connection>
|
836
|
+
<!--
|
837
|
+
<connection>
|
838
|
+
<sender>device_combobox</sender>
|
839
|
+
<signal>currentTextChanged(QString)</signal>
|
840
|
+
<receiver>bec_waveform_widget</receiver>
|
841
|
+
<slot>set_x(QString)</slot>
|
842
|
+
<hints>
|
843
|
+
<hint type="sourcelabel">
|
844
|
+
<x>297</x>
|
845
|
+
<y>170</y>
|
846
|
+
</hint>
|
847
|
+
<hint type="destinationlabel">
|
848
|
+
<x>467</x>
|
849
|
+
<y>170</y>
|
850
|
+
</hint>
|
851
|
+
</hints>
|
852
|
+
</connection>
|
853
|
+
-->
|
854
|
+
<connection>
|
855
|
+
<sender>scan_control</sender>
|
856
|
+
<signal>scan_axis(QString,double,double)</signal>
|
857
|
+
<receiver>bec_waveform_widget</receiver>
|
858
|
+
<slot>set_x(QString)</slot>
|
859
|
+
<hints>
|
860
|
+
<hint type="sourcelabel">
|
861
|
+
<x>244</x>
|
862
|
+
<y>348</y>
|
863
|
+
</hint>
|
864
|
+
<hint type="destinationlabel">
|
865
|
+
<x>1140</x>
|
866
|
+
<y>491</y>
|
867
|
+
</hint>
|
868
|
+
</hints>
|
869
|
+
</connection>
|
870
|
+
<connection>
|
871
|
+
<sender>scan_control</sender>
|
872
|
+
<signal>scan_axis(QString,double,double)</signal>
|
873
|
+
<receiver>dap_combo_box</receiver>
|
874
|
+
<slot>select_x_axis(QString)</slot>
|
875
|
+
<hints>
|
876
|
+
<hint type="sourcelabel">
|
877
|
+
<x>244</x>
|
878
|
+
<y>322</y>
|
879
|
+
</hint>
|
880
|
+
<hint type="destinationlabel">
|
881
|
+
<x>909</x>
|
882
|
+
<y>189</y>
|
883
|
+
</hint>
|
884
|
+
</hints>
|
885
|
+
</connection>
|
868
886
|
</connections>
|
869
887
|
</ui>
|
@@ -0,0 +1,84 @@
|
|
1
|
+
"""
|
2
|
+
Launcher for BEC GUI Applications
|
3
|
+
|
4
|
+
Application must be located in bec_widgets/applications ;
|
5
|
+
in order for the launcher to find the application, it has to be put in
|
6
|
+
a subdirectory with the same name as the main Python module:
|
7
|
+
|
8
|
+
/bec_widgets/applications
|
9
|
+
├── alignment
|
10
|
+
│ └── alignment_1d
|
11
|
+
│ └── alignment_1d.py
|
12
|
+
├── other_app
|
13
|
+
└── other_app.py
|
14
|
+
|
15
|
+
The tree above would contain 2 applications, alignment_1d and other_app.
|
16
|
+
|
17
|
+
The Python module for the application must have `if __name__ == "__main__":`
|
18
|
+
in order for the launcher to execute it (it is run with `python -m`).
|
19
|
+
"""
|
20
|
+
|
21
|
+
import argparse
|
22
|
+
import os
|
23
|
+
import sys
|
24
|
+
|
25
|
+
MODULE_PATH = os.path.dirname(__file__)
|
26
|
+
|
27
|
+
|
28
|
+
def find_apps(base_dir: str) -> list[str]:
|
29
|
+
matching_modules = []
|
30
|
+
|
31
|
+
for root, dirs, files in os.walk(base_dir):
|
32
|
+
parent_dir = os.path.basename(root)
|
33
|
+
|
34
|
+
for file in files:
|
35
|
+
if file.endswith(".py") and file != "__init__.py":
|
36
|
+
file_name_without_ext = os.path.splitext(file)[0]
|
37
|
+
|
38
|
+
if file_name_without_ext == parent_dir:
|
39
|
+
rel_path = os.path.relpath(root, base_dir)
|
40
|
+
module_path = rel_path.replace(os.sep, ".")
|
41
|
+
|
42
|
+
module_name = f"{module_path}.{file_name_without_ext}"
|
43
|
+
matching_modules.append((file_name_without_ext, module_name))
|
44
|
+
|
45
|
+
return matching_modules
|
46
|
+
|
47
|
+
|
48
|
+
def main():
|
49
|
+
parser = argparse.ArgumentParser(description="BEC application launcher")
|
50
|
+
|
51
|
+
parser.add_argument("-m", "--module", type=str, help="The module to run (string argument).")
|
52
|
+
|
53
|
+
# Add a positional argument for the module, which acts as a fallback if -m is not provided
|
54
|
+
parser.add_argument(
|
55
|
+
"positional_module",
|
56
|
+
nargs="?", # This makes the positional argument optional
|
57
|
+
help="Positional argument that is treated as module if -m is not specified.",
|
58
|
+
)
|
59
|
+
|
60
|
+
args = parser.parse_args()
|
61
|
+
# If the -m/--module is not provided, fallback to the positional argument
|
62
|
+
module = args.module if args.module else args.positional_module
|
63
|
+
|
64
|
+
if module:
|
65
|
+
for app_name, app_module in find_apps(MODULE_PATH):
|
66
|
+
if module in (app_name, app_module):
|
67
|
+
print("Starting:", app_name)
|
68
|
+
python_executable = sys.executable
|
69
|
+
|
70
|
+
# Replace the current process with the new Python module
|
71
|
+
os.execvp(
|
72
|
+
python_executable,
|
73
|
+
[python_executable, "-m", f"bec_widgets.applications.{app_module}"],
|
74
|
+
)
|
75
|
+
print(f"Error: cannot find application {module}")
|
76
|
+
|
77
|
+
# display list of apps
|
78
|
+
print("Available applications:")
|
79
|
+
for app, _ in find_apps(MODULE_PATH):
|
80
|
+
print(f" - {app}")
|
81
|
+
|
82
|
+
|
83
|
+
if __name__ == "__main__": # pragma: no cover
|
84
|
+
main()
|
@@ -467,6 +467,10 @@ class BECWaveform(BECPlotBase):
|
|
467
467
|
- Custom signal name of device from BEC.
|
468
468
|
x_entry(str): Entry of the x signal.
|
469
469
|
"""
|
470
|
+
if not x_name:
|
471
|
+
# this can happen, if executed by a signal from a widget
|
472
|
+
return
|
473
|
+
|
470
474
|
curve_configs = self.config.curves
|
471
475
|
curve_ids = list(curve_configs.keys())
|
472
476
|
curve_configs = list(curve_configs.values())
|
@@ -631,6 +635,13 @@ class BECWaveform(BECPlotBase):
|
|
631
635
|
x_name = mode if mode is not None else "best_effort"
|
632
636
|
self.x_axis_mode["name"] = x_name
|
633
637
|
|
638
|
+
if not x_name or not y_name:
|
639
|
+
# can happen if executed from a signal from a widget ;
|
640
|
+
# the code above has to be executed to set some other
|
641
|
+
# variables, but it cannot continue if both names are
|
642
|
+
# not set properly -> exit here
|
643
|
+
return
|
644
|
+
|
634
645
|
# 3. Check - Get entry if not provided and validate
|
635
646
|
x_entry, y_entry, z_entry = self._validate_signal_entries(
|
636
647
|
x_name, y_name, z_name, x_entry, y_entry, z_entry, validate_bec
|
@@ -42,6 +42,7 @@ class ScanControl(BECWidget, QWidget):
|
|
42
42
|
|
43
43
|
scan_started = Signal()
|
44
44
|
scan_selected = Signal(str)
|
45
|
+
scan_axis = Signal(str, float, float)
|
45
46
|
|
46
47
|
def __init__(
|
47
48
|
self,
|
@@ -503,10 +504,12 @@ class ScanControl(BECWidget, QWidget):
|
|
503
504
|
@SafeSlot(popup_error=True)
|
504
505
|
def run_scan(self):
|
505
506
|
"""Starts the selected scan with the given parameters."""
|
506
|
-
self.scan_started.emit()
|
507
507
|
args, kwargs = self.get_scan_parameters()
|
508
|
+
for device, start, stop in zip(*[iter(args)] * 3):
|
509
|
+
self.scan_axis.emit(device.name, start, stop)
|
508
510
|
scan_function = getattr(self.scans, self.comboBox_scan_selection.currentText())
|
509
511
|
if callable(scan_function):
|
512
|
+
self.scan_started.emit()
|
510
513
|
scan_function(*args, **kwargs)
|
511
514
|
|
512
515
|
def cleanup(self):
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: bec_widgets
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.115.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
|
@@ -11,7 +11,7 @@ Classifier: Topic :: Scientific/Engineering
|
|
11
11
|
Requires-Python: >=3.10
|
12
12
|
Requires-Dist: bec-ipython-client>=2.21.4,~=2.21
|
13
13
|
Requires-Dist: bec-lib>=2.21.4,~=2.21
|
14
|
-
Requires-Dist: bec-qthemes>=0.
|
14
|
+
Requires-Dist: bec-qthemes>=0.7,~=0.7
|
15
15
|
Requires-Dist: black~=24.0
|
16
16
|
Requires-Dist: isort>=5.13.2,~=5.13
|
17
17
|
Requires-Dist: pydantic~=2.0
|
@@ -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=xNxt0fWzJsTPx07OGBYWsh3-b6Xyeo9NiZhKFZwoh9U,7301
|
6
6
|
LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
|
7
|
-
PKG-INFO,sha256=
|
7
|
+
PKG-INFO,sha256=F0J9ZxDrWcTo3KqHlmYp2bBktM7rUMVBHFSp2aXhyug,1332
|
8
8
|
README.md,sha256=Od69x-RS85Hph0-WwWACwal4yUd67XkEn4APEfHhHFw,2649
|
9
|
-
pyproject.toml,sha256=
|
9
|
+
pyproject.toml,sha256=Ugkyy648qWHFcUST0xsGFrK3TFSnz9EyC3ifu5L8IUg,2592
|
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
|
@@ -14,10 +14,11 @@ pyproject.toml,sha256=i4en2BSq0FQlp72LBk4g93_t1N4lyRd3UCXW_oeFCuQ,2544
|
|
14
14
|
.gitlab/merge_request_templates/default.md,sha256=tfyFA0hRCsIunbLGSlGbxWBQFeB3USpsA3H7IvwQ5UY,715
|
15
15
|
bec_widgets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
16
16
|
bec_widgets/applications/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
17
|
+
bec_widgets/applications/bec_app.py,sha256=PptBknsnhWm5GSE-xBps4EAYP3f9i-q9YmUMROupnqQ,2801
|
17
18
|
bec_widgets/applications/alignment/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
18
19
|
bec_widgets/applications/alignment/alignment_1d/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
19
|
-
bec_widgets/applications/alignment/alignment_1d/alignment_1d.py,sha256=
|
20
|
-
bec_widgets/applications/alignment/alignment_1d/alignment_1d.ui,sha256
|
20
|
+
bec_widgets/applications/alignment/alignment_1d/alignment_1d.py,sha256=eGqEXKVz4kSdaIBZAKfuI4pwYoLWwKyLjTY1eB31kgk,11200
|
21
|
+
bec_widgets/applications/alignment/alignment_1d/alignment_1d.ui,sha256=qgYZnT78MZmugVdTWUJSQNlAOJW278d2wEZ9bGXe94s,27537
|
21
22
|
bec_widgets/assets/app_icons/BEC-General-App.png,sha256=hc2ktly53DZAbl_rE3cb-vdRa5gtdCmBEjfwm2y5P4g,447581
|
22
23
|
bec_widgets/assets/app_icons/alignment_1d.png,sha256=5VouaWieb4lVv3wUBNHaO5ovUW2Fk25aTKYQzOWy0mg,2071069
|
23
24
|
bec_widgets/assets/app_icons/bec_widgets_icon.png,sha256=K8dgGwIjalDh9PRHUsSQBqgdX7a00nM3igZdc20pkYM,1747017
|
@@ -169,7 +170,7 @@ bec_widgets/widgets/figure/plots/image/image_processor.py,sha256=GeTtWjbldy6VejM
|
|
169
170
|
bec_widgets/widgets/figure/plots/motor_map/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
170
171
|
bec_widgets/widgets/figure/plots/motor_map/motor_map.py,sha256=AiDq4bmcEoj9PlkRQtHCk-5cwvOFGPBcfxPNNr8E53Y,18399
|
171
172
|
bec_widgets/widgets/figure/plots/waveform/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
172
|
-
bec_widgets/widgets/figure/plots/waveform/waveform.py,sha256=
|
173
|
+
bec_widgets/widgets/figure/plots/waveform/waveform.py,sha256=N3sF0TWJblsznTU8ZSt8QNvoXo7CZEiuDZymJsQUZzA,56708
|
173
174
|
bec_widgets/widgets/figure/plots/waveform/waveform_curve.py,sha256=RUo4GfXwlaCei8BBvWBQF3IEB8h-KgpvaHur6JUvT6s,8682
|
174
175
|
bec_widgets/widgets/image/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
175
176
|
bec_widgets/widgets/image/bec_image_widget.pyproject,sha256=PHisdBo5_5UCApd27GkizzqgfdjsDx2bFZa_p9LiSW8,30
|
@@ -217,7 +218,7 @@ bec_widgets/widgets/ring_progress_bar/ring_progress_bar.pyproject,sha256=ZNYDnKD
|
|
217
218
|
bec_widgets/widgets/ring_progress_bar/ring_progress_bar_plugin.py,sha256=-rw9ZSThgAH0Ubbr3X-L5x-ZqMXUGnauyFb4OmfUvD4,1394
|
218
219
|
bec_widgets/widgets/scan_control/__init__.py,sha256=IOfHl15vxb_uC6KN62-PeUzbBha_vQyqkkXbJ2HU674,38
|
219
220
|
bec_widgets/widgets/scan_control/register_scan_control.py,sha256=xUX2yR0-MaIMg9_y9qe50yDDphzsh2x1b5PMrF90yPM,475
|
220
|
-
bec_widgets/widgets/scan_control/scan_control.py,sha256=
|
221
|
+
bec_widgets/widgets/scan_control/scan_control.py,sha256=xR043qG1biFePq7bmfZZTcCvoQovObDe9cjRj-B-ylA,19343
|
221
222
|
bec_widgets/widgets/scan_control/scan_control.pyproject,sha256=eTgVDFKToIH8_BbJjM2RvbOLr7HnYoidX0SAHx640DM,30
|
222
223
|
bec_widgets/widgets/scan_control/scan_control_plugin.py,sha256=7GaqmaRgbwIPjVoXcyKVDl8UpfqC2weViup-YFfzUsM,1270
|
223
224
|
bec_widgets/widgets/scan_control/scan_group_box.py,sha256=H2QQFvRlmpF-lilmRRNB-vsAcYQkDYhbHZo32hPRVr8,10488
|
@@ -262,8 +263,8 @@ bec_widgets/widgets/website/register_website_widget.py,sha256=LIQJpV9uqcBiPR9cEA
|
|
262
263
|
bec_widgets/widgets/website/website.py,sha256=42pncCc_zI2eqeMArIurVmPUukRo5bTxa2h1Skah-io,3012
|
263
264
|
bec_widgets/widgets/website/website_widget.pyproject,sha256=scOiV3cV1_BjbzpPzy2N8rIJL5P2qIZz8ObTJ-Uvdtg,25
|
264
265
|
bec_widgets/widgets/website/website_widget_plugin.py,sha256=pz38_C2cZ0yvPPS02wdIPcmhFo_yiwUhflsASocAPQQ,1341
|
265
|
-
bec_widgets-0.
|
266
|
-
bec_widgets-0.
|
267
|
-
bec_widgets-0.
|
268
|
-
bec_widgets-0.
|
269
|
-
bec_widgets-0.
|
266
|
+
bec_widgets-0.115.0.dist-info/METADATA,sha256=F0J9ZxDrWcTo3KqHlmYp2bBktM7rUMVBHFSp2aXhyug,1332
|
267
|
+
bec_widgets-0.115.0.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
|
268
|
+
bec_widgets-0.115.0.dist-info/entry_points.txt,sha256=dItMzmwA1wizJ1Itx15qnfJ0ZzKVYFLVJ1voxT7K7D4,214
|
269
|
+
bec_widgets-0.115.0.dist-info/licenses/LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
|
270
|
+
bec_widgets-0.115.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 = "0.
|
7
|
+
version = "0.115.0"
|
8
8
|
description = "BEC Widgets"
|
9
9
|
requires-python = ">=3.10"
|
10
10
|
classifiers = [
|
@@ -19,7 +19,7 @@ dependencies = [
|
|
19
19
|
"isort~=5.13, >=5.13.2", # needed for bw-generate-cli
|
20
20
|
"pydantic~=2.0",
|
21
21
|
"pyqtgraph~=0.13",
|
22
|
-
"bec_qthemes~=0.
|
22
|
+
"bec_qthemes~=0.7, >=0.7",
|
23
23
|
"qtconsole~=5.5, >=5.5.1", # needed for jupyter console
|
24
24
|
"qtpy~=2.4",
|
25
25
|
"pyte", # needed for vt100 console
|
@@ -48,6 +48,7 @@ Homepage = "https://gitlab.psi.ch/bec/bec_widgets"
|
|
48
48
|
bw-generate-cli = "bec_widgets.cli.generate_cli:main"
|
49
49
|
bec-gui-server = "bec_widgets.cli.server:main"
|
50
50
|
bec-designer = "bec_widgets.utils.bec_designer:main"
|
51
|
+
bec-app = "bec_widgets.applications.bec_app:main"
|
51
52
|
|
52
53
|
[tool.hatch.build.targets.wheel]
|
53
54
|
include = ["*"]
|
File without changes
|
File without changes
|