bec-widgets 2.6.0__tar.gz → 2.7.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.6.0 → bec_widgets-2.7.0}/CHANGELOG.md +16 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/PKG-INFO +1 -1
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/crosshair.py +35 -11
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/image/image.py +147 -11
- bec_widgets-2.7.0/bec_widgets/widgets/plots/image/image_roi_plot.py +37 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/image/toolbar_bundles/image_selection.py +4 -3
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/toolbar_bundles/mouse_interactions.py +1 -1
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/pyproject.toml +1 -1
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/.git_hooks/pre-commit +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/.github/ISSUE_TEMPLATE/documentation_update.md +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/.github/actions/bw_install/action.yml +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/.github/pull_request_template.md +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/.github/scripts/pr_issue_sync/pr_issue_sync.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/.github/scripts/pr_issue_sync/requirements.txt +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/.github/workflows/check_pr.yml +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/.github/workflows/ci.yml +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/.github/workflows/end2end-conda.yml +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/.github/workflows/formatter.yml +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/.github/workflows/generate-cli-check.yml +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/.github/workflows/pytest-matrix.yml +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/.github/workflows/pytest.yml +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/.github/workflows/semantic_release.yml +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/.github/workflows/sync-issues-pr.yml +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/.gitignore +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/.gitlab-ci.yml +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/.pylintrc +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/.readthedocs.yaml +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/LICENSE +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/README.md +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/applications/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/applications/bw_launch.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/applications/launch_window.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/assets/app_icons/BEC-General-App.png +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/assets/app_icons/alignment_1d.png +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/assets/app_icons/auto_update.png +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/assets/app_icons/bec_widgets_icon.png +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/assets/app_icons/ui_loader_tile.png +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/assets/app_icons/widget_launch_tile.png +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/cli/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/cli/client.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/cli/client_utils.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/cli/generate_cli.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/cli/rpc/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/cli/rpc/rpc_base.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/cli/rpc/rpc_register.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/cli/rpc/rpc_widget_handler.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/cli/server.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/examples/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/examples/general_app/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/examples/general_app/general_app.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/examples/general_app/general_app.ui +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/examples/general_app/web_links.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/examples/jupyter_console/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/examples/jupyter_console/jupyter_console_window.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/examples/plugin_example_pyside/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/examples/plugin_example_pyside/main.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/examples/plugin_example_pyside/registertictactoe.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/examples/plugin_example_pyside/taskmenuextension.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/examples/plugin_example_pyside/tictactoe.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/examples/plugin_example_pyside/tictactoeplugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/examples/plugin_example_pyside/tictactoetaskmenu.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/tests/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/tests/utils.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/bec_connector.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/bec_designer.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/bec_dispatcher.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/bec_plugin_helper.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/bec_signal_proxy.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/bec_table.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/bec_widget.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/collapsible_panel_manager.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/colors.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/compact_popup.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/container_utils.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/entry_validator.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/error_popups.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/expandable_frame.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/filter_io.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/forms_from_types/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/forms_from_types/forms.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/forms_from_types/items.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/fps_counter.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/generate_designer_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/layout_manager.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/linear_region_selector.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/name_utils.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/ophyd_kind_util.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/palette_viewer.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/plot_indicator_items.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/plugin_templates/plugin.template +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/plugin_templates/register.template +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/plugin_utils.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/redis_message_waiter.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/reference_utils.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/round_frame.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/rpc_decorator.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/rpc_server.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/serialization.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/settings_dialog.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/side_panel.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/thread_checker.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/toolbar.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/ui_loader.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/validator_delegate.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/widget_io.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/widget_state_manager.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/utils/yaml_dialog.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/containers/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/containers/auto_update/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/containers/auto_update/auto_updates.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/containers/dock/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/containers/dock/dock.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/containers/dock/dock_area.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/containers/dock/dock_area.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/containers/dock/dock_area_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/containers/dock/register_dock_area.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/containers/layout_manager/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/containers/layout_manager/layout_manager.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/containers/main_window/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/containers/main_window/addons/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/containers/main_window/addons/web_links.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/containers/main_window/main_window.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/buttons/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/buttons/button_abort/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/buttons/button_abort/abort_button.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/buttons/button_abort/abort_button_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/buttons/button_abort/button_abort.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/buttons/button_abort/register_abort_button.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/buttons/button_reset/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/buttons/button_reset/button_reset.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/buttons/button_reset/register_reset_button.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/buttons/button_reset/reset_button.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/buttons/button_reset/reset_button_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/buttons/button_resume/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/buttons/button_resume/button_resume.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/buttons/button_resume/register_resume_button.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/buttons/button_resume/resume_button.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/buttons/button_resume/resume_button_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/buttons/stop_button/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/buttons/stop_button/register_stop_button.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/buttons/stop_button/stop_button.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/buttons/stop_button/stop_button.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/buttons/stop_button/stop_button_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_control/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_control/position_indicator/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_control/position_indicator/position_indicator.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_control/position_indicator/position_indicator.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_control/position_indicator/position_indicator_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_control/position_indicator/register_position_indicator.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_control/positioner_box/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_control/positioner_box/_base/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_control/positioner_box/_base/positioner_box_base.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.ui +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/register_positioner_box.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box2_d.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box2_d_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box_2d.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box_2d.ui +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/register_positioner_box2_d.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line.ui +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/register_positioner_control_line.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_control/positioner_group/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_control/positioner_group/positioner_group.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_control/positioner_group/positioner_group.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_control/positioner_group/positioner_group_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_control/positioner_group/register_positioner_group.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_input/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_input/base_classes/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_input/base_classes/device_input_base.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_input/base_classes/device_signal_input_base.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_input/device_combobox/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_input/device_combobox/device_combo_box.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_input/device_combobox/device_combo_box_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_input/device_combobox/device_combobox.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_input/device_combobox/register_device_combo_box.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_input/device_line_edit/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_input/device_line_edit/device_line_edit.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_input/device_line_edit/device_line_edit.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_input/device_line_edit/device_line_edit_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_input/device_line_edit/register_device_line_edit.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_input/signal_combobox/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_input/signal_combobox/register_signal_combo_box.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_input/signal_combobox/signal_combo_box.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_input/signal_combobox/signal_combo_box_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_input/signal_combobox/signal_combobox.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_input/signal_line_edit/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_input/signal_line_edit/register_signal_line_edit.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_input/signal_line_edit/signal_line_edit.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_input/signal_line_edit/signal_line_edit.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/device_input/signal_line_edit/signal_line_edit_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/scan_control/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/scan_control/register_scan_control.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/scan_control/scan_control.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/scan_control/scan_control.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/scan_control/scan_control_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/control/scan_control/scan_group_box.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/dap/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/dap/dap_combo_box/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/dap/dap_combo_box/register_dap_combo_box.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/dap/lmfit_dialog/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/dap/lmfit_dialog/lm_fit_dialog.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/dap/lmfit_dialog/lm_fit_dialog_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog_compact.ui +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog_vertical.ui +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/dap/lmfit_dialog/register_lm_fit_dialog.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/editors/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/editors/console/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/editors/console/console.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/editors/console/console.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/editors/console/console_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/editors/console/register_console.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/editors/dict_backed_table.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/editors/jupyter_console/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/editors/jupyter_console/jupyter_console.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/editors/scan_metadata/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/editors/scan_metadata/_util.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/editors/scan_metadata/register_scan_metadata.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/editors/scan_metadata/scan_metadata.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/editors/scan_metadata/scan_metadata.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/editors/scan_metadata/scan_metadata_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/editors/text_box/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/editors/text_box/register_text_box.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/editors/text_box/text_box.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/editors/text_box/text_box.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/editors/text_box/text_box_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/editors/vscode/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/editors/vscode/register_vs_code_editor.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/editors/vscode/vs_code_editor.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/editors/vscode/vs_code_editor_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/editors/vscode/vscode.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/editors/web_console/register_web_console.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/editors/web_console/web_console.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/editors/web_console/web_console.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/editors/web_console/web_console_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/editors/website/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/editors/website/register_website_widget.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/editors/website/website.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/editors/website/website_widget.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/editors/website/website_widget_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/games/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/games/minesweeper.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/games/minesweeper.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/games/minesweeper_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/games/register_minesweeper.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/image/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/image/image.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/image/image_item.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/image/image_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/image/image_processor.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/image/register_image.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/image/setting_widgets/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/image/setting_widgets/image_roi_tree.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/image/toolbar_bundles/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/image/toolbar_bundles/processing.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/motor_map/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/motor_map/motor_map.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/motor_map/motor_map.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/motor_map/motor_map_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/motor_map/register_motor_map.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/motor_map/settings/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/motor_map/settings/motor_map_settings.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/motor_map/settings/motor_map_settings.ui +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/motor_map/toolbar_bundles/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/motor_map/toolbar_bundles/motor_selection.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/multi_waveform/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/multi_waveform/multi_waveform.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/multi_waveform/multi_waveform.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/multi_waveform/multi_waveform_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/multi_waveform/register_multi_waveform.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/multi_waveform/settings/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/multi_waveform/settings/control_panel.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/multi_waveform/settings/multi_waveform_controls.ui +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/multi_waveform/toolbar_bundles/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/multi_waveform/toolbar_bundles/monitor_selection.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/plot_base.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/roi/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/roi/image_roi.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/scatter_waveform/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/scatter_waveform/register_scatter_waveform.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/scatter_waveform/scatter_curve.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/scatter_waveform/scatter_waveform.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/scatter_waveform/scatter_waveform.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/scatter_waveform/scatter_waveform_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/scatter_waveform/settings/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/scatter_waveform/settings/scatter_curve_setting.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/scatter_waveform/settings/scatter_curve_settings_horizontal.ui +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/scatter_waveform/settings/scatter_curve_settings_vertical.ui +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/setting_menus/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/setting_menus/axis_settings.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/setting_menus/axis_settings_horizontal.ui +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/setting_menus/axis_settings_vertical.ui +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/toolbar_bundles/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/toolbar_bundles/plot_export.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/toolbar_bundles/roi_bundle.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/toolbar_bundles/save_state.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/waveform/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/waveform/curve.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/waveform/register_waveform.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/waveform/settings/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/waveform/settings/curve_settings/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/waveform/settings/curve_settings/curve_setting.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/waveform/settings/curve_settings/curve_tree.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/waveform/utils/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/waveform/utils/roi_manager.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/waveform/waveform.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/waveform/waveform.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/plots/waveform/waveform_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/progress/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/progress/bec_progressbar/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/progress/bec_progressbar/bec_progress_bar.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/progress/bec_progressbar/bec_progress_bar_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/progress/bec_progressbar/bec_progressbar.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/progress/bec_progressbar/register_bec_progress_bar.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/progress/ring_progress_bar/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/progress/ring_progress_bar/register_ring_progress_bar.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/progress/ring_progress_bar/ring.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/services/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/services/bec_queue/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/services/bec_queue/bec_queue.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/services/bec_queue/bec_queue.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/services/bec_queue/bec_queue_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/services/bec_queue/register_bec_queue.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/services/bec_status_box/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/services/bec_status_box/bec_status_box.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/services/bec_status_box/bec_status_box.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/services/bec_status_box/bec_status_box_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/services/bec_status_box/register_bec_status_box.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/services/bec_status_box/status_item.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/services/device_browser/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/services/device_browser/device_browser.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/services/device_browser/device_browser.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/services/device_browser/device_browser.ui +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/services/device_browser/device_browser_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/services/device_browser/device_item/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/services/device_browser/device_item/device_item.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/services/device_browser/register_device_browser.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/logpanel/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/logpanel/_util.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/logpanel/log_panel.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/logpanel/log_panel_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/logpanel/logpanel.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/logpanel/register_log_panel.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/spinbox/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/spinbox/bec_spin_box.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/spinbox/bec_spin_box_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/spinbox/decimal_spinbox.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/spinbox/register_bec_spin_box.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/spinner/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/spinner/register_spinner_widget.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/spinner/spinner.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/spinner/spinner_widget.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/spinner/spinner_widget_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/toggle/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/toggle/register_toggle_switch.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/toggle/toggle.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/toggle/toggle_switch.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/toggle/toggle_switch_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/visual/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/visual/color_button/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/visual/color_button/color_button.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/visual/color_button/color_button.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/visual/color_button/color_button_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/visual/color_button/register_color_button.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/visual/color_button_native/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/visual/color_button_native/color_button_native.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/visual/color_button_native/color_button_native.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/visual/color_button_native/color_button_native_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/visual/color_button_native/register_color_button_native.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/visual/colormap_selector/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/visual/colormap_selector/colormap_selector.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/visual/colormap_selector/colormap_selector.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/visual/colormap_selector/colormap_selector_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/visual/colormap_selector/register_colormap_selector.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/visual/colormap_widget/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/visual/colormap_widget/bec_color_map_widget.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/visual/colormap_widget/bec_color_map_widget_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/visual/colormap_widget/colormap_widget.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/visual/colormap_widget/register_bec_color_map_widget.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/visual/dark_mode_button/__init__.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button.pyproject +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button_plugin.py +0 -0
- {bec_widgets-2.6.0 → bec_widgets-2.7.0}/bec_widgets/widgets/utility/visual/dark_mode_button/register_dark_mode_button.py +0 -0
@@ -1,6 +1,22 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
3
|
|
4
|
+
## v2.7.0 (2025-05-26)
|
5
|
+
|
6
|
+
### Bug Fixes
|
7
|
+
|
8
|
+
- **image/image_selecetion**: Toolbar selection tool size adjusted
|
9
|
+
([`e12e9e5`](https://github.com/bec-project/bec_widgets/commit/e12e9e534d6913223b741bff31bed6674ae4c0e6))
|
10
|
+
|
11
|
+
- **plot_base/mouse_interactions.py**: Fixed parent
|
12
|
+
([`66e9445`](https://github.com/bec-project/bec_widgets/commit/66e9445760f2796c008d08feba54c3d48e4a9cfb))
|
13
|
+
|
14
|
+
### Features
|
15
|
+
|
16
|
+
- **image**: Roi plots with crosshair cuts added
|
17
|
+
([`ce88787`](https://github.com/bec-project/bec_widgets/commit/ce88787e881d12384dd3a25b75fadda1f2280c81))
|
18
|
+
|
19
|
+
|
4
20
|
## v2.6.0 (2025-05-26)
|
5
21
|
|
6
22
|
### Bug Fixes
|
@@ -85,7 +85,8 @@ class Crosshair(QObject):
|
|
85
85
|
self.items = []
|
86
86
|
self.marker_moved_1d = {}
|
87
87
|
self.marker_clicked_1d = {}
|
88
|
-
self.
|
88
|
+
self.marker_2d_row = None
|
89
|
+
self.marker_2d_col = None
|
89
90
|
self.update_markers()
|
90
91
|
self.check_log()
|
91
92
|
self.check_derivatives()
|
@@ -195,13 +196,23 @@ class Crosshair(QObject):
|
|
195
196
|
marker_clicked_list.append(marker_clicked)
|
196
197
|
self.marker_clicked_1d[name] = marker_clicked_list
|
197
198
|
elif isinstance(item, pg.ImageItem): # 2D plot
|
198
|
-
if self.
|
199
|
+
if self.marker_2d_row is not None and self.marker_2d_col is not None:
|
199
200
|
continue
|
200
|
-
|
201
|
-
|
201
|
+
# Create horizontal ROI for row highlighting
|
202
|
+
if item.image is None:
|
203
|
+
continue
|
204
|
+
self.marker_2d_row = pg.ROI(
|
205
|
+
[0, 0], size=[item.image.shape[0], 1], pen=pg.mkPen("r", width=2), movable=False
|
206
|
+
)
|
207
|
+
self.marker_2d_row.skip_auto_range = True
|
208
|
+
self.plot_item.addItem(self.marker_2d_row)
|
209
|
+
|
210
|
+
# Create vertical ROI for column highlighting
|
211
|
+
self.marker_2d_col = pg.ROI(
|
212
|
+
[0, 0], size=[1, item.image.shape[1]], pen=pg.mkPen("r", width=2), movable=False
|
202
213
|
)
|
203
|
-
self.
|
204
|
-
self.plot_item.addItem(self.
|
214
|
+
self.marker_2d_col.skip_auto_range = True
|
215
|
+
self.plot_item.addItem(self.marker_2d_col)
|
205
216
|
|
206
217
|
def snap_to_data(
|
207
218
|
self, x: float, y: float
|
@@ -243,6 +254,8 @@ class Crosshair(QObject):
|
|
243
254
|
elif isinstance(item, pg.ImageItem): # 2D plot
|
244
255
|
name = item.config.monitor or str(id(item))
|
245
256
|
image_2d = item.image
|
257
|
+
if image_2d is None:
|
258
|
+
continue
|
246
259
|
# Clip the x and y values to the image dimensions to avoid out of bounds errors
|
247
260
|
y_values[name] = int(np.clip(y, 0, image_2d.shape[1] - 1))
|
248
261
|
x_values[name] = int(np.clip(x, 0, image_2d.shape[0] - 1))
|
@@ -330,7 +343,10 @@ class Crosshair(QObject):
|
|
330
343
|
x, y = x_snap_values[name], y_snap_values[name]
|
331
344
|
if x is None or y is None:
|
332
345
|
continue
|
333
|
-
|
346
|
+
# Set position of horizontal ROI (row)
|
347
|
+
self.marker_2d_row.setPos([0, y])
|
348
|
+
# Set position of vertical ROI (column)
|
349
|
+
self.marker_2d_col.setPos([x, 0])
|
334
350
|
coordinate_to_emit = (name, x, y)
|
335
351
|
self.coordinatesChanged2D.emit(coordinate_to_emit)
|
336
352
|
else:
|
@@ -384,7 +400,10 @@ class Crosshair(QObject):
|
|
384
400
|
x, y = x_snap_values[name], y_snap_values[name]
|
385
401
|
if x is None or y is None:
|
386
402
|
continue
|
387
|
-
|
403
|
+
# Set position of horizontal ROI (row)
|
404
|
+
self.marker_2d_row.setPos([0, y])
|
405
|
+
# Set position of vertical ROI (column)
|
406
|
+
self.marker_2d_col.setPos([x, 0])
|
388
407
|
coordinate_to_emit = (name, x, y)
|
389
408
|
self.coordinatesClicked2D.emit(coordinate_to_emit)
|
390
409
|
else:
|
@@ -428,6 +447,8 @@ class Crosshair(QObject):
|
|
428
447
|
for item in self.items:
|
429
448
|
if isinstance(item, pg.ImageItem):
|
430
449
|
image = item.image
|
450
|
+
if image is None:
|
451
|
+
continue
|
431
452
|
ix = int(np.clip(x, 0, image.shape[0] - 1))
|
432
453
|
iy = int(np.clip(y, 0, image.shape[1] - 1))
|
433
454
|
intensity = image[ix, iy]
|
@@ -450,9 +471,12 @@ class Crosshair(QObject):
|
|
450
471
|
self.clear_markers()
|
451
472
|
|
452
473
|
def cleanup(self):
|
453
|
-
if self.
|
454
|
-
self.plot_item.removeItem(self.
|
455
|
-
self.
|
474
|
+
if self.marker_2d_row is not None:
|
475
|
+
self.plot_item.removeItem(self.marker_2d_row)
|
476
|
+
self.marker_2d_row = None
|
477
|
+
if self.marker_2d_col is not None:
|
478
|
+
self.plot_item.removeItem(self.marker_2d_col)
|
479
|
+
self.marker_2d_col = None
|
456
480
|
self.plot_item.removeItem(self.v_line)
|
457
481
|
self.plot_item.removeItem(self.h_line)
|
458
482
|
self.plot_item.removeItem(self.coord_label)
|
@@ -13,8 +13,10 @@ from qtpy.QtWidgets import QDialog, QVBoxLayout, QWidget
|
|
13
13
|
from bec_widgets.utils import ConnectionConfig
|
14
14
|
from bec_widgets.utils.colors import Colors
|
15
15
|
from bec_widgets.utils.error_popups import SafeProperty, SafeSlot
|
16
|
+
from bec_widgets.utils.side_panel import SidePanel
|
16
17
|
from bec_widgets.utils.toolbar import MaterialIconAction, SwitchableToolBarAction
|
17
18
|
from bec_widgets.widgets.plots.image.image_item import ImageItem
|
19
|
+
from bec_widgets.widgets.plots.image.image_roi_plot import ImageROIPlot
|
18
20
|
from bec_widgets.widgets.plots.image.setting_widgets.image_roi_tree import ROIPropertyTree
|
19
21
|
from bec_widgets.widgets.plots.image.toolbar_bundles.image_selection import (
|
20
22
|
MonitorSelectionToolbarBundle,
|
@@ -123,6 +125,7 @@ class Image(PlotBase):
|
|
123
125
|
"rois",
|
124
126
|
]
|
125
127
|
sync_colorbar_with_autorange = Signal()
|
128
|
+
image_updated = Signal()
|
126
129
|
|
127
130
|
def __init__(
|
128
131
|
self,
|
@@ -139,6 +142,8 @@ class Image(PlotBase):
|
|
139
142
|
self._color_bar = None
|
140
143
|
self._main_image = ImageItem()
|
141
144
|
self.roi_controller = ROIController(colormap="viridis")
|
145
|
+
self.x_roi = None
|
146
|
+
self.y_roi = None
|
142
147
|
super().__init__(
|
143
148
|
parent=parent, config=config, client=client, gui_id=gui_id, popups=popups, **kwargs
|
144
149
|
)
|
@@ -150,24 +155,60 @@ class Image(PlotBase):
|
|
150
155
|
# Default Color map to plasma
|
151
156
|
self.color_map = "plasma"
|
152
157
|
|
158
|
+
# Initialize ROI plots and side panels
|
159
|
+
self._add_roi_plots()
|
160
|
+
|
153
161
|
self.roi_manager_dialog = None
|
154
162
|
|
163
|
+
# Refresh theme for ROI plots
|
164
|
+
self._update_theme()
|
165
|
+
|
155
166
|
################################################################################
|
156
167
|
# Widget Specific GUI interactions
|
157
168
|
################################################################################
|
169
|
+
def apply_theme(self, theme: str):
|
170
|
+
super().apply_theme(theme)
|
171
|
+
if self.x_roi is not None and self.y_roi is not None:
|
172
|
+
self.x_roi.apply_theme(theme)
|
173
|
+
self.y_roi.apply_theme(theme)
|
174
|
+
|
158
175
|
def _init_toolbar(self):
|
159
176
|
|
160
177
|
# add to the first position
|
161
178
|
self.selection_bundle = MonitorSelectionToolbarBundle(
|
162
179
|
bundle_id="selection", target_widget=self
|
163
180
|
)
|
164
|
-
self.toolbar.add_bundle(self.selection_bundle, self)
|
181
|
+
self.toolbar.add_bundle(bundle=self.selection_bundle, target_widget=self)
|
165
182
|
|
166
183
|
super()._init_toolbar()
|
167
184
|
|
168
185
|
# Image specific changes to PlotBase toolbar
|
169
186
|
self.toolbar.widgets["reset_legend"].action.setVisible(False)
|
170
187
|
|
188
|
+
# ROI Bundle replacement with switchable crosshair
|
189
|
+
self.toolbar.remove_bundle("roi")
|
190
|
+
crosshair = MaterialIconAction(
|
191
|
+
icon_name="point_scan", tooltip="Show Crosshair", checkable=True
|
192
|
+
)
|
193
|
+
crosshair_roi = MaterialIconAction(
|
194
|
+
icon_name="my_location",
|
195
|
+
tooltip="Show Crosshair with ROI plots",
|
196
|
+
checkable=True,
|
197
|
+
parent=self,
|
198
|
+
)
|
199
|
+
crosshair_roi.action.toggled.connect(self.toggle_roi_panels)
|
200
|
+
crosshair.action.toggled.connect(self.toggle_crosshair)
|
201
|
+
switch_crosshair = SwitchableToolBarAction(
|
202
|
+
actions={"crosshair_simple": crosshair, "crosshair_roi": crosshair_roi},
|
203
|
+
initial_action="crosshair_simple",
|
204
|
+
tooltip="Crosshair",
|
205
|
+
checkable=True,
|
206
|
+
parent=self,
|
207
|
+
)
|
208
|
+
self.toolbar.add_action(
|
209
|
+
action_id="switch_crosshair", action=switch_crosshair, target_widget=self
|
210
|
+
)
|
211
|
+
|
171
212
|
# Lock aspect ratio button
|
172
213
|
self.lock_aspect_ratio_action = MaterialIconAction(
|
173
214
|
icon_name="aspect_ratio", tooltip="Lock Aspect Ratio", checkable=True, parent=self
|
@@ -216,11 +257,8 @@ class Image(PlotBase):
|
|
216
257
|
parent=self,
|
217
258
|
)
|
218
259
|
|
219
|
-
self.toolbar.
|
220
|
-
|
221
|
-
action_id="autorange_image",
|
222
|
-
action=self.autorange_switch,
|
223
|
-
target_widget=self,
|
260
|
+
self.toolbar.add_action(
|
261
|
+
action_id="autorange_image", action=self.autorange_switch, target_widget=self
|
224
262
|
)
|
225
263
|
|
226
264
|
self.autorange_mean_action.action.toggled.connect(
|
@@ -252,11 +290,8 @@ class Image(PlotBase):
|
|
252
290
|
parent=self,
|
253
291
|
)
|
254
292
|
|
255
|
-
self.toolbar.
|
256
|
-
|
257
|
-
action_id="switch_colorbar",
|
258
|
-
action=self.colorbar_switch,
|
259
|
-
target_widget=self,
|
293
|
+
self.toolbar.add_action(
|
294
|
+
action_id="switch_colorbar", action=self.colorbar_switch, target_widget=self
|
260
295
|
)
|
261
296
|
|
262
297
|
self.simple_colorbar_action.action.toggled.connect(
|
@@ -430,6 +465,101 @@ class Image(PlotBase):
|
|
430
465
|
else:
|
431
466
|
raise ValueError("roi must be an int index or str name")
|
432
467
|
|
468
|
+
def _add_roi_plots(self):
|
469
|
+
"""
|
470
|
+
Initialize the ROI plots and side panels.
|
471
|
+
"""
|
472
|
+
# Create ROI plot widgets
|
473
|
+
self.x_roi = ImageROIPlot(parent=self)
|
474
|
+
self.y_roi = ImageROIPlot(parent=self)
|
475
|
+
self.x_roi.apply_theme("dark")
|
476
|
+
self.y_roi.apply_theme("dark")
|
477
|
+
|
478
|
+
# Set titles for the plots
|
479
|
+
self.x_roi.plot_item.setTitle("X ROI")
|
480
|
+
self.y_roi.plot_item.setTitle("Y ROI")
|
481
|
+
|
482
|
+
# Create side panels
|
483
|
+
self.side_panel_x = SidePanel(
|
484
|
+
parent=self, orientation="bottom", panel_max_width=200, show_toolbar=False
|
485
|
+
)
|
486
|
+
self.side_panel_y = SidePanel(
|
487
|
+
parent=self, orientation="left", panel_max_width=200, show_toolbar=False
|
488
|
+
)
|
489
|
+
|
490
|
+
# Add ROI plots to side panels
|
491
|
+
self.x_panel_index = self.side_panel_x.add_menu(widget=self.x_roi)
|
492
|
+
self.y_panel_index = self.side_panel_y.add_menu(widget=self.y_roi)
|
493
|
+
|
494
|
+
# # Add side panels to the layout
|
495
|
+
self.layout_manager.add_widget_relative(
|
496
|
+
self.side_panel_x, self.round_plot_widget, position="bottom", shift_direction="down"
|
497
|
+
)
|
498
|
+
self.layout_manager.add_widget_relative(
|
499
|
+
self.side_panel_y, self.round_plot_widget, position="left", shift_direction="right"
|
500
|
+
)
|
501
|
+
|
502
|
+
def toggle_roi_panels(self, checked: bool):
|
503
|
+
"""
|
504
|
+
Show or hide the ROI panels based on the test action toggle state.
|
505
|
+
|
506
|
+
Args:
|
507
|
+
checked (bool): Whether the test action is checked.
|
508
|
+
"""
|
509
|
+
if checked:
|
510
|
+
# Show the ROI panels
|
511
|
+
self.hook_crosshair()
|
512
|
+
self.side_panel_x.show_panel(self.x_panel_index)
|
513
|
+
self.side_panel_y.show_panel(self.y_panel_index)
|
514
|
+
self.crosshair.coordinatesChanged2D.connect(self.update_image_slices)
|
515
|
+
self.image_updated.connect(self.update_image_slices)
|
516
|
+
else:
|
517
|
+
self.unhook_crosshair()
|
518
|
+
# Hide the ROI panels
|
519
|
+
self.side_panel_x.hide_panel()
|
520
|
+
self.side_panel_y.hide_panel()
|
521
|
+
self.image_updated.disconnect(self.update_image_slices)
|
522
|
+
|
523
|
+
@SafeSlot()
|
524
|
+
def update_image_slices(self, coordinates: tuple[int, int, int] = None):
|
525
|
+
"""
|
526
|
+
Update the image slices based on the crosshair position.
|
527
|
+
|
528
|
+
Args:
|
529
|
+
coordinates(tuple): The coordinates of the crosshair.
|
530
|
+
"""
|
531
|
+
if coordinates is None:
|
532
|
+
# Try to get coordinates from crosshair position (like in crosshair mouse_moved)
|
533
|
+
if (
|
534
|
+
hasattr(self, "crosshair")
|
535
|
+
and hasattr(self.crosshair, "v_line")
|
536
|
+
and hasattr(self.crosshair, "h_line")
|
537
|
+
):
|
538
|
+
x = int(round(self.crosshair.v_line.value()))
|
539
|
+
y = int(round(self.crosshair.h_line.value()))
|
540
|
+
else:
|
541
|
+
return
|
542
|
+
else:
|
543
|
+
x = coordinates[1]
|
544
|
+
y = coordinates[2]
|
545
|
+
image = self._main_image.image
|
546
|
+
if image is None:
|
547
|
+
return
|
548
|
+
max_row, max_col = image.shape[0] - 1, image.shape[1] - 1
|
549
|
+
row, col = x, y
|
550
|
+
if not (0 <= row <= max_row and 0 <= col <= max_col):
|
551
|
+
return
|
552
|
+
# Horizontal slice
|
553
|
+
h_slice = image[:, col]
|
554
|
+
x_axis = np.arange(h_slice.shape[0])
|
555
|
+
self.x_roi.plot_item.clear()
|
556
|
+
self.x_roi.plot_item.plot(x_axis, h_slice, pen=pg.mkPen(self.x_roi.curve_color, width=3))
|
557
|
+
# Vertical slice
|
558
|
+
v_slice = image[row, :]
|
559
|
+
y_axis = np.arange(v_slice.shape[0])
|
560
|
+
self.y_roi.plot_item.clear()
|
561
|
+
self.y_roi.plot_item.plot(v_slice, y_axis, pen=pg.mkPen(self.y_roi.curve_color, width=3))
|
562
|
+
|
433
563
|
################################################################################
|
434
564
|
# Widget Specific Properties
|
435
565
|
################################################################################
|
@@ -984,6 +1114,7 @@ class Image(PlotBase):
|
|
984
1114
|
self._main_image.set_data(image_buffer)
|
985
1115
|
if self._color_bar is not None:
|
986
1116
|
self._color_bar.blockSignals(False)
|
1117
|
+
self.image_updated.emit()
|
987
1118
|
|
988
1119
|
def adjust_image_buffer(self, image: ImageItem, new_data: np.ndarray) -> np.ndarray:
|
989
1120
|
"""
|
@@ -1035,6 +1166,7 @@ class Image(PlotBase):
|
|
1035
1166
|
self._main_image.set_data(data)
|
1036
1167
|
if self._color_bar is not None:
|
1037
1168
|
self._color_bar.blockSignals(False)
|
1169
|
+
self.image_updated.emit()
|
1038
1170
|
|
1039
1171
|
################################################################################
|
1040
1172
|
# Clean up
|
@@ -1090,6 +1222,10 @@ class Image(PlotBase):
|
|
1090
1222
|
self.toolbar.widgets["monitor"].widget.close()
|
1091
1223
|
self.toolbar.widgets["monitor"].widget.deleteLater()
|
1092
1224
|
|
1225
|
+
# ROI plots cleanup
|
1226
|
+
self.x_roi.cleanup_pyqtgraph()
|
1227
|
+
self.y_roi.cleanup_pyqtgraph()
|
1228
|
+
|
1093
1229
|
super().cleanup()
|
1094
1230
|
|
1095
1231
|
|
@@ -0,0 +1,37 @@
|
|
1
|
+
import pyqtgraph as pg
|
2
|
+
|
3
|
+
from bec_widgets.utils.round_frame import RoundedFrame
|
4
|
+
from bec_widgets.widgets.plots.plot_base import BECViewBox
|
5
|
+
|
6
|
+
|
7
|
+
class ImageROIPlot(RoundedFrame):
|
8
|
+
"""
|
9
|
+
A widget for displaying an image with a region of interest (ROI) overlay.
|
10
|
+
"""
|
11
|
+
|
12
|
+
def __init__(self, parent=None):
|
13
|
+
super().__init__(parent=parent)
|
14
|
+
|
15
|
+
self.content_widget = pg.GraphicsLayoutWidget(self)
|
16
|
+
self.layout.addWidget(self.content_widget)
|
17
|
+
self.plot_item = pg.PlotItem(viewBox=BECViewBox(enableMenu=True))
|
18
|
+
self.content_widget.addItem(self.plot_item)
|
19
|
+
self.curve_color = "w"
|
20
|
+
|
21
|
+
self.apply_plot_widget_style()
|
22
|
+
|
23
|
+
def apply_theme(self, theme: str):
|
24
|
+
if theme == "dark":
|
25
|
+
self.curve_color = "w"
|
26
|
+
else:
|
27
|
+
self.curve_color = "k"
|
28
|
+
for curve in self.plot_item.curves:
|
29
|
+
curve.setPen(pg.mkPen(self.curve_color, width=3))
|
30
|
+
super().apply_theme(theme)
|
31
|
+
|
32
|
+
def cleanup_pyqtgraph(self):
|
33
|
+
"""Cleanup pyqtgraph items."""
|
34
|
+
self.plot_item.vb.menu.close()
|
35
|
+
self.plot_item.vb.menu.deleteLater()
|
36
|
+
self.plot_item.ctrlMenu.close()
|
37
|
+
self.plot_item.ctrlMenu.deleteLater()
|
@@ -35,19 +35,20 @@ class MonitorSelectionToolbarBundle(ToolbarBundle):
|
|
35
35
|
self.device_combo_box.addItem("", None)
|
36
36
|
self.device_combo_box.setCurrentText("")
|
37
37
|
self.device_combo_box.setToolTip("Select Device")
|
38
|
+
self.device_combo_box.setFixedWidth(150)
|
38
39
|
self.device_combo_box.setItemDelegate(NoCheckDelegate(self.device_combo_box))
|
39
40
|
|
40
|
-
self.add_action("monitor", WidgetAction(widget=self.device_combo_box, adjust_size=
|
41
|
+
self.add_action("monitor", WidgetAction(widget=self.device_combo_box, adjust_size=False))
|
41
42
|
|
42
43
|
# 2) Dimension combo box
|
43
44
|
self.dim_combo_box = QComboBox(parent=self.target_widget)
|
44
45
|
self.dim_combo_box.addItems(["auto", "1d", "2d"])
|
45
46
|
self.dim_combo_box.setCurrentText("auto")
|
46
47
|
self.dim_combo_box.setToolTip("Monitor Dimension")
|
47
|
-
self.dim_combo_box.setFixedWidth(
|
48
|
+
self.dim_combo_box.setFixedWidth(100)
|
48
49
|
self.dim_combo_box.setItemDelegate(NoCheckDelegate(self.dim_combo_box))
|
49
50
|
|
50
|
-
self.add_action("dim_combo", WidgetAction(widget=self.dim_combo_box, adjust_size=
|
51
|
+
self.add_action("dim_combo", WidgetAction(widget=self.dim_combo_box, adjust_size=False))
|
51
52
|
|
52
53
|
# Connect slots, a device will be connected upon change of any combobox
|
53
54
|
self.device_combo_box.currentTextChanged.connect(lambda: self.connect_monitor())
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
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.6.0 → bec_widgets-2.7.0}/bec_widgets/examples/plugin_example_pyside/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{bec_widgets-2.6.0 → bec_widgets-2.7.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
|