bec-widgets 1.15.0__tar.gz → 1.16.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.15.0 → bec_widgets-1.16.0}/CHANGELOG.md +24 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/PKG-INFO +1 -1
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/qt_utils/error_popups.py +45 -10
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/qt_utils/toolbar.py +312 -24
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/pyproject.toml +1 -1
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/.git_hooks/pre-commit +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/.gitignore +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/.gitlab/issue_templates/bug_report_template.md +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/.gitlab/issue_templates/documentation_update_template.md +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/.gitlab/issue_templates/feature_request_template.md +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/.gitlab/merge_request_templates/default.md +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/.gitlab-ci.yml +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/.pylintrc +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/.readthedocs.yaml +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/LICENSE +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/README.md +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/applications/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/applications/alignment/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/applications/alignment/alignment_1d/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/applications/alignment/alignment_1d/alignment_1d.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/applications/alignment/alignment_1d/alignment_1d.ui +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/applications/bec_app.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/assets/app_icons/BEC-General-App.png +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/assets/app_icons/alignment_1d.png +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/assets/app_icons/bec_widgets_icon.png +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/cli/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/cli/auto_updates.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/cli/client.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/cli/client_utils.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/cli/generate_cli.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/cli/rpc/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/cli/rpc/rpc_base.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/cli/rpc/rpc_register.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/cli/rpc/rpc_widget_handler.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/cli/server.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/examples/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/examples/general_app/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/examples/general_app/general_app.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/examples/general_app/general_app.ui +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/examples/general_app/web_links.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/examples/jupyter_console/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/examples/jupyter_console/jupyter_console_window.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/examples/plugin_example_pyside/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/examples/plugin_example_pyside/main.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/examples/plugin_example_pyside/registertictactoe.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/examples/plugin_example_pyside/taskmenuextension.pyproject +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/examples/plugin_example_pyside/tictactoe.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/examples/plugin_example_pyside/tictactoeplugin.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/examples/plugin_example_pyside/tictactoetaskmenu.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/qt_utils/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/qt_utils/collapsible_panel_manager.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/qt_utils/compact_popup.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/qt_utils/palette_viewer.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/qt_utils/redis_message_waiter.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/qt_utils/round_frame.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/qt_utils/settings_dialog.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/qt_utils/side_panel.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/tests/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/tests/utils.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/utils/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/utils/bec_connector.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/utils/bec_designer.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/utils/bec_dispatcher.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/utils/bec_signal_proxy.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/utils/bec_table.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/utils/bec_widget.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/utils/colors.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/utils/container_utils.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/utils/crosshair.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/utils/entry_validator.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/utils/filter_io.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/utils/fps_counter.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/utils/generate_designer_plugin.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/utils/layout_manager.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/utils/linear_region_selector.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/utils/ophyd_kind_util.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/utils/plot_indicator_items.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/utils/plugin_templates/plugin.template +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/utils/plugin_templates/register.template +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/utils/plugin_utils.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/utils/reference_utils.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/utils/rpc_decorator.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/utils/thread_checker.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/utils/ui_loader.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/utils/validator_delegate.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/utils/widget_io.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/utils/widget_state_manager.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/utils/yaml_dialog.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/containers/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/containers/dock/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/containers/dock/dock.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/containers/dock/dock_area.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/containers/dock/dock_area.pyproject +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/containers/dock/dock_area_plugin.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/containers/dock/register_dock_area.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/containers/figure/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/containers/figure/figure.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/containers/figure/plots/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/containers/figure/plots/axis_settings.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/containers/figure/plots/axis_settings.ui +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/containers/figure/plots/image/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/containers/figure/plots/image/image.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/containers/figure/plots/image/image_item.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/containers/figure/plots/image/image_processor.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/containers/figure/plots/motor_map/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/containers/figure/plots/motor_map/motor_map.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/containers/figure/plots/multi_waveform/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/containers/figure/plots/multi_waveform/multi_waveform.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/containers/figure/plots/plot_base.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/containers/figure/plots/waveform/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/containers/figure/plots/waveform/waveform.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/containers/figure/plots/waveform/waveform_curve.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/containers/layout_manager/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/containers/layout_manager/layout_manager.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/containers/main_window/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/containers/main_window/main_window.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/buttons/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/buttons/button_abort/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/buttons/button_abort/abort_button.pyproject +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/buttons/button_abort/abort_button_plugin.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/buttons/button_abort/button_abort.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/buttons/button_abort/register_abort_button.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/buttons/button_reset/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/buttons/button_reset/button_reset.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/buttons/button_reset/register_reset_button.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/buttons/button_reset/reset_button.pyproject +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/buttons/button_reset/reset_button_plugin.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/buttons/button_resume/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/buttons/button_resume/button_resume.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/buttons/button_resume/register_resume_button.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/buttons/button_resume/resume_button.pyproject +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/buttons/button_resume/resume_button_plugin.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/buttons/stop_button/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/buttons/stop_button/register_stop_button.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/buttons/stop_button/stop_button.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/buttons/stop_button/stop_button.pyproject +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/buttons/stop_button/stop_button_plugin.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_control/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_control/position_indicator/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_control/position_indicator/position_indicator.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_control/position_indicator/position_indicator.pyproject +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_control/position_indicator/position_indicator_plugin.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_control/position_indicator/register_position_indicator.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_control/positioner_box/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box.pyproject +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box.ui +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_plugin.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line.pyproject +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line.ui +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line_plugin.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_control/positioner_box/register_positioner_box.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_control/positioner_box/register_positioner_control_line.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_control/positioner_group/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_control/positioner_group/positioner_group.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_control/positioner_group/positioner_group.pyproject +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_control/positioner_group/positioner_group_plugin.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_control/positioner_group/register_positioner_group.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_input/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_input/base_classes/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_input/base_classes/device_input_base.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_input/base_classes/device_signal_input_base.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_input/device_combobox/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_input/device_combobox/device_combo_box.pyproject +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_input/device_combobox/device_combo_box_plugin.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_input/device_combobox/device_combobox.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_input/device_combobox/register_device_combo_box.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_input/device_line_edit/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_input/device_line_edit/device_line_edit.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_input/device_line_edit/device_line_edit.pyproject +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_input/device_line_edit/device_line_edit_plugin.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_input/device_line_edit/register_device_line_edit.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_input/signal_combobox/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_input/signal_combobox/register_signal_combobox.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_input/signal_combobox/signal_combobox.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_input/signal_combobox/signal_combobox.pyproject +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_input/signal_combobox/signal_combobox_plugin.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_input/signal_line_edit/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_input/signal_line_edit/register_signal_line_edit.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_input/signal_line_edit/signal_line_edit.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_input/signal_line_edit/signal_line_edit.pyproject +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/device_input/signal_line_edit/signal_line_edit_plugin.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/scan_control/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/scan_control/register_scan_control.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/scan_control/scan_control.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/scan_control/scan_control.pyproject +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/scan_control/scan_control_plugin.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/control/scan_control/scan_group_box.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/dap/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/dap/dap_combo_box/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box.pyproject +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box_plugin.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/dap/dap_combo_box/register_dap_combo_box.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/dap/lmfit_dialog/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/dap/lmfit_dialog/lm_fit_dialog.pyproject +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/dap/lmfit_dialog/lm_fit_dialog_plugin.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog_compact.ui +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog_vertical.ui +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/dap/lmfit_dialog/register_lm_fit_dialog.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/editors/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/editors/console/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/editors/console/console.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/editors/console/console.pyproject +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/editors/console/console_plugin.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/editors/console/register_console.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/editors/jupyter_console/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/editors/jupyter_console/jupyter_console.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/editors/text_box/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/editors/text_box/register_text_box.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/editors/text_box/text_box.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/editors/text_box/text_box.pyproject +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/editors/text_box/text_box_plugin.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/editors/vscode/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/editors/vscode/register_vs_code_editor.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/editors/vscode/vs_code_editor.pyproject +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/editors/vscode/vs_code_editor_plugin.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/editors/vscode/vscode.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/editors/website/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/editors/website/register_website_widget.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/editors/website/website.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/editors/website/website_widget.pyproject +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/editors/website/website_widget_plugin.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/games/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/games/minesweeper.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/games/minesweeper.pyproject +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/games/minesweeper_plugin.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/games/register_minesweeper.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/plots/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/plots/image/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/plots/image/bec_image_widget.pyproject +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/plots/image/bec_image_widget_plugin.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/plots/image/image_widget.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/plots/image/register_bec_image_widget.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/plots/motor_map/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/plots/motor_map/bec_motor_map_widget.pyproject +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/plots/motor_map/bec_motor_map_widget_plugin.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/plots/motor_map/motor_map_dialog/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/plots/motor_map/motor_map_dialog/motor_map_settings.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/plots/motor_map/motor_map_dialog/motor_map_settings.ui +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/plots/motor_map/motor_map_widget.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/plots/motor_map/register_bec_motor_map_widget.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/plots/multi_waveform/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/plots/multi_waveform/bec_multi_waveform_widget.pyproject +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/plots/multi_waveform/bec_multi_waveform_widget_plugin.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/plots/multi_waveform/multi_waveform_controls.ui +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/plots/multi_waveform/multi_waveform_widget.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/plots/multi_waveform/register_bec_multi_waveform_widget.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/plots/waveform/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/plots/waveform/bec_waveform_widget.pyproject +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/plots/waveform/bec_waveform_widget_plugin.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/plots/waveform/register_bec_waveform_widget.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/plots/waveform/waveform_popups/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/plots/waveform/waveform_popups/curve_dialog/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/plots/waveform/waveform_popups/curve_dialog/curve_dialog.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/plots/waveform/waveform_popups/curve_dialog/curve_dialog.ui +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/plots/waveform/waveform_popups/dap_summary_dialog/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/plots/waveform/waveform_popups/dap_summary_dialog/dap_summary_dialog.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/plots/waveform/waveform_widget.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/progress/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/progress/bec_progressbar/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/progress/bec_progressbar/bec_progress_bar.pyproject +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/progress/bec_progressbar/bec_progress_bar_plugin.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/progress/bec_progressbar/bec_progressbar.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/progress/bec_progressbar/register_bec_progress_bar.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/progress/ring_progress_bar/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/progress/ring_progress_bar/register_ring_progress_bar.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/progress/ring_progress_bar/ring.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar.pyproject +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar_plugin.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/services/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/services/bec_queue/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/services/bec_queue/bec_queue.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/services/bec_queue/bec_queue.pyproject +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/services/bec_queue/bec_queue_plugin.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/services/bec_queue/register_bec_queue.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/services/bec_status_box/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/services/bec_status_box/bec_status_box.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/services/bec_status_box/bec_status_box.pyproject +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/services/bec_status_box/bec_status_box_plugin.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/services/bec_status_box/register_bec_status_box.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/services/bec_status_box/status_item.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/services/device_browser/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/services/device_browser/device_browser.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/services/device_browser/device_browser.pyproject +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/services/device_browser/device_browser.ui +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/services/device_browser/device_browser_plugin.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/services/device_browser/device_item/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/services/device_browser/device_item/device_item.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/services/device_browser/register_device_browser.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/utility/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/utility/spinner/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/utility/spinner/register_spinner_widget.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/utility/spinner/spinner.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/utility/spinner/spinner_widget.pyproject +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/utility/spinner/spinner_widget_plugin.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/utility/toggle/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/utility/toggle/register_toggle_switch.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/utility/toggle/toggle.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/utility/toggle/toggle_switch.pyproject +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/utility/toggle/toggle_switch_plugin.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/utility/visual/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/utility/visual/color_button/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/utility/visual/color_button/color_button.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/utility/visual/color_button/color_button.pyproject +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/utility/visual/color_button/color_button_plugin.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/utility/visual/color_button/register_color_button.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/utility/visual/colormap_selector/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/utility/visual/colormap_selector/colormap_selector.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/utility/visual/colormap_selector/colormap_selector.pyproject +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/utility/visual/colormap_selector/colormap_selector_plugin.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/utility/visual/colormap_selector/register_colormap_selector.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/utility/visual/colormap_widget/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/utility/visual/colormap_widget/bec_color_map_widget.pyproject +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/utility/visual/colormap_widget/bec_color_map_widget_plugin.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/utility/visual/colormap_widget/colormap_widget.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/utility/visual/colormap_widget/register_bec_color_map_widget.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/utility/visual/dark_mode_button/__init__.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button.pyproject +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button_plugin.py +0 -0
- {bec_widgets-1.15.0 → bec_widgets-1.16.0}/bec_widgets/widgets/utility/visual/dark_mode_button/register_dark_mode_button.py +0 -0
@@ -1,6 +1,30 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
3
|
|
4
|
+
## v1.16.0 (2025-01-14)
|
5
|
+
|
6
|
+
### Bug Fixes
|
7
|
+
|
8
|
+
- **e2e**: Num of elements to wait for scan fixed to steps requested in the scan
|
9
|
+
([`0fd5dd5`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/0fd5dd5a264beb93690365ad8befa34cfdd296d0))
|
10
|
+
|
11
|
+
- **toolbar**: Adjusted to future plot base
|
12
|
+
([`508abfa`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/508abfa8a5a31829bdfd5853e967f5ac668d8d8d))
|
13
|
+
|
14
|
+
### Features
|
15
|
+
|
16
|
+
- **modular_toolbar**: Context menu and action bundles
|
17
|
+
([`001e6fc`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/001e6fc807667187807656a55ab58e3b2f17c9ca))
|
18
|
+
|
19
|
+
|
20
|
+
## v1.15.1 (2025-01-13)
|
21
|
+
|
22
|
+
### Bug Fixes
|
23
|
+
|
24
|
+
- **error_popups**: Safeproperty wrapper extended to catch more errors and not crash Designer
|
25
|
+
([`3b04b98`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/3b04b985b66a7237703a87f6a53610171eb9ffa5))
|
26
|
+
|
27
|
+
|
4
28
|
## v1.15.0 (2025-01-10)
|
5
29
|
|
6
30
|
### Features
|
@@ -2,25 +2,52 @@ import functools
|
|
2
2
|
import sys
|
3
3
|
import traceback
|
4
4
|
|
5
|
+
from bec_lib.logger import bec_logger
|
5
6
|
from qtpy.QtCore import Property, QObject, Qt, Signal, Slot
|
6
7
|
from qtpy.QtWidgets import QApplication, QMessageBox, QPushButton, QVBoxLayout, QWidget
|
7
8
|
|
8
9
|
|
9
|
-
def SafeProperty(prop_type, *prop_args, popup_error: bool = False, **prop_kwargs):
|
10
|
+
def SafeProperty(prop_type, *prop_args, popup_error: bool = False, default=None, **prop_kwargs):
|
10
11
|
"""
|
11
|
-
Decorator to create a Qt Property with
|
12
|
-
|
12
|
+
Decorator to create a Qt Property with safe getter and setter so that
|
13
|
+
Qt Designer won't crash if an exception occurs in either method.
|
13
14
|
|
14
15
|
Args:
|
15
|
-
prop_type: The property type (e.g., str, bool,
|
16
|
-
popup_error (bool): If True, show popup
|
17
|
-
|
16
|
+
prop_type: The property type (e.g., str, bool, int, custom classes, etc.)
|
17
|
+
popup_error (bool): If True, show a popup for any error; otherwise, ignore or log silently.
|
18
|
+
default: Any default/fallback value to return if the getter raises an exception.
|
19
|
+
*prop_args, **prop_kwargs: Passed along to the underlying Qt Property constructor.
|
20
|
+
|
21
|
+
Usage:
|
22
|
+
@SafeProperty(int, default=-1)
|
23
|
+
def some_value(self) -> int:
|
24
|
+
# your getter logic
|
25
|
+
return ... # if an exception is raised, returns -1
|
26
|
+
|
27
|
+
@some_value.setter
|
28
|
+
def some_value(self, val: int):
|
29
|
+
# your setter logic
|
30
|
+
...
|
18
31
|
"""
|
19
32
|
|
20
|
-
def decorator(
|
33
|
+
def decorator(py_getter):
|
34
|
+
@functools.wraps(py_getter)
|
35
|
+
def safe_getter(self_):
|
36
|
+
try:
|
37
|
+
return py_getter(self_)
|
38
|
+
except Exception:
|
39
|
+
if popup_error:
|
40
|
+
ErrorPopupUtility().custom_exception_hook(*sys.exc_info(), popup_error=True)
|
41
|
+
# Return the user-defined default (which might be anything, including None).
|
42
|
+
else:
|
43
|
+
error_msg = traceback.format_exc()
|
44
|
+
bec_logger.error(error_msg)
|
45
|
+
return default
|
46
|
+
|
21
47
|
class PropertyWrapper:
|
22
48
|
def __init__(self, getter_func):
|
23
|
-
|
49
|
+
# We store only our safe_getter in the wrapper
|
50
|
+
self.getter_func = safe_getter
|
24
51
|
|
25
52
|
def setter(self, setter_func):
|
26
53
|
@functools.wraps(setter_func)
|
@@ -32,12 +59,20 @@ def SafeProperty(prop_type, *prop_args, popup_error: bool = False, **prop_kwargs
|
|
32
59
|
ErrorPopupUtility().custom_exception_hook(
|
33
60
|
*sys.exc_info(), popup_error=True
|
34
61
|
)
|
62
|
+
# Swallow the exception; no crash in Designer
|
35
63
|
else:
|
36
|
-
|
64
|
+
error_msg = traceback.format_exc()
|
65
|
+
bec_logger.error(error_msg)
|
66
|
+
return
|
37
67
|
|
68
|
+
# Return the full read/write Property
|
38
69
|
return Property(prop_type, self.getter_func, safe_setter, *prop_args, **prop_kwargs)
|
39
70
|
|
40
|
-
|
71
|
+
def __call__(self):
|
72
|
+
# If the user never chains a .setter(...) call, we produce a read-only property
|
73
|
+
return Property(prop_type, self.getter_func, None, *prop_args, **prop_kwargs)
|
74
|
+
|
75
|
+
return PropertyWrapper(py_getter)
|
41
76
|
|
42
77
|
return decorator
|
43
78
|
|
@@ -2,17 +2,20 @@
|
|
2
2
|
from __future__ import annotations
|
3
3
|
|
4
4
|
import os
|
5
|
+
import sys
|
5
6
|
from abc import ABC, abstractmethod
|
6
7
|
from collections import defaultdict
|
7
|
-
from typing import Literal
|
8
|
+
from typing import Dict, List, Literal, Tuple
|
8
9
|
|
9
10
|
from bec_qthemes._icon.material_icons import material_icon
|
10
11
|
from qtpy.QtCore import QSize, Qt
|
11
12
|
from qtpy.QtGui import QAction, QColor, QIcon
|
12
13
|
from qtpy.QtWidgets import (
|
14
|
+
QApplication,
|
13
15
|
QComboBox,
|
14
16
|
QHBoxLayout,
|
15
17
|
QLabel,
|
18
|
+
QMainWindow,
|
16
19
|
QMenu,
|
17
20
|
QSizePolicy,
|
18
21
|
QToolBar,
|
@@ -31,7 +34,7 @@ class ToolBarAction(ABC):
|
|
31
34
|
|
32
35
|
Args:
|
33
36
|
icon_path (str, optional): The name of the icon file from `assets/toolbar_icons`. Defaults to None.
|
34
|
-
tooltip (
|
37
|
+
tooltip (str, optional): The tooltip for the action. Defaults to None.
|
35
38
|
checkable (bool, optional): Whether the action is checkable. Defaults to False.
|
36
39
|
"""
|
37
40
|
|
@@ -81,15 +84,18 @@ class IconAction(ToolBarAction):
|
|
81
84
|
toolbar.addAction(self.action)
|
82
85
|
|
83
86
|
|
84
|
-
class MaterialIconAction:
|
87
|
+
class MaterialIconAction(ToolBarAction):
|
85
88
|
"""
|
86
89
|
Action with a Material icon for the toolbar.
|
87
90
|
|
88
91
|
Args:
|
89
|
-
|
90
|
-
tooltip (
|
92
|
+
icon_name (str, optional): The name of the Material icon. Defaults to None.
|
93
|
+
tooltip (str, optional): The tooltip for the action. Defaults to None.
|
91
94
|
checkable (bool, optional): Whether the action is checkable. Defaults to False.
|
92
95
|
filled (bool, optional): Whether the icon is filled. Defaults to False.
|
96
|
+
color (str | tuple | QColor | dict[Literal["dark", "light"], str] | None, optional): The color of the icon.
|
97
|
+
Defaults to None.
|
98
|
+
parent (QWidget or None, optional): Parent widget for the underlying QAction.
|
93
99
|
"""
|
94
100
|
|
95
101
|
def __init__(
|
@@ -99,30 +105,42 @@ class MaterialIconAction:
|
|
99
105
|
checkable: bool = False,
|
100
106
|
filled: bool = False,
|
101
107
|
color: str | tuple | QColor | dict[Literal["dark", "light"], str] | None = None,
|
108
|
+
parent=None,
|
102
109
|
):
|
110
|
+
super().__init__(icon_path=None, tooltip=tooltip, checkable=checkable)
|
103
111
|
self.icon_name = icon_name
|
104
|
-
self.tooltip = tooltip
|
105
|
-
self.checkable = checkable
|
106
|
-
self.action = None
|
107
112
|
self.filled = filled
|
108
113
|
self.color = color
|
109
|
-
|
110
|
-
|
111
|
-
icon = self.get_icon()
|
112
|
-
self.action = QAction(icon, self.tooltip, target)
|
113
|
-
self.action.setCheckable(self.checkable)
|
114
|
-
toolbar.addAction(self.action)
|
115
|
-
|
116
|
-
def get_icon(self):
|
117
|
-
|
118
|
-
icon = material_icon(
|
114
|
+
# Generate the icon
|
115
|
+
self.icon = material_icon(
|
119
116
|
self.icon_name,
|
120
117
|
size=(20, 20),
|
121
118
|
convert_to_pixmap=False,
|
122
119
|
filled=self.filled,
|
123
120
|
color=self.color,
|
124
121
|
)
|
125
|
-
|
122
|
+
# Immediately create an QAction with the given parent
|
123
|
+
self.action = QAction(self.icon, self.tooltip, parent=parent)
|
124
|
+
self.action.setCheckable(self.checkable)
|
125
|
+
|
126
|
+
def add_to_toolbar(self, toolbar: QToolBar, target: QWidget):
|
127
|
+
"""
|
128
|
+
Adds the action to the toolbar.
|
129
|
+
|
130
|
+
Args:
|
131
|
+
toolbar(QToolBar): The toolbar to add the action to.
|
132
|
+
target(QWidget): The target widget for the action.
|
133
|
+
"""
|
134
|
+
toolbar.addAction(self.action)
|
135
|
+
|
136
|
+
def get_icon(self):
|
137
|
+
"""
|
138
|
+
Returns the icon for the action.
|
139
|
+
|
140
|
+
Returns:
|
141
|
+
QIcon: The icon for the action.
|
142
|
+
"""
|
143
|
+
return self.icon
|
126
144
|
|
127
145
|
|
128
146
|
class DeviceSelectionAction(ToolBarAction):
|
@@ -132,7 +150,6 @@ class DeviceSelectionAction(ToolBarAction):
|
|
132
150
|
Args:
|
133
151
|
label (str): The label for the combobox.
|
134
152
|
device_combobox (DeviceComboBox): The combobox for selecting the device.
|
135
|
-
|
136
153
|
"""
|
137
154
|
|
138
155
|
def __init__(self, label: str, device_combobox):
|
@@ -160,7 +177,6 @@ class WidgetAction(ToolBarAction):
|
|
160
177
|
Args:
|
161
178
|
label (str|None): The label for the widget.
|
162
179
|
widget (QWidget): The widget to be added to the toolbar.
|
163
|
-
|
164
180
|
"""
|
165
181
|
|
166
182
|
def __init__(self, label: str | None = None, widget: QWidget = None, parent=None):
|
@@ -219,7 +235,6 @@ class ExpandableMenuAction(ToolBarAction):
|
|
219
235
|
label (str): The label for the menu.
|
220
236
|
actions (dict): A dictionary of actions to populate the menu.
|
221
237
|
icon_path (str, optional): The path to the icon file. Defaults to None.
|
222
|
-
|
223
238
|
"""
|
224
239
|
|
225
240
|
def __init__(self, label: str, actions: dict, icon_path: str = None):
|
@@ -259,6 +274,55 @@ class ExpandableMenuAction(ToolBarAction):
|
|
259
274
|
toolbar.addWidget(button)
|
260
275
|
|
261
276
|
|
277
|
+
class ToolbarBundle:
|
278
|
+
"""
|
279
|
+
Represents a bundle of toolbar actions, keyed by action_id.
|
280
|
+
Allows direct dictionary-like access: self.actions["some_id"] -> ToolBarAction object.
|
281
|
+
"""
|
282
|
+
|
283
|
+
def __init__(self, bundle_id: str = None, actions=None):
|
284
|
+
"""
|
285
|
+
Args:
|
286
|
+
bundle_id (str): Unique identifier for the bundle.
|
287
|
+
actions: Either None or a list of (action_id, ToolBarAction) tuples.
|
288
|
+
"""
|
289
|
+
self.bundle_id = bundle_id
|
290
|
+
self._actions: dict[str, ToolBarAction] = {}
|
291
|
+
|
292
|
+
# If you passed in a list of tuples, load them into the dictionary
|
293
|
+
if actions is not None:
|
294
|
+
for action_id, action in actions:
|
295
|
+
self._actions[action_id] = action
|
296
|
+
|
297
|
+
def add_action(self, action_id: str, action: ToolBarAction):
|
298
|
+
"""
|
299
|
+
Adds or replaces an action in the bundle.
|
300
|
+
|
301
|
+
Args:
|
302
|
+
action_id (str): Unique identifier for the action.
|
303
|
+
action (ToolBarAction): The action to add.
|
304
|
+
"""
|
305
|
+
self._actions[action_id] = action
|
306
|
+
|
307
|
+
def remove_action(self, action_id: str):
|
308
|
+
"""
|
309
|
+
Removes an action from the bundle by ID.
|
310
|
+
Ignores if not present.
|
311
|
+
|
312
|
+
Args:
|
313
|
+
action_id (str): Unique identifier for the action to remove.
|
314
|
+
"""
|
315
|
+
self._actions.pop(action_id, None)
|
316
|
+
|
317
|
+
@property
|
318
|
+
def actions(self) -> dict[str, ToolBarAction]:
|
319
|
+
"""
|
320
|
+
Return the internal dictionary of actions so that you can do
|
321
|
+
bundle.actions["drag_mode"] -> ToolBarAction instance.
|
322
|
+
"""
|
323
|
+
return self._actions
|
324
|
+
|
325
|
+
|
262
326
|
class ModularToolBar(QToolBar):
|
263
327
|
"""Modular toolbar with optional automatic initialization.
|
264
328
|
|
@@ -287,10 +351,14 @@ class ModularToolBar(QToolBar):
|
|
287
351
|
# Set the initial orientation
|
288
352
|
self.set_orientation(orientation)
|
289
353
|
|
354
|
+
# Initialize bundles
|
355
|
+
self.bundles = {}
|
356
|
+
self.toolbar_items = []
|
357
|
+
|
290
358
|
if actions is not None and target_widget is not None:
|
291
359
|
self.populate_toolbar(actions, target_widget)
|
292
360
|
|
293
|
-
def populate_toolbar(self, actions: dict, target_widget):
|
361
|
+
def populate_toolbar(self, actions: dict, target_widget: QWidget):
|
294
362
|
"""Populates the toolbar with a set of actions.
|
295
363
|
|
296
364
|
Args:
|
@@ -298,9 +366,12 @@ class ModularToolBar(QToolBar):
|
|
298
366
|
target_widget (QWidget): The widget that the actions will target.
|
299
367
|
"""
|
300
368
|
self.clear()
|
369
|
+
self.toolbar_items.clear() # Reset the order tracking
|
301
370
|
for action_id, action in actions.items():
|
302
371
|
action.add_to_toolbar(self, target_widget)
|
303
372
|
self.widgets[action_id] = action
|
373
|
+
self.toolbar_items.append(("action", action_id))
|
374
|
+
self.update_separators() # Ensure separators are updated after populating
|
304
375
|
|
305
376
|
def set_background_color(self, color: str = "rgba(0, 0, 0, 0)"):
|
306
377
|
"""
|
@@ -345,7 +416,7 @@ class ModularToolBar(QToolBar):
|
|
345
416
|
|
346
417
|
def add_action(self, action_id: str, action: ToolBarAction, target_widget: QWidget):
|
347
418
|
"""
|
348
|
-
Adds a new action to the toolbar dynamically.
|
419
|
+
Adds a new standalone action to the toolbar dynamically.
|
349
420
|
|
350
421
|
Args:
|
351
422
|
action_id (str): Unique identifier for the action.
|
@@ -356,6 +427,8 @@ class ModularToolBar(QToolBar):
|
|
356
427
|
raise ValueError(f"Action with ID '{action_id}' already exists.")
|
357
428
|
action.add_to_toolbar(self, target_widget)
|
358
429
|
self.widgets[action_id] = action
|
430
|
+
self.toolbar_items.append(("action", action_id))
|
431
|
+
self.update_separators() # Update separators after adding the action
|
359
432
|
|
360
433
|
def hide_action(self, action_id: str):
|
361
434
|
"""
|
@@ -369,6 +442,7 @@ class ModularToolBar(QToolBar):
|
|
369
442
|
action = self.widgets[action_id]
|
370
443
|
if hasattr(action, "action") and isinstance(action.action, QAction):
|
371
444
|
action.action.setVisible(False)
|
445
|
+
self.update_separators() # Update separators after hiding the action
|
372
446
|
|
373
447
|
def show_action(self, action_id: str):
|
374
448
|
"""
|
@@ -382,3 +456,217 @@ class ModularToolBar(QToolBar):
|
|
382
456
|
action = self.widgets[action_id]
|
383
457
|
if hasattr(action, "action") and isinstance(action.action, QAction):
|
384
458
|
action.action.setVisible(True)
|
459
|
+
self.update_separators() # Update separators after showing the action
|
460
|
+
|
461
|
+
def add_bundle(self, bundle: ToolbarBundle, target_widget: QWidget):
|
462
|
+
"""
|
463
|
+
Adds a bundle of actions to the toolbar, separated by a separator.
|
464
|
+
|
465
|
+
Args:
|
466
|
+
bundle (ToolbarBundle): The bundle to add.
|
467
|
+
target_widget (QWidget): The target widget for the actions.
|
468
|
+
"""
|
469
|
+
if bundle.bundle_id in self.bundles:
|
470
|
+
raise ValueError(f"ToolbarBundle with ID '{bundle.bundle_id}' already exists.")
|
471
|
+
|
472
|
+
# Add a separator before the bundle (but not to first one)
|
473
|
+
if self.toolbar_items:
|
474
|
+
sep = SeparatorAction()
|
475
|
+
sep.add_to_toolbar(self, target_widget)
|
476
|
+
self.toolbar_items.append(("separator", None))
|
477
|
+
|
478
|
+
# Add each action in the bundle
|
479
|
+
for action_id, action_obj in bundle.actions.items():
|
480
|
+
action_obj.add_to_toolbar(self, target_widget)
|
481
|
+
self.widgets[action_id] = action_obj
|
482
|
+
|
483
|
+
# Register the bundle
|
484
|
+
self.bundles[bundle.bundle_id] = list(bundle.actions.keys())
|
485
|
+
self.toolbar_items.append(("bundle", bundle.bundle_id))
|
486
|
+
|
487
|
+
self.update_separators() # Update separators after adding the bundle
|
488
|
+
|
489
|
+
def contextMenuEvent(self, event):
|
490
|
+
"""
|
491
|
+
Overrides the context menu event to show a list of toolbar actions with checkboxes and icons, including separators.
|
492
|
+
|
493
|
+
Args:
|
494
|
+
event(QContextMenuEvent): The context menu event.
|
495
|
+
"""
|
496
|
+
menu = QMenu(self)
|
497
|
+
|
498
|
+
# Iterate through the toolbar items in order
|
499
|
+
for item_type, identifier in self.toolbar_items:
|
500
|
+
if item_type == "separator":
|
501
|
+
menu.addSeparator()
|
502
|
+
elif item_type == "bundle":
|
503
|
+
self.handle_bundle_context_menu(menu, identifier)
|
504
|
+
elif item_type == "action":
|
505
|
+
self.handle_action_context_menu(menu, identifier)
|
506
|
+
|
507
|
+
# Connect the triggered signal after all actions are added
|
508
|
+
menu.triggered.connect(self.handle_menu_triggered)
|
509
|
+
menu.exec_(event.globalPos())
|
510
|
+
|
511
|
+
def handle_bundle_context_menu(self, menu: QMenu, bundle_id: str):
|
512
|
+
"""
|
513
|
+
Adds a set of bundle actions to the context menu.
|
514
|
+
|
515
|
+
Args:
|
516
|
+
menu (QMenu): The context menu to which the actions are added.
|
517
|
+
bundle_id (str): The identifier for the bundle.
|
518
|
+
"""
|
519
|
+
action_ids = self.bundles.get(bundle_id, [])
|
520
|
+
for act_id in action_ids:
|
521
|
+
toolbar_action = self.widgets.get(act_id)
|
522
|
+
if not isinstance(toolbar_action, ToolBarAction) or not hasattr(
|
523
|
+
toolbar_action, "action"
|
524
|
+
):
|
525
|
+
continue
|
526
|
+
qaction = toolbar_action.action
|
527
|
+
if not isinstance(qaction, QAction):
|
528
|
+
continue
|
529
|
+
display_name = qaction.text() or toolbar_action.tooltip or act_id
|
530
|
+
menu_action = QAction(display_name, self)
|
531
|
+
menu_action.setCheckable(True)
|
532
|
+
menu_action.setChecked(qaction.isVisible())
|
533
|
+
menu_action.setData(act_id) # Store the action_id
|
534
|
+
|
535
|
+
# Set the icon if available
|
536
|
+
if qaction.icon() and not qaction.icon().isNull():
|
537
|
+
menu_action.setIcon(qaction.icon())
|
538
|
+
|
539
|
+
menu.addAction(menu_action)
|
540
|
+
|
541
|
+
def handle_action_context_menu(self, menu: QMenu, action_id: str):
|
542
|
+
"""
|
543
|
+
Adds a single toolbar action to the context menu.
|
544
|
+
|
545
|
+
Args:
|
546
|
+
menu (QMenu): The context menu to which the action is added.
|
547
|
+
action_id (str): Unique identifier for the action.
|
548
|
+
"""
|
549
|
+
toolbar_action = self.widgets.get(action_id)
|
550
|
+
if not isinstance(toolbar_action, ToolBarAction) or not hasattr(toolbar_action, "action"):
|
551
|
+
return
|
552
|
+
qaction = toolbar_action.action
|
553
|
+
if not isinstance(qaction, QAction):
|
554
|
+
return
|
555
|
+
display_name = qaction.text() or toolbar_action.tooltip or action_id
|
556
|
+
menu_action = QAction(display_name, self)
|
557
|
+
menu_action.setCheckable(True)
|
558
|
+
menu_action.setChecked(qaction.isVisible())
|
559
|
+
menu_action.setData(action_id) # Store the action_id
|
560
|
+
|
561
|
+
# Set the icon if available
|
562
|
+
if qaction.icon() and not qaction.icon().isNull():
|
563
|
+
menu_action.setIcon(qaction.icon())
|
564
|
+
|
565
|
+
menu.addAction(menu_action)
|
566
|
+
|
567
|
+
def handle_menu_triggered(self, action):
|
568
|
+
"""Handles the toggling of toolbar actions from the context menu."""
|
569
|
+
action_id = action.data()
|
570
|
+
if action_id:
|
571
|
+
self.toggle_action_visibility(action_id, action.isChecked())
|
572
|
+
|
573
|
+
def toggle_action_visibility(self, action_id: str, visible: bool):
|
574
|
+
"""
|
575
|
+
Toggles the visibility of a specific action on the toolbar.
|
576
|
+
|
577
|
+
Args:
|
578
|
+
action_id(str): Unique identifier for the action to toggle.
|
579
|
+
visible(bool): Whether the action should be visible.
|
580
|
+
"""
|
581
|
+
if action_id not in self.widgets:
|
582
|
+
return
|
583
|
+
|
584
|
+
tool_action = self.widgets[action_id]
|
585
|
+
if hasattr(tool_action, "action") and isinstance(tool_action.action, QAction):
|
586
|
+
tool_action.action.setVisible(visible)
|
587
|
+
self.update_separators()
|
588
|
+
|
589
|
+
def update_separators(self):
|
590
|
+
"""
|
591
|
+
Hide separators that are adjacent to another separator or have no actions next to them.
|
592
|
+
"""
|
593
|
+
toolbar_actions = self.actions()
|
594
|
+
|
595
|
+
for i, action in enumerate(toolbar_actions):
|
596
|
+
if not action.isSeparator():
|
597
|
+
continue
|
598
|
+
# Find the previous visible action
|
599
|
+
prev_visible = None
|
600
|
+
for j in range(i - 1, -1, -1):
|
601
|
+
if toolbar_actions[j].isVisible():
|
602
|
+
prev_visible = toolbar_actions[j]
|
603
|
+
break
|
604
|
+
|
605
|
+
# Find the next visible action
|
606
|
+
next_visible = None
|
607
|
+
for j in range(i + 1, len(toolbar_actions)):
|
608
|
+
if toolbar_actions[j].isVisible():
|
609
|
+
next_visible = toolbar_actions[j]
|
610
|
+
break
|
611
|
+
|
612
|
+
# Determine if the separator should be hidden
|
613
|
+
# Hide if both previous and next visible actions are separators or non-existent
|
614
|
+
if (prev_visible is None or prev_visible.isSeparator()) and (
|
615
|
+
next_visible is None or next_visible.isSeparator()
|
616
|
+
):
|
617
|
+
action.setVisible(False)
|
618
|
+
else:
|
619
|
+
action.setVisible(True)
|
620
|
+
|
621
|
+
|
622
|
+
class MainWindow(QMainWindow): # pragma: no cover
|
623
|
+
def __init__(self):
|
624
|
+
super().__init__()
|
625
|
+
self.setWindowTitle("Toolbar / ToolbarBundle Demo")
|
626
|
+
|
627
|
+
self.central_widget = QWidget()
|
628
|
+
self.setCentralWidget(self.central_widget)
|
629
|
+
|
630
|
+
# Create a modular toolbar
|
631
|
+
self.toolbar = ModularToolBar(parent=self, target_widget=self)
|
632
|
+
self.addToolBar(self.toolbar)
|
633
|
+
|
634
|
+
# Example: Add a single bundle
|
635
|
+
home_action = MaterialIconAction(
|
636
|
+
icon_name="home", tooltip="Home", checkable=True, parent=self
|
637
|
+
)
|
638
|
+
settings_action = MaterialIconAction(
|
639
|
+
icon_name="settings", tooltip="Settings", checkable=True, parent=self
|
640
|
+
)
|
641
|
+
profile_action = MaterialIconAction(
|
642
|
+
icon_name="person", tooltip="Profile", checkable=True, parent=self
|
643
|
+
)
|
644
|
+
main_actions_bundle = ToolbarBundle(
|
645
|
+
bundle_id="main_actions",
|
646
|
+
actions=[
|
647
|
+
("home_action", home_action),
|
648
|
+
("settings_action", settings_action),
|
649
|
+
("profile_action", profile_action),
|
650
|
+
],
|
651
|
+
)
|
652
|
+
self.toolbar.add_bundle(main_actions_bundle, target_widget=self)
|
653
|
+
|
654
|
+
# Another bundle
|
655
|
+
search_action = MaterialIconAction(
|
656
|
+
icon_name="search", tooltip="Search", checkable=True, parent=self
|
657
|
+
)
|
658
|
+
help_action = MaterialIconAction(
|
659
|
+
icon_name="help", tooltip="Help", checkable=True, parent=self
|
660
|
+
)
|
661
|
+
second_bundle = ToolbarBundle(
|
662
|
+
bundle_id="secondary_actions",
|
663
|
+
actions=[("search_action", search_action), ("help_action", help_action)],
|
664
|
+
)
|
665
|
+
self.toolbar.add_bundle(second_bundle, target_widget=self)
|
666
|
+
|
667
|
+
|
668
|
+
if __name__ == "__main__": # pragma: no cover
|
669
|
+
app = QApplication(sys.argv)
|
670
|
+
main_window = MainWindow()
|
671
|
+
main_window.show()
|
672
|
+
sys.exit(app.exec_())
|
File without changes
|
File without changes
|
File without changes
|
{bec_widgets-1.15.0 → bec_widgets-1.16.0}/.gitlab/issue_templates/documentation_update_template.md
RENAMED
File without changes
|
{bec_widgets-1.15.0 → bec_widgets-1.16.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
|