bec-widgets 1.16.4__py3-none-any.whl → 1.17.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.
Files changed (35) hide show
  1. CHANGELOG.md +41 -0
  2. PKG-INFO +1 -1
  3. bec_widgets/cli/client.py +46 -0
  4. bec_widgets/cli/server.py +3 -7
  5. bec_widgets/qt_utils/error_popups.py +3 -8
  6. bec_widgets/widgets/containers/dock/dock_area.py +1 -1
  7. bec_widgets/widgets/control/device_control/positioner_box/__init__.py +11 -0
  8. bec_widgets/widgets/control/device_control/positioner_box/_base/__init__.py +3 -0
  9. bec_widgets/widgets/control/device_control/positioner_box/_base/positioner_box_base.py +243 -0
  10. bec_widgets/widgets/control/device_control/positioner_box/positioner_box/__init__.py +0 -0
  11. bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.py +242 -0
  12. bec_widgets/widgets/control/device_control/positioner_box/{positioner_box_plugin.py → positioner_box/positioner_box_plugin.py} +1 -1
  13. bec_widgets/widgets/control/device_control/positioner_box/{register_positioner_box.py → positioner_box/register_positioner_box.py} +1 -1
  14. bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/__init__.py +0 -0
  15. bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box2_d.pyproject +1 -0
  16. bec_widgets/widgets/control/{device_input/signal_combobox/signal_combo_box_plugin.py → device_control/positioner_box/positioner_box_2d/positioner_box2_d_plugin.py} +11 -9
  17. bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box_2d.py +482 -0
  18. bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box_2d.ui +562 -0
  19. bec_widgets/widgets/control/{device_input/signal_combobox/register_signal_combo_box.py → device_control/positioner_box/positioner_box_2d/register_positioner_box2_d.py} +3 -3
  20. bec_widgets/widgets/control/device_control/positioner_box/{positioner_control_line.py → positioner_control_line/positioner_control_line.py} +5 -2
  21. bec_widgets/widgets/control/device_control/positioner_box/{positioner_control_line_plugin.py → positioner_control_line/positioner_control_line_plugin.py} +1 -3
  22. bec_widgets/widgets/control/device_control/positioner_box/{register_positioner_control_line.py → positioner_control_line/register_positioner_control_line.py} +1 -1
  23. bec_widgets/widgets/control/device_control/positioner_group/positioner_group.py +7 -6
  24. {bec_widgets-1.16.4.dist-info → bec_widgets-1.17.0.dist-info}/METADATA +1 -1
  25. {bec_widgets-1.16.4.dist-info → bec_widgets-1.17.0.dist-info}/RECORD +33 -27
  26. pyproject.toml +1 -1
  27. bec_widgets/widgets/control/device_control/positioner_box/positioner_box.py +0 -352
  28. bec_widgets/widgets/control/device_input/signal_combobox/signal_combo_box.pyproject +0 -1
  29. /bec_widgets/widgets/control/device_control/positioner_box/{positioner_box.pyproject → positioner_box/positioner_box.pyproject} +0 -0
  30. /bec_widgets/widgets/control/device_control/positioner_box/{positioner_box.ui → positioner_box/positioner_box.ui} +0 -0
  31. /bec_widgets/widgets/control/device_control/positioner_box/{positioner_control_line.pyproject → positioner_control_line/positioner_control_line.pyproject} +0 -0
  32. /bec_widgets/widgets/control/device_control/positioner_box/{positioner_control_line.ui → positioner_control_line/positioner_control_line.ui} +0 -0
  33. {bec_widgets-1.16.4.dist-info → bec_widgets-1.17.0.dist-info}/WHEEL +0 -0
  34. {bec_widgets-1.16.4.dist-info → bec_widgets-1.17.0.dist-info}/entry_points.txt +0 -0
  35. {bec_widgets-1.16.4.dist-info → bec_widgets-1.17.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,562 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <ui version="4.0">
3
+ <class>Form</class>
4
+ <widget class="QWidget" name="Form">
5
+ <property name="geometry">
6
+ <rect>
7
+ <x>0</x>
8
+ <y>0</y>
9
+ <width>326</width>
10
+ <height>323</height>
11
+ </rect>
12
+ </property>
13
+ <property name="windowTitle">
14
+ <string>Form</string>
15
+ </property>
16
+ <layout class="QGridLayout" name="gridLayout">
17
+ <item row="0" column="1">
18
+ <layout class="QGridLayout" name="gridLayout_4">
19
+ <item row="0" column="1">
20
+ <layout class="QGridLayout" name="gridLayout_2">
21
+ <item row="0" column="2">
22
+ <widget class="QGroupBox" name="device_box_ver">
23
+ <property name="title">
24
+ <string>No positioner selected</string>
25
+ </property>
26
+ <layout class="QGridLayout" name="gridLayout_6" rowstretch="0,0,0,0,0,0">
27
+ <property name="topMargin">
28
+ <number>0</number>
29
+ </property>
30
+ <item row="1" column="0">
31
+ <layout class="QHBoxLayout" name="horizontalLayout_5">
32
+ <item>
33
+ <widget class="QToolButton" name="tool_button_ver">
34
+ <property name="focusPolicy">
35
+ <enum>Qt::FocusPolicy::NoFocus</enum>
36
+ </property>
37
+ <property name="text">
38
+ <string>...</string>
39
+ </property>
40
+ </widget>
41
+ </item>
42
+ <item>
43
+ <widget class="QLabel" name="readback_ver">
44
+ <property name="text">
45
+ <string>Position</string>
46
+ </property>
47
+ <property name="alignment">
48
+ <set>Qt::AlignmentFlag::AlignCenter</set>
49
+ </property>
50
+ </widget>
51
+ </item>
52
+ <item>
53
+ <widget class="SpinnerWidget" name="spinner_widget_ver">
54
+ <property name="minimumSize">
55
+ <size>
56
+ <width>25</width>
57
+ <height>25</height>
58
+ </size>
59
+ </property>
60
+ <property name="maximumSize">
61
+ <size>
62
+ <width>25</width>
63
+ <height>25</height>
64
+ </size>
65
+ </property>
66
+ </widget>
67
+ </item>
68
+ </layout>
69
+ </item>
70
+ <item row="2" column="0">
71
+ <widget class="QLineEdit" name="setpoint_ver">
72
+ <property name="enabled">
73
+ <bool>false</bool>
74
+ </property>
75
+ <property name="focusPolicy">
76
+ <enum>Qt::FocusPolicy::StrongFocus</enum>
77
+ </property>
78
+ <property name="alignment">
79
+ <set>Qt::AlignmentFlag::AlignCenter</set>
80
+ </property>
81
+ </widget>
82
+ </item>
83
+ <item row="5" column="0">
84
+ <layout class="QHBoxLayout" name="horizontalLayout_6">
85
+ <item>
86
+ <widget class="QDoubleSpinBox" name="step_size_ver">
87
+ <property name="enabled">
88
+ <bool>false</bool>
89
+ </property>
90
+ <property name="focusPolicy">
91
+ <enum>Qt::FocusPolicy::StrongFocus</enum>
92
+ </property>
93
+ </widget>
94
+ </item>
95
+ </layout>
96
+ </item>
97
+ </layout>
98
+ </widget>
99
+ </item>
100
+ <item row="0" column="1">
101
+ <widget class="QGroupBox" name="device_box_hor">
102
+ <property name="title">
103
+ <string>No positioner selected</string>
104
+ </property>
105
+ <layout class="QGridLayout" name="gridLayout_5" rowstretch="0,0,0,0,0,0,0,0,0,0,0">
106
+ <property name="topMargin">
107
+ <number>0</number>
108
+ </property>
109
+ <item row="9" column="0">
110
+ <widget class="QLineEdit" name="setpoint_hor">
111
+ <property name="enabled">
112
+ <bool>false</bool>
113
+ </property>
114
+ <property name="focusPolicy">
115
+ <enum>Qt::FocusPolicy::StrongFocus</enum>
116
+ </property>
117
+ <property name="alignment">
118
+ <set>Qt::AlignmentFlag::AlignCenter</set>
119
+ </property>
120
+ </widget>
121
+ </item>
122
+ <item row="1" column="0">
123
+ <layout class="QHBoxLayout" name="horizontalLayout_4">
124
+ <item>
125
+ <widget class="QToolButton" name="tool_button_hor">
126
+ <property name="focusPolicy">
127
+ <enum>Qt::FocusPolicy::NoFocus</enum>
128
+ </property>
129
+ <property name="text">
130
+ <string>...</string>
131
+ </property>
132
+ </widget>
133
+ </item>
134
+ <item>
135
+ <widget class="QLabel" name="readback_hor">
136
+ <property name="text">
137
+ <string>Position</string>
138
+ </property>
139
+ <property name="alignment">
140
+ <set>Qt::AlignmentFlag::AlignCenter</set>
141
+ </property>
142
+ </widget>
143
+ </item>
144
+ <item>
145
+ <widget class="SpinnerWidget" name="spinner_widget_hor">
146
+ <property name="minimumSize">
147
+ <size>
148
+ <width>25</width>
149
+ <height>25</height>
150
+ </size>
151
+ </property>
152
+ <property name="maximumSize">
153
+ <size>
154
+ <width>25</width>
155
+ <height>25</height>
156
+ </size>
157
+ </property>
158
+ </widget>
159
+ </item>
160
+ </layout>
161
+ </item>
162
+ <item row="10" column="0">
163
+ <layout class="QHBoxLayout" name="horizontalLayout_7">
164
+ <item>
165
+ <widget class="QDoubleSpinBox" name="step_size_hor">
166
+ <property name="enabled">
167
+ <bool>false</bool>
168
+ </property>
169
+ <property name="focusPolicy">
170
+ <enum>Qt::FocusPolicy::StrongFocus</enum>
171
+ </property>
172
+ </widget>
173
+ </item>
174
+ </layout>
175
+ </item>
176
+ </layout>
177
+ </widget>
178
+ </item>
179
+ </layout>
180
+ </item>
181
+ <item row="4" column="0">
182
+ <widget class="PositionIndicator" name="position_indicator_ver">
183
+ <property name="sizePolicy">
184
+ <sizepolicy hsizetype="Fixed" vsizetype="Preferred">
185
+ <horstretch>0</horstretch>
186
+ <verstretch>0</verstretch>
187
+ </sizepolicy>
188
+ </property>
189
+ <property name="maximum" stdset="0">
190
+ <double>1.000000000000000</double>
191
+ </property>
192
+ <property name="vertical" stdset="0">
193
+ <bool>true</bool>
194
+ </property>
195
+ <property name="value" stdset="0">
196
+ <double>0.500000000000000</double>
197
+ </property>
198
+ <property name="indicator_width" stdset="0">
199
+ <number>4</number>
200
+ </property>
201
+ <property name="rounded_corners" stdset="0">
202
+ <number>4</number>
203
+ </property>
204
+ </widget>
205
+ </item>
206
+ <item row="4" column="1">
207
+ <layout class="QGridLayout" name="gridLayout_3">
208
+ <item row="0" column="3">
209
+ <widget class="QPushButton" name="step_increase_ver">
210
+ <property name="focusPolicy">
211
+ <enum>Qt::FocusPolicy::NoFocus</enum>
212
+ </property>
213
+ <property name="text">
214
+ <string/>
215
+ </property>
216
+ </widget>
217
+ </item>
218
+ <item row="2" column="5">
219
+ <spacer name="horizontalSpacer_3">
220
+ <property name="orientation">
221
+ <enum>Qt::Orientation::Horizontal</enum>
222
+ </property>
223
+ <property name="sizeHint" stdset="0">
224
+ <size>
225
+ <width>40</width>
226
+ <height>20</height>
227
+ </size>
228
+ </property>
229
+ </spacer>
230
+ </item>
231
+ <item row="6" column="3">
232
+ <widget class="QPushButton" name="step_decrease_ver">
233
+ <property name="focusPolicy">
234
+ <enum>Qt::FocusPolicy::NoFocus</enum>
235
+ </property>
236
+ <property name="text">
237
+ <string/>
238
+ </property>
239
+ </widget>
240
+ </item>
241
+ <item row="4" column="5">
242
+ <spacer name="horizontalSpacer_2">
243
+ <property name="orientation">
244
+ <enum>Qt::Orientation::Horizontal</enum>
245
+ </property>
246
+ <property name="sizeHint" stdset="0">
247
+ <size>
248
+ <width>40</width>
249
+ <height>20</height>
250
+ </size>
251
+ </property>
252
+ </spacer>
253
+ </item>
254
+ <item row="6" column="2">
255
+ <spacer name="horizontalSpacer_16">
256
+ <property name="orientation">
257
+ <enum>Qt::Orientation::Horizontal</enum>
258
+ </property>
259
+ <property name="sizeHint" stdset="0">
260
+ <size>
261
+ <width>10</width>
262
+ <height>20</height>
263
+ </size>
264
+ </property>
265
+ </spacer>
266
+ </item>
267
+ <item row="2" column="1">
268
+ <spacer name="horizontalSpacer">
269
+ <property name="orientation">
270
+ <enum>Qt::Orientation::Horizontal</enum>
271
+ </property>
272
+ <property name="sizeHint" stdset="0">
273
+ <size>
274
+ <width>40</width>
275
+ <height>20</height>
276
+ </size>
277
+ </property>
278
+ </spacer>
279
+ </item>
280
+ <item row="0" column="2">
281
+ <spacer name="horizontalSpacer_14">
282
+ <property name="orientation">
283
+ <enum>Qt::Orientation::Horizontal</enum>
284
+ </property>
285
+ <property name="sizeHint" stdset="0">
286
+ <size>
287
+ <width>10</width>
288
+ <height>20</height>
289
+ </size>
290
+ </property>
291
+ </spacer>
292
+ </item>
293
+ <item row="4" column="1">
294
+ <spacer name="horizontalSpacer_17">
295
+ <property name="orientation">
296
+ <enum>Qt::Orientation::Horizontal</enum>
297
+ </property>
298
+ <property name="sizeHint" stdset="0">
299
+ <size>
300
+ <width>40</width>
301
+ <height>20</height>
302
+ </size>
303
+ </property>
304
+ </spacer>
305
+ </item>
306
+ <item row="2" column="2">
307
+ <spacer name="horizontalSpacer_7">
308
+ <property name="orientation">
309
+ <enum>Qt::Orientation::Horizontal</enum>
310
+ </property>
311
+ <property name="sizeHint" stdset="0">
312
+ <size>
313
+ <width>10</width>
314
+ <height>20</height>
315
+ </size>
316
+ </property>
317
+ </spacer>
318
+ </item>
319
+ <item row="6" column="1">
320
+ <spacer name="horizontalSpacer_4">
321
+ <property name="orientation">
322
+ <enum>Qt::Orientation::Horizontal</enum>
323
+ </property>
324
+ <property name="sizeHint" stdset="0">
325
+ <size>
326
+ <width>40</width>
327
+ <height>20</height>
328
+ </size>
329
+ </property>
330
+ </spacer>
331
+ </item>
332
+ <item row="3" column="3">
333
+ <spacer name="horizontalSpacer_6">
334
+ <property name="orientation">
335
+ <enum>Qt::Orientation::Horizontal</enum>
336
+ </property>
337
+ <property name="sizeHint" stdset="0">
338
+ <size>
339
+ <width>40</width>
340
+ <height>20</height>
341
+ </size>
342
+ </property>
343
+ </spacer>
344
+ </item>
345
+ <item row="3" column="5">
346
+ <widget class="QPushButton" name="step_increase_hor">
347
+ <property name="focusPolicy">
348
+ <enum>Qt::FocusPolicy::NoFocus</enum>
349
+ </property>
350
+ <property name="text">
351
+ <string/>
352
+ </property>
353
+ </widget>
354
+ </item>
355
+ <item row="6" column="4">
356
+ <spacer name="horizontalSpacer_10">
357
+ <property name="orientation">
358
+ <enum>Qt::Orientation::Horizontal</enum>
359
+ </property>
360
+ <property name="sizeHint" stdset="0">
361
+ <size>
362
+ <width>40</width>
363
+ <height>20</height>
364
+ </size>
365
+ </property>
366
+ </spacer>
367
+ </item>
368
+ <item row="3" column="2">
369
+ <widget class="QPushButton" name="tweak_decrease_hor">
370
+ <property name="focusPolicy">
371
+ <enum>Qt::FocusPolicy::NoFocus</enum>
372
+ </property>
373
+ <property name="text">
374
+ <string/>
375
+ </property>
376
+ </widget>
377
+ </item>
378
+ <item row="4" column="2">
379
+ <spacer name="horizontalSpacer_15">
380
+ <property name="orientation">
381
+ <enum>Qt::Orientation::Horizontal</enum>
382
+ </property>
383
+ <property name="sizeHint" stdset="0">
384
+ <size>
385
+ <width>10</width>
386
+ <height>20</height>
387
+ </size>
388
+ </property>
389
+ </spacer>
390
+ </item>
391
+ <item row="0" column="1">
392
+ <spacer name="horizontalSpacer_35">
393
+ <property name="orientation">
394
+ <enum>Qt::Orientation::Horizontal</enum>
395
+ </property>
396
+ <property name="sizeHint" stdset="0">
397
+ <size>
398
+ <width>40</width>
399
+ <height>20</height>
400
+ </size>
401
+ </property>
402
+ </spacer>
403
+ </item>
404
+ <item row="4" column="3">
405
+ <widget class="QPushButton" name="tweak_decrease_ver">
406
+ <property name="focusPolicy">
407
+ <enum>Qt::FocusPolicy::NoFocus</enum>
408
+ </property>
409
+ <property name="text">
410
+ <string/>
411
+ </property>
412
+ </widget>
413
+ </item>
414
+ <item row="3" column="1">
415
+ <widget class="QPushButton" name="step_decrease_hor">
416
+ <property name="focusPolicy">
417
+ <enum>Qt::FocusPolicy::NoFocus</enum>
418
+ </property>
419
+ <property name="text">
420
+ <string/>
421
+ </property>
422
+ </widget>
423
+ </item>
424
+ <item row="3" column="4">
425
+ <widget class="QPushButton" name="tweak_increase_hor">
426
+ <property name="focusPolicy">
427
+ <enum>Qt::FocusPolicy::NoFocus</enum>
428
+ </property>
429
+ <property name="text">
430
+ <string/>
431
+ </property>
432
+ </widget>
433
+ </item>
434
+ <item row="2" column="3">
435
+ <widget class="QPushButton" name="tweak_increase_ver">
436
+ <property name="focusPolicy">
437
+ <enum>Qt::FocusPolicy::NoFocus</enum>
438
+ </property>
439
+ <property name="text">
440
+ <string/>
441
+ </property>
442
+ </widget>
443
+ </item>
444
+ <item row="2" column="4">
445
+ <spacer name="horizontalSpacer_12">
446
+ <property name="orientation">
447
+ <enum>Qt::Orientation::Horizontal</enum>
448
+ </property>
449
+ <property name="sizeHint" stdset="0">
450
+ <size>
451
+ <width>40</width>
452
+ <height>20</height>
453
+ </size>
454
+ </property>
455
+ </spacer>
456
+ </item>
457
+ <item row="0" column="4">
458
+ <spacer name="horizontalSpacer_8">
459
+ <property name="orientation">
460
+ <enum>Qt::Orientation::Horizontal</enum>
461
+ </property>
462
+ <property name="sizeHint" stdset="0">
463
+ <size>
464
+ <width>40</width>
465
+ <height>20</height>
466
+ </size>
467
+ </property>
468
+ </spacer>
469
+ </item>
470
+ <item row="4" column="4">
471
+ <spacer name="horizontalSpacer_11">
472
+ <property name="orientation">
473
+ <enum>Qt::Orientation::Horizontal</enum>
474
+ </property>
475
+ <property name="sizeHint" stdset="0">
476
+ <size>
477
+ <width>40</width>
478
+ <height>20</height>
479
+ </size>
480
+ </property>
481
+ </spacer>
482
+ </item>
483
+ <item row="0" column="5">
484
+ <spacer name="horizontalSpacer_5">
485
+ <property name="orientation">
486
+ <enum>Qt::Orientation::Horizontal</enum>
487
+ </property>
488
+ <property name="sizeHint" stdset="0">
489
+ <size>
490
+ <width>40</width>
491
+ <height>20</height>
492
+ </size>
493
+ </property>
494
+ </spacer>
495
+ </item>
496
+ <item row="6" column="5">
497
+ <widget class="StopButton" name="stop_button"/>
498
+ </item>
499
+ </layout>
500
+ </item>
501
+ <item row="2" column="1">
502
+ <widget class="PositionIndicator" name="position_indicator_hor">
503
+ <property name="sizePolicy">
504
+ <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
505
+ <horstretch>0</horstretch>
506
+ <verstretch>0</verstretch>
507
+ </sizepolicy>
508
+ </property>
509
+ <property name="maximum" stdset="0">
510
+ <double>1.000000000000000</double>
511
+ </property>
512
+ <property name="value" stdset="0">
513
+ <double>0.500000000000000</double>
514
+ </property>
515
+ <property name="indicator_width" stdset="0">
516
+ <number>4</number>
517
+ </property>
518
+ <property name="rounded_corners" stdset="0">
519
+ <number>4</number>
520
+ </property>
521
+ </widget>
522
+ </item>
523
+ </layout>
524
+ </item>
525
+ </layout>
526
+ </widget>
527
+ <customwidgets>
528
+ <customwidget>
529
+ <class>StopButton</class>
530
+ <extends>QWidget</extends>
531
+ <header>stop_button</header>
532
+ </customwidget>
533
+ <customwidget>
534
+ <class>PositionIndicator</class>
535
+ <extends>QWidget</extends>
536
+ <header>position_indicator</header>
537
+ </customwidget>
538
+ <customwidget>
539
+ <class>SpinnerWidget</class>
540
+ <extends>QWidget</extends>
541
+ <header>spinner_widget</header>
542
+ </customwidget>
543
+ </customwidgets>
544
+ <tabstops>
545
+ <tabstop>tool_button_hor</tabstop>
546
+ <tabstop>tool_button_ver</tabstop>
547
+ <tabstop>setpoint_hor</tabstop>
548
+ <tabstop>setpoint_ver</tabstop>
549
+ <tabstop>step_size_hor</tabstop>
550
+ <tabstop>step_size_ver</tabstop>
551
+ <tabstop>tweak_decrease_hor</tabstop>
552
+ <tabstop>tweak_increase_ver</tabstop>
553
+ <tabstop>tweak_increase_hor</tabstop>
554
+ <tabstop>tweak_decrease_ver</tabstop>
555
+ <tabstop>step_decrease_hor</tabstop>
556
+ <tabstop>step_increase_ver</tabstop>
557
+ <tabstop>step_increase_hor</tabstop>
558
+ <tabstop>step_decrease_ver</tabstop>
559
+ </tabstops>
560
+ <resources/>
561
+ <connections/>
562
+ </ui>
@@ -6,11 +6,11 @@ def main(): # pragma: no cover
6
6
  return
7
7
  from PySide6.QtDesigner import QPyDesignerCustomWidgetCollection
8
8
 
9
- from bec_widgets.widgets.control.device_input.signal_combobox.signal_combo_box_plugin import (
10
- SignalComboBoxPlugin,
9
+ from bec_widgets.widgets.control.device_control.positioner_box.positioner_box_2d.positioner_box2_d_plugin import (
10
+ PositionerBox2DPlugin,
11
11
  )
12
12
 
13
- QPyDesignerCustomWidgetCollection.addCustomWidget(SignalComboBoxPlugin())
13
+ QPyDesignerCustomWidgetCollection.addCustomWidget(PositionerBox2DPlugin())
14
14
 
15
15
 
16
16
  if __name__ == "__main__": # pragma: no cover
@@ -1,6 +1,8 @@
1
+ import os
2
+
1
3
  from bec_lib.device import Positioner
2
4
 
3
- from bec_widgets.widgets.control.device_control.positioner_box.positioner_box import PositionerBox
5
+ from bec_widgets.widgets.control.device_control.positioner_box import PositionerBox
4
6
 
5
7
 
6
8
  class PositionerControlLine(PositionerBox):
@@ -12,13 +14,14 @@ class PositionerControlLine(PositionerBox):
12
14
  PLUGIN = True
13
15
  ICON_NAME = "switch_left"
14
16
 
15
- def __init__(self, parent=None, device: Positioner = None, *args, **kwargs):
17
+ def __init__(self, parent=None, device: Positioner | str | None = None, *args, **kwargs):
16
18
  """Initialize the DeviceControlLine.
17
19
 
18
20
  Args:
19
21
  parent: The parent widget.
20
22
  device (Positioner): The device to control.
21
23
  """
24
+ self.current_path = os.path.dirname(__file__)
22
25
  super().__init__(parent=parent, device=device, *args, **kwargs)
23
26
 
24
27
 
@@ -6,9 +6,7 @@ import os
6
6
  from qtpy.QtDesigner import QDesignerCustomWidgetInterface
7
7
 
8
8
  from bec_widgets.utils.bec_designer import designer_material_icon
9
- from bec_widgets.widgets.control.device_control.positioner_box.positioner_control_line import (
10
- PositionerControlLine,
11
- )
9
+ from bec_widgets.widgets.control.device_control.positioner_box import PositionerControlLine
12
10
 
13
11
  DOM_XML = """
14
12
  <ui language='c++'>
@@ -6,7 +6,7 @@ def main(): # pragma: no cover
6
6
  return
7
7
  from PySide6.QtDesigner import QPyDesignerCustomWidgetCollection
8
8
 
9
- from bec_widgets.widgets.control.device_control.positioner_box.positioner_control_line_plugin import (
9
+ from bec_widgets.widgets.control.device_control.positioner_box.positioner_control_line.positioner_control_line_plugin import (
10
10
  PositionerControlLinePlugin,
11
11
  )
12
12
 
@@ -4,11 +4,12 @@ from __future__ import annotations
4
4
 
5
5
  from bec_lib.device import Positioner
6
6
  from bec_lib.logger import bec_logger
7
- from qtpy.QtCore import Property, QSize, Signal, Slot
7
+ from qtpy.QtCore import QSize, Signal
8
8
  from qtpy.QtWidgets import QGridLayout, QGroupBox, QVBoxLayout, QWidget
9
9
 
10
+ from bec_widgets.qt_utils.error_popups import SafeProperty, SafeSlot
10
11
  from bec_widgets.utils.bec_widget import BECWidget
11
- from bec_widgets.widgets.control.device_control.positioner_box.positioner_box import PositionerBox
12
+ from bec_widgets.widgets.control.device_control.positioner_box import PositionerBox
12
13
 
13
14
  logger = bec_logger.logger
14
15
 
@@ -32,7 +33,7 @@ class PositionerGroupBox(QGroupBox):
32
33
  self.widget.position_update.connect(self._on_position_update)
33
34
  self.widget.expand.connect(self._on_expand)
34
35
  self.setTitle(self.device_name)
35
- self.widget.init_device() # force readback
36
+ self.widget.force_update_readback()
36
37
 
37
38
  def _on_expand(self, expand):
38
39
  if expand:
@@ -82,7 +83,7 @@ class PositionerGroup(BECWidget, QWidget):
82
83
  def minimumSizeHint(self):
83
84
  return QSize(300, 30)
84
85
 
85
- @Slot(str)
86
+ @SafeSlot(str)
86
87
  def set_positioners(self, device_names: str):
87
88
  """Redraw grid with positioners from device_names string
88
89
 
@@ -130,7 +131,7 @@ class PositionerGroup(BECWidget, QWidget):
130
131
  widget = self.sender()
131
132
  self.device_position_update.emit(widget.title(), pos)
132
133
 
133
- @Property(str)
134
+ @SafeProperty(str)
134
135
  def devices_list(self):
135
136
  """Device names string separated by space"""
136
137
  return " ".join(self._device_widgets)
@@ -144,7 +145,7 @@ class PositionerGroup(BECWidget, QWidget):
144
145
  return
145
146
  self.set_positioners(device_names)
146
147
 
147
- @Property(int)
148
+ @SafeProperty(int)
148
149
  def grid_max_cols(self):
149
150
  """Max number of columns for widgets grid"""
150
151
  return self._grid_ncols
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bec_widgets
3
- Version: 1.16.4
3
+ Version: 1.17.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