bec-widgets 1.23.0__tar.gz → 1.24.0__tar.gz
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.
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/CHANGELOG.md +32 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/PKG-INFO +1 -1
- bec_widgets-1.24.0/bec_widgets/qt_utils/expandable_frame.py +72 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/scan_control/scan_control.py +76 -18
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/editors/scan_metadata/additional_metadata_table.py +7 -4
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/editors/scan_metadata/scan_metadata.py +46 -9
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/pyproject.toml +1 -1
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/.git_hooks/pre-commit +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/.gitignore +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/.gitlab/issue_templates/bug_report_template.md +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/.gitlab/issue_templates/documentation_update_template.md +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/.gitlab/issue_templates/feature_request_template.md +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/.gitlab/merge_request_templates/default.md +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/.gitlab-ci.yml +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/.pylintrc +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/.readthedocs.yaml +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/LICENSE +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/README.md +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/applications/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/applications/alignment/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/applications/alignment/alignment_1d/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/applications/alignment/alignment_1d/alignment_1d.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/applications/alignment/alignment_1d/alignment_1d.ui +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/applications/bec_app.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/assets/app_icons/BEC-General-App.png +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/assets/app_icons/alignment_1d.png +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/assets/app_icons/bec_widgets_icon.png +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/cli/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/cli/auto_updates.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/cli/client.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/cli/client_utils.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/cli/generate_cli.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/cli/rpc/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/cli/rpc/rpc_base.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/cli/rpc/rpc_register.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/cli/rpc/rpc_widget_handler.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/cli/server.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/examples/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/examples/general_app/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/examples/general_app/general_app.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/examples/general_app/general_app.ui +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/examples/general_app/web_links.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/examples/jupyter_console/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/examples/jupyter_console/jupyter_console_window.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/examples/plugin_example_pyside/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/examples/plugin_example_pyside/main.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/examples/plugin_example_pyside/registertictactoe.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/examples/plugin_example_pyside/taskmenuextension.pyproject +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/examples/plugin_example_pyside/tictactoe.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/examples/plugin_example_pyside/tictactoeplugin.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/examples/plugin_example_pyside/tictactoetaskmenu.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/qt_utils/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/qt_utils/collapsible_panel_manager.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/qt_utils/compact_popup.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/qt_utils/error_popups.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/qt_utils/palette_viewer.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/qt_utils/redis_message_waiter.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/qt_utils/round_frame.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/qt_utils/settings_dialog.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/qt_utils/side_panel.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/qt_utils/toolbar.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/tests/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/tests/utils.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/utils/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/utils/bec_connector.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/utils/bec_designer.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/utils/bec_dispatcher.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/utils/bec_signal_proxy.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/utils/bec_table.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/utils/bec_widget.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/utils/colors.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/utils/container_utils.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/utils/crosshair.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/utils/entry_validator.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/utils/filter_io.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/utils/fps_counter.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/utils/generate_designer_plugin.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/utils/layout_manager.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/utils/linear_region_selector.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/utils/ophyd_kind_util.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/utils/plot_indicator_items.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/utils/plugin_templates/plugin.template +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/utils/plugin_templates/register.template +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/utils/plugin_utils.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/utils/reference_utils.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/utils/rpc_decorator.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/utils/thread_checker.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/utils/ui_loader.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/utils/validator_delegate.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/utils/widget_io.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/utils/widget_state_manager.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/utils/yaml_dialog.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/containers/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/containers/dock/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/containers/dock/dock.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/containers/dock/dock_area.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/containers/dock/dock_area.pyproject +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/containers/dock/dock_area_plugin.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/containers/dock/register_dock_area.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/containers/figure/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/containers/figure/figure.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/containers/figure/plots/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/containers/figure/plots/axis_settings.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/containers/figure/plots/axis_settings.ui +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/containers/figure/plots/image/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/containers/figure/plots/image/image.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/containers/figure/plots/image/image_item.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/containers/figure/plots/image/image_processor.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/containers/figure/plots/motor_map/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/containers/figure/plots/motor_map/motor_map.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/containers/figure/plots/multi_waveform/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/containers/figure/plots/multi_waveform/multi_waveform.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/containers/figure/plots/plot_base.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/containers/figure/plots/waveform/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/containers/figure/plots/waveform/waveform.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/containers/figure/plots/waveform/waveform_curve.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/containers/layout_manager/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/containers/layout_manager/layout_manager.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/containers/main_window/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/containers/main_window/main_window.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/buttons/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/buttons/button_abort/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/buttons/button_abort/abort_button.pyproject +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/buttons/button_abort/abort_button_plugin.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/buttons/button_abort/button_abort.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/buttons/button_abort/register_abort_button.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/buttons/button_reset/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/buttons/button_reset/button_reset.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/buttons/button_reset/register_reset_button.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/buttons/button_reset/reset_button.pyproject +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/buttons/button_reset/reset_button_plugin.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/buttons/button_resume/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/buttons/button_resume/button_resume.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/buttons/button_resume/register_resume_button.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/buttons/button_resume/resume_button.pyproject +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/buttons/button_resume/resume_button_plugin.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/buttons/stop_button/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/buttons/stop_button/register_stop_button.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/buttons/stop_button/stop_button.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/buttons/stop_button/stop_button.pyproject +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/buttons/stop_button/stop_button_plugin.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_control/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_control/position_indicator/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_control/position_indicator/position_indicator.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_control/position_indicator/position_indicator.pyproject +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_control/position_indicator/position_indicator_plugin.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_control/position_indicator/register_position_indicator.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_control/positioner_box/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_control/positioner_box/_base/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_control/positioner_box/_base/positioner_box_base.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.pyproject +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.ui +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box_plugin.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/register_positioner_box.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box2_d.pyproject +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box2_d_plugin.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box_2d.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box_2d.ui +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/register_positioner_box2_d.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line.pyproject +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line.ui +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line_plugin.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/register_positioner_control_line.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_control/positioner_group/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_control/positioner_group/positioner_group.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_control/positioner_group/positioner_group.pyproject +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_control/positioner_group/positioner_group_plugin.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_control/positioner_group/register_positioner_group.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_input/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_input/base_classes/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_input/base_classes/device_input_base.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_input/base_classes/device_signal_input_base.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_input/device_combobox/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_input/device_combobox/device_combo_box.pyproject +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_input/device_combobox/device_combo_box_plugin.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_input/device_combobox/device_combobox.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_input/device_combobox/register_device_combo_box.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_input/device_line_edit/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_input/device_line_edit/device_line_edit.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_input/device_line_edit/device_line_edit.pyproject +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_input/device_line_edit/device_line_edit_plugin.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_input/device_line_edit/register_device_line_edit.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_input/signal_combobox/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_input/signal_combobox/register_signal_combo_box.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_input/signal_combobox/signal_combo_box.pyproject +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_input/signal_combobox/signal_combo_box_plugin.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_input/signal_combobox/signal_combobox.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_input/signal_line_edit/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_input/signal_line_edit/register_signal_line_edit.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_input/signal_line_edit/signal_line_edit.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_input/signal_line_edit/signal_line_edit.pyproject +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/device_input/signal_line_edit/signal_line_edit_plugin.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/scan_control/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/scan_control/register_scan_control.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/scan_control/scan_control.pyproject +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/scan_control/scan_control_plugin.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/scan_control/scan_group_box.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/dap/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/dap/dap_combo_box/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box.pyproject +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box_plugin.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/dap/dap_combo_box/register_dap_combo_box.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/dap/lmfit_dialog/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/dap/lmfit_dialog/lm_fit_dialog.pyproject +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/dap/lmfit_dialog/lm_fit_dialog_plugin.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog_compact.ui +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog_vertical.ui +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/dap/lmfit_dialog/register_lm_fit_dialog.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/editors/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/editors/console/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/editors/console/console.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/editors/console/console.pyproject +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/editors/console/console_plugin.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/editors/console/register_console.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/editors/jupyter_console/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/editors/jupyter_console/jupyter_console.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/editors/scan_metadata/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/editors/scan_metadata/_metadata_widgets.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/editors/scan_metadata/_util.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/editors/text_box/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/editors/text_box/register_text_box.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/editors/text_box/text_box.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/editors/text_box/text_box.pyproject +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/editors/text_box/text_box_plugin.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/editors/vscode/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/editors/vscode/register_vs_code_editor.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/editors/vscode/vs_code_editor.pyproject +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/editors/vscode/vs_code_editor_plugin.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/editors/vscode/vscode.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/editors/website/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/editors/website/register_website_widget.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/editors/website/website.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/editors/website/website_widget.pyproject +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/editors/website/website_widget_plugin.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/games/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/games/minesweeper.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/games/minesweeper.pyproject +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/games/minesweeper_plugin.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/games/register_minesweeper.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/plots/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/plots/image/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/plots/image/bec_image_widget.pyproject +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/plots/image/bec_image_widget_plugin.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/plots/image/image_widget.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/plots/image/register_bec_image_widget.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/plots/motor_map/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/plots/motor_map/bec_motor_map_widget.pyproject +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/plots/motor_map/bec_motor_map_widget_plugin.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/plots/motor_map/motor_map_dialog/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/plots/motor_map/motor_map_dialog/motor_map_settings.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/plots/motor_map/motor_map_dialog/motor_map_settings.ui +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/plots/motor_map/motor_map_widget.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/plots/motor_map/register_bec_motor_map_widget.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/plots/multi_waveform/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/plots/multi_waveform/bec_multi_waveform_widget.pyproject +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/plots/multi_waveform/bec_multi_waveform_widget_plugin.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/plots/multi_waveform/multi_waveform_controls.ui +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/plots/multi_waveform/multi_waveform_widget.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/plots/multi_waveform/register_bec_multi_waveform_widget.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/plots/waveform/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/plots/waveform/bec_waveform_widget.pyproject +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/plots/waveform/bec_waveform_widget_plugin.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/plots/waveform/register_bec_waveform_widget.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/plots/waveform/waveform_popups/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/plots/waveform/waveform_popups/curve_dialog/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/plots/waveform/waveform_popups/curve_dialog/curve_dialog.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/plots/waveform/waveform_popups/curve_dialog/curve_dialog.ui +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/plots/waveform/waveform_popups/dap_summary_dialog/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/plots/waveform/waveform_popups/dap_summary_dialog/dap_summary_dialog.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/plots/waveform/waveform_widget.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/plots_next_gen/plot_base.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/plots_next_gen/setting_menus/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/plots_next_gen/setting_menus/axis_settings.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/plots_next_gen/setting_menus/axis_settings_horizontal.ui +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/plots_next_gen/setting_menus/axis_settings_vertical.ui +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/plots_next_gen/toolbar_bundles/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/plots_next_gen/toolbar_bundles/mouse_interactions.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/plots_next_gen/toolbar_bundles/plot_export.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/plots_next_gen/toolbar_bundles/roi_bundle.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/plots_next_gen/toolbar_bundles/save_state.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/progress/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/progress/bec_progressbar/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/progress/bec_progressbar/bec_progress_bar.pyproject +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/progress/bec_progressbar/bec_progress_bar_plugin.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/progress/bec_progressbar/bec_progressbar.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/progress/bec_progressbar/register_bec_progress_bar.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/progress/ring_progress_bar/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/progress/ring_progress_bar/register_ring_progress_bar.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/progress/ring_progress_bar/ring.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar.pyproject +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar_plugin.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/services/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/services/bec_queue/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/services/bec_queue/bec_queue.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/services/bec_queue/bec_queue.pyproject +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/services/bec_queue/bec_queue_plugin.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/services/bec_queue/register_bec_queue.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/services/bec_status_box/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/services/bec_status_box/bec_status_box.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/services/bec_status_box/bec_status_box.pyproject +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/services/bec_status_box/bec_status_box_plugin.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/services/bec_status_box/register_bec_status_box.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/services/bec_status_box/status_item.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/services/device_browser/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/services/device_browser/device_browser.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/services/device_browser/device_browser.pyproject +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/services/device_browser/device_browser.ui +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/services/device_browser/device_browser_plugin.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/services/device_browser/device_item/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/services/device_browser/device_item/device_item.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/services/device_browser/register_device_browser.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/utility/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/utility/logpanel/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/utility/logpanel/_util.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/utility/logpanel/log_panel.pyproject +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/utility/logpanel/log_panel_plugin.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/utility/logpanel/logpanel.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/utility/logpanel/register_log_panel.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/utility/spinbox/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/utility/spinbox/bec_spin_box.pyproject +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/utility/spinbox/bec_spin_box_plugin.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/utility/spinbox/decimal_spinbox.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/utility/spinbox/register_bec_spin_box.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/utility/spinner/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/utility/spinner/register_spinner_widget.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/utility/spinner/spinner.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/utility/spinner/spinner_widget.pyproject +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/utility/spinner/spinner_widget_plugin.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/utility/toggle/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/utility/toggle/register_toggle_switch.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/utility/toggle/toggle.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/utility/toggle/toggle_switch.pyproject +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/utility/toggle/toggle_switch_plugin.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/utility/visual/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/utility/visual/color_button/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/utility/visual/color_button/color_button.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/utility/visual/color_button/color_button.pyproject +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/utility/visual/color_button/color_button_plugin.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/utility/visual/color_button/register_color_button.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/utility/visual/colormap_selector/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/utility/visual/colormap_selector/colormap_selector.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/utility/visual/colormap_selector/colormap_selector.pyproject +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/utility/visual/colormap_selector/colormap_selector_plugin.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/utility/visual/colormap_selector/register_colormap_selector.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/utility/visual/colormap_widget/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/utility/visual/colormap_widget/bec_color_map_widget.pyproject +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/utility/visual/colormap_widget/bec_color_map_widget_plugin.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/utility/visual/colormap_widget/colormap_widget.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/utility/visual/colormap_widget/register_bec_color_map_widget.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/utility/visual/dark_mode_button/__init__.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button.pyproject +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button_plugin.py +0 -0
- {bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/utility/visual/dark_mode_button/register_dark_mode_button.py +0 -0
@@ -1,6 +1,38 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
3
|
|
4
|
+
## v1.24.0 (2025-02-26)
|
5
|
+
|
6
|
+
### Bug Fixes
|
7
|
+
|
8
|
+
- Make scan metadata use collapsible frame
|
9
|
+
([`1c0021f`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/1c0021f98b8e0419dba883b891a6035653c0ba0d))
|
10
|
+
|
11
|
+
- Replace add'l md table w/ tree view
|
12
|
+
([`42665b6`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/42665b69c5cca60a9e5f2d7bd43dbfe5da5a7eb3))
|
13
|
+
|
14
|
+
### Code Style
|
15
|
+
|
16
|
+
- Isort
|
17
|
+
([`d32952a`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/d32952a0d590b03007271427bd85f00b88ef0851))
|
18
|
+
|
19
|
+
### Features
|
20
|
+
|
21
|
+
- Add expandable/collapsible frame
|
22
|
+
([`5206528`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/5206528feccaf192f3d5872ac785470562b493f9))
|
23
|
+
|
24
|
+
- Add metadata widget to scan control
|
25
|
+
([`7309c1d`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/7309c1dede2ec93bf08f84f13596ce18dfdb1476))
|
26
|
+
|
27
|
+
|
28
|
+
## v1.23.1 (2025-02-24)
|
29
|
+
|
30
|
+
### Bug Fixes
|
31
|
+
|
32
|
+
- Update redis mock for changes in bec
|
33
|
+
([`6a43554`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/6a43554f3b57045325f57bdd5079d7f91af40bb6))
|
34
|
+
|
35
|
+
|
4
36
|
## v1.23.0 (2025-02-24)
|
5
37
|
|
6
38
|
### Features
|
@@ -0,0 +1,72 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
3
|
+
from bec_qthemes import material_icon
|
4
|
+
from qtpy.QtWidgets import (
|
5
|
+
QFrame,
|
6
|
+
QHBoxLayout,
|
7
|
+
QLabel,
|
8
|
+
QLayout,
|
9
|
+
QSizePolicy,
|
10
|
+
QToolButton,
|
11
|
+
QVBoxLayout,
|
12
|
+
QWidget,
|
13
|
+
)
|
14
|
+
|
15
|
+
from bec_widgets.qt_utils.error_popups import SafeProperty, SafeSlot
|
16
|
+
|
17
|
+
|
18
|
+
class ExpandableGroupFrame(QFrame):
|
19
|
+
|
20
|
+
EXPANDED_ICON_NAME: str = "collapse_all"
|
21
|
+
COLLAPSED_ICON_NAME: str = "expand_all"
|
22
|
+
|
23
|
+
def __init__(self, title: str, parent: QWidget | None = None, expanded: bool = True) -> None:
|
24
|
+
super().__init__(parent=parent)
|
25
|
+
self._expanded = expanded
|
26
|
+
|
27
|
+
self.setFrameStyle(QFrame.Shape.StyledPanel | QFrame.Shadow.Plain)
|
28
|
+
self.setSizePolicy(QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Minimum)
|
29
|
+
self._layout = QVBoxLayout()
|
30
|
+
self._layout.setContentsMargins(0, 0, 0, 0)
|
31
|
+
self.setLayout(self._layout)
|
32
|
+
self._title_layout = QHBoxLayout()
|
33
|
+
self._layout.addLayout(self._title_layout)
|
34
|
+
self._expansion_button = QToolButton()
|
35
|
+
self._update_icon()
|
36
|
+
self._title = QLabel(f"<b>{title}</b>")
|
37
|
+
self._title_layout.addWidget(self._expansion_button)
|
38
|
+
self._title_layout.addWidget(self._title)
|
39
|
+
|
40
|
+
self._contents = QWidget()
|
41
|
+
self._layout.addWidget(self._contents)
|
42
|
+
|
43
|
+
self._expansion_button.clicked.connect(self.switch_expanded_state)
|
44
|
+
self.expanded = self._expanded # type: ignore
|
45
|
+
|
46
|
+
def set_layout(self, layout: QLayout) -> None:
|
47
|
+
self._contents.setLayout(layout)
|
48
|
+
self._contents.layout().setContentsMargins(0, 0, 0, 0) # type: ignore
|
49
|
+
|
50
|
+
@SafeSlot()
|
51
|
+
def switch_expanded_state(self):
|
52
|
+
self.expanded = not self.expanded # type: ignore
|
53
|
+
self._update_icon()
|
54
|
+
|
55
|
+
@SafeProperty(bool)
|
56
|
+
def expanded(self): # type: ignore
|
57
|
+
return self._expanded
|
58
|
+
|
59
|
+
@expanded.setter
|
60
|
+
def expanded(self, expanded: bool):
|
61
|
+
self._expanded = expanded
|
62
|
+
self._contents.setVisible(expanded)
|
63
|
+
self.updateGeometry()
|
64
|
+
|
65
|
+
def _update_icon(self):
|
66
|
+
self._expansion_button.setIcon(
|
67
|
+
material_icon(icon_name=self.EXPANDED_ICON_NAME, size=(10, 10), convert_to_pixmap=False)
|
68
|
+
if self.expanded
|
69
|
+
else material_icon(
|
70
|
+
icon_name=self.COLLAPSED_ICON_NAME, size=(10, 10), convert_to_pixmap=False
|
71
|
+
)
|
72
|
+
)
|
{bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/control/scan_control/scan_control.py
RENAMED
@@ -1,10 +1,10 @@
|
|
1
1
|
from collections import defaultdict
|
2
|
-
from types import SimpleNamespace
|
2
|
+
from types import NoneType, SimpleNamespace
|
3
3
|
from typing import Optional
|
4
4
|
|
5
5
|
from bec_lib.endpoints import MessageEndpoints
|
6
6
|
from pydantic import BaseModel, Field
|
7
|
-
from qtpy.QtCore import
|
7
|
+
from qtpy.QtCore import Signal
|
8
8
|
from qtpy.QtGui import QColor
|
9
9
|
from qtpy.QtWidgets import (
|
10
10
|
QApplication,
|
@@ -18,12 +18,13 @@ from qtpy.QtWidgets import (
|
|
18
18
|
QWidget,
|
19
19
|
)
|
20
20
|
|
21
|
-
from bec_widgets.qt_utils.error_popups import SafeSlot
|
21
|
+
from bec_widgets.qt_utils.error_popups import SafeProperty, SafeSlot
|
22
22
|
from bec_widgets.utils import ConnectionConfig
|
23
23
|
from bec_widgets.utils.bec_widget import BECWidget
|
24
24
|
from bec_widgets.utils.colors import get_accent_colors
|
25
25
|
from bec_widgets.widgets.control.buttons.stop_button.stop_button import StopButton
|
26
26
|
from bec_widgets.widgets.control.scan_control.scan_group_box import ScanGroupBox
|
27
|
+
from bec_widgets.widgets.editors.scan_metadata.scan_metadata import ScanMetadata
|
27
28
|
from bec_widgets.widgets.utility.toggle.toggle import ToggleSwitch
|
28
29
|
|
29
30
|
|
@@ -42,6 +43,7 @@ class ScanControlConfig(ConnectionConfig):
|
|
42
43
|
class ScanControl(BECWidget, QWidget):
|
43
44
|
PLUGIN = True
|
44
45
|
ICON_NAME = "tune"
|
46
|
+
ARG_BOX_POSITION: int = 2
|
45
47
|
|
46
48
|
scan_started = Signal()
|
47
49
|
scan_selected = Signal(str)
|
@@ -83,6 +85,8 @@ class ScanControl(BECWidget, QWidget):
|
|
83
85
|
self.config.default_scan = default_scan
|
84
86
|
self.config.allowed_scans = allowed_scans
|
85
87
|
|
88
|
+
self._scan_metadata: dict | None = None
|
89
|
+
|
86
90
|
# Create and set main layout
|
87
91
|
self._init_UI()
|
88
92
|
|
@@ -152,6 +156,20 @@ class ScanControl(BECWidget, QWidget):
|
|
152
156
|
# Initialize scan selection
|
153
157
|
self.populate_scans()
|
154
158
|
|
159
|
+
# Append metadata form
|
160
|
+
self._add_metadata_form()
|
161
|
+
|
162
|
+
self.layout.addStretch()
|
163
|
+
|
164
|
+
def _add_metadata_form(self):
|
165
|
+
self._metadata_form = ScanMetadata()
|
166
|
+
self.layout.addWidget(self._metadata_form)
|
167
|
+
self._metadata_form.update_with_new_scan(self.comboBox_scan_selection.currentText())
|
168
|
+
self.scan_selected.connect(self._metadata_form.update_with_new_scan)
|
169
|
+
self._metadata_form.metadata_updated.connect(self.update_scan_metadata)
|
170
|
+
self._metadata_form.metadata_cleared.connect(self.update_scan_metadata)
|
171
|
+
self._metadata_form.validate_form()
|
172
|
+
|
155
173
|
def populate_scans(self):
|
156
174
|
"""Populates the scan selection combo box with available scans from BEC session."""
|
157
175
|
self.available_scans = self.client.connector.get(
|
@@ -176,8 +194,9 @@ class ScanControl(BECWidget, QWidget):
|
|
176
194
|
self.request_last_executed_scan_parameters()
|
177
195
|
self.restore_scan_parameters(selected_scan_name)
|
178
196
|
|
179
|
-
@
|
180
|
-
|
197
|
+
@SafeSlot()
|
198
|
+
@SafeSlot(bool)
|
199
|
+
def request_last_executed_scan_parameters(self, *_):
|
181
200
|
"""
|
182
201
|
Requests the last executed scan parameters from BEC and restores them to the scan control widget.
|
183
202
|
"""
|
@@ -211,7 +230,7 @@ class ScanControl(BECWidget, QWidget):
|
|
211
230
|
else:
|
212
231
|
self.last_scan_found = False
|
213
232
|
|
214
|
-
@
|
233
|
+
@SafeProperty(str)
|
215
234
|
def current_scan(self):
|
216
235
|
"""Returns the scan name for the currently selected scan."""
|
217
236
|
return self.comboBox_scan_selection.currentText()
|
@@ -227,7 +246,7 @@ class ScanControl(BECWidget, QWidget):
|
|
227
246
|
return
|
228
247
|
self.comboBox_scan_selection.setCurrentText(scan_name)
|
229
248
|
|
230
|
-
@
|
249
|
+
@SafeSlot(str)
|
231
250
|
def set_current_scan(self, scan_name: str):
|
232
251
|
"""Slot for setting the current scan to the given scan name.
|
233
252
|
|
@@ -236,7 +255,7 @@ class ScanControl(BECWidget, QWidget):
|
|
236
255
|
"""
|
237
256
|
self.current_scan = scan_name
|
238
257
|
|
239
|
-
@
|
258
|
+
@SafeProperty(bool)
|
240
259
|
def hide_arg_box(self):
|
241
260
|
"""Property to hide the argument box."""
|
242
261
|
if self.arg_box is None:
|
@@ -253,7 +272,7 @@ class ScanControl(BECWidget, QWidget):
|
|
253
272
|
if self.arg_box is not None:
|
254
273
|
self.arg_box.setVisible(not hide)
|
255
274
|
|
256
|
-
@
|
275
|
+
@SafeProperty(bool)
|
257
276
|
def hide_kwarg_boxes(self):
|
258
277
|
"""Property to hide the keyword argument boxes."""
|
259
278
|
if len(self.kwarg_boxes) == 0:
|
@@ -274,7 +293,7 @@ class ScanControl(BECWidget, QWidget):
|
|
274
293
|
for box in self.kwarg_boxes:
|
275
294
|
box.setVisible(not hide)
|
276
295
|
|
277
|
-
@
|
296
|
+
@SafeProperty(bool)
|
278
297
|
def hide_scan_control_buttons(self):
|
279
298
|
"""Property to hide the scan control buttons."""
|
280
299
|
return not self.button_run_scan.isVisible()
|
@@ -288,12 +307,40 @@ class ScanControl(BECWidget, QWidget):
|
|
288
307
|
"""
|
289
308
|
self.show_scan_control_buttons(not hide)
|
290
309
|
|
291
|
-
@
|
310
|
+
@SafeProperty(bool)
|
311
|
+
def hide_metadata(self):
|
312
|
+
"""Property to hide the metadata form."""
|
313
|
+
return not self._metadata_form.isVisible()
|
314
|
+
|
315
|
+
@hide_metadata.setter
|
316
|
+
def hide_metadata(self, hide: bool):
|
317
|
+
"""Setter for the hide_metadata property.
|
318
|
+
|
319
|
+
Args:
|
320
|
+
hide(bool): Hide or show the metadata form.
|
321
|
+
"""
|
322
|
+
self._metadata_form.setVisible(not hide)
|
323
|
+
|
324
|
+
@SafeProperty(bool)
|
325
|
+
def hide_optional_metadata(self):
|
326
|
+
"""Property to hide the optional metadata form."""
|
327
|
+
return self._metadata_form.hide_optional_metadata
|
328
|
+
|
329
|
+
@hide_optional_metadata.setter
|
330
|
+
def hide_optional_metadata(self, hide: bool):
|
331
|
+
"""Setter for the hide_optional_metadata property.
|
332
|
+
|
333
|
+
Args:
|
334
|
+
hide(bool): Hide or show the optional metadata form.
|
335
|
+
"""
|
336
|
+
self._metadata_form.hide_optional_metadata = hide
|
337
|
+
|
338
|
+
@SafeSlot(bool)
|
292
339
|
def show_scan_control_buttons(self, show: bool):
|
293
340
|
"""Shows or hides the scan control buttons."""
|
294
341
|
self.scan_control_group.setVisible(show)
|
295
342
|
|
296
|
-
@
|
343
|
+
@SafeProperty(bool)
|
297
344
|
def hide_scan_selection_combobox(self):
|
298
345
|
"""Property to hide the scan selection combobox."""
|
299
346
|
return not self.comboBox_scan_selection.isVisible()
|
@@ -307,12 +354,12 @@ class ScanControl(BECWidget, QWidget):
|
|
307
354
|
"""
|
308
355
|
self.show_scan_selection_combobox(not hide)
|
309
356
|
|
310
|
-
@
|
357
|
+
@SafeSlot(bool)
|
311
358
|
def show_scan_selection_combobox(self, show: bool):
|
312
359
|
"""Shows or hides the scan selection combobox."""
|
313
360
|
self.scan_selection_group.setVisible(show)
|
314
361
|
|
315
|
-
@
|
362
|
+
@SafeSlot(str)
|
316
363
|
def scan_select(self, scan_name: str):
|
317
364
|
"""
|
318
365
|
Slot for scan selection. Updates the scan control layout based on the selected scan.
|
@@ -335,7 +382,7 @@ class ScanControl(BECWidget, QWidget):
|
|
335
382
|
self.update()
|
336
383
|
self.adjustSize()
|
337
384
|
|
338
|
-
@
|
385
|
+
@SafeProperty(bool)
|
339
386
|
def hide_add_remove_buttons(self):
|
340
387
|
"""Property to hide the add_remove buttons."""
|
341
388
|
return self._hide_add_remove_buttons
|
@@ -358,10 +405,11 @@ class ScanControl(BECWidget, QWidget):
|
|
358
405
|
Args:
|
359
406
|
groups(list): List of dictionaries containing the gui_group information.
|
360
407
|
"""
|
408
|
+
position = self.ARG_BOX_POSITION + (1 if self.arg_box is not None else 0)
|
361
409
|
for group in groups:
|
362
410
|
box = ScanGroupBox(box_type="kwargs", config=group)
|
363
411
|
box.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed)
|
364
|
-
self.layout.
|
412
|
+
self.layout.insertWidget(position + len(self.kwarg_boxes), box)
|
365
413
|
self.kwarg_boxes.append(box)
|
366
414
|
|
367
415
|
def add_arg_group(self, group: dict):
|
@@ -374,9 +422,9 @@ class ScanControl(BECWidget, QWidget):
|
|
374
422
|
self.arg_box.device_selected.connect(self.emit_device_selected)
|
375
423
|
self.arg_box.setSizePolicy(QSizePolicy.Preferred, QSizePolicy.Fixed)
|
376
424
|
self.arg_box.hide_add_remove_buttons = self._hide_add_remove_buttons
|
377
|
-
self.layout.
|
425
|
+
self.layout.insertWidget(self.ARG_BOX_POSITION, self.arg_box)
|
378
426
|
|
379
|
-
@
|
427
|
+
@SafeSlot(str)
|
380
428
|
def emit_device_selected(self, dev_names):
|
381
429
|
"""
|
382
430
|
Emit the signal to inform about selected device(s)
|
@@ -454,10 +502,20 @@ class ScanControl(BECWidget, QWidget):
|
|
454
502
|
scan_params = ScanParameterConfig(name=scan_name, args=args, kwargs=kwargs)
|
455
503
|
self.config.scans[scan_name] = scan_params
|
456
504
|
|
505
|
+
@SafeSlot(dict)
|
506
|
+
@SafeSlot(NoneType)
|
507
|
+
def update_scan_metadata(self, md: dict | None):
|
508
|
+
self._scan_metadata = md
|
509
|
+
if md is None:
|
510
|
+
self.button_run_scan.setEnabled(False)
|
511
|
+
else:
|
512
|
+
self.button_run_scan.setEnabled(True)
|
513
|
+
|
457
514
|
@SafeSlot(popup_error=True)
|
458
515
|
def run_scan(self):
|
459
516
|
"""Starts the selected scan with the given parameters."""
|
460
517
|
args, kwargs = self.get_scan_parameters()
|
518
|
+
kwargs["metadata"] = self._scan_metadata
|
461
519
|
self.scan_args.emit(args)
|
462
520
|
scan_function = getattr(self.scans, self.comboBox_scan_selection.currentText())
|
463
521
|
if callable(scan_function):
|
@@ -6,9 +6,9 @@ from qtpy.QtCore import QAbstractTableModel, QModelIndex, Qt, Signal # type: ig
|
|
6
6
|
from qtpy.QtWidgets import (
|
7
7
|
QApplication,
|
8
8
|
QHBoxLayout,
|
9
|
-
QLabel,
|
10
9
|
QPushButton,
|
11
|
-
|
10
|
+
QSizePolicy,
|
11
|
+
QTreeView,
|
12
12
|
QVBoxLayout,
|
13
13
|
QWidget,
|
14
14
|
)
|
@@ -105,9 +105,12 @@ class AdditionalMetadataTable(QWidget):
|
|
105
105
|
self._layout = QHBoxLayout()
|
106
106
|
self.setLayout(self._layout)
|
107
107
|
self._table_model = AdditionalMetadataTableModel(initial_data)
|
108
|
-
self._table_view =
|
108
|
+
self._table_view = QTreeView()
|
109
109
|
self._table_view.setModel(self._table_model)
|
110
|
-
self._table_view.
|
110
|
+
self._table_view.setSizePolicy(
|
111
|
+
QSizePolicy(QSizePolicy.Policy.Minimum, QSizePolicy.Policy.Minimum)
|
112
|
+
)
|
113
|
+
self._table_view.setAlternatingRowColors(True)
|
111
114
|
self._layout.addWidget(self._table_view)
|
112
115
|
|
113
116
|
self._buttons = QVBoxLayout()
|
{bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/widgets/editors/scan_metadata/scan_metadata.py
RENAMED
@@ -1,16 +1,19 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
3
|
from decimal import Decimal
|
4
|
+
from types import NoneType
|
4
5
|
from typing import TYPE_CHECKING
|
5
6
|
|
6
7
|
from bec_lib.logger import bec_logger
|
7
8
|
from bec_lib.metadata_schema import get_metadata_schema_for_scan
|
8
9
|
from bec_qthemes import material_icon
|
9
10
|
from pydantic import Field, ValidationError
|
11
|
+
from qtpy.QtCore import Signal # type: ignore
|
10
12
|
from qtpy.QtWidgets import (
|
11
13
|
QApplication,
|
12
14
|
QComboBox,
|
13
15
|
QGridLayout,
|
16
|
+
QHBoxLayout,
|
14
17
|
QLabel,
|
15
18
|
QLayout,
|
16
19
|
QVBoxLayout,
|
@@ -18,7 +21,8 @@ from qtpy.QtWidgets import (
|
|
18
21
|
)
|
19
22
|
|
20
23
|
from bec_widgets.qt_utils.compact_popup import CompactPopupWidget
|
21
|
-
from bec_widgets.qt_utils.error_popups import SafeSlot
|
24
|
+
from bec_widgets.qt_utils.error_popups import SafeProperty, SafeSlot
|
25
|
+
from bec_widgets.qt_utils.expandable_frame import ExpandableGroupFrame
|
22
26
|
from bec_widgets.utils.bec_widget import BECWidget
|
23
27
|
from bec_widgets.widgets.editors.scan_metadata._metadata_widgets import widget_from_type
|
24
28
|
from bec_widgets.widgets.editors.scan_metadata.additional_metadata_table import (
|
@@ -36,6 +40,9 @@ class ScanMetadata(BECWidget, QWidget):
|
|
36
40
|
metadata schema registry supplied in the plugin repo to find pydantic models
|
37
41
|
associated with the scan type. Sets limits for numerical values if specified."""
|
38
42
|
|
43
|
+
metadata_updated = Signal(dict)
|
44
|
+
metadata_cleared = Signal(NoneType)
|
45
|
+
|
39
46
|
def __init__(
|
40
47
|
self,
|
41
48
|
parent=None,
|
@@ -49,22 +56,32 @@ class ScanMetadata(BECWidget, QWidget):
|
|
49
56
|
self.set_schema(scan_name)
|
50
57
|
|
51
58
|
self._layout = QVBoxLayout()
|
52
|
-
self._layout.
|
59
|
+
self._layout.setContentsMargins(0, 0, 0, 0)
|
53
60
|
self.setLayout(self._layout)
|
54
|
-
|
61
|
+
|
62
|
+
self._required_md_box = ExpandableGroupFrame("Scan schema metadata")
|
63
|
+
self._layout.addWidget(self._required_md_box)
|
64
|
+
self._required_md_box_layout = QHBoxLayout()
|
65
|
+
self._required_md_box.set_layout(self._required_md_box_layout)
|
66
|
+
|
55
67
|
self._md_grid = QWidget()
|
56
|
-
self.
|
68
|
+
self._required_md_box_layout.addWidget(self._md_grid)
|
57
69
|
self._grid_container = QVBoxLayout()
|
58
70
|
self._md_grid.setLayout(self._grid_container)
|
59
71
|
self._new_grid_layout()
|
60
72
|
self._grid_container.addLayout(self._md_grid_layout)
|
61
|
-
|
73
|
+
|
74
|
+
self._additional_md_box = ExpandableGroupFrame("Additional metadata", expanded=False)
|
75
|
+
self._layout.addWidget(self._additional_md_box)
|
76
|
+
self._additional_md_box_layout = QHBoxLayout()
|
77
|
+
self._additional_md_box.set_layout(self._additional_md_box_layout)
|
78
|
+
|
62
79
|
self._additional_metadata = AdditionalMetadataTable(initial_extras or [])
|
63
|
-
self.
|
80
|
+
self._additional_md_box_layout.addWidget(self._additional_metadata)
|
64
81
|
|
65
82
|
self._validity = CompactPopupWidget()
|
66
83
|
self._validity.compact_view = True # type: ignore
|
67
|
-
self._validity.label = "
|
84
|
+
self._validity.label = "Metadata validity" # type: ignore
|
68
85
|
self._validity.compact_show_popup.setIcon(
|
69
86
|
material_icon(icon_name="info", size=(10, 10), convert_to_pixmap=False)
|
70
87
|
)
|
@@ -80,14 +97,20 @@ class ScanMetadata(BECWidget, QWidget):
|
|
80
97
|
self.populate()
|
81
98
|
self.validate_form()
|
82
99
|
|
83
|
-
def validate_form(self, *_):
|
100
|
+
def validate_form(self, *_) -> bool:
|
101
|
+
"""validate the currently entered metadata against the pydantic schema.
|
102
|
+
If successful, returns on metadata_emitted and returns true.
|
103
|
+
Otherwise, emits on metadata_cleared and returns false."""
|
84
104
|
try:
|
85
|
-
self.
|
105
|
+
metadata_dict = self.get_full_model_dict()
|
106
|
+
self._md_schema.model_validate(metadata_dict)
|
86
107
|
self._validity.set_global_state("success")
|
87
108
|
self._validity_message.setText("No errors!")
|
109
|
+
self.metadata_updated.emit(metadata_dict)
|
88
110
|
except ValidationError as e:
|
89
111
|
self._validity.set_global_state("emergency")
|
90
112
|
self._validity_message.setText(str(e))
|
113
|
+
self.metadata_cleared.emit(None)
|
91
114
|
|
92
115
|
def get_full_model_dict(self):
|
93
116
|
"""Get the entered metadata as a dict"""
|
@@ -140,6 +163,20 @@ class ScanMetadata(BECWidget, QWidget):
|
|
140
163
|
self._md_grid_layout.setContentsMargins(0, 0, 0, 0)
|
141
164
|
self._md_grid_layout.setSizeConstraint(QLayout.SizeConstraint.SetFixedSize)
|
142
165
|
|
166
|
+
@SafeProperty(bool)
|
167
|
+
def hide_optional_metadata(self): # type: ignore
|
168
|
+
"""Property to hide the optional metadata table."""
|
169
|
+
return not self._additional_md_box.isVisible()
|
170
|
+
|
171
|
+
@hide_optional_metadata.setter
|
172
|
+
def hide_optional_metadata(self, hide: bool):
|
173
|
+
"""Setter for the hide_optional_metadata property.
|
174
|
+
|
175
|
+
Args:
|
176
|
+
hide(bool): Hide or show the optional metadata table.
|
177
|
+
"""
|
178
|
+
self._additional_md_box.setVisible(not hide)
|
179
|
+
|
143
180
|
|
144
181
|
if __name__ == "__main__": # pragma: no cover
|
145
182
|
from unittest.mock import patch
|
File without changes
|
File without changes
|
File without changes
|
{bec_widgets-1.23.0 → bec_widgets-1.24.0}/.gitlab/issue_templates/documentation_update_template.md
RENAMED
File without changes
|
{bec_widgets-1.23.0 → bec_widgets-1.24.0}/.gitlab/issue_templates/feature_request_template.md
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/examples/plugin_example_pyside/__init__.py
RENAMED
File without changes
|
{bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/examples/plugin_example_pyside/main.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{bec_widgets-1.23.0 → bec_widgets-1.24.0}/bec_widgets/examples/plugin_example_pyside/tictactoe.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|