bec-widgets 0.87.1__py3-none-any.whl → 0.88.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 (65) hide show
  1. CHANGELOG.md +72 -70
  2. PKG-INFO +1 -1
  3. bec_widgets/assets/designer_icons/BECWaveformWidget.png +0 -0
  4. bec_widgets/assets/designer_icons/colormap_selector.png +0 -0
  5. bec_widgets/assets/designer_icons/motor_map.png +0 -0
  6. bec_widgets/assets/toolbar_icons/add.svg +3 -0
  7. bec_widgets/assets/toolbar_icons/auto_range.svg +3 -0
  8. bec_widgets/assets/toolbar_icons/drag_pan_mode.svg +3 -0
  9. bec_widgets/assets/toolbar_icons/export.svg +9 -0
  10. bec_widgets/assets/toolbar_icons/fitting_parameters.svg +3 -0
  11. bec_widgets/assets/toolbar_icons/import.svg +9 -0
  12. bec_widgets/assets/toolbar_icons/line_axis.svg +3 -0
  13. bec_widgets/assets/toolbar_icons/photo_library.svg +3 -0
  14. bec_widgets/assets/toolbar_icons/rectangle_mode.svg +3 -0
  15. bec_widgets/assets/toolbar_icons/remove.svg +5 -0
  16. bec_widgets/assets/toolbar_icons/save.svg +3 -0
  17. bec_widgets/cli/client.py +320 -5
  18. bec_widgets/cli/server.py +2 -1
  19. bec_widgets/examples/jupyter_console/jupyter_console_window.py +12 -5
  20. bec_widgets/examples/plugin_example_pyside/tictactoe.py +1 -0
  21. bec_widgets/qt_utils/toolbar.py +74 -2
  22. bec_widgets/widgets/{color_map_selector/color_map_selector.py → colormap_selector/colormap_selector.py} +3 -1
  23. bec_widgets/widgets/colormap_selector/colormap_selector.pyproject +1 -0
  24. bec_widgets/widgets/{color_map_selector/color_map_selector_plugin.py → colormap_selector/colormap_selector_plugin.py} +8 -6
  25. bec_widgets/widgets/{color_map_selector/register_color_map_selector.py → colormap_selector/register_colormap_selector.py} +1 -1
  26. bec_widgets/widgets/figure/figure.py +12 -0
  27. bec_widgets/widgets/figure/plots/axis_settings.py +38 -11
  28. bec_widgets/widgets/figure/plots/image/image.py +1 -0
  29. bec_widgets/widgets/figure/plots/motor_map/motor_map.py +1 -0
  30. bec_widgets/widgets/figure/plots/plot_base.py +20 -3
  31. bec_widgets/widgets/figure/plots/waveform/waveform.py +48 -50
  32. bec_widgets/widgets/figure/plots/waveform/waveform_curve.py +9 -0
  33. bec_widgets/widgets/motor_map/bec_motor_map_widget_plugin.py +5 -3
  34. bec_widgets/widgets/motor_map/motor_map_widget.py +18 -12
  35. bec_widgets/widgets/waveform/__init__.py +0 -0
  36. bec_widgets/widgets/waveform/bec_waveform_widget.pyproject +1 -0
  37. bec_widgets/widgets/waveform/bec_waveform_widget_plugin.py +59 -0
  38. bec_widgets/widgets/waveform/register_bec_waveform_widget.py +15 -0
  39. bec_widgets/widgets/waveform/waveform_popups/__init__.py +0 -0
  40. bec_widgets/widgets/waveform/waveform_popups/curve_dialog/__init__.py +0 -0
  41. bec_widgets/widgets/waveform/waveform_popups/curve_dialog/curve_dialog.py +341 -0
  42. bec_widgets/widgets/waveform/waveform_popups/curve_dialog/curve_dialog.ui +358 -0
  43. bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog/__init__.py +0 -0
  44. bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog/dap_summary.ui +127 -0
  45. bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog/dap_summary_dialog.py +69 -0
  46. bec_widgets/widgets/waveform/waveform_widget.py +579 -0
  47. {bec_widgets-0.87.1.dist-info → bec_widgets-0.88.1.dist-info}/METADATA +1 -1
  48. {bec_widgets-0.87.1.dist-info → bec_widgets-0.88.1.dist-info}/RECORD +61 -37
  49. docs/conf.py +1 -1
  50. pyproject.toml +1 -1
  51. tests/unit_tests/test_color_map_selector.py +1 -1
  52. tests/unit_tests/test_waveform_widget.py +264 -0
  53. bec_widgets/widgets/color_map_selector/assets/color_map_selector_icon.png +0 -0
  54. bec_widgets/widgets/color_map_selector/color_map_selector.pyproject +0 -1
  55. bec_widgets/widgets/motor_map/assets/motor_map.png +0 -0
  56. bec_widgets/widgets/motor_map/motor_map_dialog/motor_map_toolbar.py +0 -59
  57. /bec_widgets/assets/{bec_widgets_icon.png → app_icons/bec_widgets_icon.png} +0 -0
  58. /bec_widgets/assets/{terminal_icon.png → app_icons/terminal_icon.png} +0 -0
  59. /bec_widgets/{widgets/motor_map/assets → assets/toolbar_icons}/connection.svg +0 -0
  60. /bec_widgets/{widgets/motor_map/assets → assets/toolbar_icons}/history.svg +0 -0
  61. /bec_widgets/{widgets/motor_map/assets → assets/toolbar_icons}/settings.svg +0 -0
  62. /bec_widgets/widgets/{color_map_selector → colormap_selector}/__init__.py +0 -0
  63. {bec_widgets-0.87.1.dist-info → bec_widgets-0.88.1.dist-info}/WHEEL +0 -0
  64. {bec_widgets-0.87.1.dist-info → bec_widgets-0.88.1.dist-info}/entry_points.txt +0 -0
  65. {bec_widgets-0.87.1.dist-info → bec_widgets-0.88.1.dist-info}/licenses/LICENSE +0 -0
@@ -2,41 +2,58 @@
2
2
  .gitlab-ci.yml,sha256=zvb4A6QI5lQTsdfI5nPPL-tUNfcrz__SQjxW03QZ5Ek,8204
3
3
  .pylintrc,sha256=eeY8YwSI74oFfq6IYIbCqnx3Vk8ZncKaatv96n_Y8Rs,18544
4
4
  .readthedocs.yaml,sha256=aSOc277LqXcsTI6lgvm_JY80lMlr69GbPKgivua2cS0,603
5
- CHANGELOG.md,sha256=DHDSoGZOCoZjI-CEp37DLRfeLqF_bTk0Yv7-iwOMO7w,7594
5
+ CHANGELOG.md,sha256=HlkAp2hTCYOR0AGFikpdOCSm3k4dOGmdIqhAU-hKIB8,7845
6
6
  LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
7
- PKG-INFO,sha256=uf6VZhm8oYlix039uTAh7h25FVrbcp-7tyKsdhkzBWQ,1308
7
+ PKG-INFO,sha256=PhNXXQmzzTVoVSMDhrCnMZDZWDJq9NgDdg9W56mXnfg,1308
8
8
  README.md,sha256=Od69x-RS85Hph0-WwWACwal4yUd67XkEn4APEfHhHFw,2649
9
- pyproject.toml,sha256=yigjcoxWR_c6n-pJRnrcIkOqYVZO4Shu2aX6jvEGwOo,2357
9
+ pyproject.toml,sha256=vQNtHmvPPn_W8rQf_4N6FH0JxA1rV254WjNiZan3A5I,2357
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
13
13
  .gitlab/issue_templates/feature_request_template.md,sha256=vjxCnmj53Mp4FPzCrNxhkO-8StRQUZ36PlXu4K8VGaI,1543
14
14
  .gitlab/merge_request_templates/default.md,sha256=tfyFA0hRCsIunbLGSlGbxWBQFeB3USpsA3H7IvwQ5UY,715
15
15
  bec_widgets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
- bec_widgets/assets/bec_widgets_icon.png,sha256=K8dgGwIjalDh9PRHUsSQBqgdX7a00nM3igZdc20pkYM,1747017
17
- bec_widgets/assets/terminal_icon.png,sha256=bJl7Tft4Fi2uxvuXI8o14uMHnI9eAWKSU2uftXCH9ws,3889
16
+ bec_widgets/assets/app_icons/bec_widgets_icon.png,sha256=K8dgGwIjalDh9PRHUsSQBqgdX7a00nM3igZdc20pkYM,1747017
17
+ bec_widgets/assets/app_icons/terminal_icon.png,sha256=bJl7Tft4Fi2uxvuXI8o14uMHnI9eAWKSU2uftXCH9ws,3889
18
+ bec_widgets/assets/designer_icons/BECWaveformWidget.png,sha256=QKocOi6e1frT6anrTwIQqQEwkalbl2AoOrTpvN1dr90,3764
19
+ bec_widgets/assets/designer_icons/colormap_selector.png,sha256=KULLUA5T9SLhcSyrdouG07nXHZtE-LNNOn0ghG7T-OQ,6831
20
+ bec_widgets/assets/designer_icons/motor_map.png,sha256=8iqST5mTnZfv9rN9rx3D-XBm232Mwvzz9D0Wx6QaT8I,7293
21
+ bec_widgets/assets/toolbar_icons/add.svg,sha256=Co1Iueh0sqQ1LMQcvNXPLg6tC6MLtQviH-F79uhM2o0,228
22
+ bec_widgets/assets/toolbar_icons/auto_range.svg,sha256=hq6YMySVWF01SeEXzpF_h7BaqUPdsipTk_Z3nOjD8bg,487
23
+ bec_widgets/assets/toolbar_icons/connection.svg,sha256=czIb1BnshmxJnER8ssU3WcLENrFSIUfMwberajWOGAk,341
24
+ bec_widgets/assets/toolbar_icons/drag_pan_mode.svg,sha256=ruinkJ0dVEPSH7ll4Pufl9c7oTwVXvcN57oTgiVRY5I,470
25
+ bec_widgets/assets/toolbar_icons/export.svg,sha256=-kDEfxzloR1fOpZ5d4KIkxGH7wS_4Z1uJImtnKA5XxU,371
26
+ bec_widgets/assets/toolbar_icons/fitting_parameters.svg,sha256=k57fFm2xPyYQD0y1K4Mb-7uqDeVA6GBWq_oh4-rQQeE,366
27
+ bec_widgets/assets/toolbar_icons/history.svg,sha256=bd6p5saxRiNRpd5OsSwIOvRWvel0WFEHul9zw4y9vH0,392
28
+ bec_widgets/assets/toolbar_icons/import.svg,sha256=57-0ahjyIng5d3c0pSVCC2YwEYmQSyVVUdWkQXiVEVY,377
29
+ bec_widgets/assets/toolbar_icons/line_axis.svg,sha256=uguelNycsOl6DmjYfUPnPnkIxfrDHEiLCpHW7iKEyfk,450
30
+ bec_widgets/assets/toolbar_icons/photo_library.svg,sha256=weiDCYiHh9dzcA21D-37zpYts2CyoGAd9x-N_h292Mo,564
31
+ bec_widgets/assets/toolbar_icons/rectangle_mode.svg,sha256=N7AXB3da-RW8OpjLFeOUh1SDKVQ-9SWGPUjkryujyeE,946
32
+ bec_widgets/assets/toolbar_icons/remove.svg,sha256=K1g1KmNyp32WlAZpR9w5HezYhtxbqXo_2goimkxwPaw,357
33
+ bec_widgets/assets/toolbar_icons/save.svg,sha256=rexWzbFExkh-NiAFP1909-1mm1BKU76cxQBwdAVvtHo,621
34
+ bec_widgets/assets/toolbar_icons/settings.svg,sha256=ro30oa9CF1YijOXoUl-hz2DilJcqTy4rlTrMYhggumQ,1473
18
35
  bec_widgets/cli/__init__.py,sha256=d0Q6Fn44e7wFfLabDOBxpcJ1DPKWlFunGYDUBmO-4hA,22
19
36
  bec_widgets/cli/auto_updates.py,sha256=DyBV3HnjMSH-cvVkYNcDiYKVf0Xut4Qy2qGQqkW47Bw,4833
20
- bec_widgets/cli/client.py,sha256=4zUI7gm0J2gdKCvfDuK-47PRZ2x3WRchObhhmt0FMsU,61843
37
+ bec_widgets/cli/client.py,sha256=RfaS3iyxPG8yUXDdFo-b0S9F4S62f7cwbAgDTO47tOs,70757
21
38
  bec_widgets/cli/client_utils.py,sha256=cDhabblwaP88a0jlVpbn_RWWKVbsyjhmmGtMh9gesEw,12388
22
39
  bec_widgets/cli/generate_cli.py,sha256=Ea5px9KblUlcGg-1JbJBTIU7laGg2n8PM7Efw9WVVzM,5889
23
40
  bec_widgets/cli/rpc_register.py,sha256=QxXUZu5XNg00Yf5O3UHWOXg3-f_pzKjjoZYMOa-MOJc,2216
24
41
  bec_widgets/cli/rpc_wigdet_handler.py,sha256=6kQng2DyS6rhLJqSJ7xa0kdgSxp-35A2upcf833dJRE,1483
25
- bec_widgets/cli/server.py,sha256=FZkqsjUHIkCUFMKUFm7ls_eslXvhIFzLpINEYxeWP5s,7722
42
+ bec_widgets/cli/server.py,sha256=y0GrBpDF3bHvYFZM20j2eDlsYxb-hT1ki_zmVI_OEiM,7752
26
43
  bec_widgets/examples/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
27
44
  bec_widgets/examples/jupyter_console/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
- bec_widgets/examples/jupyter_console/jupyter_console_window.py,sha256=MgIw-2l6vxOjN5qR-jOkWaWsaqi-SRFoIxI52Wt9cXg,6605
45
+ bec_widgets/examples/jupyter_console/jupyter_console_window.py,sha256=a0eTHk91ZTb5RT-e099Isx3q4adYmM7zvKnNIWhJgFw,6849
29
46
  bec_widgets/examples/plugin_example_pyside/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
47
  bec_widgets/examples/plugin_example_pyside/main.py,sha256=xdC6RWSRt1rW8Prj0CsDeCPct6-_j3__oJmdgogB5PI,505
31
48
  bec_widgets/examples/plugin_example_pyside/registertictactoe.py,sha256=VNFkHc5Sc30lRKzOFJbhArCHGkp_wRxOeJjZbmaAHRU,448
32
49
  bec_widgets/examples/plugin_example_pyside/taskmenuextension.pyproject,sha256=O_PSMFJlXxQuf55gIOfkpfZIZGpX8W1SfUVZ-mvtI_E,119
33
- bec_widgets/examples/plugin_example_pyside/tictactoe.py,sha256=s3rCurXloVcmMdzZiSzDS7Lgj0Qe6x8-wkxCeiXYX80,4904
50
+ bec_widgets/examples/plugin_example_pyside/tictactoe.py,sha256=byR7mTiIXFaA9igPTH04pzm0yfikNB5KgISwvNiRPd8,4940
34
51
  bec_widgets/examples/plugin_example_pyside/tictactoeplugin.py,sha256=BBt3MD8oDLUMCCY3mioJa1QRR0WQdW6DuvVmK1Taovk,1734
35
52
  bec_widgets/examples/plugin_example_pyside/tictactoetaskmenu.py,sha256=LNwplI6deUdKY6FOhUuWBanotxk9asF2G-6k7lFfA8Y,2301
36
53
  bec_widgets/qt_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
54
  bec_widgets/qt_utils/error_popups.py,sha256=WAN3Qtccy9Yww29kZ3HbLt9VyipgrIamJ6y4PhGTe3I,7983
38
55
  bec_widgets/qt_utils/settings_dialog.py,sha256=rR_Zk4RGTnI4dz5OEzCc13lVpxlOKuwOf4_7wqXSbRw,3373
39
- bec_widgets/qt_utils/toolbar.py,sha256=yzxCmZ7c00B2JD1TkUpPeQgM_-v7zuTYe38Qkw_yvrc,2430
56
+ bec_widgets/qt_utils/toolbar.py,sha256=Ob7zItx06CbQIibInLLKyOXDJ2QiAneGL8Ubyn5iwNo,4892
40
57
  bec_widgets/utils/__init__.py,sha256=1930ji1Jj6dVuY81Wd2kYBhHYNV-2R0bN_L4o9zBj1U,533
41
58
  bec_widgets/utils/bec_connector.py,sha256=UK0GIWgcC_JTwgKCOmmuXnQvSwD3wiPsJQw6NBW3p74,9961
42
59
  bec_widgets/utils/bec_designer.py,sha256=ak3G8FdojUPjVBBwdPXw7tN5P2Uxr-SSoQt394jXeAA,4308
@@ -79,12 +96,11 @@ bec_widgets/widgets/color_button/color_button.pyproject,sha256=LUYF4VkDOB4ttVe7Y
79
96
  bec_widgets/widgets/color_button/color_button_plugin.py,sha256=CvO3L6r8pBd-0DNuqjQ7uKF9u1mU6xFs23sS_dsj4tw,1256
80
97
  bec_widgets/widgets/color_button/register_color_button.py,sha256=ZAx3t7G2VI2S-1qcEof31Xi9O0X8deLeZNgS651L1JI,475
81
98
  bec_widgets/widgets/color_button/assets/color_button.png,sha256=dkjgGHSdxu98nM68O16fGpxBjxkkeLN8iu9M_8i5-NY,5618
82
- bec_widgets/widgets/color_map_selector/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
83
- bec_widgets/widgets/color_map_selector/color_map_selector.py,sha256=V0nmY2_X76xJmLXOfjW6rG7ipJKFT8swo3bkJZDXBGE,3751
84
- bec_widgets/widgets/color_map_selector/color_map_selector.pyproject,sha256=sGQE4s6gia1PIz9p6c2mZX12geCk8G384gjL2PE_qEc,36
85
- bec_widgets/widgets/color_map_selector/color_map_selector_plugin.py,sha256=9V7xvq2SB_YZU7W1E6aEKx38REOTspFNc7x57Fyd9mY,1436
86
- bec_widgets/widgets/color_map_selector/register_color_map_selector.py,sha256=crZsJcH4z1DHfsfA7iHiQFDggslNyzfuHfo-YdAoca4,514
87
- bec_widgets/widgets/color_map_selector/assets/color_map_selector_icon.png,sha256=o8zRmMvXhGhMyBklH_Vfjn-jpDL4Nw03fLqDk_wx_JI,11975
99
+ bec_widgets/widgets/colormap_selector/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
100
+ bec_widgets/widgets/colormap_selector/colormap_selector.py,sha256=4BqV11XMZVmcwzHiKgwUVFtg_bg4Nz7CQznkL4hHRYU,3794
101
+ bec_widgets/widgets/colormap_selector/colormap_selector.pyproject,sha256=lHl9qmlMCB6BKB2orqctKwLcKK3Swc0THsyr-5O_vXM,35
102
+ bec_widgets/widgets/colormap_selector/colormap_selector_plugin.py,sha256=NWTldO9XMyyOVL0No-Bmr-tvWrinmU7LkDxB5LkIQtA,1416
103
+ bec_widgets/widgets/colormap_selector/register_colormap_selector.py,sha256=bfw7RWmTmMLTLxGT-izSwcGtxGLKvL3jdivJw2z8oN4,512
88
104
  bec_widgets/widgets/console/console.py,sha256=IW1OerycmS-cm8CKGFig44Qye8mxsmVcKvLHAc3lXco,17845
89
105
  bec_widgets/widgets/device_box/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
90
106
  bec_widgets/widgets/device_box/device_box.py,sha256=2hWCbDaBvYnWK4-HDqeYetzb5KR4DBk7UPQJMLhT4w0,6929
@@ -108,35 +124,30 @@ bec_widgets/widgets/dock/__init__.py,sha256=B7foHt02gnhM7mFksa7GJVwT7n0j_JvYDCt6
108
124
  bec_widgets/widgets/dock/dock.py,sha256=2KJCLGIqmuMBOYVZCfJMFfYW3IXsIO0SuyebI_ktZKg,7648
109
125
  bec_widgets/widgets/dock/dock_area.py,sha256=Sv4SEntiJ67VNnup5XfZpBIIHBxyuRvYZigUXKf9E3E,7974
110
126
  bec_widgets/widgets/figure/__init__.py,sha256=3hGx_KOV7QHCYAV06aNuUgKq4QIYCjUTad-DrwkUaBM,44
111
- bec_widgets/widgets/figure/figure.py,sha256=hQFru88kvzW-MWSrcdrfglwaOXDxUAPaMSQxr4G1w2E,28438
127
+ bec_widgets/widgets/figure/figure.py,sha256=IP8Kr8mWOBRSeWsB17UYoU5bpE4WcrOCuN5HpJOdzfk,28768
112
128
  bec_widgets/widgets/figure/plots/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
113
- bec_widgets/widgets/figure/plots/axis_settings.py,sha256=CCvJwo1RjpnLJG9TmGqf9fyPpUNyLT8k7pPEnqVuaGM,2281
129
+ bec_widgets/widgets/figure/plots/axis_settings.py,sha256=_z20SrMu5iRM0eqhQjsCV1MDOY80hN2dqtvkeofXs0w,3510
114
130
  bec_widgets/widgets/figure/plots/axis_settings.ui,sha256=zMKZK6lH_3KJGO4RA_paXAH7UzZJ4Snlil3MK4pK3L8,11589
115
- bec_widgets/widgets/figure/plots/plot_base.py,sha256=TmXUO4445xjl-jwJh3t0FoFp01yThEg7eTRdPnwdrOw,10304
131
+ bec_widgets/widgets/figure/plots/plot_base.py,sha256=AxzH2J-bLngxlWcgWWgNpLhIQxQzFz-H6yLf5Dou93Y,10921
116
132
  bec_widgets/widgets/figure/plots/image/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
117
- bec_widgets/widgets/figure/plots/image/image.py,sha256=xJJsfKJL7wBv_3U4-aT5ApX84t4-_8LLGARepQEnI2U,21276
133
+ bec_widgets/widgets/figure/plots/image/image.py,sha256=CoD1ODroBL0M-9xCyAyELz-UBSHGMoXqe_1GqhGrRN0,21294
118
134
  bec_widgets/widgets/figure/plots/image/image_item.py,sha256=TyarahdWEn0jgalj5fqSAmcznXSbENkqHrrlL2GVdU4,10558
119
135
  bec_widgets/widgets/figure/plots/image/image_processor.py,sha256=GeTtWjbldy6VejMwPGQgM-o3d6bmLglCjdoktu19xfA,5262
120
136
  bec_widgets/widgets/figure/plots/motor_map/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
121
- bec_widgets/widgets/figure/plots/motor_map/motor_map.py,sha256=ZOF5-ZT61kHR_yXJVFSm76bObd_2Fe4kxycO3Lbh6_Q,18184
137
+ bec_widgets/widgets/figure/plots/motor_map/motor_map.py,sha256=IjCwVNb9DlujIDF9rlI7fOAM7udKpt0wL5hAGo2-MUw,18202
122
138
  bec_widgets/widgets/figure/plots/waveform/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
123
- bec_widgets/widgets/figure/plots/waveform/waveform.py,sha256=CdhkIpJyy70L_PjuQ7GWLwWIFg0QkQkvn1AIgIZWiT4,52308
124
- bec_widgets/widgets/figure/plots/waveform/waveform_curve.py,sha256=1E0ytu_K_d-LohRWe3osz2vzh_rzk0SaujFHfzca4zM,8456
139
+ bec_widgets/widgets/figure/plots/waveform/waveform.py,sha256=HRU3d6nhr6DnfDc2N4VTTSABk9veTnnsBOnfc1UbamQ,51720
140
+ bec_widgets/widgets/figure/plots/waveform/waveform_curve.py,sha256=ZwRxSfPHbMWEvgUC-mL2orpZvtxR-DcrYAFikkdWEzk,8654
125
141
  bec_widgets/widgets/jupyter_console/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
126
142
  bec_widgets/widgets/jupyter_console/jupyter_console.py,sha256=mBKM89H6SuHuFy1lQg1n8s1gQiN5QEkZf0xua8aPDns,2402
127
143
  bec_widgets/widgets/motor_map/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
128
144
  bec_widgets/widgets/motor_map/bec_motor_map_widget.pyproject,sha256=NAI8s5gRKz80ED4KY7OgD2OgSH5HEsjt2ux2BYp66yg,63
129
- bec_widgets/widgets/motor_map/bec_motor_map_widget_plugin.py,sha256=PIfDE78Zqvsu7-xwoh9DdYkH8a7eOUFSaEl0bNrHYHc,1292
130
- bec_widgets/widgets/motor_map/motor_map_widget.py,sha256=m-cMo8h5WzLgr64AN5f5eYxaQf7oF1NiE4omPW2T5Go,7155
145
+ bec_widgets/widgets/motor_map/bec_motor_map_widget_plugin.py,sha256=V6iN82E8Za8BharR_cSyZZShh4fI9yc5ky2TQBGELR0,1316
146
+ bec_widgets/widgets/motor_map/motor_map_widget.py,sha256=URcysThbJKGsCZUqQm2lCtVn5FG8t4kT7DaN5EJUexg,7555
131
147
  bec_widgets/widgets/motor_map/register_bec_motor_map_widget.py,sha256=qRG8PtWGjso0pWbvj_DXKnbUfmQzfGqPSrnAozXfM7o,492
132
- bec_widgets/widgets/motor_map/assets/connection.svg,sha256=czIb1BnshmxJnER8ssU3WcLENrFSIUfMwberajWOGAk,341
133
- bec_widgets/widgets/motor_map/assets/history.svg,sha256=bd6p5saxRiNRpd5OsSwIOvRWvel0WFEHul9zw4y9vH0,392
134
- bec_widgets/widgets/motor_map/assets/motor_map.png,sha256=xd6GFBM8gAb5c-xRgswxTZFtvo449yK57-EbkFvidOI,9746
135
- bec_widgets/widgets/motor_map/assets/settings.svg,sha256=ro30oa9CF1YijOXoUl-hz2DilJcqTy4rlTrMYhggumQ,1473
136
148
  bec_widgets/widgets/motor_map/motor_map_dialog/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
137
149
  bec_widgets/widgets/motor_map/motor_map_dialog/motor_map_settings.py,sha256=terJ5NHRzAsiUwdqg-hTbkQ5gadnRT0Ol0_Fm66kPF4,2011
138
150
  bec_widgets/widgets/motor_map/motor_map_dialog/motor_map_settings.ui,sha256=nv5vPftt6vcIl60OOZLRvwD29rdHVWOoGmz168BnwKw,2685
139
- bec_widgets/widgets/motor_map/motor_map_dialog/motor_map_toolbar.py,sha256=R6pmxhB_1ouc6f6cNQQvbxTHb3Ko3K_gTGs5WIYgnRI,2194
140
151
  bec_widgets/widgets/position_indicator/position_indicator.py,sha256=QVlWvs_RvEJe5IMxGYCpi-CXYF7vFeMqEMFCs6u5NGc,2020
141
152
  bec_widgets/widgets/position_indicator/position_indicator.pyproject,sha256=s0JEf5YkpMag19ddFSYeRZ8erBau7erO3bqw05YrTyg,36
142
153
  bec_widgets/widgets/position_indicator/position_indicator_plugin.py,sha256=h9EQU4t6KdKVAZh5ILalpl1K8b7JMHf-2AFYREej2-w,1241
@@ -167,10 +178,22 @@ bec_widgets/widgets/toggle/toggle_switch.pyproject,sha256=Msa-AS5H5XlqW65r8GlX2A
167
178
  bec_widgets/widgets/toggle/toggle_switch_plugin.py,sha256=8e8JjUx6T5CIx7ixWLwVdT9JOJTbQ8aWwd3_9VAc_Mw,1177
168
179
  bec_widgets/widgets/vscode/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
169
180
  bec_widgets/widgets/vscode/vscode.py,sha256=yV1D9PK2IYomq9yYfwqUOrZGIeBwMnNuBfXxBc2M8Qc,2231
181
+ bec_widgets/widgets/waveform/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
182
+ bec_widgets/widgets/waveform/bec_waveform_widget.pyproject,sha256=GLD8GN9dXx9wNbtnevrxqqcwk7vKV-Uv8QYSycdaoaI,33
183
+ bec_widgets/widgets/waveform/bec_waveform_widget_plugin.py,sha256=LjJJoRFlkcQWs7SUIPX859AeCiqVRsjgRWMNKE596uY,1429
184
+ bec_widgets/widgets/waveform/register_bec_waveform_widget.py,sha256=qZHVZH_lP2hvzkG1Ra0EyrXlMeLkRCy0aceH-bfJ1cs,490
185
+ bec_widgets/widgets/waveform/waveform_widget.py,sha256=zErnkgwm69QZEVvNRLi57v9-zRQeu0IaJpYRj34mGmA,19125
186
+ bec_widgets/widgets/waveform/waveform_popups/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
187
+ bec_widgets/widgets/waveform/waveform_popups/curve_dialog/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
188
+ bec_widgets/widgets/waveform/waveform_popups/curve_dialog/curve_dialog.py,sha256=jCtWjNxsdOW7fA9BLdMAMrlCKHr2tFMHcVMxpeJ6YZE,13107
189
+ bec_widgets/widgets/waveform/waveform_popups/curve_dialog/curve_dialog.ui,sha256=OaQE5HlyBQ3RQoHqxOFHiUoNcx8SDZP5sHJ9NNGhsPI,10404
190
+ bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
191
+ bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog/dap_summary.ui,sha256=PFEKro61UXd-jmx65U4pqJ5D29DXtVnhQRnsnDvN-wM,6138
192
+ bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog/dap_summary_dialog.py,sha256=a5n_gBebETdj80TU7Dgy1cnazPFyxLlWk_lRdvy3qA4,2403
170
193
  bec_widgets/widgets/website/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
171
194
  bec_widgets/widgets/website/website.py,sha256=FmhVaasAU3ZSdKP-HHSnJHFbG8lIsNAPH9pZq55fhic,1731
172
195
  docs/Makefile,sha256=i2WHuFlgfyAPEW4ssEP8NY4cOibDJrVjvzSEU8_Ggwc,634
173
- docs/conf.py,sha256=HxLxupNGu0Smhwn57g1kFdjZzFuaWVREgRJKhT1zi2k,2464
196
+ docs/conf.py,sha256=__ETwe00VJvH5_570r-oZpLkTrHYlobMCEcknjYPyjo,2474
174
197
  docs/index.md,sha256=8ZCgaLIbJsYvt-jwi--QxsNwnK4-k3rejIeOOLclG40,1101
175
198
  docs/make.bat,sha256=vKazJE8RW49Cy8K7hm8QYbletvAd8YkeKsaPA_dWnXs,800
176
199
  docs/requirements.txt,sha256=TcjRnzVYFOg64N-lJc2sn-G6YQdhPjzp0lrLuPsPMXY,156
@@ -240,7 +263,7 @@ tests/unit_tests/test_bec_motor_map.py,sha256=dSYopbZS8lGD9cB26Kwmqw5zBoKCZs8t7D
240
263
  tests/unit_tests/test_bec_queue.py,sha256=u-uc-iZeGAS8P90o6Cxy5oz_60zHpirGAu04OgQPDXw,4598
241
264
  tests/unit_tests/test_bec_status_box.py,sha256=gZdjyy9DNuUP9UwleTLj2Dp5HUImiqnkHjXWiqL0Q-o,4868
242
265
  tests/unit_tests/test_client_utils.py,sha256=CBdWIVJ_UiyFzTJnX3XJm4PGw2uXhFvRCP_Y9ifckbw,2630
243
- tests/unit_tests/test_color_map_selector.py,sha256=NVnKrz5kFUKgljm7HslIpMII-IpzPAKHIX_KeqpNUew,1518
266
+ tests/unit_tests/test_color_map_selector.py,sha256=tsfCwHnEQoQhzA1ZpLhbGCMPqDX5hmH_YIzYTmBwnoM,1516
244
267
  tests/unit_tests/test_color_validation.py,sha256=xbFbtFDia36XLgaNrX2IwvAX3IDC_Odpj5BGoJSgiIE,2389
245
268
  tests/unit_tests/test_crosshair.py,sha256=3OMAJ2ZaISYXMOtkXf1rPdy94vCr8njeLi6uHblBL9Q,5045
246
269
  tests/unit_tests/test_device_box.py,sha256=q9IVFpt1NF3TBF0Jhk-I-LRiuvvHG3FGUalw4jEYwVo,3431
@@ -265,6 +288,7 @@ tests/unit_tests/test_text_box_widget.py,sha256=cT0uEHt_6d-FwST0A_wE9sFW9E3F_nJb
265
288
  tests/unit_tests/test_toggle.py,sha256=Amzgres7te0tTQIDR2WMKSx9Kce44TxMpIPR6HZygXQ,832
266
289
  tests/unit_tests/test_vscode_widget.py,sha256=G1G7nCQGXFUn0BnMECE7mHmAm0C6pYx1JpEi_XEhodY,2682
267
290
  tests/unit_tests/test_waveform1d.py,sha256=ZuHCvGubMuaLIzaMWDvmBUhgzUHCDLdvTZqIOfBKaZg,22713
291
+ tests/unit_tests/test_waveform_widget.py,sha256=6jNmJJXCm28Owrs8vEYzP0OX8lFE6T5c7OUNjV6CiB4,8592
268
292
  tests/unit_tests/test_website_widget.py,sha256=fBADIJJBAHU4Ro7u95kdemFVNv196UOcuO9oLHuHt8A,761
269
293
  tests/unit_tests/test_widget_io.py,sha256=FeL3ZYSBQnRt6jxj8VGYw1cmcicRQyHKleahw7XIyR0,3475
270
294
  tests/unit_tests/test_yaml_dialog.py,sha256=SEvUgC_poWC6fAoHVWolaORpgMFc7c0Xqqk9cFvHSvo,5826
@@ -273,8 +297,8 @@ tests/unit_tests/test_configs/config_device_no_entry.yaml,sha256=hdvue9KLc_kfNzG
273
297
  tests/unit_tests/test_configs/config_scan.yaml,sha256=vo484BbWOjA_e-h6bTjSV9k7QaQHrlAvx-z8wtY-P4E,1915
274
298
  tests/unit_tests/test_msgs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
275
299
  tests/unit_tests/test_msgs/available_scans_message.py,sha256=m_z97hIrjHXXMa2Ex-UvsPmTxOYXfjxyJaGkIY6StTY,46532
276
- bec_widgets-0.87.1.dist-info/METADATA,sha256=uf6VZhm8oYlix039uTAh7h25FVrbcp-7tyKsdhkzBWQ,1308
277
- bec_widgets-0.87.1.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
278
- bec_widgets-0.87.1.dist-info/entry_points.txt,sha256=3otEkCdDB9LZJuBLzG4pFLK5Di0CVybN_12IsZrQ-58,166
279
- bec_widgets-0.87.1.dist-info/licenses/LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
280
- bec_widgets-0.87.1.dist-info/RECORD,,
300
+ bec_widgets-0.88.1.dist-info/METADATA,sha256=PhNXXQmzzTVoVSMDhrCnMZDZWDJq9NgDdg9W56mXnfg,1308
301
+ bec_widgets-0.88.1.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
302
+ bec_widgets-0.88.1.dist-info/entry_points.txt,sha256=3otEkCdDB9LZJuBLzG4pFLK5Di0CVybN_12IsZrQ-58,166
303
+ bec_widgets-0.88.1.dist-info/licenses/LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
304
+ bec_widgets-0.88.1.dist-info/RECORD,,
docs/conf.py CHANGED
@@ -78,4 +78,4 @@ language = "Python"
78
78
  html_theme = "pydata_sphinx_theme"
79
79
  html_static_path = ["_static"]
80
80
  html_css_files = ["custom.css"]
81
- html_logo = "../bec_widgets/assets/bec_widgets_icon.png"
81
+ html_logo = "../bec_widgets/assets/app_icons/bec_widgets_icon.png"
pyproject.toml CHANGED
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "bec_widgets"
7
- version = "0.87.1"
7
+ version = "0.88.1"
8
8
  description = "BEC Widgets"
9
9
  requires-python = ">=3.10"
10
10
  classifiers = [
@@ -1,7 +1,7 @@
1
1
  import pyqtgraph as pg
2
2
  import pytest
3
3
 
4
- from bec_widgets.widgets.color_map_selector.color_map_selector import ColormapSelector
4
+ from bec_widgets.widgets.colormap_selector.colormap_selector import ColormapSelector
5
5
 
6
6
 
7
7
  @pytest.fixture
@@ -0,0 +1,264 @@
1
+ from unittest.mock import MagicMock, patch
2
+
3
+ import pyqtgraph as pg
4
+ import pytest
5
+
6
+ from bec_widgets.widgets.waveform.waveform_widget import BECWaveformWidget
7
+
8
+ from .client_mocks import mocked_client
9
+
10
+
11
+ @pytest.fixture
12
+ def waveform_widget(qtbot, mocked_client):
13
+ widget = BECWaveformWidget(client=mocked_client())
14
+ qtbot.addWidget(widget)
15
+ qtbot.waitExposed(widget)
16
+ yield widget
17
+ widget.close()
18
+
19
+
20
+ @pytest.fixture
21
+ def mock_waveform(waveform_widget):
22
+ waveform_mock = MagicMock()
23
+ waveform_widget.waveform = waveform_mock
24
+ return waveform_mock
25
+
26
+
27
+ def test_waveform_widget_inti(waveform_widget):
28
+ assert waveform_widget is not None
29
+ assert waveform_widget.client is not None
30
+ assert isinstance(waveform_widget, BECWaveformWidget)
31
+ assert waveform_widget.config.widget_class == "BECWaveformWidget"
32
+
33
+
34
+ ###################################
35
+ # Wrapper methods for Waveform
36
+ ###################################
37
+
38
+
39
+ def test_waveform_widget_get_curve(waveform_widget, mock_waveform):
40
+ waveform_widget.get_curve("curve_id")
41
+ waveform_widget.waveform.get_curve.assert_called_once_with("curve_id")
42
+
43
+
44
+ def test_waveform_widget_set_colormap(waveform_widget, mock_waveform):
45
+ waveform_widget.set_colormap("colormap")
46
+ waveform_widget.waveform.set_colormap.assert_called_once_with("colormap")
47
+
48
+
49
+ def test_waveform_widget_set_x(waveform_widget, mock_waveform):
50
+ waveform_widget.set_x("samx", "samx")
51
+ waveform_widget.waveform.set_x.assert_called_once_with("samx", "samx")
52
+
53
+
54
+ def test_waveform_plot_data(waveform_widget, mock_waveform):
55
+ waveform_widget.plot(x=[1, 2, 3], y=[1, 2, 3])
56
+ waveform_widget.waveform.plot.assert_called_once_with(
57
+ arg1=None,
58
+ x=[1, 2, 3],
59
+ y=[1, 2, 3],
60
+ x_name=None,
61
+ y_name=None,
62
+ z_name=None,
63
+ x_entry=None,
64
+ y_entry=None,
65
+ z_entry=None,
66
+ color=None,
67
+ color_map_z="plasma",
68
+ label=None,
69
+ validate=True,
70
+ dap=None,
71
+ )
72
+
73
+
74
+ def test_waveform_plot_scan_curves(waveform_widget, mock_waveform):
75
+ waveform_widget.plot(x_name="samx", y_name="samy", dap="GaussianModel")
76
+ waveform_widget.waveform.plot.assert_called_once_with(
77
+ arg1=None,
78
+ x=None,
79
+ y=None,
80
+ x_name="samx",
81
+ y_name="samy",
82
+ z_name=None,
83
+ x_entry=None,
84
+ y_entry=None,
85
+ z_entry=None,
86
+ color=None,
87
+ color_map_z="plasma",
88
+ label=None,
89
+ validate=True,
90
+ dap="GaussianModel",
91
+ )
92
+
93
+
94
+ def test_waveform_widget_add_dap(waveform_widget, mock_waveform):
95
+ waveform_widget.add_dap(x_name="samx", y_name="bpm4i")
96
+ waveform_widget.waveform.add_dap.assert_called_once_with(
97
+ x_name="samx",
98
+ y_name="bpm4i",
99
+ x_entry=None,
100
+ y_entry=None,
101
+ color=None,
102
+ dap="GaussianModel",
103
+ validate_bec=True,
104
+ )
105
+
106
+
107
+ def test_waveform_widget_get_dap_params(waveform_widget, mock_waveform):
108
+ waveform_widget.get_dap_params()
109
+ waveform_widget.waveform.get_dap_params.assert_called_once()
110
+
111
+
112
+ def test_waveform_widget_get_dap_summary(waveform_widget, mock_waveform):
113
+ waveform_widget.get_dap_summary()
114
+ waveform_widget.waveform.get_dap_summary.assert_called_once()
115
+
116
+
117
+ def test_waveform_widget_remove_curve(waveform_widget, mock_waveform):
118
+ waveform_widget.remove_curve("curve_id")
119
+ waveform_widget.waveform.remove_curve.assert_called_once_with("curve_id")
120
+
121
+
122
+ def test_waveform_widget_scan_history(waveform_widget, mock_waveform):
123
+ waveform_widget.scan_history(0)
124
+ waveform_widget.waveform.scan_history.assert_called_once_with(0, None)
125
+
126
+
127
+ def test_waveform_widget_get_all_data(waveform_widget, mock_waveform):
128
+ waveform_widget.get_all_data()
129
+ waveform_widget.waveform.get_all_data.assert_called_once()
130
+
131
+
132
+ def test_waveform_widget_set_title(waveform_widget, mock_waveform):
133
+ waveform_widget.set_title("Title")
134
+ waveform_widget.waveform.set_title.assert_called_once_with("Title")
135
+
136
+
137
+ def test_waveform_widget_set_base(waveform_widget, mock_waveform):
138
+ waveform_widget.set(
139
+ title="Test Title",
140
+ x_label="X Label",
141
+ y_label="Y Label",
142
+ x_scale="linear",
143
+ y_scale="log",
144
+ x_lim=(0, 10),
145
+ y_lim=(0, 10),
146
+ legend_label_size=12,
147
+ )
148
+ waveform_widget.waveform.set.assert_called_once_with(
149
+ title="Test Title",
150
+ x_label="X Label",
151
+ y_label="Y Label",
152
+ x_scale="linear",
153
+ y_scale="log",
154
+ x_lim=(0, 10),
155
+ y_lim=(0, 10),
156
+ legend_label_size=12,
157
+ )
158
+
159
+
160
+ def test_waveform_widget_set_x_label(waveform_widget, mock_waveform):
161
+ waveform_widget.set_x_label("X Label")
162
+ waveform_widget.waveform.set_x_label.assert_called_once_with("X Label")
163
+
164
+
165
+ def test_waveform_widget_set_y_label(waveform_widget, mock_waveform):
166
+ waveform_widget.set_y_label("Y Label")
167
+ waveform_widget.waveform.set_y_label.assert_called_once_with("Y Label")
168
+
169
+
170
+ def test_waveform_widget_set_x_scale(waveform_widget, mock_waveform):
171
+ waveform_widget.set_x_scale("linear")
172
+ waveform_widget.waveform.set_x_scale.assert_called_once_with("linear")
173
+
174
+
175
+ def test_waveform_widget_set_y_scale(waveform_widget, mock_waveform):
176
+ waveform_widget.set_y_scale("log")
177
+ waveform_widget.waveform.set_y_scale.assert_called_once_with("log")
178
+
179
+
180
+ def test_waveform_widget_set_x_lim(waveform_widget, mock_waveform):
181
+ waveform_widget.set_x_lim((0, 10))
182
+ waveform_widget.waveform.set_x_lim.assert_called_once_with((0, 10))
183
+
184
+
185
+ def test_waveform_widget_set_y_lim(waveform_widget, mock_waveform):
186
+ waveform_widget.set_y_lim((0, 10))
187
+ waveform_widget.waveform.set_y_lim.assert_called_once_with((0, 10))
188
+
189
+
190
+ def test_waveform_widget_set_legend_label_size(waveform_widget, mock_waveform):
191
+ waveform_widget.set_legend_label_size(12)
192
+ waveform_widget.waveform.set_legend_label_size.assert_called_once_with(12)
193
+
194
+
195
+ def test_waveform_widget_set_auto_range(waveform_widget, mock_waveform):
196
+ waveform_widget.set_auto_range(True, "xy")
197
+ waveform_widget.waveform.set_auto_range.assert_called_once_with(True, "xy")
198
+
199
+
200
+ def test_waveform_widget_set_grid(waveform_widget, mock_waveform):
201
+ waveform_widget.set_grid(True, False)
202
+ waveform_widget.waveform.set_grid.assert_called_once_with(True, False)
203
+
204
+
205
+ def test_waveform_widget_lock_aspect_ratio(waveform_widget, mock_waveform):
206
+ waveform_widget.lock_aspect_ratio(True)
207
+ waveform_widget.waveform.lock_aspect_ratio.assert_called_once_with(True)
208
+
209
+
210
+ def test_waveform_widget_export(waveform_widget, mock_waveform):
211
+ waveform_widget.export()
212
+ waveform_widget.waveform.export.assert_called_once()
213
+
214
+
215
+ ###################################
216
+ # ToolBar interactions
217
+ ###################################
218
+
219
+
220
+ def test_toolbar_drag_mode_action_triggered(waveform_widget, qtbot):
221
+ action_drag = waveform_widget.toolbar.widgets["drag_mode"].action
222
+ action_rectangle = waveform_widget.toolbar.widgets["rectangle_mode"].action
223
+ action_drag.trigger()
224
+ assert action_drag.isChecked() == True
225
+ assert action_rectangle.isChecked() == False
226
+
227
+
228
+ def test_toolbar_rectangle_mode_action_triggered(waveform_widget, qtbot):
229
+ action_drag = waveform_widget.toolbar.widgets["drag_mode"].action
230
+ action_rectangle = waveform_widget.toolbar.widgets["rectangle_mode"].action
231
+ action_rectangle.trigger()
232
+ assert action_drag.isChecked() == False
233
+ assert action_rectangle.isChecked() == True
234
+
235
+
236
+ def test_toolbar_auto_range_action_triggered(waveform_widget, mock_waveform, qtbot):
237
+ action = waveform_widget.toolbar.widgets["auto_range"].action
238
+ action.trigger()
239
+ qtbot.wait(200)
240
+ waveform_widget.waveform.set_auto_range.assert_called_once_with(True, "xy")
241
+
242
+
243
+ def test_toolbar_fit_params_action_triggered(qtbot, waveform_widget):
244
+ action = waveform_widget.toolbar.widgets["fit_params"].action
245
+ with patch(
246
+ "bec_widgets.widgets.waveform.waveform_widget.FitSummaryWidget"
247
+ ) as MockFitSummaryWidget:
248
+ mock_dialog_instance = MockFitSummaryWidget.return_value
249
+ action.trigger()
250
+ mock_dialog_instance.show.assert_called_once()
251
+
252
+
253
+ def test_enable_mouse_pan_mode(qtbot, waveform_widget):
254
+ action_drag = waveform_widget.toolbar.widgets["drag_mode"].action
255
+ action_rectangle = waveform_widget.toolbar.widgets["rectangle_mode"].action
256
+
257
+ mock_view_box = MagicMock()
258
+ waveform_widget.waveform.plot_item.getViewBox = MagicMock(return_value=mock_view_box)
259
+
260
+ waveform_widget.enable_mouse_pan_mode()
261
+
262
+ assert action_drag.isChecked() == True
263
+ assert action_rectangle.isChecked() == False
264
+ mock_view_box.setMouseMode.assert_called_once_with(pg.ViewBox.PanMode)
@@ -1 +0,0 @@
1
- {'files': ['color_map_selector.py']}
@@ -1,59 +0,0 @@
1
- import os
2
-
3
- from qtpy.QtCore import QSize
4
- from qtpy.QtGui import QAction, QIcon
5
- from qtpy.QtWidgets import QHBoxLayout, QLabel, QWidget
6
-
7
- from bec_widgets.qt_utils.toolbar import ToolBarAction
8
- from bec_widgets.widgets.device_combobox.device_combobox import DeviceComboBox
9
-
10
-
11
- class DeviceSelectionAction(ToolBarAction):
12
- def __init__(self, label: str):
13
- self.label = label
14
- self.device_combobox = DeviceComboBox(device_filter="Positioner")
15
-
16
- self.device_combobox.currentIndexChanged.connect(lambda: self.set_combobox_style("#ffa700"))
17
-
18
- def add_to_toolbar(self, toolbar, target):
19
- widget = QWidget()
20
- layout = QHBoxLayout(widget)
21
-
22
- label = QLabel(f"{self.label}")
23
-
24
- layout.addWidget(label)
25
- layout.addWidget(self.device_combobox)
26
- toolbar.addWidget(widget)
27
-
28
- def set_combobox_style(self, color: str):
29
- self.device_combobox.setStyleSheet(f"QComboBox {{ background-color: {color}; }}")
30
-
31
-
32
- class ConnectAction(ToolBarAction):
33
- def add_to_toolbar(self, toolbar, target):
34
- current_path = os.path.dirname(__file__)
35
- parent_path = os.path.dirname(current_path)
36
- icon = QIcon()
37
- icon.addFile(os.path.join(parent_path, "assets", "connection.svg"), size=QSize(20, 20))
38
- self.action = QAction(icon, "Connect Motors", target)
39
- toolbar.addAction(self.action)
40
-
41
-
42
- class ResetHistoryAction(ToolBarAction):
43
- def add_to_toolbar(self, toolbar, target):
44
- current_path = os.path.dirname(__file__)
45
- parent_path = os.path.dirname(current_path)
46
- icon = QIcon()
47
- icon.addFile(os.path.join(parent_path, "assets", "history.svg"), size=QSize(20, 20))
48
- self.action = QAction(icon, "Reset Trace History", target)
49
- toolbar.addAction(self.action)
50
-
51
-
52
- class SettingsAction(ToolBarAction):
53
- def add_to_toolbar(self, toolbar, target):
54
- current_path = os.path.dirname(__file__)
55
- parent_path = os.path.dirname(current_path)
56
- icon = QIcon()
57
- icon.addFile(os.path.join(parent_path, "assets", "settings.svg"), size=QSize(20, 20))
58
- self.action = QAction(icon, "Open Configuration Dialog", target)
59
- toolbar.addAction(self.action)