bec-widgets 2.13.2__tar.gz → 2.14.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-2.13.2 → bec_widgets-2.14.0}/CHANGELOG.md +13 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/PKG-INFO +1 -1
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/cli/client.py +123 -1
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/image/image_base.py +12 -1
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/image/setting_widgets/image_roi_tree.py +42 -22
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/roi/image_roi.py +86 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/pyproject.toml +1 -1
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/.git_hooks/pre-commit +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/.github/ISSUE_TEMPLATE/documentation_update.md +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/.github/actions/bw_install/action.yml +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/.github/pull_request_template.md +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/.github/scripts/pr_issue_sync/pr_issue_sync.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/.github/scripts/pr_issue_sync/requirements.txt +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/.github/workflows/check_pr.yml +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/.github/workflows/ci.yml +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/.github/workflows/end2end-conda.yml +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/.github/workflows/formatter.yml +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/.github/workflows/generate-cli-check.yml +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/.github/workflows/pytest-matrix.yml +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/.github/workflows/pytest.yml +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/.github/workflows/semantic_release.yml +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/.github/workflows/stale-issues.yml +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/.github/workflows/sync-issues-pr.yml +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/.gitignore +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/.gitlab-ci.yml +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/.pylintrc +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/.readthedocs.yaml +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/LICENSE +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/README.md +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/applications/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/applications/bw_launch.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/applications/launch_window.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/assets/app_icons/BEC-General-App.png +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/assets/app_icons/alignment_1d.png +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/assets/app_icons/auto_update.png +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/assets/app_icons/bec_widgets_icon.png +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/assets/app_icons/ui_loader_tile.png +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/assets/app_icons/widget_launch_tile.png +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/cli/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/cli/client_utils.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/cli/generate_cli.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/cli/rpc/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/cli/rpc/rpc_base.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/cli/rpc/rpc_register.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/cli/rpc/rpc_widget_handler.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/cli/server.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/examples/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/examples/general_app/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/examples/general_app/general_app.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/examples/general_app/general_app.ui +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/examples/general_app/web_links.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/examples/jupyter_console/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/examples/jupyter_console/jupyter_console_window.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/examples/plugin_example_pyside/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/examples/plugin_example_pyside/main.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/examples/plugin_example_pyside/registertictactoe.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/examples/plugin_example_pyside/taskmenuextension.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/examples/plugin_example_pyside/tictactoe.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/examples/plugin_example_pyside/tictactoeplugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/examples/plugin_example_pyside/tictactoetaskmenu.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/tests/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/tests/utils.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/bec_connector.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/bec_designer.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/bec_dispatcher.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/bec_plugin_helper.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/bec_signal_proxy.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/bec_table.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/bec_widget.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/clickable_label.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/collapsible_panel_manager.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/colors.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/compact_popup.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/container_utils.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/crosshair.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/entry_validator.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/error_popups.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/expandable_frame.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/filter_io.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/forms_from_types/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/forms_from_types/forms.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/forms_from_types/items.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/forms_from_types/styles.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/fps_counter.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/generate_designer_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/layout_manager.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/linear_region_selector.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/name_utils.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/ophyd_kind_util.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/palette_viewer.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/plot_indicator_items.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/plugin_templates/plugin.template +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/plugin_templates/register.template +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/plugin_utils.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/redis_message_waiter.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/reference_utils.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/round_frame.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/rpc_decorator.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/rpc_server.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/serialization.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/settings_dialog.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/side_panel.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/thread_checker.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/toolbar.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/ui_loader.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/validator_delegate.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/widget_io.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/widget_state_manager.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/utils/yaml_dialog.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/containers/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/containers/auto_update/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/containers/auto_update/auto_updates.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/containers/dock/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/containers/dock/dock.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/containers/dock/dock_area.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/containers/dock/dock_area.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/containers/dock/dock_area_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/containers/dock/register_dock_area.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/containers/layout_manager/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/containers/layout_manager/layout_manager.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/containers/main_window/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/containers/main_window/addons/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/containers/main_window/addons/web_links.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/containers/main_window/main_window.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/buttons/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/buttons/button_abort/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/buttons/button_abort/abort_button.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/buttons/button_abort/abort_button_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/buttons/button_abort/button_abort.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/buttons/button_abort/register_abort_button.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/buttons/button_reset/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/buttons/button_reset/button_reset.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/buttons/button_reset/register_reset_button.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/buttons/button_reset/reset_button.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/buttons/button_reset/reset_button_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/buttons/button_resume/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/buttons/button_resume/button_resume.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/buttons/button_resume/register_resume_button.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/buttons/button_resume/resume_button.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/buttons/button_resume/resume_button_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/buttons/stop_button/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/buttons/stop_button/register_stop_button.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/buttons/stop_button/stop_button.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/buttons/stop_button/stop_button.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/buttons/stop_button/stop_button_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_control/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_control/position_indicator/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_control/position_indicator/position_indicator.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_control/position_indicator/position_indicator.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_control/position_indicator/position_indicator_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_control/position_indicator/register_position_indicator.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_control/positioner_box/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_control/positioner_box/_base/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_control/positioner_box/_base/positioner_box_base.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.ui +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/register_positioner_box.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box2_d.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box2_d_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box_2d.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box_2d.ui +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/register_positioner_box2_d.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line.ui +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/register_positioner_control_line.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_control/positioner_group/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_control/positioner_group/positioner_group.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_control/positioner_group/positioner_group.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_control/positioner_group/positioner_group_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_control/positioner_group/register_positioner_group.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_input/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_input/base_classes/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_input/base_classes/device_input_base.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_input/base_classes/device_signal_input_base.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_input/device_combobox/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_input/device_combobox/device_combo_box.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_input/device_combobox/device_combo_box_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_input/device_combobox/device_combobox.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_input/device_combobox/register_device_combo_box.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_input/device_line_edit/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_input/device_line_edit/device_line_edit.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_input/device_line_edit/device_line_edit.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_input/device_line_edit/device_line_edit_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_input/device_line_edit/register_device_line_edit.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_input/signal_combobox/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_input/signal_combobox/register_signal_combo_box.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_input/signal_combobox/signal_combo_box.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_input/signal_combobox/signal_combo_box_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_input/signal_combobox/signal_combobox.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_input/signal_line_edit/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_input/signal_line_edit/register_signal_line_edit.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_input/signal_line_edit/signal_line_edit.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_input/signal_line_edit/signal_line_edit.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/device_input/signal_line_edit/signal_line_edit_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/scan_control/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/scan_control/register_scan_control.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/scan_control/scan_control.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/scan_control/scan_control.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/scan_control/scan_control_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/control/scan_control/scan_group_box.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/dap/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/dap/dap_combo_box/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/dap/dap_combo_box/register_dap_combo_box.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/dap/lmfit_dialog/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/dap/lmfit_dialog/lm_fit_dialog.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/dap/lmfit_dialog/lm_fit_dialog_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog_compact.ui +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog_vertical.ui +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/dap/lmfit_dialog/register_lm_fit_dialog.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/editors/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/editors/dict_backed_table.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/editors/jupyter_console/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/editors/jupyter_console/jupyter_console.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/editors/scan_metadata/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/editors/scan_metadata/_util.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/editors/scan_metadata/register_scan_metadata.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/editors/scan_metadata/scan_metadata.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/editors/scan_metadata/scan_metadata.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/editors/scan_metadata/scan_metadata_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/editors/text_box/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/editors/text_box/register_text_box.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/editors/text_box/text_box.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/editors/text_box/text_box.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/editors/text_box/text_box_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/editors/vscode/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/editors/vscode/register_vs_code_editor.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/editors/vscode/vs_code_editor.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/editors/vscode/vs_code_editor_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/editors/vscode/vscode.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/editors/web_console/register_web_console.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/editors/web_console/web_console.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/editors/web_console/web_console.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/editors/web_console/web_console_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/editors/website/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/editors/website/register_website_widget.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/editors/website/website.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/editors/website/website_widget.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/editors/website/website_widget_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/games/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/games/minesweeper.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/games/minesweeper.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/games/minesweeper_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/games/register_minesweeper.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/image/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/image/image.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/image/image.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/image/image_item.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/image/image_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/image/image_processor.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/image/image_roi_plot.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/image/register_image.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/image/setting_widgets/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/image/toolbar_bundles/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/image/toolbar_bundles/image_selection.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/image/toolbar_bundles/processing.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/motor_map/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/motor_map/motor_map.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/motor_map/motor_map.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/motor_map/motor_map_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/motor_map/register_motor_map.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/motor_map/settings/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/motor_map/settings/motor_map_settings.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/motor_map/settings/motor_map_settings.ui +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/motor_map/toolbar_bundles/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/motor_map/toolbar_bundles/motor_selection.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/multi_waveform/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/multi_waveform/multi_waveform.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/multi_waveform/multi_waveform.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/multi_waveform/multi_waveform_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/multi_waveform/register_multi_waveform.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/multi_waveform/settings/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/multi_waveform/settings/control_panel.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/multi_waveform/settings/multi_waveform_controls.ui +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/multi_waveform/toolbar_bundles/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/multi_waveform/toolbar_bundles/monitor_selection.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/plot_base.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/roi/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/scatter_waveform/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/scatter_waveform/register_scatter_waveform.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/scatter_waveform/scatter_curve.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/scatter_waveform/scatter_waveform.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/scatter_waveform/scatter_waveform.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/scatter_waveform/scatter_waveform_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/scatter_waveform/settings/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/scatter_waveform/settings/scatter_curve_setting.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/scatter_waveform/settings/scatter_curve_settings_horizontal.ui +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/scatter_waveform/settings/scatter_curve_settings_vertical.ui +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/setting_menus/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/setting_menus/axis_settings.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/setting_menus/axis_settings_horizontal.ui +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/setting_menus/axis_settings_vertical.ui +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/toolbar_bundles/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/toolbar_bundles/mouse_interactions.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/toolbar_bundles/plot_export.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/toolbar_bundles/roi_bundle.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/toolbar_bundles/save_state.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/waveform/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/waveform/curve.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/waveform/register_waveform.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/waveform/settings/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/waveform/settings/curve_settings/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/waveform/settings/curve_settings/curve_setting.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/waveform/settings/curve_settings/curve_tree.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/waveform/utils/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/waveform/utils/roi_manager.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/waveform/waveform.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/waveform/waveform.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/plots/waveform/waveform_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/progress/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/progress/bec_progressbar/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/progress/bec_progressbar/bec_progress_bar.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/progress/bec_progressbar/bec_progress_bar_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/progress/bec_progressbar/bec_progressbar.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/progress/bec_progressbar/register_bec_progress_bar.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/progress/ring_progress_bar/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/progress/ring_progress_bar/register_ring_progress_bar.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/progress/ring_progress_bar/ring.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/services/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/services/bec_queue/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/services/bec_queue/bec_queue.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/services/bec_queue/bec_queue.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/services/bec_queue/bec_queue_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/services/bec_queue/register_bec_queue.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/services/bec_status_box/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/services/bec_status_box/bec_status_box.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/services/bec_status_box/bec_status_box.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/services/bec_status_box/bec_status_box_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/services/bec_status_box/register_bec_status_box.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/services/bec_status_box/status_item.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/services/device_browser/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/services/device_browser/device_browser.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/services/device_browser/device_browser.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/services/device_browser/device_browser.ui +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/services/device_browser/device_browser_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/services/device_browser/device_item/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/services/device_browser/device_item/device_item.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/services/device_browser/register_device_browser.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/services/device_browser/util.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/logpanel/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/logpanel/_util.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/logpanel/log_panel.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/logpanel/log_panel_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/logpanel/logpanel.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/logpanel/register_log_panel.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/signal_label/register_signal_label.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/signal_label/signal_label.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/signal_label/signal_label.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/signal_label/signal_label_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/spinbox/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/spinbox/bec_spin_box.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/spinbox/bec_spin_box_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/spinbox/decimal_spinbox.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/spinbox/register_bec_spin_box.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/spinner/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/spinner/register_spinner_widget.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/spinner/spinner.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/spinner/spinner_widget.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/spinner/spinner_widget_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/toggle/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/toggle/register_toggle_switch.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/toggle/toggle.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/toggle/toggle_switch.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/toggle/toggle_switch_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/visual/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/visual/color_button/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/visual/color_button/color_button.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/visual/color_button/color_button.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/visual/color_button/color_button_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/visual/color_button/register_color_button.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/visual/color_button_native/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/visual/color_button_native/color_button_native.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/visual/color_button_native/color_button_native.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/visual/color_button_native/color_button_native_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/visual/color_button_native/register_color_button_native.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/visual/colormap_selector/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/visual/colormap_selector/colormap_selector.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/visual/colormap_selector/colormap_selector.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/visual/colormap_selector/colormap_selector_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/visual/colormap_selector/register_colormap_selector.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/visual/colormap_widget/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/visual/colormap_widget/bec_color_map_widget.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/visual/colormap_widget/bec_color_map_widget_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/visual/colormap_widget/colormap_widget.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/visual/colormap_widget/register_bec_color_map_widget.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/visual/dark_mode_button/__init__.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button.pyproject +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button_plugin.py +0 -0
- {bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/widgets/utility/visual/dark_mode_button/register_dark_mode_button.py +0 -0
@@ -1,6 +1,19 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
3
|
|
4
|
+
## v2.14.0 (2025-06-13)
|
5
|
+
|
6
|
+
### Features
|
7
|
+
|
8
|
+
- **image_roi**: Added EllipticalROI
|
9
|
+
([`af8db0b`](https://github.com/bec-project/bec_widgets/commit/af8db0bede32dd10ad72671a8c2978ca884f4994))
|
10
|
+
|
11
|
+
### Refactoring
|
12
|
+
|
13
|
+
- **image_roi_tree**: Shape switch logic adjusted to reduce code repetition
|
14
|
+
([`f0d48a0`](https://github.com/bec-project/bec_widgets/commit/f0d48a05085bb8c628e516d4a976d776ee63c7c3))
|
15
|
+
|
16
|
+
|
4
17
|
## v2.13.2 (2025-06-13)
|
5
18
|
|
6
19
|
### Bug Fixes
|
@@ -1044,6 +1044,128 @@ class DeviceLineEdit(RPCBase):
|
|
1044
1044
|
"""
|
1045
1045
|
|
1046
1046
|
|
1047
|
+
class EllipticalROI(RPCBase):
|
1048
|
+
"""Elliptical Region of Interest with centre/width/height tracking and auto-labelling."""
|
1049
|
+
|
1050
|
+
@property
|
1051
|
+
@rpc_call
|
1052
|
+
def label(self) -> "str":
|
1053
|
+
"""
|
1054
|
+
Gets the display name of this ROI.
|
1055
|
+
|
1056
|
+
Returns:
|
1057
|
+
str: The current name of the ROI.
|
1058
|
+
"""
|
1059
|
+
|
1060
|
+
@label.setter
|
1061
|
+
@rpc_call
|
1062
|
+
def label(self) -> "str":
|
1063
|
+
"""
|
1064
|
+
Gets the display name of this ROI.
|
1065
|
+
|
1066
|
+
Returns:
|
1067
|
+
str: The current name of the ROI.
|
1068
|
+
"""
|
1069
|
+
|
1070
|
+
@property
|
1071
|
+
@rpc_call
|
1072
|
+
def movable(self) -> "bool":
|
1073
|
+
"""
|
1074
|
+
Gets whether this ROI is movable.
|
1075
|
+
|
1076
|
+
Returns:
|
1077
|
+
bool: True if the ROI can be moved, False otherwise.
|
1078
|
+
"""
|
1079
|
+
|
1080
|
+
@movable.setter
|
1081
|
+
@rpc_call
|
1082
|
+
def movable(self) -> "bool":
|
1083
|
+
"""
|
1084
|
+
Gets whether this ROI is movable.
|
1085
|
+
|
1086
|
+
Returns:
|
1087
|
+
bool: True if the ROI can be moved, False otherwise.
|
1088
|
+
"""
|
1089
|
+
|
1090
|
+
@property
|
1091
|
+
@rpc_call
|
1092
|
+
def line_color(self) -> "str":
|
1093
|
+
"""
|
1094
|
+
Gets the current line color of the ROI.
|
1095
|
+
|
1096
|
+
Returns:
|
1097
|
+
str: The current line color as a string (e.g., hex color code).
|
1098
|
+
"""
|
1099
|
+
|
1100
|
+
@line_color.setter
|
1101
|
+
@rpc_call
|
1102
|
+
def line_color(self) -> "str":
|
1103
|
+
"""
|
1104
|
+
Gets the current line color of the ROI.
|
1105
|
+
|
1106
|
+
Returns:
|
1107
|
+
str: The current line color as a string (e.g., hex color code).
|
1108
|
+
"""
|
1109
|
+
|
1110
|
+
@property
|
1111
|
+
@rpc_call
|
1112
|
+
def line_width(self) -> "int":
|
1113
|
+
"""
|
1114
|
+
Gets the current line width of the ROI.
|
1115
|
+
|
1116
|
+
Returns:
|
1117
|
+
int: The current line width in pixels.
|
1118
|
+
"""
|
1119
|
+
|
1120
|
+
@line_width.setter
|
1121
|
+
@rpc_call
|
1122
|
+
def line_width(self) -> "int":
|
1123
|
+
"""
|
1124
|
+
Gets the current line width of the ROI.
|
1125
|
+
|
1126
|
+
Returns:
|
1127
|
+
int: The current line width in pixels.
|
1128
|
+
"""
|
1129
|
+
|
1130
|
+
@rpc_call
|
1131
|
+
def get_coordinates(self, typed: "bool | None" = None) -> "dict | tuple":
|
1132
|
+
"""
|
1133
|
+
Return the ellipse's centre and size.
|
1134
|
+
|
1135
|
+
Args:
|
1136
|
+
typed (bool | None): If True returns dict; otherwise tuple.
|
1137
|
+
"""
|
1138
|
+
|
1139
|
+
@rpc_call
|
1140
|
+
def get_data_from_image(
|
1141
|
+
self, image_item: "pg.ImageItem | None" = None, returnMappedCoords: "bool" = False, **kwargs
|
1142
|
+
):
|
1143
|
+
"""
|
1144
|
+
Wrapper around `pyqtgraph.ROI.getArrayRegion`.
|
1145
|
+
|
1146
|
+
Args:
|
1147
|
+
image_item (pg.ImageItem or None): The ImageItem to sample. If None, auto-detects
|
1148
|
+
the first `ImageItem` in the same GraphicsScene as this ROI.
|
1149
|
+
returnMappedCoords (bool): If True, also returns the coordinate array generated by
|
1150
|
+
*getArrayRegion*.
|
1151
|
+
**kwargs: Additional keyword arguments passed to *getArrayRegion* or *affineSlice*,
|
1152
|
+
such as `axes`, `order`, `shape`, etc.
|
1153
|
+
|
1154
|
+
Returns:
|
1155
|
+
ndarray: Pixel data inside the ROI, or (data, coords) if *returnMappedCoords* is True.
|
1156
|
+
"""
|
1157
|
+
|
1158
|
+
@rpc_call
|
1159
|
+
def set_position(self, x: "float", y: "float"):
|
1160
|
+
"""
|
1161
|
+
Sets the position of the ROI.
|
1162
|
+
|
1163
|
+
Args:
|
1164
|
+
x (float): The x-coordinate of the new position.
|
1165
|
+
y (float): The y-coordinate of the new position.
|
1166
|
+
"""
|
1167
|
+
|
1168
|
+
|
1047
1169
|
class Image(RPCBase):
|
1048
1170
|
"""Image widget for displaying 2D data."""
|
1049
1171
|
|
@@ -1529,7 +1651,7 @@ class Image(RPCBase):
|
|
1529
1651
|
@rpc_call
|
1530
1652
|
def add_roi(
|
1531
1653
|
self,
|
1532
|
-
kind: "Literal['rect', 'circle']" = "rect",
|
1654
|
+
kind: "Literal['rect', 'circle', 'ellipse']" = "rect",
|
1533
1655
|
name: "str | None" = None,
|
1534
1656
|
line_width: "int | None" = 5,
|
1535
1657
|
pos: "tuple[float, float] | None" = (10, 10),
|
@@ -24,6 +24,7 @@ from bec_widgets.widgets.plots.plot_base import PlotBase
|
|
24
24
|
from bec_widgets.widgets.plots.roi.image_roi import (
|
25
25
|
BaseROI,
|
26
26
|
CircularROI,
|
27
|
+
EllipticalROI,
|
27
28
|
RectangularROI,
|
28
29
|
ROIController,
|
29
30
|
)
|
@@ -554,7 +555,7 @@ class ImageBase(PlotBase):
|
|
554
555
|
|
555
556
|
def add_roi(
|
556
557
|
self,
|
557
|
-
kind: Literal["rect", "circle"] = "rect",
|
558
|
+
kind: Literal["rect", "circle", "ellipse"] = "rect",
|
558
559
|
name: str | None = None,
|
559
560
|
line_width: int | None = 5,
|
560
561
|
pos: tuple[float, float] | None = (10, 10),
|
@@ -599,6 +600,16 @@ class ImageBase(PlotBase):
|
|
599
600
|
movable=movable,
|
600
601
|
**pg_kwargs,
|
601
602
|
)
|
603
|
+
elif kind == "ellipse":
|
604
|
+
roi = EllipticalROI(
|
605
|
+
pos=pos,
|
606
|
+
size=size,
|
607
|
+
parent_image=self,
|
608
|
+
line_width=line_width,
|
609
|
+
label=name,
|
610
|
+
movable=movable,
|
611
|
+
**pg_kwargs,
|
612
|
+
)
|
602
613
|
else:
|
603
614
|
raise ValueError("kind must be 'rect' or 'circle'")
|
604
615
|
|
@@ -24,6 +24,7 @@ from bec_widgets.utils.toolbar import MaterialIconAction, ModularToolBar
|
|
24
24
|
from bec_widgets.widgets.plots.roi.image_roi import (
|
25
25
|
BaseROI,
|
26
26
|
CircularROI,
|
27
|
+
EllipticalROI,
|
27
28
|
RectangularROI,
|
28
29
|
ROIController,
|
29
30
|
)
|
@@ -121,11 +122,21 @@ class ROIPropertyTree(BECWidget, QWidget):
|
|
121
122
|
# --------------------------------------------------------------------- UI
|
122
123
|
def _init_toolbar(self):
|
123
124
|
tb = ModularToolBar(self, self, orientation="horizontal")
|
125
|
+
self._draw_actions: dict[str, MaterialIconAction] = {}
|
124
126
|
# --- ROI draw actions (toggleable) ---
|
125
127
|
self.add_rect_action = MaterialIconAction("add_box", "Add Rect ROI", True, self)
|
126
|
-
self.add_circle_action = MaterialIconAction("add_circle", "Add Circle ROI", True, self)
|
127
128
|
tb.add_action("Add Rect ROI", self.add_rect_action, self)
|
129
|
+
self._draw_actions["rect"] = self.add_rect_action
|
130
|
+
self.add_circle_action = MaterialIconAction("add_circle", "Add Circle ROI", True, self)
|
128
131
|
tb.add_action("Add Circle ROI", self.add_circle_action, self)
|
132
|
+
self._draw_actions["circle"] = self.add_circle_action
|
133
|
+
# --- Ellipse ROI draw action ---
|
134
|
+
self.add_ellipse_action = MaterialIconAction("vignette", "Add Ellipse ROI", True, self)
|
135
|
+
tb.add_action("Add Ellipse ROI", self.add_ellipse_action, self)
|
136
|
+
self._draw_actions["ellipse"] = self.add_ellipse_action
|
137
|
+
|
138
|
+
for mode, act in self._draw_actions.items():
|
139
|
+
act.action.toggled.connect(lambda on, m=mode: self._on_draw_action_toggled(m, on))
|
129
140
|
|
130
141
|
# Expand/Collapse toggle
|
131
142
|
self.expand_toggle = MaterialIconAction(
|
@@ -174,17 +185,9 @@ class ROIPropertyTree(BECWidget, QWidget):
|
|
174
185
|
self.controller.paletteChanged.connect(lambda cmap: setattr(self.cmap, "colormap", cmap))
|
175
186
|
|
176
187
|
# ROI drawing state
|
177
|
-
self._roi_draw_mode = None # 'rect' | 'circle' | None
|
188
|
+
self._roi_draw_mode = None # 'rect' | 'circle' | 'ellipse' | None
|
178
189
|
self._roi_start_pos = None # QPointF in image coords
|
179
190
|
self._temp_roi = None # live ROI being resized while dragging
|
180
|
-
|
181
|
-
# toggle handlers
|
182
|
-
self.add_rect_action.action.toggled.connect(
|
183
|
-
lambda on: self._set_roi_draw_mode("rect" if on else None)
|
184
|
-
)
|
185
|
-
self.add_circle_action.action.toggled.connect(
|
186
|
-
lambda on: self._set_roi_draw_mode("circle" if on else None)
|
187
|
-
)
|
188
191
|
# capture mouse events on the plot scene
|
189
192
|
self.plot.scene().installEventFilter(self)
|
190
193
|
|
@@ -214,16 +217,12 @@ class ROIPropertyTree(BECWidget, QWidget):
|
|
214
217
|
return str(value)
|
215
218
|
|
216
219
|
def _set_roi_draw_mode(self, mode: str | None):
|
217
|
-
#
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
self.add_circle_action.action.setChecked(True)
|
224
|
-
else:
|
225
|
-
self.add_rect_action.action.setChecked(False)
|
226
|
-
self.add_circle_action.action.setChecked(False)
|
220
|
+
# Update toolbar actions so that only the selected mode is checked
|
221
|
+
for m, act in self._draw_actions.items():
|
222
|
+
act.action.blockSignals(True)
|
223
|
+
act.action.setChecked(m == mode)
|
224
|
+
act.action.blockSignals(False)
|
225
|
+
|
227
226
|
self._roi_draw_mode = mode
|
228
227
|
self._roi_start_pos = None
|
229
228
|
# remove any unfinished temp ROI
|
@@ -231,6 +230,15 @@ class ROIPropertyTree(BECWidget, QWidget):
|
|
231
230
|
self.plot.removeItem(self._temp_roi)
|
232
231
|
self._temp_roi = None
|
233
232
|
|
233
|
+
def _on_draw_action_toggled(self, mode: str, checked: bool):
|
234
|
+
if checked:
|
235
|
+
# Activate selected mode
|
236
|
+
self._set_roi_draw_mode(mode)
|
237
|
+
else:
|
238
|
+
# If the active mode is being unchecked, clear mode
|
239
|
+
if self._roi_draw_mode == mode:
|
240
|
+
self._set_roi_draw_mode(None)
|
241
|
+
|
234
242
|
def eventFilter(self, obj, event):
|
235
243
|
if self._roi_draw_mode is None:
|
236
244
|
return super().eventFilter(obj, event)
|
@@ -243,12 +251,18 @@ class ROIPropertyTree(BECWidget, QWidget):
|
|
243
251
|
parent_image=self.image_widget,
|
244
252
|
resize_handles=False,
|
245
253
|
)
|
246
|
-
|
254
|
+
elif self._roi_draw_mode == "circle":
|
247
255
|
self._temp_roi = CircularROI(
|
248
256
|
pos=[self._roi_start_pos.x() - 2.5, self._roi_start_pos.y() - 2.5],
|
249
257
|
size=[5, 5],
|
250
258
|
parent_image=self.image_widget,
|
251
259
|
)
|
260
|
+
elif self._roi_draw_mode == "ellipse":
|
261
|
+
self._temp_roi = EllipticalROI(
|
262
|
+
pos=[self._roi_start_pos.x() - 2.5, self._roi_start_pos.y() - 2.5],
|
263
|
+
size=[5, 5],
|
264
|
+
parent_image=self.image_widget,
|
265
|
+
)
|
252
266
|
self.plot.addItem(self._temp_roi)
|
253
267
|
return True
|
254
268
|
elif event.type() == QEvent.GraphicsSceneMouseMove and self._temp_roi is not None:
|
@@ -258,13 +272,19 @@ class ROIPropertyTree(BECWidget, QWidget):
|
|
258
272
|
|
259
273
|
if self._roi_draw_mode == "rect":
|
260
274
|
self._temp_roi.setSize([dx, dy])
|
261
|
-
|
275
|
+
elif self._roi_draw_mode == "circle":
|
262
276
|
r = max(
|
263
277
|
1, math.hypot(dx, dy)
|
264
278
|
) # radius never smaller than 1 for safety of handle mapping, otherwise SEGFAULT
|
265
279
|
d = 2 * r # diameter
|
266
280
|
self._temp_roi.setPos(self._roi_start_pos.x() - r, self._roi_start_pos.y() - r)
|
267
281
|
self._temp_roi.setSize([d, d])
|
282
|
+
elif self._roi_draw_mode == "ellipse":
|
283
|
+
# Safeguard: enforce a minimum ellipse width/height of 2 px
|
284
|
+
min_dim = 2.0
|
285
|
+
w = dx if abs(dx) >= min_dim else math.copysign(min_dim, dx or 1.0)
|
286
|
+
h = dy if abs(dy) >= min_dim else math.copysign(min_dim, dy or 1.0)
|
287
|
+
self._temp_roi.setSize([w, h])
|
268
288
|
return True
|
269
289
|
elif (
|
270
290
|
event.type() == QEvent.GraphicsSceneMouseRelease
|
@@ -750,6 +750,92 @@ class CircularROI(BaseROI, pg.CircleROI):
|
|
750
750
|
return None
|
751
751
|
|
752
752
|
|
753
|
+
class EllipticalROI(BaseROI, pg.EllipseROI):
|
754
|
+
"""
|
755
|
+
Elliptical Region of Interest with centre/width/height tracking and auto-labelling.
|
756
|
+
|
757
|
+
Mirrors the behaviour of ``CircularROI`` but supports independent
|
758
|
+
horizontal and vertical radii.
|
759
|
+
"""
|
760
|
+
|
761
|
+
centerChanged = Signal(float, float, float, float) # cx, cy, width, height
|
762
|
+
centerReleased = Signal(float, float, float, float)
|
763
|
+
|
764
|
+
def __init__(
|
765
|
+
self,
|
766
|
+
*,
|
767
|
+
pos,
|
768
|
+
size,
|
769
|
+
pen=None,
|
770
|
+
config: ConnectionConfig | None = None,
|
771
|
+
gui_id: str | None = None,
|
772
|
+
parent_image: Image | None = None,
|
773
|
+
label: str | None = None,
|
774
|
+
line_color: str | None = None,
|
775
|
+
line_width: int = 5,
|
776
|
+
movable: bool = True,
|
777
|
+
**extra_pg,
|
778
|
+
):
|
779
|
+
super().__init__(
|
780
|
+
config=config,
|
781
|
+
gui_id=gui_id,
|
782
|
+
parent_image=parent_image,
|
783
|
+
label=label,
|
784
|
+
line_color=line_color,
|
785
|
+
line_width=line_width,
|
786
|
+
pos=pos,
|
787
|
+
size=size,
|
788
|
+
pen=pen,
|
789
|
+
movable=movable,
|
790
|
+
**extra_pg,
|
791
|
+
)
|
792
|
+
|
793
|
+
self.sigRegionChanged.connect(self._on_region_changed)
|
794
|
+
self._adorner = LabelAdorner(self)
|
795
|
+
self.hoverPen = fn.mkPen(color=(255, 0, 0), width=3, style=QtCore.Qt.DashLine)
|
796
|
+
self.handleHoverPen = fn.mkPen("lime", width=4)
|
797
|
+
|
798
|
+
def add_scale_handle(self):
|
799
|
+
"""Add scale handles to the elliptical ROI."""
|
800
|
+
self._addHandles() # delegates to pg.EllipseROI
|
801
|
+
|
802
|
+
def _on_region_changed(self):
|
803
|
+
w = abs(self.state["size"][0])
|
804
|
+
h = abs(self.state["size"][1])
|
805
|
+
cx = self.pos().x() + w / 2
|
806
|
+
cy = self.pos().y() + h / 2
|
807
|
+
self.centerChanged.emit(cx, cy, w, h)
|
808
|
+
self.parent_plot_item.vb.update()
|
809
|
+
|
810
|
+
def mouseDragEvent(self, ev):
|
811
|
+
super().mouseDragEvent(ev)
|
812
|
+
if ev.isFinish():
|
813
|
+
w = abs(self.state["size"][0])
|
814
|
+
h = abs(self.state["size"][1])
|
815
|
+
cx = self.pos().x() + w / 2
|
816
|
+
cy = self.pos().y() + h / 2
|
817
|
+
self.centerReleased.emit(cx, cy, w, h)
|
818
|
+
|
819
|
+
def get_coordinates(self, typed: bool | None = None) -> dict | tuple:
|
820
|
+
"""
|
821
|
+
Return the ellipse's centre and size.
|
822
|
+
|
823
|
+
Args:
|
824
|
+
typed (bool | None): If True returns dict; otherwise tuple.
|
825
|
+
"""
|
826
|
+
if typed is None:
|
827
|
+
typed = self.description
|
828
|
+
|
829
|
+
w, h = map(abs, self.state["size"]) # raw diameters
|
830
|
+
major, minor = (w, h) if w >= h else (h, w)
|
831
|
+
cx = self.pos().x() + w / 2
|
832
|
+
cy = self.pos().y() + h / 2
|
833
|
+
|
834
|
+
if typed:
|
835
|
+
return {"center_x": cx, "center_y": cy, "major_axis": major, "minor_axis": minor}
|
836
|
+
return (cx, cy, major, minor)
|
837
|
+
|
838
|
+
|
753
839
|
class ROIController(QObject):
|
754
840
|
"""Manages a collection of ROIs (Regions of Interest) with palette-assigned colors.
|
755
841
|
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{bec_widgets-2.13.2 → bec_widgets-2.14.0}/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.13.2 → bec_widgets-2.14.0}/bec_widgets/examples/plugin_example_pyside/__init__.py
RENAMED
File without changes
|
{bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/examples/plugin_example_pyside/main.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{bec_widgets-2.13.2 → bec_widgets-2.14.0}/bec_widgets/examples/plugin_example_pyside/tictactoe.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
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
|