bec-widgets 2.12.2__tar.gz → 2.12.3__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-2.12.2 → bec_widgets-2.12.3}/CHANGELOG.md +20 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/PKG-INFO +3 -3
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/cli/client.py +2 -2
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/crosshair.py +1 -1
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_input/device_combobox/device_combobox.py +19 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/image/image.py +100 -44
- bec_widgets-2.12.3/bec_widgets/widgets/plots/image/toolbar_bundles/image_selection.py +107 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/pyproject.toml +6 -6
- bec_widgets-2.12.2/bec_widgets/widgets/plots/image/toolbar_bundles/image_selection.py +0 -60
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/.git_hooks/pre-commit +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/.github/ISSUE_TEMPLATE/documentation_update.md +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/.github/actions/bw_install/action.yml +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/.github/pull_request_template.md +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/.github/scripts/pr_issue_sync/pr_issue_sync.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/.github/scripts/pr_issue_sync/requirements.txt +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/.github/workflows/check_pr.yml +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/.github/workflows/ci.yml +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/.github/workflows/end2end-conda.yml +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/.github/workflows/formatter.yml +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/.github/workflows/generate-cli-check.yml +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/.github/workflows/pytest-matrix.yml +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/.github/workflows/pytest.yml +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/.github/workflows/semantic_release.yml +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/.github/workflows/sync-issues-pr.yml +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/.gitignore +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/.gitlab-ci.yml +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/.pylintrc +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/.readthedocs.yaml +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/LICENSE +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/README.md +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/applications/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/applications/bw_launch.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/applications/launch_window.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/assets/app_icons/BEC-General-App.png +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/assets/app_icons/alignment_1d.png +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/assets/app_icons/auto_update.png +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/assets/app_icons/bec_widgets_icon.png +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/assets/app_icons/ui_loader_tile.png +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/assets/app_icons/widget_launch_tile.png +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/cli/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/cli/client_utils.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/cli/generate_cli.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/cli/rpc/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/cli/rpc/rpc_base.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/cli/rpc/rpc_register.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/cli/rpc/rpc_widget_handler.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/cli/server.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/examples/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/examples/general_app/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/examples/general_app/general_app.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/examples/general_app/general_app.ui +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/examples/general_app/web_links.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/examples/jupyter_console/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/examples/jupyter_console/jupyter_console_window.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/examples/plugin_example_pyside/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/examples/plugin_example_pyside/main.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/examples/plugin_example_pyside/registertictactoe.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/examples/plugin_example_pyside/taskmenuextension.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/examples/plugin_example_pyside/tictactoe.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/examples/plugin_example_pyside/tictactoeplugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/examples/plugin_example_pyside/tictactoetaskmenu.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/tests/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/tests/utils.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/bec_connector.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/bec_designer.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/bec_dispatcher.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/bec_plugin_helper.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/bec_signal_proxy.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/bec_table.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/bec_widget.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/clickable_label.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/collapsible_panel_manager.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/colors.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/compact_popup.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/container_utils.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/entry_validator.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/error_popups.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/expandable_frame.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/filter_io.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/forms_from_types/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/forms_from_types/forms.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/forms_from_types/items.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/forms_from_types/styles.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/fps_counter.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/generate_designer_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/layout_manager.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/linear_region_selector.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/name_utils.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/ophyd_kind_util.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/palette_viewer.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/plot_indicator_items.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/plugin_templates/plugin.template +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/plugin_templates/register.template +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/plugin_utils.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/redis_message_waiter.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/reference_utils.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/round_frame.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/rpc_decorator.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/rpc_server.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/serialization.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/settings_dialog.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/side_panel.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/thread_checker.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/toolbar.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/ui_loader.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/validator_delegate.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/widget_io.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/widget_state_manager.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/utils/yaml_dialog.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/containers/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/containers/auto_update/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/containers/auto_update/auto_updates.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/containers/dock/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/containers/dock/dock.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/containers/dock/dock_area.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/containers/dock/dock_area.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/containers/dock/dock_area_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/containers/dock/register_dock_area.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/containers/layout_manager/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/containers/layout_manager/layout_manager.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/containers/main_window/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/containers/main_window/addons/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/containers/main_window/addons/web_links.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/containers/main_window/main_window.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/buttons/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/buttons/button_abort/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/buttons/button_abort/abort_button.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/buttons/button_abort/abort_button_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/buttons/button_abort/button_abort.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/buttons/button_abort/register_abort_button.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/buttons/button_reset/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/buttons/button_reset/button_reset.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/buttons/button_reset/register_reset_button.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/buttons/button_reset/reset_button.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/buttons/button_reset/reset_button_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/buttons/button_resume/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/buttons/button_resume/button_resume.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/buttons/button_resume/register_resume_button.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/buttons/button_resume/resume_button.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/buttons/button_resume/resume_button_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/buttons/stop_button/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/buttons/stop_button/register_stop_button.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/buttons/stop_button/stop_button.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/buttons/stop_button/stop_button.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/buttons/stop_button/stop_button_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_control/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_control/position_indicator/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_control/position_indicator/position_indicator.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_control/position_indicator/position_indicator.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_control/position_indicator/position_indicator_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_control/position_indicator/register_position_indicator.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_control/positioner_box/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_control/positioner_box/_base/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_control/positioner_box/_base/positioner_box_base.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.ui +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/register_positioner_box.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box2_d.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box2_d_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box_2d.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box_2d.ui +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/register_positioner_box2_d.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line.ui +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/register_positioner_control_line.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_control/positioner_group/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_control/positioner_group/positioner_group.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_control/positioner_group/positioner_group.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_control/positioner_group/positioner_group_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_control/positioner_group/register_positioner_group.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_input/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_input/base_classes/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_input/base_classes/device_input_base.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_input/base_classes/device_signal_input_base.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_input/device_combobox/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_input/device_combobox/device_combo_box.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_input/device_combobox/device_combo_box_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_input/device_combobox/register_device_combo_box.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_input/device_line_edit/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_input/device_line_edit/device_line_edit.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_input/device_line_edit/device_line_edit.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_input/device_line_edit/device_line_edit_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_input/device_line_edit/register_device_line_edit.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_input/signal_combobox/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_input/signal_combobox/register_signal_combo_box.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_input/signal_combobox/signal_combo_box.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_input/signal_combobox/signal_combo_box_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_input/signal_combobox/signal_combobox.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_input/signal_line_edit/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_input/signal_line_edit/register_signal_line_edit.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_input/signal_line_edit/signal_line_edit.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_input/signal_line_edit/signal_line_edit.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/device_input/signal_line_edit/signal_line_edit_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/scan_control/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/scan_control/register_scan_control.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/scan_control/scan_control.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/scan_control/scan_control.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/scan_control/scan_control_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/control/scan_control/scan_group_box.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/dap/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/dap/dap_combo_box/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/dap/dap_combo_box/register_dap_combo_box.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/dap/lmfit_dialog/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/dap/lmfit_dialog/lm_fit_dialog.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/dap/lmfit_dialog/lm_fit_dialog_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog_compact.ui +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog_vertical.ui +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/dap/lmfit_dialog/register_lm_fit_dialog.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/editors/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/editors/dict_backed_table.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/editors/jupyter_console/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/editors/jupyter_console/jupyter_console.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/editors/scan_metadata/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/editors/scan_metadata/_util.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/editors/scan_metadata/register_scan_metadata.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/editors/scan_metadata/scan_metadata.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/editors/scan_metadata/scan_metadata.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/editors/scan_metadata/scan_metadata_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/editors/text_box/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/editors/text_box/register_text_box.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/editors/text_box/text_box.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/editors/text_box/text_box.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/editors/text_box/text_box_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/editors/vscode/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/editors/vscode/register_vs_code_editor.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/editors/vscode/vs_code_editor.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/editors/vscode/vs_code_editor_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/editors/vscode/vscode.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/editors/web_console/register_web_console.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/editors/web_console/web_console.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/editors/web_console/web_console.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/editors/web_console/web_console_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/editors/website/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/editors/website/register_website_widget.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/editors/website/website.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/editors/website/website_widget.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/editors/website/website_widget_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/games/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/games/minesweeper.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/games/minesweeper.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/games/minesweeper_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/games/register_minesweeper.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/image/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/image/image.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/image/image_base.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/image/image_item.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/image/image_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/image/image_processor.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/image/image_roi_plot.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/image/register_image.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/image/setting_widgets/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/image/setting_widgets/image_roi_tree.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/image/toolbar_bundles/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/image/toolbar_bundles/processing.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/motor_map/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/motor_map/motor_map.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/motor_map/motor_map.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/motor_map/motor_map_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/motor_map/register_motor_map.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/motor_map/settings/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/motor_map/settings/motor_map_settings.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/motor_map/settings/motor_map_settings.ui +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/motor_map/toolbar_bundles/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/motor_map/toolbar_bundles/motor_selection.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/multi_waveform/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/multi_waveform/multi_waveform.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/multi_waveform/multi_waveform.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/multi_waveform/multi_waveform_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/multi_waveform/register_multi_waveform.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/multi_waveform/settings/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/multi_waveform/settings/control_panel.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/multi_waveform/settings/multi_waveform_controls.ui +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/multi_waveform/toolbar_bundles/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/multi_waveform/toolbar_bundles/monitor_selection.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/plot_base.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/roi/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/roi/image_roi.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/scatter_waveform/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/scatter_waveform/register_scatter_waveform.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/scatter_waveform/scatter_curve.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/scatter_waveform/scatter_waveform.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/scatter_waveform/scatter_waveform.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/scatter_waveform/scatter_waveform_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/scatter_waveform/settings/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/scatter_waveform/settings/scatter_curve_setting.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/scatter_waveform/settings/scatter_curve_settings_horizontal.ui +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/scatter_waveform/settings/scatter_curve_settings_vertical.ui +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/setting_menus/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/setting_menus/axis_settings.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/setting_menus/axis_settings_horizontal.ui +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/setting_menus/axis_settings_vertical.ui +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/toolbar_bundles/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/toolbar_bundles/mouse_interactions.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/toolbar_bundles/plot_export.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/toolbar_bundles/roi_bundle.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/toolbar_bundles/save_state.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/waveform/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/waveform/curve.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/waveform/register_waveform.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/waveform/settings/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/waveform/settings/curve_settings/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/waveform/settings/curve_settings/curve_setting.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/waveform/settings/curve_settings/curve_tree.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/waveform/utils/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/waveform/utils/roi_manager.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/waveform/waveform.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/waveform/waveform.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/plots/waveform/waveform_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/progress/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/progress/bec_progressbar/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/progress/bec_progressbar/bec_progress_bar.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/progress/bec_progressbar/bec_progress_bar_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/progress/bec_progressbar/bec_progressbar.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/progress/bec_progressbar/register_bec_progress_bar.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/progress/ring_progress_bar/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/progress/ring_progress_bar/register_ring_progress_bar.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/progress/ring_progress_bar/ring.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/services/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/services/bec_queue/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/services/bec_queue/bec_queue.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/services/bec_queue/bec_queue.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/services/bec_queue/bec_queue_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/services/bec_queue/register_bec_queue.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/services/bec_status_box/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/services/bec_status_box/bec_status_box.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/services/bec_status_box/bec_status_box.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/services/bec_status_box/bec_status_box_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/services/bec_status_box/register_bec_status_box.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/services/bec_status_box/status_item.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/services/device_browser/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/services/device_browser/device_browser.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/services/device_browser/device_browser.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/services/device_browser/device_browser.ui +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/services/device_browser/device_browser_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/services/device_browser/device_item/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/services/device_browser/device_item/device_item.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/services/device_browser/register_device_browser.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/services/device_browser/util.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/logpanel/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/logpanel/_util.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/logpanel/log_panel.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/logpanel/log_panel_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/logpanel/logpanel.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/logpanel/register_log_panel.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/signal_label/register_signal_label.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/signal_label/signal_label.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/signal_label/signal_label.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/signal_label/signal_label_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/spinbox/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/spinbox/bec_spin_box.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/spinbox/bec_spin_box_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/spinbox/decimal_spinbox.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/spinbox/register_bec_spin_box.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/spinner/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/spinner/register_spinner_widget.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/spinner/spinner.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/spinner/spinner_widget.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/spinner/spinner_widget_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/toggle/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/toggle/register_toggle_switch.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/toggle/toggle.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/toggle/toggle_switch.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/toggle/toggle_switch_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/visual/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/visual/color_button/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/visual/color_button/color_button.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/visual/color_button/color_button.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/visual/color_button/color_button_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/visual/color_button/register_color_button.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/visual/color_button_native/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/visual/color_button_native/color_button_native.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/visual/color_button_native/color_button_native.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/visual/color_button_native/color_button_native_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/visual/color_button_native/register_color_button_native.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/visual/colormap_selector/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/visual/colormap_selector/colormap_selector.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/visual/colormap_selector/colormap_selector.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/visual/colormap_selector/colormap_selector_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/visual/colormap_selector/register_colormap_selector.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/visual/colormap_widget/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/visual/colormap_widget/bec_color_map_widget.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/visual/colormap_widget/bec_color_map_widget_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/visual/colormap_widget/colormap_widget.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/visual/colormap_widget/register_bec_color_map_widget.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/visual/dark_mode_button/__init__.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button.pyproject +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button_plugin.py +0 -0
- {bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/widgets/utility/visual/dark_mode_button/register_dark_mode_button.py +0 -0
@@ -1,6 +1,26 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
3
|
|
4
|
+
## v2.12.3 (2025-06-05)
|
5
|
+
|
6
|
+
### Bug Fixes
|
7
|
+
|
8
|
+
- **crosshair**: Use objectName instead of config for retrieving the monitor name
|
9
|
+
([`edfac87`](https://github.com/bec-project/bec_widgets/commit/edfac87868605b4b755f7732b2841673de53bc3f))
|
10
|
+
|
11
|
+
- **device_combobox**: Tuple entries of preview signals are checked in DeviceComboBoxes just for the
|
12
|
+
relevant device
|
13
|
+
([`12f5233`](https://github.com/bec-project/bec_widgets/commit/12f523374586d55499f80baf56a50b6ef486cd43))
|
14
|
+
|
15
|
+
- **image**: Preview signals can be used in Image widget; update logic adjusted; closes #683
|
16
|
+
([`2711164`](https://github.com/bec-project/bec_widgets/commit/271116453d1ef5316b19457d04613b6ddc939cdb))
|
17
|
+
|
18
|
+
### Build System
|
19
|
+
|
20
|
+
- Update min dependency of bec to 3.38
|
21
|
+
([`3740ac8`](https://github.com/bec-project/bec_widgets/commit/3740ac8e325a489d59faca648896ffcea29e1a02))
|
22
|
+
|
23
|
+
|
4
24
|
## v2.12.2 (2025-06-05)
|
5
25
|
|
6
26
|
### Bug Fixes
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: bec_widgets
|
3
|
-
Version: 2.12.
|
3
|
+
Version: 2.12.3
|
4
4
|
Summary: BEC Widgets
|
5
5
|
Project-URL: Bug Tracker, https://gitlab.psi.ch/bec/bec_widgets/issues
|
6
6
|
Project-URL: Homepage, https://gitlab.psi.ch/bec/bec_widgets
|
@@ -9,8 +9,8 @@ Classifier: Development Status :: 3 - Alpha
|
|
9
9
|
Classifier: Programming Language :: Python :: 3
|
10
10
|
Classifier: Topic :: Scientific/Engineering
|
11
11
|
Requires-Python: >=3.10
|
12
|
-
Requires-Dist: bec-ipython-client<=4.0,>=
|
13
|
-
Requires-Dist: bec-lib<=4.0,>=3.
|
12
|
+
Requires-Dist: bec-ipython-client<=4.0,>=3.38
|
13
|
+
Requires-Dist: bec-lib<=4.0,>=3.38
|
14
14
|
Requires-Dist: bec-qthemes>=0.7,~=0.7
|
15
15
|
Requires-Dist: black~=25.0
|
16
16
|
Requires-Dist: isort>=5.13.2,~=5.13
|
@@ -1459,12 +1459,12 @@ class Image(RPCBase):
|
|
1459
1459
|
@rpc_call
|
1460
1460
|
def image(
|
1461
1461
|
self,
|
1462
|
-
monitor: "str | None" = None,
|
1462
|
+
monitor: "str | tuple | None" = None,
|
1463
1463
|
monitor_type: "Literal['auto', '1d', '2d']" = "auto",
|
1464
1464
|
color_map: "str | None" = None,
|
1465
1465
|
color_bar: "Literal['simple', 'full'] | None" = None,
|
1466
1466
|
vrange: "tuple[int, int] | None" = None,
|
1467
|
-
) -> "ImageItem":
|
1467
|
+
) -> "ImageItem | None":
|
1468
1468
|
"""
|
1469
1469
|
Set the image source and update the image.
|
1470
1470
|
|
@@ -458,7 +458,7 @@ class Crosshair(QObject):
|
|
458
458
|
)
|
459
459
|
self.coordinatesClicked1D.emit(coordinate_to_emit)
|
460
460
|
elif isinstance(item, pg.ImageItem):
|
461
|
-
name = item.
|
461
|
+
name = item.objectName() or str(id(item))
|
462
462
|
x, y = x_snap_values[name], y_snap_values[name]
|
463
463
|
if x is None or y is None:
|
464
464
|
continue
|
@@ -149,6 +149,25 @@ class DeviceComboBox(DeviceInputBase, QComboBox):
|
|
149
149
|
self._is_valid_input = False
|
150
150
|
self.update()
|
151
151
|
|
152
|
+
def validate_device(self, device: str) -> bool: # type: ignore[override]
|
153
|
+
"""
|
154
|
+
Extend validation so that preview‑signal pseudo‑devices (labels like
|
155
|
+
``"eiger_preview"``) are accepted as valid choices.
|
156
|
+
|
157
|
+
The validation run only on device not on the preview‑signal.
|
158
|
+
|
159
|
+
Args:
|
160
|
+
device: The text currently entered/selected.
|
161
|
+
|
162
|
+
Returns:
|
163
|
+
True if the device is a genuine BEC device *or* one of the
|
164
|
+
whitelisted preview‑signal entries.
|
165
|
+
"""
|
166
|
+
idx = self.findText(device)
|
167
|
+
if idx >= 0 and isinstance(self.itemData(idx), tuple):
|
168
|
+
device = self.itemData(idx)[0] # type: ignore[assignment]
|
169
|
+
return super().validate_device(device)
|
170
|
+
|
152
171
|
|
153
172
|
if __name__ == "__main__": # pragma: no cover
|
154
173
|
# pylint: disable=import-outside-toplevel
|
@@ -35,7 +35,7 @@ class ImageConfig(ConnectionConfig):
|
|
35
35
|
|
36
36
|
|
37
37
|
class ImageLayerConfig(BaseModel):
|
38
|
-
monitor: str | None = Field(None, description="The name of the monitor.")
|
38
|
+
monitor: str | tuple | None = Field(None, description="The name of the monitor.")
|
39
39
|
monitor_type: Literal["1d", "2d", "auto"] = Field("auto", description="The type of monitor.")
|
40
40
|
source: Literal["device_monitor_1d", "device_monitor_2d", "auto"] = Field(
|
41
41
|
"auto", description="The source of the image data."
|
@@ -179,12 +179,12 @@ class Image(ImageBase):
|
|
179
179
|
@SafeSlot(popup_error=True)
|
180
180
|
def image(
|
181
181
|
self,
|
182
|
-
monitor: str | None = None,
|
182
|
+
monitor: str | tuple | None = None,
|
183
183
|
monitor_type: Literal["auto", "1d", "2d"] = "auto",
|
184
184
|
color_map: str | None = None,
|
185
185
|
color_bar: Literal["simple", "full"] | None = None,
|
186
186
|
vrange: tuple[int, int] | None = None,
|
187
|
-
) -> ImageItem:
|
187
|
+
) -> ImageItem | None:
|
188
188
|
"""
|
189
189
|
Set the image source and update the image.
|
190
190
|
|
@@ -201,21 +201,13 @@ class Image(ImageBase):
|
|
201
201
|
|
202
202
|
if self.subscriptions["main"].monitor:
|
203
203
|
self.disconnect_monitor(self.subscriptions["main"].monitor)
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
if
|
208
|
-
self.
|
209
|
-
|
210
|
-
|
211
|
-
self.subscriptions["main"].source = "device_monitor_2d"
|
212
|
-
self.subscriptions["main"].monitor_type = "2d"
|
213
|
-
elif monitor_type == "auto":
|
214
|
-
self.subscriptions["main"].source = "auto"
|
215
|
-
logger.warning(
|
216
|
-
f"Updates for '{monitor}' will be fetch from both 1D and 2D monitor endpoints."
|
217
|
-
)
|
218
|
-
self.subscriptions["main"].monitor_type = "auto"
|
204
|
+
if monitor is None or monitor == "":
|
205
|
+
logger.warning(f"No monitor specified, cannot set image, old monitor is unsubscribed")
|
206
|
+
return None
|
207
|
+
if isinstance(monitor, tuple):
|
208
|
+
self.entry_validator.validate_monitor(monitor[0])
|
209
|
+
else:
|
210
|
+
self.entry_validator.validate_monitor(monitor)
|
219
211
|
|
220
212
|
self.set_image_update(monitor=monitor, type=monitor_type)
|
221
213
|
if color_map is not None:
|
@@ -240,7 +232,12 @@ class Image(ImageBase):
|
|
240
232
|
self.selection_bundle.dim_combo_box,
|
241
233
|
):
|
242
234
|
combo.blockSignals(True)
|
243
|
-
|
235
|
+
if isinstance(config.monitor, tuple):
|
236
|
+
self.selection_bundle.device_combo_box.setCurrentText(
|
237
|
+
f"{config.monitor[0]}_{config.monitor[1]}"
|
238
|
+
)
|
239
|
+
else:
|
240
|
+
self.selection_bundle.device_combo_box.setCurrentText(config.monitor)
|
244
241
|
self.selection_bundle.dim_combo_box.setCurrentText(config.monitor_type)
|
245
242
|
for combo in (
|
246
243
|
self.selection_bundle.device_combo_box,
|
@@ -340,7 +337,8 @@ class Image(ImageBase):
|
|
340
337
|
########################################
|
341
338
|
# Connections
|
342
339
|
|
343
|
-
|
340
|
+
@SafeSlot()
|
341
|
+
def set_image_update(self, monitor: str | tuple, type: Literal["1d", "2d", "auto"]):
|
344
342
|
"""
|
345
343
|
Set the image update method for the given monitor.
|
346
344
|
|
@@ -350,37 +348,95 @@ class Image(ImageBase):
|
|
350
348
|
"""
|
351
349
|
|
352
350
|
# TODO consider moving connecting and disconnecting logic to Image itself if multiple images
|
353
|
-
if
|
354
|
-
self.
|
355
|
-
|
356
|
-
)
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
)
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
351
|
+
if isinstance(monitor, tuple):
|
352
|
+
device = self.dev[monitor[0]]
|
353
|
+
signal = monitor[1]
|
354
|
+
if len(monitor) == 3:
|
355
|
+
signal_config = monitor[2]
|
356
|
+
else:
|
357
|
+
signal_config = device._info["signals"][signal]
|
358
|
+
signal_class = signal_config.get("signal_class", None)
|
359
|
+
if signal_class != "PreviewSignal":
|
360
|
+
logger.warning(f"Signal '{monitor}' is not a PreviewSignal.")
|
361
|
+
return
|
362
|
+
|
363
|
+
ndim = signal_config.get("describe", None).get("signal_info", None).get("ndim", None)
|
364
|
+
if ndim is None:
|
365
|
+
logger.warning(
|
366
|
+
f"Signal '{monitor}' does not have a valid 'ndim' in its signal_info."
|
367
|
+
)
|
368
|
+
return
|
369
|
+
|
370
|
+
if ndim == 1:
|
371
|
+
self.bec_dispatcher.connect_slot(
|
372
|
+
self.on_image_update_1d, MessageEndpoints.device_preview(device.name, signal)
|
373
|
+
)
|
374
|
+
self.subscriptions["main"].source = "device_monitor_1d"
|
375
|
+
self.subscriptions["main"].monitor_type = "1d"
|
376
|
+
elif ndim == 2:
|
377
|
+
self.bec_dispatcher.connect_slot(
|
378
|
+
self.on_image_update_2d, MessageEndpoints.device_preview(device.name, signal)
|
379
|
+
)
|
380
|
+
self.subscriptions["main"].source = "device_monitor_2d"
|
381
|
+
self.subscriptions["main"].monitor_type = "2d"
|
382
|
+
|
383
|
+
else: # FIXME old monitor 1d/2d endpoint handling, present for backwards compatibility, will be removed in future versions
|
384
|
+
if type == "1d":
|
385
|
+
self.bec_dispatcher.connect_slot(
|
386
|
+
self.on_image_update_1d, MessageEndpoints.device_monitor_1d(monitor)
|
387
|
+
)
|
388
|
+
self.subscriptions["main"].source = "device_monitor_1d"
|
389
|
+
self.subscriptions["main"].monitor_type = "1d"
|
390
|
+
elif type == "2d":
|
391
|
+
self.bec_dispatcher.connect_slot(
|
392
|
+
self.on_image_update_2d, MessageEndpoints.device_monitor_2d(monitor)
|
393
|
+
)
|
394
|
+
self.subscriptions["main"].source = "device_monitor_2d"
|
395
|
+
self.subscriptions["main"].monitor_type = "2d"
|
396
|
+
elif type == "auto":
|
397
|
+
self.bec_dispatcher.connect_slot(
|
398
|
+
self.on_image_update_1d, MessageEndpoints.device_monitor_1d(monitor)
|
399
|
+
)
|
400
|
+
self.bec_dispatcher.connect_slot(
|
401
|
+
self.on_image_update_2d, MessageEndpoints.device_monitor_2d(monitor)
|
402
|
+
)
|
403
|
+
self.subscriptions["main"].source = "auto"
|
404
|
+
logger.warning(
|
405
|
+
f"Updates for '{monitor}' will be fetch from both 1D and 2D monitor endpoints."
|
406
|
+
)
|
407
|
+
self.subscriptions["main"].monitor_type = "auto"
|
408
|
+
|
368
409
|
logger.info(f"Connected to {monitor} with type {type}")
|
369
410
|
self.subscriptions["main"].monitor = monitor
|
370
411
|
|
371
|
-
def disconnect_monitor(self, monitor: str):
|
412
|
+
def disconnect_monitor(self, monitor: str | tuple):
|
372
413
|
"""
|
373
414
|
Disconnect the monitor from the image update signals, both 1D and 2D.
|
374
415
|
|
375
416
|
Args:
|
376
|
-
monitor(str): The name of the monitor to disconnect.
|
377
|
-
"""
|
378
|
-
|
379
|
-
self.
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
417
|
+
monitor(str|tuple): The name of the monitor to disconnect, or a tuple of (device, signal) for preview signals.
|
418
|
+
"""
|
419
|
+
if isinstance(monitor, tuple):
|
420
|
+
if self.subscriptions["main"].source == "device_monitor_1d":
|
421
|
+
self.bec_dispatcher.disconnect_slot(
|
422
|
+
self.on_image_update_1d, MessageEndpoints.device_preview(monitor[0], monitor[1])
|
423
|
+
)
|
424
|
+
elif self.subscriptions["main"].source == "device_monitor_2d":
|
425
|
+
self.bec_dispatcher.disconnect_slot(
|
426
|
+
self.on_image_update_2d, MessageEndpoints.device_preview(monitor[0], monitor[1])
|
427
|
+
)
|
428
|
+
else:
|
429
|
+
logger.warning(
|
430
|
+
f"Cannot disconnect monitor {monitor} with source {self.subscriptions['main'].source}"
|
431
|
+
)
|
432
|
+
return
|
433
|
+
else: # FIXME old monitor 1d/2d endpoint handling, present for backwards compatibility, will be removed in future versions
|
434
|
+
self.bec_dispatcher.disconnect_slot(
|
435
|
+
self.on_image_update_1d, MessageEndpoints.device_monitor_1d(monitor)
|
436
|
+
)
|
437
|
+
self.bec_dispatcher.disconnect_slot(
|
438
|
+
self.on_image_update_2d, MessageEndpoints.device_monitor_2d(monitor)
|
439
|
+
)
|
384
440
|
self.subscriptions["main"].monitor = None
|
385
441
|
self._sync_device_selection()
|
386
442
|
|
@@ -0,0 +1,107 @@
|
|
1
|
+
from bec_lib.device import ReadoutPriority
|
2
|
+
from qtpy.QtCore import Qt, QTimer
|
3
|
+
from qtpy.QtWidgets import QComboBox, QStyledItemDelegate
|
4
|
+
|
5
|
+
from bec_widgets.utils.error_popups import SafeSlot
|
6
|
+
from bec_widgets.utils.toolbar import ToolbarBundle, WidgetAction
|
7
|
+
from bec_widgets.widgets.control.device_input.base_classes.device_input_base import BECDeviceFilter
|
8
|
+
from bec_widgets.widgets.control.device_input.device_combobox.device_combobox import DeviceComboBox
|
9
|
+
|
10
|
+
|
11
|
+
class NoCheckDelegate(QStyledItemDelegate):
|
12
|
+
"""To reduce space in combo boxes by removing the checkmark."""
|
13
|
+
|
14
|
+
def initStyleOption(self, option, index):
|
15
|
+
super().initStyleOption(option, index)
|
16
|
+
# Remove any check indicator
|
17
|
+
option.checkState = Qt.Unchecked
|
18
|
+
|
19
|
+
|
20
|
+
class MonitorSelectionToolbarBundle(ToolbarBundle):
|
21
|
+
"""
|
22
|
+
A bundle of actions for a toolbar that controls monitor selection on a plot.
|
23
|
+
"""
|
24
|
+
|
25
|
+
def __init__(self, bundle_id="device_selection", target_widget=None, **kwargs):
|
26
|
+
super().__init__(bundle_id=bundle_id, actions=[], **kwargs)
|
27
|
+
self.target_widget = target_widget
|
28
|
+
|
29
|
+
# 1) Device combo box
|
30
|
+
self.device_combo_box = DeviceComboBox(
|
31
|
+
parent=self.target_widget,
|
32
|
+
device_filter=BECDeviceFilter.DEVICE,
|
33
|
+
readout_priority_filter=[ReadoutPriority.ASYNC],
|
34
|
+
)
|
35
|
+
self.device_combo_box.addItem("", None)
|
36
|
+
self.device_combo_box.setCurrentText("")
|
37
|
+
self.device_combo_box.setToolTip("Select Device")
|
38
|
+
self.device_combo_box.setFixedWidth(150)
|
39
|
+
self.device_combo_box.setItemDelegate(NoCheckDelegate(self.device_combo_box))
|
40
|
+
|
41
|
+
self.add_action("monitor", WidgetAction(widget=self.device_combo_box, adjust_size=False))
|
42
|
+
|
43
|
+
# 2) Dimension combo box
|
44
|
+
self.dim_combo_box = QComboBox(parent=self.target_widget)
|
45
|
+
self.dim_combo_box.addItems(["auto", "1d", "2d"])
|
46
|
+
self.dim_combo_box.setCurrentText("auto")
|
47
|
+
self.dim_combo_box.setToolTip("Monitor Dimension")
|
48
|
+
self.dim_combo_box.setFixedWidth(100)
|
49
|
+
self.dim_combo_box.setItemDelegate(NoCheckDelegate(self.dim_combo_box))
|
50
|
+
|
51
|
+
self.add_action("dim_combo", WidgetAction(widget=self.dim_combo_box, adjust_size=False))
|
52
|
+
|
53
|
+
self.device_combo_box.currentTextChanged.connect(self.connect_monitor)
|
54
|
+
self.dim_combo_box.currentTextChanged.connect(self.connect_monitor)
|
55
|
+
|
56
|
+
QTimer.singleShot(0, self._adjust_and_connect)
|
57
|
+
|
58
|
+
def _adjust_and_connect(self):
|
59
|
+
"""
|
60
|
+
Adjust the size of the device combo box and populate it with preview signals.
|
61
|
+
Has to be done with QTimer.singleShot to ensure the UI is fully initialized, needed for testing.
|
62
|
+
"""
|
63
|
+
self._populate_preview_signals()
|
64
|
+
self._reverse_device_items()
|
65
|
+
self.device_combo_box.setCurrentText("") # set again default to empty string
|
66
|
+
|
67
|
+
def _populate_preview_signals(self) -> None:
|
68
|
+
"""
|
69
|
+
Populate the device combo box with preview‑signal devices in the
|
70
|
+
format '<device>_<signal>' and store the tuple(device, signal) in
|
71
|
+
the item's userData for later use.
|
72
|
+
"""
|
73
|
+
preview_signals = self.target_widget.client.device_manager.get_bec_signals("PreviewSignal")
|
74
|
+
for device, signal, signal_config in preview_signals:
|
75
|
+
label = signal_config.get("obj_name", f"{device}_{signal}")
|
76
|
+
self.device_combo_box.addItem(label, (device, signal, signal_config))
|
77
|
+
|
78
|
+
def _reverse_device_items(self) -> None:
|
79
|
+
"""
|
80
|
+
Reverse the current order of items in the device combo box while
|
81
|
+
keeping their userData and restoring the previous selection.
|
82
|
+
"""
|
83
|
+
current_text = self.device_combo_box.currentText()
|
84
|
+
items = [
|
85
|
+
(self.device_combo_box.itemText(i), self.device_combo_box.itemData(i))
|
86
|
+
for i in range(self.device_combo_box.count())
|
87
|
+
]
|
88
|
+
self.device_combo_box.clear()
|
89
|
+
for text, data in reversed(items):
|
90
|
+
self.device_combo_box.addItem(text, data)
|
91
|
+
if current_text:
|
92
|
+
self.device_combo_box.setCurrentText(current_text)
|
93
|
+
|
94
|
+
@SafeSlot()
|
95
|
+
def connect_monitor(self, *args, **kwargs):
|
96
|
+
"""
|
97
|
+
Connect the target widget to the selected monitor based on the current device and dimension.
|
98
|
+
|
99
|
+
If the selected device is a preview-signal device, it will use the tuple (device, signal) as the monitor.
|
100
|
+
"""
|
101
|
+
dim = self.dim_combo_box.currentText()
|
102
|
+
data = self.device_combo_box.currentData()
|
103
|
+
|
104
|
+
if isinstance(data, tuple):
|
105
|
+
self.target_widget.image(monitor=data, monitor_type="auto")
|
106
|
+
else:
|
107
|
+
self.target_widget.image(monitor=self.device_combo_box.currentText(), monitor_type=dim)
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
4
4
|
|
5
5
|
[project]
|
6
6
|
name = "bec_widgets"
|
7
|
-
version = "2.12.
|
7
|
+
version = "2.12.3"
|
8
8
|
description = "BEC Widgets"
|
9
9
|
requires-python = ">=3.10"
|
10
10
|
classifiers = [
|
@@ -13,15 +13,15 @@ classifiers = [
|
|
13
13
|
"Topic :: Scientific/Engineering",
|
14
14
|
]
|
15
15
|
dependencies = [
|
16
|
-
"bec_ipython_client>=
|
17
|
-
"bec_lib>=3.
|
16
|
+
"bec_ipython_client>=3.38, <=4.0", # needed for jupyter console
|
17
|
+
"bec_lib>=3.38, <=4.0",
|
18
18
|
"bec_qthemes~=0.7, >=0.7",
|
19
|
-
"black~=25.0",
|
20
|
-
"isort~=5.13, >=5.13.2",
|
19
|
+
"black~=25.0", # needed for bw-generate-cli
|
20
|
+
"isort~=5.13, >=5.13.2", # needed for bw-generate-cli
|
21
21
|
"pydantic~=2.0",
|
22
22
|
"pyqtgraph~=0.13",
|
23
23
|
"PySide6~=6.8.2",
|
24
|
-
"qtconsole~=5.5, >=5.5.1",
|
24
|
+
"qtconsole~=5.5, >=5.5.1", # needed for jupyter console
|
25
25
|
"qtpy~=2.4",
|
26
26
|
]
|
27
27
|
|
@@ -1,60 +0,0 @@
|
|
1
|
-
from bec_lib.device import ReadoutPriority
|
2
|
-
from qtpy.QtCore import Qt
|
3
|
-
from qtpy.QtWidgets import QComboBox, QStyledItemDelegate
|
4
|
-
|
5
|
-
from bec_widgets.utils.error_popups import SafeSlot
|
6
|
-
from bec_widgets.utils.toolbar import ToolbarBundle, WidgetAction
|
7
|
-
from bec_widgets.widgets.control.device_input.base_classes.device_input_base import BECDeviceFilter
|
8
|
-
from bec_widgets.widgets.control.device_input.device_combobox.device_combobox import DeviceComboBox
|
9
|
-
|
10
|
-
|
11
|
-
class NoCheckDelegate(QStyledItemDelegate):
|
12
|
-
"""To reduce space in combo boxes by removing the checkmark."""
|
13
|
-
|
14
|
-
def initStyleOption(self, option, index):
|
15
|
-
super().initStyleOption(option, index)
|
16
|
-
# Remove any check indicator
|
17
|
-
option.checkState = Qt.Unchecked
|
18
|
-
|
19
|
-
|
20
|
-
class MonitorSelectionToolbarBundle(ToolbarBundle):
|
21
|
-
"""
|
22
|
-
A bundle of actions for a toolbar that controls monitor selection on a plot.
|
23
|
-
"""
|
24
|
-
|
25
|
-
def __init__(self, bundle_id="device_selection", target_widget=None, **kwargs):
|
26
|
-
super().__init__(bundle_id=bundle_id, actions=[], **kwargs)
|
27
|
-
self.target_widget = target_widget
|
28
|
-
|
29
|
-
# 1) Device combo box
|
30
|
-
self.device_combo_box = DeviceComboBox(
|
31
|
-
parent=self.target_widget,
|
32
|
-
device_filter=BECDeviceFilter.DEVICE,
|
33
|
-
readout_priority_filter=[ReadoutPriority.ASYNC],
|
34
|
-
)
|
35
|
-
self.device_combo_box.addItem("", None)
|
36
|
-
self.device_combo_box.setCurrentText("")
|
37
|
-
self.device_combo_box.setToolTip("Select Device")
|
38
|
-
self.device_combo_box.setFixedWidth(150)
|
39
|
-
self.device_combo_box.setItemDelegate(NoCheckDelegate(self.device_combo_box))
|
40
|
-
|
41
|
-
self.add_action("monitor", WidgetAction(widget=self.device_combo_box, adjust_size=False))
|
42
|
-
|
43
|
-
# 2) Dimension combo box
|
44
|
-
self.dim_combo_box = QComboBox(parent=self.target_widget)
|
45
|
-
self.dim_combo_box.addItems(["auto", "1d", "2d"])
|
46
|
-
self.dim_combo_box.setCurrentText("auto")
|
47
|
-
self.dim_combo_box.setToolTip("Monitor Dimension")
|
48
|
-
self.dim_combo_box.setFixedWidth(100)
|
49
|
-
self.dim_combo_box.setItemDelegate(NoCheckDelegate(self.dim_combo_box))
|
50
|
-
|
51
|
-
self.add_action("dim_combo", WidgetAction(widget=self.dim_combo_box, adjust_size=False))
|
52
|
-
|
53
|
-
# Connect slots, a device will be connected upon change of any combobox
|
54
|
-
self.device_combo_box.currentTextChanged.connect(lambda: self.connect_monitor())
|
55
|
-
self.dim_combo_box.currentTextChanged.connect(lambda: self.connect_monitor())
|
56
|
-
|
57
|
-
@SafeSlot()
|
58
|
-
def connect_monitor(self):
|
59
|
-
dim = self.dim_combo_box.currentText()
|
60
|
-
self.target_widget.image(monitor=self.device_combo_box.currentText(), monitor_type=dim)
|
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-2.12.2 → bec_widgets-2.12.3}/bec_widgets/assets/app_icons/widget_launch_tile.png
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
|
{bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/examples/plugin_example_pyside/__init__.py
RENAMED
File without changes
|
{bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/examples/plugin_example_pyside/main.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{bec_widgets-2.12.2 → bec_widgets-2.12.3}/bec_widgets/examples/plugin_example_pyside/tictactoe.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|