bec-widgets 0.90.0__py3-none-any.whl → 0.92.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 (94) hide show
  1. CHANGELOG.md +34 -34
  2. PKG-INFO +1 -1
  3. bec_widgets/assets/app_icons/BEC-Dark.png +0 -0
  4. bec_widgets/assets/designer_icons/code.png +0 -0
  5. bec_widgets/assets/designer_icons/color_button.png +0 -0
  6. bec_widgets/assets/designer_icons/device_box.png +0 -0
  7. bec_widgets/assets/designer_icons/device_combo_box.png +0 -0
  8. bec_widgets/assets/designer_icons/device_line_edit.png +0 -0
  9. bec_widgets/assets/designer_icons/dock_area.png +0 -0
  10. bec_widgets/assets/designer_icons/games.png +0 -0
  11. bec_widgets/assets/designer_icons/position_indicator.png +0 -0
  12. bec_widgets/assets/designer_icons/queue.png +0 -0
  13. bec_widgets/assets/designer_icons/ring_progress.png +0 -0
  14. bec_widgets/assets/designer_icons/scan_control.png +0 -0
  15. bec_widgets/assets/designer_icons/spinner.png +0 -0
  16. bec_widgets/assets/designer_icons/status.png +0 -0
  17. bec_widgets/assets/designer_icons/stop.png +0 -0
  18. bec_widgets/assets/designer_icons/text.png +0 -0
  19. bec_widgets/assets/designer_icons/toggle.png +0 -0
  20. bec_widgets/assets/designer_icons/web.png +0 -0
  21. bec_widgets/assets/status_icons/error.svg +3 -0
  22. bec_widgets/assets/status_icons/not_connected.svg +3 -0
  23. bec_widgets/assets/status_icons/refresh.svg +3 -0
  24. bec_widgets/assets/status_icons/running.svg +3 -0
  25. bec_widgets/assets/status_icons/warning.svg +3 -0
  26. bec_widgets/assets/toolbar_icons/attach_all.svg +3 -0
  27. bec_widgets/assets/toolbar_icons/device_box.svg +3 -0
  28. bec_widgets/assets/toolbar_icons/image.svg +3 -0
  29. bec_widgets/assets/toolbar_icons/motor_map.svg +3 -0
  30. bec_widgets/assets/toolbar_icons/progress.svg +3 -0
  31. bec_widgets/assets/toolbar_icons/queue.svg +3 -0
  32. bec_widgets/assets/toolbar_icons/restore_state.svg +3 -0
  33. bec_widgets/assets/toolbar_icons/ring_progress.svg +3 -0
  34. bec_widgets/assets/toolbar_icons/save_state.svg +3 -0
  35. bec_widgets/assets/toolbar_icons/scan_control.svg +3 -0
  36. bec_widgets/assets/toolbar_icons/status.svg +3 -0
  37. bec_widgets/assets/toolbar_icons/terminal.svg +3 -0
  38. bec_widgets/assets/toolbar_icons/waveform.svg +3 -0
  39. bec_widgets/cli/client.py +1 -1
  40. bec_widgets/examples/general_app/__init__.py +0 -0
  41. bec_widgets/examples/general_app/general_app.py +92 -0
  42. bec_widgets/examples/general_app/general_app.ui +262 -0
  43. bec_widgets/examples/general_app/web_links.py +15 -0
  44. bec_widgets/examples/plugin_example_pyside/tictactoeplugin.py +8 -2
  45. bec_widgets/qt_utils/toolbar.py +52 -2
  46. bec_widgets/utils/generate_designer_plugin.py +1 -1
  47. bec_widgets/widgets/bec_queue/bec_queue_plugin.py +7 -2
  48. bec_widgets/widgets/bec_status_box/bec_status_box_plugin.py +7 -2
  49. bec_widgets/widgets/bec_status_box/status_item.py +14 -8
  50. bec_widgets/widgets/color_button/color_button_plugin.py +3 -2
  51. bec_widgets/widgets/device_box/device_box_plugin.py +6 -1
  52. bec_widgets/widgets/device_combobox/{device_combobox_plugin.py → device_combo_box_plugin.py} +5 -3
  53. bec_widgets/widgets/device_combobox/device_combobox.py +1 -2
  54. bec_widgets/widgets/device_combobox/{register_device_combobox.py → register_device_combo_box.py} +1 -1
  55. bec_widgets/widgets/device_line_edit/device_line_edit_plugin.py +5 -3
  56. bec_widgets/widgets/dock/dock.py +68 -4
  57. bec_widgets/widgets/dock/dock_area.py +139 -29
  58. bec_widgets/widgets/dock/dock_area.pyproject +1 -0
  59. bec_widgets/widgets/dock/dock_area_plugin.py +59 -0
  60. bec_widgets/widgets/dock/register_dock_area.py +15 -0
  61. bec_widgets/widgets/position_indicator/__init__.py +0 -0
  62. bec_widgets/widgets/position_indicator/position_indicator_plugin.py +7 -2
  63. bec_widgets/widgets/ring_progress_bar/register_ring_progress_bar.py +15 -0
  64. bec_widgets/widgets/ring_progress_bar/ring_progress_bar.pyproject +1 -0
  65. bec_widgets/widgets/ring_progress_bar/ring_progress_bar_plugin.py +58 -0
  66. bec_widgets/widgets/scan_control/register_scan_control.py +15 -0
  67. bec_widgets/widgets/scan_control/scan_control.pyproject +1 -0
  68. bec_widgets/widgets/scan_control/scan_control_plugin.py +58 -0
  69. bec_widgets/widgets/spinner/spinner_widget_plugin.py +7 -2
  70. bec_widgets/widgets/stop_button/stop_button_plugin.py +5 -3
  71. bec_widgets/widgets/text_box/register_text_box.py +15 -0
  72. bec_widgets/widgets/text_box/text_box.pyproject +1 -0
  73. bec_widgets/widgets/text_box/text_box_plugin.py +58 -0
  74. bec_widgets/widgets/toggle/toggle_switch_plugin.py +7 -2
  75. bec_widgets/widgets/vscode/register_vs_code_editor.py +15 -0
  76. bec_widgets/widgets/vscode/vs_code_editor.pyproject +1 -0
  77. bec_widgets/widgets/vscode/vs_code_editor_plugin.py +59 -0
  78. bec_widgets/widgets/waveform/bec_waveform_widget_plugin.py +1 -1
  79. bec_widgets/widgets/website/register_website_widget.py +15 -0
  80. bec_widgets/widgets/website/website_widget.pyproject +1 -0
  81. bec_widgets/widgets/website/website_widget_plugin.py +58 -0
  82. {bec_widgets-0.90.0.dist-info → bec_widgets-0.92.0.dist-info}/METADATA +1 -1
  83. {bec_widgets-0.90.0.dist-info → bec_widgets-0.92.0.dist-info}/RECORD +90 -35
  84. pyproject.toml +1 -1
  85. tests/unit_tests/test_bec_dock.py +70 -30
  86. bec_widgets/widgets/color_button/assets/color_button.png +0 -0
  87. bec_widgets/widgets/device_combobox/assets/device_combobox_icon.png +0 -0
  88. bec_widgets/widgets/device_line_edit/assets/line_edit_icon.png +0 -0
  89. bec_widgets/widgets/stop_button/assets/stop.png +0 -0
  90. /bec_widgets/assets/designer_icons/{BECWaveformWidget.png → waveform.png} +0 -0
  91. /bec_widgets/widgets/device_combobox/{device_combobox.pyproject → device_combo_box.pyproject} +0 -0
  92. {bec_widgets-0.90.0.dist-info → bec_widgets-0.92.0.dist-info}/WHEEL +0 -0
  93. {bec_widgets-0.90.0.dist-info → bec_widgets-0.92.0.dist-info}/entry_points.txt +0 -0
  94. {bec_widgets-0.90.0.dist-info → bec_widgets-0.92.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,4 +1,5 @@
1
1
  # pylint: disable=missing-function-docstring, missing-module-docstring, unused-import
2
+ from unittest.mock import MagicMock, patch
2
3
 
3
4
  import pytest
4
5
 
@@ -24,7 +25,7 @@ def test_bec_dock_area_init(bec_dock_area):
24
25
 
25
26
 
26
27
  def test_bec_dock_area_add_remove_dock(bec_dock_area, qtbot):
27
- initial_count = len(bec_dock_area.docks)
28
+ initial_count = len(bec_dock_area.dock_area.docks)
28
29
 
29
30
  # Adding 3 docks
30
31
  d0 = bec_dock_area.add_dock()
@@ -32,28 +33,28 @@ def test_bec_dock_area_add_remove_dock(bec_dock_area, qtbot):
32
33
  d2 = bec_dock_area.add_dock()
33
34
 
34
35
  # Check if the docks were added
35
- assert len(bec_dock_area.docks) == initial_count + 3
36
- assert d0.name() in dict(bec_dock_area.docks)
37
- assert d1.name() in dict(bec_dock_area.docks)
38
- assert d2.name() in dict(bec_dock_area.docks)
39
- assert bec_dock_area.docks[d0.name()].config.widget_class == "BECDock"
40
- assert bec_dock_area.docks[d1.name()].config.widget_class == "BECDock"
41
- assert bec_dock_area.docks[d2.name()].config.widget_class == "BECDock"
36
+ assert len(bec_dock_area.dock_area.docks) == initial_count + 3
37
+ assert d0.name() in dict(bec_dock_area.dock_area.docks)
38
+ assert d1.name() in dict(bec_dock_area.dock_area.docks)
39
+ assert d2.name() in dict(bec_dock_area.dock_area.docks)
40
+ assert bec_dock_area.dock_area.docks[d0.name()].config.widget_class == "BECDock"
41
+ assert bec_dock_area.dock_area.docks[d1.name()].config.widget_class == "BECDock"
42
+ assert bec_dock_area.dock_area.docks[d2.name()].config.widget_class == "BECDock"
42
43
 
43
44
  # Check panels API for getting docks to CLI
44
- assert bec_dock_area.panels == dict(bec_dock_area.docks)
45
+ assert bec_dock_area.panels == dict(bec_dock_area.dock_area.docks)
45
46
 
46
47
  # Remove docks
47
48
  d0_name = d0.name()
48
- bec_dock_area.remove_dock(d0_name) # TODO fix this, works in jupyter console
49
+ bec_dock_area.remove_dock(d0_name)
49
50
  qtbot.wait(200)
50
51
  d1.remove()
51
52
  qtbot.wait(200)
52
53
 
53
- assert len(bec_dock_area.docks) == initial_count + 1
54
- assert d0.name() not in dict(bec_dock_area.docks)
55
- assert d1.name() not in dict(bec_dock_area.docks)
56
- assert d2.name() in dict(bec_dock_area.docks)
54
+ assert len(bec_dock_area.dock_area.docks) == initial_count + 1
55
+ assert d0.name() not in dict(bec_dock_area.dock_area.docks)
56
+ assert d1.name() not in dict(bec_dock_area.dock_area.docks)
57
+ assert d2.name() in dict(bec_dock_area.dock_area.docks)
57
58
 
58
59
 
59
60
  def test_add_remove_bec_figure_to_dock(bec_dock_area):
@@ -63,7 +64,7 @@ def test_add_remove_bec_figure_to_dock(bec_dock_area):
63
64
  im = fig.image("eiger")
64
65
  mm = fig.motor_map("samx", "samy")
65
66
 
66
- assert len(bec_dock_area.docks) == 1
67
+ assert len(bec_dock_area.dock_area.docks) == 1
67
68
  assert len(d0.widgets) == 1
68
69
  assert len(d0.widget_list) == 1
69
70
  assert len(fig.widgets) == 3
@@ -74,14 +75,6 @@ def test_add_remove_bec_figure_to_dock(bec_dock_area):
74
75
  assert mm.config.widget_class == "BECMotorMap"
75
76
 
76
77
 
77
- def test_dock_area_errors(bec_dock_area):
78
- d0 = bec_dock_area.add_dock(name="dock_0")
79
-
80
- with pytest.raises(ValueError) as excinfo:
81
- bec_dock_area.add_dock(name="dock_0")
82
- assert "Dock with name dock_0 already exists." in str(excinfo.value)
83
-
84
-
85
78
  def test_close_docks(bec_dock_area, qtbot):
86
79
  d0 = bec_dock_area.add_dock(name="dock_0")
87
80
  d1 = bec_dock_area.add_dock(name="dock_1")
@@ -89,7 +82,7 @@ def test_close_docks(bec_dock_area, qtbot):
89
82
 
90
83
  bec_dock_area.clear_all()
91
84
  qtbot.wait(200)
92
- assert len(bec_dock_area.docks) == 0
85
+ assert len(bec_dock_area.dock_area.docks) == 0
93
86
 
94
87
 
95
88
  def test_undock_and_dock_docks(bec_dock_area, qtbot):
@@ -102,13 +95,60 @@ def test_undock_and_dock_docks(bec_dock_area, qtbot):
102
95
  bec_dock_area.detach_dock("dock_1")
103
96
  d2.detach()
104
97
 
105
- assert len(bec_dock_area.docks) == 4
106
- assert len(bec_dock_area.tempAreas) == 3
98
+ assert len(bec_dock_area.dock_area.docks) == 4
99
+ assert len(bec_dock_area.dock_area.tempAreas) == 3
107
100
 
108
101
  d0.attach()
109
- assert len(bec_dock_area.docks) == 4
110
- assert len(bec_dock_area.tempAreas) == 2
102
+ assert len(bec_dock_area.dock_area.docks) == 4
103
+ assert len(bec_dock_area.dock_area.tempAreas) == 2
111
104
 
112
105
  bec_dock_area.attach_all()
113
- assert len(bec_dock_area.docks) == 4
114
- assert len(bec_dock_area.tempAreas) == 0
106
+ assert len(bec_dock_area.dock_area.docks) == 4
107
+ assert len(bec_dock_area.dock_area.tempAreas) == 0
108
+
109
+
110
+ ###################################
111
+ # Toolbar Actions
112
+ ###################################
113
+ def test_toolbar_add_plot_waveform(bec_dock_area):
114
+ bec_dock_area.toolbar.widgets["menu_plots"].widgets["waveform"].trigger()
115
+ assert "waveform_1" in bec_dock_area.panels
116
+ assert bec_dock_area.panels["waveform_1"].widgets[0].config.widget_class == "BECWaveformWidget"
117
+
118
+
119
+ def test_toolbar_add_plot_image(bec_dock_area):
120
+ bec_dock_area.toolbar.widgets["menu_plots"].widgets["image"].trigger()
121
+ assert "image_1" in bec_dock_area.panels
122
+ assert bec_dock_area.panels["image_1"].widgets[0].config.widget_class == "BECImageWidget"
123
+
124
+
125
+ def test_toolbar_add_plot_motor_map(bec_dock_area):
126
+ bec_dock_area.toolbar.widgets["menu_plots"].widgets["motor_map"].trigger()
127
+ assert "motor_map_1" in bec_dock_area.panels
128
+ assert bec_dock_area.panels["motor_map_1"].widgets[0].config.widget_class == "BECMotorMapWidget"
129
+
130
+
131
+ def test_toolbar_add_device_device_box(bec_dock_area):
132
+ bec_dock_area.toolbar.widgets["menu_devices"].widgets["device_box"].trigger()
133
+ assert "device_box_1" in bec_dock_area.panels
134
+ assert bec_dock_area.panels["device_box_1"].widgets[0].config.widget_class == "DeviceBox"
135
+
136
+
137
+ def test_toolbar_add_utils_queue(bec_dock_area):
138
+ bec_dock_area.toolbar.widgets["menu_utils"].widgets["queue"].trigger()
139
+ assert "queue_1" in bec_dock_area.panels
140
+ assert bec_dock_area.panels["queue_1"].widgets[0].config.widget_class == "BECQueue"
141
+
142
+
143
+ def test_toolbar_add_utils_status(bec_dock_area):
144
+ bec_dock_area.toolbar.widgets["menu_utils"].widgets["status"].trigger()
145
+ assert "status_1" in bec_dock_area.panels
146
+ assert bec_dock_area.panels["status_1"].widgets[0].config.widget_class == "BECStatusBox"
147
+
148
+
149
+ def test_toolbar_add_utils_progress_bar(bec_dock_area):
150
+ bec_dock_area.toolbar.widgets["menu_utils"].widgets["progress_bar"].trigger()
151
+ assert "progress_bar_1" in bec_dock_area.panels
152
+ assert (
153
+ bec_dock_area.panels["progress_bar_1"].widgets[0].config.widget_class == "RingProgressBar"
154
+ )