bec-widgets 0.55.0__py3-none-any.whl → 0.56.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. .gitlab-ci.yml +113 -8
  2. CHANGELOG.md +34 -28
  3. PKG-INFO +3 -1
  4. bec_widgets/examples/jupyter_console/jupyter_console_window.py +28 -38
  5. bec_widgets/examples/motor_movement/motor_control_compilations.py +1 -7
  6. bec_widgets/utils/__init__.py +1 -0
  7. bec_widgets/utils/crosshair.py +13 -9
  8. bec_widgets/utils/ui_loader.py +58 -0
  9. bec_widgets/widgets/motor_control/motor_table/motor_table.py +44 -43
  10. bec_widgets/widgets/motor_control/movement_absolute/movement_absolute.py +25 -23
  11. bec_widgets/widgets/motor_control/movement_relative/movement_relative.py +51 -48
  12. bec_widgets/widgets/spiral_progress_bar/ring.py +5 -5
  13. {bec_widgets-0.55.0.dist-info → bec_widgets-0.56.1.dist-info}/METADATA +3 -1
  14. {bec_widgets-0.55.0.dist-info → bec_widgets-0.56.1.dist-info}/RECORD +22 -43
  15. docs/user/apps.md +1 -26
  16. pyproject.toml +2 -1
  17. tests/end-2-end/test_bec_dock_rpc_e2e.py +1 -1
  18. tests/unit_tests/test_client_utils.py +2 -2
  19. tests/unit_tests/test_crosshair.py +5 -5
  20. tests/unit_tests/test_motor_control.py +49 -45
  21. bec_widgets/examples/eiger_plot/__init__.py +0 -0
  22. bec_widgets/examples/eiger_plot/eiger_plot.py +0 -307
  23. bec_widgets/examples/eiger_plot/eiger_plot.ui +0 -207
  24. bec_widgets/examples/mca_readout/__init__.py +0 -0
  25. bec_widgets/examples/mca_readout/mca_plot.py +0 -159
  26. bec_widgets/examples/mca_readout/mca_sim.py +0 -28
  27. bec_widgets/examples/modular_app/___init__.py +0 -0
  28. bec_widgets/examples/modular_app/modular.ui +0 -92
  29. bec_widgets/examples/modular_app/modular_app.py +0 -197
  30. bec_widgets/examples/motor_movement/config_example.yaml +0 -17
  31. bec_widgets/examples/motor_movement/csax_bec_config.yaml +0 -10
  32. bec_widgets/examples/motor_movement/csaxs_config.yaml +0 -17
  33. bec_widgets/examples/motor_movement/motor_example.py +0 -1344
  34. bec_widgets/examples/stream_plot/__init__.py +0 -0
  35. bec_widgets/examples/stream_plot/line_plot.ui +0 -155
  36. bec_widgets/examples/stream_plot/stream_plot.py +0 -337
  37. docs/user/apps/modular_app.md +0 -6
  38. docs/user/apps/motor_app.md +0 -34
  39. docs/user/apps/motor_app_10fps.gif +0 -0
  40. docs/user/apps/plot_app.md +0 -6
  41. tests/unit_tests/test_eiger_plot.py +0 -115
  42. tests/unit_tests/test_stream_plot.py +0 -158
  43. {bec_widgets-0.55.0.dist-info → bec_widgets-0.56.1.dist-info}/WHEEL +0 -0
  44. {bec_widgets-0.55.0.dist-info → bec_widgets-0.56.1.dist-info}/licenses/LICENSE +0 -0
@@ -1,12 +1,12 @@
1
1
  .gitignore,sha256=cMQ1MLmnoR88aMCCJwUyfoTnufzl4-ckmHtlFUqHcT4,3253
2
- .gitlab-ci.yml,sha256=_PqbjtXpiMv7OxzoU-B47YU7majkBeE_JSKBtjGC5bQ,7431
2
+ .gitlab-ci.yml,sha256=14teoIFfOHkepa-_tW9nAxSF3sjdWnRMFLfu2yooR5s,12236
3
3
  .pylintrc,sha256=OstrgmEyP0smNFBKoIN5_26-UmNZgMHnbjvAWX0UrLs,18535
4
4
  .readthedocs.yaml,sha256=aSOc277LqXcsTI6lgvm_JY80lMlr69GbPKgivua2cS0,603
5
- CHANGELOG.md,sha256=6VjUItLDP71wv088iD7ftDTxwfGh8gisqcKBRc0LJeI,6952
5
+ CHANGELOG.md,sha256=hZS8WkcyftWivZY--uu9Batq5Ig6ntZL856PUpZc2d4,7040
6
6
  LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
7
- PKG-INFO,sha256=8Wn70dSc1GkR9LOnN7APfZyE_6cg1AVFDdUZPibL7fA,1063
7
+ PKG-INFO,sha256=4rY1pWoAcOkokzBNWFTqvh8_74Dz7kdoz-j57_wuvn8,1135
8
8
  README.md,sha256=y4jB6wvArS7N8_iTbKWnSM_oRAqLA2GqgzUR-FMh5sU,2645
9
- pyproject.toml,sha256=A4IXZwRt1wrG3z7hug1ah7hBxr03rkJ5GKSYS9nyPBs,1776
9
+ pyproject.toml,sha256=FfsH75R3b_wXYFyNh22RBMlAabKycZ7JpBrm3_fvsGo,1803
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,40 +24,25 @@ bec_widgets/cli/rpc_register.py,sha256=QxXUZu5XNg00Yf5O3UHWOXg3-f_pzKjjoZYMOa-MO
24
24
  bec_widgets/cli/rpc_wigdet_handler.py,sha256=OXHoiDFJPzbQ5RO0bzIX5aUXeMMlJTwAiTmB0_7Chj4,913
25
25
  bec_widgets/cli/server.py,sha256=rsj31Vsx6ayThNe4PQelQFahGjYXFZjfrNyB2fnm6Ro,5737
26
26
  bec_widgets/examples/__init__.py,sha256=WWQ0cu7m8sA4Ehy-DWdTIqSISjaHsbxhsNmNrMnhDZU,202
27
- bec_widgets/examples/eiger_plot/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
- bec_widgets/examples/eiger_plot/eiger_plot.py,sha256=Uxl2Usf8jEzaX7AT8zVqa1x8ZIEgI1HmazSlb-tRFWE,10359
29
- bec_widgets/examples/eiger_plot/eiger_plot.ui,sha256=grHfnO3OG_lelJhdRsnA0badCvRdDunPrIMIyNQ5N-w,5809
30
27
  bec_widgets/examples/jupyter_console/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
31
- bec_widgets/examples/jupyter_console/jupyter_console_window.py,sha256=I1bnNtA9hJS0HRKMJJsPeBwZwmeVh66JYadhlTMzkOo,5858
28
+ bec_widgets/examples/jupyter_console/jupyter_console_window.py,sha256=O_jcU7DY39PCrjVSJ7YJtTNSj8-se_AvzsgEiVqmKk8,5266
32
29
  bec_widgets/examples/jupyter_console/jupyter_console_window.ui,sha256=2A2mNTUMZBYygz8K4qWzrcjnNqZBMVyeHm26iLZVRWI,1473
33
- bec_widgets/examples/mca_readout/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
- bec_widgets/examples/mca_readout/mca_plot.py,sha256=vjIOcTtHIsLmHW6N-bI7RTyjeYg0r8Ob-nZvvGC0kro,5124
35
- bec_widgets/examples/mca_readout/mca_sim.py,sha256=IbVW10lmorsxP0Ctqe81-b_WBi96jBPgzAHCUBoPzTY,818
36
- bec_widgets/examples/modular_app/___init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
- bec_widgets/examples/modular_app/modular.ui,sha256=QM_sCgVELDOt18-4LHNRTjEcq2Ogf6e-E0-JidgkuGY,2450
38
- bec_widgets/examples/modular_app/modular_app.py,sha256=F-VuxVfTL6WC2aPz1PIXKhU2cEcP1F8VXp-AwdWnk9o,6178
39
30
  bec_widgets/examples/motor_movement/__init__.py,sha256=LzPJkxLAxOsZCbXR-fRCPmeYobp7Yqds6tDxW4W1gSw,214
40
- bec_widgets/examples/motor_movement/config_example.yaml,sha256=YT8Bl3ViTaP03cX9X8kIgWnkoxaQOFqS-oRrclGS2hc,356
41
- bec_widgets/examples/motor_movement/csax_bec_config.yaml,sha256=cqhzwfIhFgHfCt90oVW3no8aVlWg7V42t4iiJCnydSw,146
42
- bec_widgets/examples/motor_movement/csaxs_config.yaml,sha256=poNndp-1ptdnriIJ_RTnbAimFlOJ45VdxfkclGEQlgc,344
43
- bec_widgets/examples/motor_movement/motor_control_compilations.py,sha256=hEkhCOjRgY1t7vZ1e_Olus2IeYDorybd8waHoVaM53Y,9303
31
+ bec_widgets/examples/motor_movement/motor_control_compilations.py,sha256=8rpA7a2xVZTDMrx7YQIj3IJew78J1gcVMkHvloS0U_Q,9055
44
32
  bec_widgets/examples/motor_movement/motor_controller.ui,sha256=83XX6NGILwntoUIghvzWnMuGf80O8khK3SduVKTAEFM,29105
45
- bec_widgets/examples/motor_movement/motor_example.py,sha256=P7gYgHldDR1tmAsEBePQRT7xIylsaN_jNWviwpDNek4,53350
46
- bec_widgets/examples/stream_plot/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
- bec_widgets/examples/stream_plot/line_plot.ui,sha256=rgNfhOXu1AcWF0P6wnOlmJKDjS-VIoduVrREvmzJQR8,4626
48
- bec_widgets/examples/stream_plot/stream_plot.py,sha256=PgzFOwAqX-2QdrCyURn6fCBQX_YA_nmme95NrFfX0CM,12206
49
- bec_widgets/utils/__init__.py,sha256=PAHNbPFnPD-XGxKBZ7ctx9WBrvm9MArkCYDNfoOxVJA,449
33
+ bec_widgets/utils/__init__.py,sha256=B7OZ2ArjyFaGNh4XYIbk49agnYCz704ltuFSalLCjSA,481
50
34
  bec_widgets/utils/bec_connector.py,sha256=CRaYgnxPS0Yxf5nOH66q3oa8HtYnjgwyWlE9lCFn0k0,5285
51
35
  bec_widgets/utils/bec_dispatcher.py,sha256=nLdcj2u4dy8-ZR03XioCzr7hBg9Wq4Kw58OU6sDorT4,5593
52
36
  bec_widgets/utils/bec_table.py,sha256=nA2b8ukSeUfquFMAxGrUVOqdrzMoDYD6O_4EYbOG2zk,717
53
37
  bec_widgets/utils/colors.py,sha256=JsLxzkxbw-I8GIuvnIKyiM83n0edhyMG2Fa4Ffm62ww,2392
54
38
  bec_widgets/utils/container_utils.py,sha256=m3VUyAYmSWkEwApP9tBvKxPYVtc2kHw4toxIpMryJy4,1495
55
- bec_widgets/utils/crosshair.py,sha256=L4-N8HGgCbY0L3qftv8vi3c9FRdr1aMsRhI54w8aFso,9407
39
+ bec_widgets/utils/crosshair.py,sha256=SubY4FQCI6vUKsmMYGKHR7uYdGQJ6vhoYLuC1XlKS9I,9626
56
40
  bec_widgets/utils/entry_validator.py,sha256=IqmtResXQtnmMvWVSl8IrnggqSzXLp4cSggn6WdSTpE,1298
57
41
  bec_widgets/utils/layout_manager.py,sha256=H0nKsIMaPxRkof1MEXlSmW6w1dFxA6astaGzf4stI84,4727
58
42
  bec_widgets/utils/plugin_utils.py,sha256=wi5x7VVFee0PqAcP-EqPWjYfSe-LLhaK93y6qmnbLIw,1487
59
43
  bec_widgets/utils/rpc_decorator.py,sha256=pIvtqySQLnuS7l2Ti_UAe4WX7CRivZnsE5ZdKAihxh0,479
60
44
  bec_widgets/utils/thread_checker.py,sha256=rDNuA3X6KQyA7JPb67mccTg0z8YkInynLAENQDQpbuE,1607
45
+ bec_widgets/utils/ui_loader.py,sha256=5NktcP1r1HQub7K82fW_jkj8rT2cqJQdMvDxwToLY4E,1650
61
46
  bec_widgets/utils/validator_delegate.py,sha256=Emj1WF6W8Ke1ruBWUfmHdVJpmOSPezuOt4zvQTay_44,442
62
47
  bec_widgets/utils/widget_io.py,sha256=f36198CvT_EzWQ_cg2G-4tRRsaMdJ3yVqsZWKJCQEfA,10880
63
48
  bec_widgets/utils/yaml_dialog.py,sha256=cMVif-39SB9WjwGH5FWBJcFs4tnfFJFs5cacydRyhy0,1853
@@ -81,13 +66,13 @@ bec_widgets/widgets/figure/plots/waveform/waveform_curve.py,sha256=9q7nJfyH8y9rW
81
66
  bec_widgets/widgets/motor_control/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
82
67
  bec_widgets/widgets/motor_control/motor_control.py,sha256=UrLCvp3J6uiVxWV2jqQbsA2nsMf9s_rrDH2KjnUm-bk,7890
83
68
  bec_widgets/widgets/motor_control/motor_table/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
84
- bec_widgets/widgets/motor_control/motor_table/motor_table.py,sha256=XSTaNfTXg6qeycxxQ0Y0SBwJLW2toRPj7cGGbkzcEB0,17387
69
+ bec_widgets/widgets/motor_control/motor_table/motor_table.py,sha256=xOTCz4eBKzEUyeOJhnAK--sbf-68H0yg7LM3KH3A9Hc,17570
85
70
  bec_widgets/widgets/motor_control/motor_table/motor_table.ui,sha256=t6aRKiSmutMfp0AyupavbCs0cal-FANEnlKQiPzC9PQ,2792
86
71
  bec_widgets/widgets/motor_control/movement_absolute/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
87
- bec_widgets/widgets/motor_control/movement_absolute/movement_absolute.py,sha256=Ol50UpMvF2_MJR7wesETUG5gUkNBmqRP5qTOeA4prH8,5516
72
+ bec_widgets/widgets/motor_control/movement_absolute/movement_absolute.py,sha256=TQXZ1o4a4ukRAvhbebXC0v2-VGLqHVM2VzSAv5PajDI,5694
88
73
  bec_widgets/widgets/motor_control/movement_absolute/movement_absolute.ui,sha256=nR3p6oevAkIBTLW5wM_zYOVWsCAUgeMZdRm10Q77COE,4126
89
74
  bec_widgets/widgets/motor_control/movement_relative/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
90
- bec_widgets/widgets/motor_control/movement_relative/movement_relative.py,sha256=5gqdWvDfadT_DZm6o3qYw8UgdKlcpEwKDtU7_usP3oo,8706
75
+ bec_widgets/widgets/motor_control/movement_relative/movement_relative.py,sha256=DXFHAxSGskpapRTyDNbG_oqLwFkVOXITYkEXbfQGWWQ,8926
91
76
  bec_widgets/widgets/motor_control/movement_relative/movement_relative.ui,sha256=PulNJNiws7TRAxHM2snNyvlmQ0tRShdArHmtaC85h4U,8684
92
77
  bec_widgets/widgets/motor_control/selection/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
93
78
  bec_widgets/widgets/motor_control/selection/selection.py,sha256=WNHndvv4JvxeAMnDFBMTvUILcn9u_0mWGRsgNiBZEsM,3988
@@ -95,7 +80,7 @@ bec_widgets/widgets/motor_control/selection/selection.ui,sha256=vXXpvNWuL6xyHhW7
95
80
  bec_widgets/widgets/scan_control/__init__.py,sha256=IOfHl15vxb_uC6KN62-PeUzbBha_vQyqkkXbJ2HU674,38
96
81
  bec_widgets/widgets/scan_control/scan_control.py,sha256=B5n2U2iVtTCY3Tx93JyBqzGCDCmWhWwAOhbPelLI-bs,17168
97
82
  bec_widgets/widgets/spiral_progress_bar/__init__.py,sha256=4efbtcqCToMIw5bkQrTzy2TzuBCXvlhuUPh1bYC_Yzg,51
98
- bec_widgets/widgets/spiral_progress_bar/ring.py,sha256=ILAAYEubRcEGyOvwAPpIlccPfi08sZH2giNiym4v2kw,7013
83
+ bec_widgets/widgets/spiral_progress_bar/ring.py,sha256=WLz0OVvyRfeJnTKS6_0Lqh-V4P7G64vuzAcOO18QU9A,7008
99
84
  bec_widgets/widgets/spiral_progress_bar/spiral_progress_bar.py,sha256=Geev5PwJUsYgzoY0a-fx6ZmBOptKTPeJa_Mp8Ouh0fY,22563
100
85
  bec_widgets/widgets/toolbar/__init__.py,sha256=d-TP4_cr_VbpwreMM4ePnfZ5YXsEPQ45ibEf75nuGoE,36
101
86
  bec_widgets/widgets/toolbar/toolbar.py,sha256=e0zCD_0q7K4NVhrzD8001Qvfxt-VhqHTgofchS9NgCM,5125
@@ -109,22 +94,18 @@ docs/_templates/custom-module-template.rst,sha256=MXYXAz06HP_mbblO--iFwL08xROmSB
109
94
  docs/developer/developer.md,sha256=xJvO-EAf-9SqDARRnqFLRd8k_o258U97V0DmvgZKMos,477
110
95
  docs/developer/reference.md,sha256=P0uuBwSWuDhbXifSbyDKJRkDhb1_nETckTTnt12-A4g,150
111
96
  docs/introduction/introduction.md,sha256=wp7jmhkUtJnSnEnmIAZGUcau_3-5e5-FohvZb63khw4,1432
112
- docs/user/apps.md,sha256=BpJXL3uccqa9Z34azMqi9uUsKM1ClnIZZFLLxx_hISs,1651
97
+ docs/user/apps.md,sha256=qD-thmWqP9-m_Jq6peZCDhCXNJO-8TUIt4DWUQI3Dg4,139
113
98
  docs/user/customisation.md,sha256=Og0NuUsTs8HdwKtpHnycGmH8wCqOeYgj2ozlYRJ-Drk,249
114
99
  docs/user/installation.md,sha256=8eotL5UQALR8z5aZ5fiJuR3yJOldg2S91ngvn2VVp7I,1233
115
100
  docs/user/user.md,sha256=e5WKSginne0HMP7KpqmYEqBtHsPUgw36Egwrq3YUnpg,1997
116
101
  docs/user/widgets.md,sha256=viEb7_nqXKcnJT3HqWvq9d2MKRtuwORf58xCquwUWOo,1903
117
- docs/user/apps/modular_app.md,sha256=My95LH2wQLx2kAbssO39N15I_Mqiiv-64ASnaeW9jbs,67
118
- docs/user/apps/motor_app.md,sha256=GiEqDfUbKdIr661lJCQtFFJfwZKLyaKtZC9aBho0jos,2416
119
- docs/user/apps/motor_app_10fps.gif,sha256=jLfOgPoKRcqMqpiYkZNVNHB2IodILzO0IBgWLeSYzeA,5211338
120
- docs/user/apps/plot_app.md,sha256=hq8ZFyuBLqWD018oc6LB12vfXL6i9hiAu-2IfHkyGIA,65
121
102
  docs/user/widgets/motor.gif,sha256=FtaWdRHx4UZaGJPpq8LNhMMgX4PFcAB6IZ93JCMEh_w,2280719
122
103
  docs/user/widgets/scatter_2D.gif,sha256=yHpsuAUseMafJjI_J5BcOhmE3nu9VFn_Xm9XHzJaH5I,13188862
123
104
  docs/user/widgets/w1D.gif,sha256=tuHbleJpl6bJFNNC2OdndF5LF7IyfvlkFCMGZajrQPs,622773
124
105
  tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
125
106
  tests/end-2-end/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
126
107
  tests/end-2-end/conftest.py,sha256=b5Yebbj8C1-IcXq23XGbOnXF0kOZD_Po46Z-p4cBwfs,1346
127
- tests/end-2-end/test_bec_dock_rpc_e2e.py,sha256=q-cbAB13Dv3lvJNYpPNdo2j-2meDzu_3SJGFEE6ENeg,7577
108
+ tests/end-2-end/test_bec_dock_rpc_e2e.py,sha256=PAEKKf2iRcwzBs5v_Egrbpd_zn-KYHV_hH1xj8Tqi2w,7582
128
109
  tests/end-2-end/test_bec_figure_rpc_e2e.py,sha256=X8lQLx2NsB6-nU61IhVtAw1-pJ4A2qFgx5PxOWC0V7Q,5527
129
110
  tests/end-2-end/test_rpc_register_e2e.py,sha256=M7sSq3us2yQIW5tAIFOFfBULatZTQNLdt0frh1bINts,1595
130
111
  tests/unit_tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -135,16 +116,14 @@ tests/unit_tests/test_bec_dispatcher.py,sha256=rYPiRizHaswhGZw55IBMneDFxmPiCCLAZ
135
116
  tests/unit_tests/test_bec_dock.py,sha256=gvtNkkCPrDFY_1qZ53ZXChdgmQFSwwQrr1VeZC5ybKc,3610
136
117
  tests/unit_tests/test_bec_figure.py,sha256=xYAftY8bI_EH-SlNPD0Tjd7FS_47ouZ1E4hrpjPt7O4,8002
137
118
  tests/unit_tests/test_bec_motor_map.py,sha256=AfD_9-x6VV3TPnkQgNfFYRndPHDsGx-a_YknFeDr6hc,4588
138
- tests/unit_tests/test_client_utils.py,sha256=fIApd5WgnJuyIzV-hdSABn6T-aOel2Wr2xuUX4Z651A,774
139
- tests/unit_tests/test_crosshair.py,sha256=d7fX-ymboZPALNqqiAj86PZ96llmGZ_3jf0yjVP0S94,5039
140
- tests/unit_tests/test_eiger_plot.py,sha256=bWnKBQid0YcLMQeBLy6ojb4ZpwTG-rFVT0kMg9Y08p8,4427
119
+ tests/unit_tests/test_client_utils.py,sha256=YFJMqx4XBF_gKOFLfVkaQK3nx4TETtv6kQhJUjH-Rqo,802
120
+ tests/unit_tests/test_crosshair.py,sha256=3OMAJ2ZaISYXMOtkXf1rPdy94vCr8njeLi6uHblBL9Q,5045
141
121
  tests/unit_tests/test_generate_cli_client.py,sha256=J7CFoO67txGu_u1Mwk32EejRX204FRuvmVg_yhAr1WM,2397
142
- tests/unit_tests/test_motor_control.py,sha256=ksjzcml9hAr-mMxL4NVAeEYGBaSDvE2pR_n3Rvz8fEQ,20579
122
+ tests/unit_tests/test_motor_control.py,sha256=NBekcGALo5mYkuyBJvBhvJkWiQDV82hI4GmsobRzjTI,20770
143
123
  tests/unit_tests/test_plot_base.py,sha256=bOdlgAxh9oKk5PwiQ_MSFmzr44uJ61Tlg242RCIhl5c,2610
144
124
  tests/unit_tests/test_rpc_register.py,sha256=hECjZEimd440mwRrO0rg7L3PKN7__3DgjmESN6wx3bo,1179
145
125
  tests/unit_tests/test_scan_control.py,sha256=7dtGpE0g4FqUhhQeCkyJl-9o7NH3DFZJgEaqDmBYbBc,7551
146
126
  tests/unit_tests/test_spiral_progress_bar.py,sha256=NY-zFt_fQ-_4_J2Paql8VdqJ-mozOFYZrZ-Y3iKNYcA,12383
147
- tests/unit_tests/test_stream_plot.py,sha256=gMd-ga72OCGzE09vRuoLDH8dqeEJOnrvK-4Lu-TG5RY,5760
148
127
  tests/unit_tests/test_waveform1d.py,sha256=Xi9TdZmxoMmmje37lq03FG9lytEdZCTUEjtOC0LvZjA,15263
149
128
  tests/unit_tests/test_widget_io.py,sha256=FeL3ZYSBQnRt6jxj8VGYw1cmcicRQyHKleahw7XIyR0,3475
150
129
  tests/unit_tests/test_yaml_dialog.py,sha256=HNrqferkdg02-9ieOhhI2mr2Qvt7GrYgXmQ061YCTbg,5794
@@ -153,7 +132,7 @@ tests/unit_tests/test_configs/config_device_no_entry.yaml,sha256=hdvue9KLc_kfNzG
153
132
  tests/unit_tests/test_configs/config_scan.yaml,sha256=vo484BbWOjA_e-h6bTjSV9k7QaQHrlAvx-z8wtY-P4E,1915
154
133
  tests/unit_tests/test_msgs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
155
134
  tests/unit_tests/test_msgs/available_scans_message.py,sha256=m_z97hIrjHXXMa2Ex-UvsPmTxOYXfjxyJaGkIY6StTY,46532
156
- bec_widgets-0.55.0.dist-info/METADATA,sha256=8Wn70dSc1GkR9LOnN7APfZyE_6cg1AVFDdUZPibL7fA,1063
157
- bec_widgets-0.55.0.dist-info/WHEEL,sha256=zEMcRr9Kr03x1ozGwg5v9NQBKn3kndp6LSoSlVg-jhU,87
158
- bec_widgets-0.55.0.dist-info/licenses/LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
159
- bec_widgets-0.55.0.dist-info/RECORD,,
135
+ bec_widgets-0.56.1.dist-info/METADATA,sha256=4rY1pWoAcOkokzBNWFTqvh8_74Dz7kdoz-j57_wuvn8,1135
136
+ bec_widgets-0.56.1.dist-info/WHEEL,sha256=zEMcRr9Kr03x1ozGwg5v9NQBKn3kndp6LSoSlVg-jhU,87
137
+ bec_widgets-0.56.1.dist-info/licenses/LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
138
+ bec_widgets-0.56.1.dist-info/RECORD,,
docs/user/apps.md CHANGED
@@ -1,32 +1,7 @@
1
1
  (user.apps)=
2
2
  # Applications
3
3
 
4
- In the `bec_widgets/examples` directory, you will find practical applications that demonstrate the capabilities of BEC Widgets in real-world scenarios. These applications showcase the adaptability and functionality of the framework for various beamline experiment needs.
5
-
6
- **Motor Alignment Tool**
7
-
8
- This tool assists in aligning motors with samples during experiments. It enables users to move motors, visually track their movement, and record positions for precise alignment.
9
-
10
- - **Location:** `bec_widgets/examples/motor_movement`
11
- - **Further Details:** [Motor Alignment Tool Documentation](#user.apps.motor_app)
12
-
13
- **General Plotting Live Acquisition Tool**
14
-
15
- This application is designed for live data visualization. It allows users to view real-time signals from detectors in a multi-grid layout, facilitating immediate analysis during experiments.
16
-
17
- - **Location:** `bec_widgets/examples/plot_app`
18
- - **Further Details:** [General Plotting Live Acquisition Tool Documentation](#user.apps.plot_app)
19
-
20
-
21
- **Modular Application**
22
-
23
- A bespoke application built entirely using BEC Widgets' modular components. This example illustrates the framework's flexibility in creating customized GUIs tailored to specific experimental setups.
24
-
25
- - **Location:** `bec_widgets/examples/modular_app`
26
- - **Further Details:** [Modular Application](#user.apps.modular_app)
27
-
28
- ---
29
- Note: The documentation for these applications is currently under development. The provided links will direct you to their respective pages once the documentation is complete.
4
+ **Coming soon**
30
5
 
31
6
  ```{toctree}
32
7
  ---
pyproject.toml CHANGED
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "bec_widgets"
7
- version = "0.55.0"
7
+ version = "0.56.1"
8
8
  description = "BEC Widgets"
9
9
  requires-python = ">=3.10"
10
10
  classifiers = [
@@ -38,6 +38,7 @@ dev = [
38
38
  ]
39
39
  pyqt5 = ["PyQt5>=5.9"]
40
40
  pyqt6 = ["PyQt6>=6.7"]
41
+ pyside6 = ["PySide6>=6.7"]
41
42
 
42
43
  [project.urls]
43
44
  "Bug Tracker" = "https://gitlab.psi.ch/bec/bec_widgets/issues"
@@ -150,7 +150,7 @@ def test_spiral_bar(rpc_server_dock):
150
150
  dock = BECDockArea(rpc_server_dock.gui_id)
151
151
  dock_server = rpc_server_dock.gui
152
152
 
153
- d0 = dock.add_dock("dock_0")
153
+ d0 = dock.add_dock(name="dock_0")
154
154
 
155
155
  bar = d0.add_widget_bec("SpiralProgressBar")
156
156
  assert bar.__class__.__name__ == "SpiralProgressBar"
@@ -17,8 +17,8 @@ def cli_figure():
17
17
 
18
18
  def test_rpc_call_plot(cli_figure):
19
19
  fig, mock_rpc_call = cli_figure
20
- fig.plot("samx", "bpm4i")
21
- mock_rpc_call.assert_called_with("plot", "samx", "bpm4i")
20
+ fig.plot(x_name="samx", y_name="bpm4i")
21
+ mock_rpc_call.assert_called_with("plot", x_name="samx", y_name="bpm4i")
22
22
 
23
23
 
24
24
  def test_rpc_call_accepts_device_as_input(cli_figure):
@@ -44,8 +44,8 @@ def test_mouse_moved_signals(qtbot):
44
44
  # Create a slot that will store the emitted values as tuples
45
45
  emitted_values_1D = []
46
46
 
47
- def slot(x, y_values):
48
- emitted_values_1D.append((x, y_values))
47
+ def slot(coordinates):
48
+ emitted_values_1D.append(coordinates)
49
49
 
50
50
  # Connect the signal to the custom slot
51
51
  crosshair.coordinatesChanged1D.connect(slot)
@@ -59,7 +59,7 @@ def test_mouse_moved_signals(qtbot):
59
59
  crosshair.mouse_moved(event_mock)
60
60
 
61
61
  # Assert the expected behavior
62
- assert emitted_values_1D == [(2.0, [5.0])]
62
+ assert emitted_values_1D == [(2, [5])]
63
63
 
64
64
 
65
65
  def test_mouse_moved_signals_outside(qtbot):
@@ -106,8 +106,8 @@ def test_mouse_moved_signals_2D(qtbot):
106
106
  # Create a slot that will store the emitted values as tuples
107
107
  emitted_values_2D = []
108
108
 
109
- def slot(x, y):
110
- emitted_values_2D.append((x, y))
109
+ def slot(coordinates):
110
+ emitted_values_2D.append(coordinates)
111
111
 
112
112
  # Connect the signal to the custom slot
113
113
  crosshair.coordinatesChanged2D.connect(slot)
@@ -239,14 +239,14 @@ def test_absolute_save_current_coordinates(motor_absolute_widget):
239
239
  motor_absolute_widget.coordinates_signal.connect(capture_emit)
240
240
 
241
241
  # Trigger saving current coordinates
242
- motor_absolute_widget.pushButton_save.click()
242
+ motor_absolute_widget.ui.pushButton_save.click()
243
243
 
244
244
  assert emitted_coordinates == [(motor_x_value, motor_y_value)]
245
245
 
246
246
 
247
247
  def test_absolute_set_absolute_coordinates(motor_absolute_widget):
248
- motor_absolute_widget.spinBox_absolute_x.setValue(5)
249
- motor_absolute_widget.spinBox_absolute_y.setValue(10)
248
+ motor_absolute_widget.ui.spinBox_absolute_x.setValue(5)
249
+ motor_absolute_widget.ui.spinBox_absolute_y.setValue(10)
250
250
 
251
251
  # Connect to the coordinates_signal to capture emitted values
252
252
  emitted_values = []
@@ -257,7 +257,7 @@ def test_absolute_set_absolute_coordinates(motor_absolute_widget):
257
257
  motor_absolute_widget.coordinates_signal.connect(capture_coordinates)
258
258
 
259
259
  # Simulate button click for absolute movement
260
- motor_absolute_widget.pushButton_set.click()
260
+ motor_absolute_widget.ui.pushButton_set.click()
261
261
 
262
262
  assert emitted_values == [(5, 10)]
263
263
 
@@ -265,14 +265,14 @@ def test_absolute_set_absolute_coordinates(motor_absolute_widget):
265
265
  def test_absolute_go_absolute_coordinates(motor_absolute_widget):
266
266
  motor_absolute_widget.change_motors("samx", "samy")
267
267
 
268
- motor_absolute_widget.spinBox_absolute_x.setValue(5)
269
- motor_absolute_widget.spinBox_absolute_y.setValue(10)
268
+ motor_absolute_widget.ui.spinBox_absolute_x.setValue(5)
269
+ motor_absolute_widget.ui.spinBox_absolute_y.setValue(10)
270
270
 
271
271
  with patch(
272
272
  "bec_widgets.widgets.motor_control.motor_control.MotorThread.move_absolute",
273
273
  new_callable=MagicMock,
274
274
  ) as mock_move_absolute:
275
- motor_absolute_widget.pushButton_go_absolute.click()
275
+ motor_absolute_widget.ui.pushButton_go_absolute.click()
276
276
  mock_move_absolute.assert_called_once_with("samx", "samy", (5, 10))
277
277
 
278
278
 
@@ -292,8 +292,8 @@ def test_set_precision(motor_absolute_widget):
292
292
  motor_absolute_widget.on_config_update(CONFIG_DEFAULT)
293
293
  motor_absolute_widget.set_precision(2)
294
294
 
295
- assert motor_absolute_widget.spinBox_absolute_x.decimals() == 2
296
- assert motor_absolute_widget.spinBox_absolute_y.decimals() == 2
295
+ assert motor_absolute_widget.ui.spinBox_absolute_x.decimals() == 2
296
+ assert motor_absolute_widget.ui.spinBox_absolute_y.decimals() == 2
297
297
 
298
298
 
299
299
  #######################################################
@@ -338,29 +338,29 @@ def test_initialization_and_config_update(motor_relative_widget):
338
338
  def test_move_motor_relative(motor_relative_widget):
339
339
  motor_relative_widget.on_config_update(CONFIG_DEFAULT)
340
340
  # Set step sizes
341
- motor_relative_widget.spinBox_step_x.setValue(1)
342
- motor_relative_widget.spinBox_step_y.setValue(1)
341
+ motor_relative_widget.ui.spinBox_step_x.setValue(1)
342
+ motor_relative_widget.ui.spinBox_step_y.setValue(1)
343
343
 
344
344
  # Mock the move_relative method
345
345
  motor_relative_widget.motor_thread.move_relative = MagicMock()
346
346
 
347
347
  # Simulate button clicks
348
- motor_relative_widget.toolButton_right.click()
348
+ motor_relative_widget.ui.toolButton_right.click()
349
349
  motor_relative_widget.motor_thread.move_relative.assert_called_with(
350
350
  motor_relative_widget.motor_x, 1
351
351
  )
352
352
 
353
- motor_relative_widget.toolButton_left.click()
353
+ motor_relative_widget.ui.toolButton_left.click()
354
354
  motor_relative_widget.motor_thread.move_relative.assert_called_with(
355
355
  motor_relative_widget.motor_x, -1
356
356
  )
357
357
 
358
- motor_relative_widget.toolButton_up.click()
358
+ motor_relative_widget.ui.toolButton_up.click()
359
359
  motor_relative_widget.motor_thread.move_relative.assert_called_with(
360
360
  motor_relative_widget.motor_y, 1
361
361
  )
362
362
 
363
- motor_relative_widget.toolButton_down.click()
363
+ motor_relative_widget.ui.toolButton_down.click()
364
364
  motor_relative_widget.motor_thread.move_relative.assert_called_with(
365
365
  motor_relative_widget.motor_y, -1
366
366
  )
@@ -376,21 +376,21 @@ def test_precision_update(motor_relative_widget):
376
376
  motor_relative_widget.precision_signal.connect(capture_precision)
377
377
 
378
378
  # Update precision
379
- motor_relative_widget.spinBox_precision.setValue(1)
379
+ motor_relative_widget.ui.spinBox_precision.setValue(1)
380
380
 
381
381
  assert emitted_values == [1]
382
- assert motor_relative_widget.spinBox_step_x.decimals() == 1
383
- assert motor_relative_widget.spinBox_step_y.decimals() == 1
382
+ assert motor_relative_widget.ui.spinBox_step_x.decimals() == 1
383
+ assert motor_relative_widget.ui.spinBox_step_y.decimals() == 1
384
384
 
385
385
 
386
386
  def test_sync_step_sizes(motor_relative_widget):
387
387
  motor_relative_widget.on_config_update(CONFIG_DEFAULT)
388
- motor_relative_widget.checkBox_same_xy.setChecked(True)
388
+ motor_relative_widget.ui.checkBox_same_xy.setChecked(True)
389
389
 
390
390
  # Change step size for X
391
- motor_relative_widget.spinBox_step_x.setValue(2)
391
+ motor_relative_widget.ui.spinBox_step_x.setValue(2)
392
392
 
393
- assert motor_relative_widget.spinBox_step_y.value() == 2
393
+ assert motor_relative_widget.ui.spinBox_step_y.value() == 2
394
394
 
395
395
 
396
396
  def test_change_motor_relative(motor_relative_widget):
@@ -420,11 +420,11 @@ def test_delete_selected_row(motor_coordinate_table):
420
420
  motor_coordinate_table.add_coordinate((3.0, 4.0))
421
421
 
422
422
  # Select the row
423
- motor_coordinate_table.table.selectRow(0)
423
+ motor_coordinate_table.ui.table.selectRow(0)
424
424
 
425
425
  # Delete the selected row
426
426
  motor_coordinate_table.delete_selected_row()
427
- assert motor_coordinate_table.table.rowCount() == 1
427
+ assert motor_coordinate_table.ui.table.rowCount() == 1
428
428
 
429
429
 
430
430
  def test_add_coordinate_and_table_update(motor_coordinate_table):
@@ -433,20 +433,24 @@ def test_add_coordinate_and_table_update(motor_coordinate_table):
433
433
 
434
434
  # Add coordinate in Individual mode
435
435
  motor_coordinate_table.add_coordinate((1.0, 2.0))
436
- assert motor_coordinate_table.table.rowCount() == 1
436
+ assert motor_coordinate_table.ui.table.rowCount() == 1
437
437
 
438
438
  # Check if the coordinates match
439
- x_item_individual = motor_coordinate_table.table.cellWidget(0, 3) # Assuming X is in column 3
440
- y_item_individual = motor_coordinate_table.table.cellWidget(0, 4) # Assuming Y is in column 4
439
+ x_item_individual = motor_coordinate_table.ui.table.cellWidget(
440
+ 0, 3
441
+ ) # Assuming X is in column 3
442
+ y_item_individual = motor_coordinate_table.ui.table.cellWidget(
443
+ 0, 4
444
+ ) # Assuming Y is in column 4
441
445
  assert float(x_item_individual.text()) == 1.0
442
446
  assert float(y_item_individual.text()) == 2.0
443
447
 
444
448
  # Switch to Start/Stop and add coordinates
445
- motor_coordinate_table.comboBox_mode.setCurrentIndex(1) # Switch mode
449
+ motor_coordinate_table.ui.comboBox_mode.setCurrentIndex(1) # Switch mode
446
450
 
447
451
  motor_coordinate_table.add_coordinate((3.0, 4.0))
448
452
  motor_coordinate_table.add_coordinate((5.0, 6.0))
449
- assert motor_coordinate_table.table.rowCount() == 1
453
+ assert motor_coordinate_table.ui.table.rowCount() == 1
450
454
 
451
455
 
452
456
  def test_plot_coordinates_signal(motor_coordinate_table):
@@ -466,26 +470,26 @@ def test_plot_coordinates_signal(motor_coordinate_table):
466
470
  assert received
467
471
 
468
472
 
469
- def test_move_motor_action(motor_coordinate_table):
470
- # Add a coordinate
471
- motor_coordinate_table.add_coordinate((1.0, 2.0))
472
-
473
- # Mock the motor thread move_absolute function
474
- motor_coordinate_table.motor_thread.move_absolute = MagicMock()
475
-
476
- # Trigger the move action
477
- move_button = motor_coordinate_table.table.cellWidget(0, 1)
478
- move_button.click()
479
-
480
- motor_coordinate_table.motor_thread.move_absolute.assert_called_with(
481
- motor_coordinate_table.motor_x, motor_coordinate_table.motor_y, (1.0, 2.0)
482
- )
473
+ # def test_move_motor_action(motor_coordinate_table,qtbot):#TODO enable again after table refactor
474
+ # # Add a coordinate
475
+ # motor_coordinate_table.add_coordinate((1.0, 2.0))
476
+ #
477
+ # # Mock the motor thread move_absolute function
478
+ # motor_coordinate_table.motor_thread.move_absolute = MagicMock()
479
+ #
480
+ # # Trigger the move action
481
+ # move_button = motor_coordinate_table.table.cellWidget(0, 1)
482
+ # move_button.click()
483
+ #
484
+ # motor_coordinate_table.motor_thread.move_absolute.assert_called_with(
485
+ # motor_coordinate_table.motor_x, motor_coordinate_table.motor_y, (1.0, 2.0)
486
+ # )
483
487
 
484
488
 
485
489
  def test_plot_coordinates_signal_individual(motor_coordinate_table, qtbot):
486
490
  motor_coordinate_table.warning_message = False
487
491
  motor_coordinate_table.set_precision(3)
488
- motor_coordinate_table.comboBox_mode.setCurrentIndex(0)
492
+ motor_coordinate_table.ui.comboBox_mode.setCurrentIndex(0)
489
493
 
490
494
  # This list will store the signals emitted during the test
491
495
  emitted_signals = []
@@ -506,8 +510,8 @@ def test_plot_coordinates_signal_individual(motor_coordinate_table, qtbot):
506
510
  assert len(coordinates) > 0, "Coordinates list is empty."
507
511
  assert reference_tag == "Individual"
508
512
  assert color == "green"
509
- assert motor_coordinate_table.table.cellWidget(0, 3).text() == "1.000"
510
- assert motor_coordinate_table.table.cellWidget(0, 4).text() == "2.000"
513
+ assert motor_coordinate_table.ui.table.cellWidget(0, 3).text() == "1.000"
514
+ assert motor_coordinate_table.ui.table.cellWidget(0, 4).text() == "2.000"
511
515
 
512
516
 
513
517
  #######################################################
File without changes