bec-widgets 2.17.0__tar.gz → 2.19.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.17.0 → bec_widgets-2.19.0}/.github/workflows/formatter.yml +1 -1
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/CHANGELOG.md +49 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/PKG-INFO +1 -1
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/tests/utils.py +15 -3
- bec_widgets-2.19.0/bec_widgets/utils/filter_io.py +272 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_input/base_classes/device_input_base.py +16 -16
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_input/base_classes/device_signal_input_base.py +22 -12
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_input/device_combobox/device_combobox.py +2 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_input/signal_combobox/signal_combobox.py +9 -5
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/waveform/settings/curve_settings/curve_setting.py +7 -2
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/waveform/settings/curve_settings/curve_tree.py +62 -19
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/waveform/waveform.py +0 -1
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/services/device_browser/device_item/device_item.py +25 -5
- bec_widgets-2.19.0/bec_widgets/widgets/services/device_browser/device_item/device_signal_display.py +102 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/signal_label/signal_label.py +24 -10
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/pyproject.toml +1 -1
- bec_widgets-2.17.0/bec_widgets/utils/filter_io.py +0 -156
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/.git_hooks/pre-commit +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/.github/ISSUE_TEMPLATE/documentation_update.md +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/.github/actions/bw_install/action.yml +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/.github/pull_request_template.md +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/.github/scripts/pr_issue_sync/pr_issue_sync.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/.github/scripts/pr_issue_sync/requirements.txt +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/.github/workflows/check_pr.yml +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/.github/workflows/ci.yml +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/.github/workflows/end2end-conda.yml +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/.github/workflows/generate-cli-check.yml +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/.github/workflows/pytest-matrix.yml +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/.github/workflows/pytest.yml +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/.github/workflows/semantic_release.yml +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/.github/workflows/stale-issues.yml +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/.github/workflows/sync-issues-pr.yml +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/.gitignore +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/.gitlab-ci.yml +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/.pylintrc +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/.readthedocs.yaml +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/LICENSE +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/README.md +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/applications/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/applications/bw_launch.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/applications/launch_window.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/assets/app_icons/BEC-General-App.png +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/assets/app_icons/alignment_1d.png +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/assets/app_icons/auto_update.png +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/assets/app_icons/bec_widgets_icon.png +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/assets/app_icons/ui_loader_tile.png +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/assets/app_icons/widget_launch_tile.png +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/cli/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/cli/client.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/cli/client_utils.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/cli/generate_cli.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/cli/rpc/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/cli/rpc/rpc_base.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/cli/rpc/rpc_register.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/cli/rpc/rpc_widget_handler.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/cli/server.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/examples/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/examples/general_app/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/examples/general_app/general_app.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/examples/general_app/general_app.ui +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/examples/general_app/web_links.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/examples/jupyter_console/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/examples/jupyter_console/jupyter_console_window.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/examples/plugin_example_pyside/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/examples/plugin_example_pyside/main.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/examples/plugin_example_pyside/registertictactoe.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/examples/plugin_example_pyside/taskmenuextension.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/examples/plugin_example_pyside/tictactoe.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/examples/plugin_example_pyside/tictactoeplugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/examples/plugin_example_pyside/tictactoetaskmenu.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/tests/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/bec_connector.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/bec_designer.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/bec_dispatcher.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/bec_plugin_helper.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/bec_signal_proxy.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/bec_table.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/bec_widget.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/clickable_label.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/collapsible_panel_manager.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/colors.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/compact_popup.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/container_utils.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/crosshair.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/entry_validator.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/error_popups.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/expandable_frame.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/forms_from_types/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/forms_from_types/forms.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/forms_from_types/items.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/forms_from_types/styles.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/fps_counter.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/generate_designer_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/layout_manager.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/linear_region_selector.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/name_utils.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/ophyd_kind_util.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/palette_viewer.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/plot_indicator_items.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/plugin_templates/plugin.template +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/plugin_templates/register.template +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/plugin_utils.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/redis_message_waiter.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/reference_utils.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/round_frame.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/rpc_decorator.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/rpc_server.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/serialization.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/settings_dialog.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/side_panel.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/thread_checker.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/toolbar.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/ui_loader.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/validator_delegate.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/widget_io.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/widget_state_manager.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/utils/yaml_dialog.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/containers/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/containers/auto_update/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/containers/auto_update/auto_updates.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/containers/dock/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/containers/dock/dock.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/containers/dock/dock_area.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/containers/dock/dock_area.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/containers/dock/dock_area_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/containers/dock/register_dock_area.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/containers/layout_manager/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/containers/layout_manager/layout_manager.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/containers/main_window/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/containers/main_window/addons/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/containers/main_window/addons/scroll_label.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/containers/main_window/addons/web_links.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/containers/main_window/main_window.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/buttons/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/buttons/button_abort/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/buttons/button_abort/abort_button.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/buttons/button_abort/abort_button_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/buttons/button_abort/button_abort.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/buttons/button_abort/register_abort_button.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/buttons/button_reset/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/buttons/button_reset/button_reset.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/buttons/button_reset/register_reset_button.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/buttons/button_reset/reset_button.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/buttons/button_reset/reset_button_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/buttons/button_resume/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/buttons/button_resume/button_resume.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/buttons/button_resume/register_resume_button.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/buttons/button_resume/resume_button.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/buttons/button_resume/resume_button_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/buttons/stop_button/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/buttons/stop_button/register_stop_button.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/buttons/stop_button/stop_button.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/buttons/stop_button/stop_button.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/buttons/stop_button/stop_button_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_control/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_control/position_indicator/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_control/position_indicator/position_indicator.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_control/position_indicator/position_indicator.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_control/position_indicator/position_indicator_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_control/position_indicator/register_position_indicator.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_control/positioner_box/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_control/positioner_box/_base/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_control/positioner_box/_base/positioner_box_base.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box.ui +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/positioner_box_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box/register_positioner_box.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box2_d.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box2_d_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box_2d.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/positioner_box_2d.ui +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_box_2d/register_positioner_box2_d.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line.ui +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/positioner_control_line_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_control/positioner_box/positioner_control_line/register_positioner_control_line.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_control/positioner_group/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_control/positioner_group/positioner_group.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_control/positioner_group/positioner_group.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_control/positioner_group/positioner_group_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_control/positioner_group/register_positioner_group.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_input/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_input/base_classes/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_input/device_combobox/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_input/device_combobox/device_combo_box.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_input/device_combobox/device_combo_box_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_input/device_combobox/register_device_combo_box.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_input/device_line_edit/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_input/device_line_edit/device_line_edit.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_input/device_line_edit/device_line_edit.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_input/device_line_edit/device_line_edit_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_input/device_line_edit/register_device_line_edit.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_input/signal_combobox/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_input/signal_combobox/register_signal_combo_box.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_input/signal_combobox/signal_combo_box.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_input/signal_combobox/signal_combo_box_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_input/signal_line_edit/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_input/signal_line_edit/register_signal_line_edit.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_input/signal_line_edit/signal_line_edit.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_input/signal_line_edit/signal_line_edit.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/device_input/signal_line_edit/signal_line_edit_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/scan_control/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/scan_control/register_scan_control.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/scan_control/scan_control.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/scan_control/scan_control.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/scan_control/scan_control_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/control/scan_control/scan_group_box.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/dap/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/dap/dap_combo_box/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/dap/dap_combo_box/dap_combo_box_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/dap/dap_combo_box/register_dap_combo_box.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/dap/lmfit_dialog/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/dap/lmfit_dialog/lm_fit_dialog.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/dap/lmfit_dialog/lm_fit_dialog_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog_compact.ui +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/dap/lmfit_dialog/lmfit_dialog_vertical.ui +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/dap/lmfit_dialog/register_lm_fit_dialog.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/editors/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/editors/dict_backed_table.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/editors/jupyter_console/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/editors/jupyter_console/jupyter_console.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/editors/scan_metadata/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/editors/scan_metadata/_util.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/editors/scan_metadata/register_scan_metadata.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/editors/scan_metadata/scan_metadata.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/editors/scan_metadata/scan_metadata.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/editors/scan_metadata/scan_metadata_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/editors/text_box/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/editors/text_box/register_text_box.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/editors/text_box/text_box.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/editors/text_box/text_box.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/editors/text_box/text_box_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/editors/vscode/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/editors/vscode/register_vs_code_editor.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/editors/vscode/vs_code_editor.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/editors/vscode/vs_code_editor_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/editors/vscode/vscode.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/editors/web_console/register_web_console.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/editors/web_console/web_console.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/editors/web_console/web_console.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/editors/web_console/web_console_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/editors/website/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/editors/website/register_website_widget.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/editors/website/website.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/editors/website/website_widget.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/editors/website/website_widget_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/games/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/games/minesweeper.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/games/minesweeper.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/games/minesweeper_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/games/register_minesweeper.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/image/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/image/image.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/image/image.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/image/image_base.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/image/image_item.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/image/image_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/image/image_processor.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/image/image_roi_plot.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/image/register_image.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/image/setting_widgets/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/image/setting_widgets/image_roi_tree.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/image/toolbar_bundles/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/image/toolbar_bundles/image_selection.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/image/toolbar_bundles/processing.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/motor_map/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/motor_map/motor_map.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/motor_map/motor_map.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/motor_map/motor_map_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/motor_map/register_motor_map.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/motor_map/settings/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/motor_map/settings/motor_map_settings.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/motor_map/settings/motor_map_settings.ui +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/motor_map/toolbar_bundles/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/motor_map/toolbar_bundles/motor_selection.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/multi_waveform/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/multi_waveform/multi_waveform.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/multi_waveform/multi_waveform.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/multi_waveform/multi_waveform_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/multi_waveform/register_multi_waveform.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/multi_waveform/settings/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/multi_waveform/settings/control_panel.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/multi_waveform/settings/multi_waveform_controls.ui +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/multi_waveform/toolbar_bundles/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/multi_waveform/toolbar_bundles/monitor_selection.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/plot_base.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/roi/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/roi/image_roi.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/scatter_waveform/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/scatter_waveform/register_scatter_waveform.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/scatter_waveform/scatter_curve.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/scatter_waveform/scatter_waveform.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/scatter_waveform/scatter_waveform.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/scatter_waveform/scatter_waveform_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/scatter_waveform/settings/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/scatter_waveform/settings/scatter_curve_setting.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/scatter_waveform/settings/scatter_curve_settings_horizontal.ui +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/scatter_waveform/settings/scatter_curve_settings_vertical.ui +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/setting_menus/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/setting_menus/axis_settings.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/setting_menus/axis_settings_horizontal.ui +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/setting_menus/axis_settings_vertical.ui +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/toolbar_bundles/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/toolbar_bundles/mouse_interactions.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/toolbar_bundles/plot_export.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/toolbar_bundles/roi_bundle.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/toolbar_bundles/save_state.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/waveform/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/waveform/curve.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/waveform/register_waveform.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/waveform/settings/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/waveform/settings/curve_settings/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/waveform/utils/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/waveform/utils/roi_manager.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/waveform/waveform.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/plots/waveform/waveform_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/progress/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/progress/bec_progressbar/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/progress/bec_progressbar/bec_progress_bar.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/progress/bec_progressbar/bec_progress_bar_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/progress/bec_progressbar/bec_progressbar.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/progress/bec_progressbar/register_bec_progress_bar.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/progress/ring_progress_bar/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/progress/ring_progress_bar/register_ring_progress_bar.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/progress/ring_progress_bar/ring.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/progress/ring_progress_bar/ring_progress_bar_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/progress/scan_progressbar/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/progress/scan_progressbar/register_scan_progress_bar.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/progress/scan_progressbar/scan_progress_bar.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/progress/scan_progressbar/scan_progress_bar_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/progress/scan_progressbar/scan_progressbar.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/progress/scan_progressbar/scan_progressbar.ui +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/progress/scan_progressbar/scan_progressbar_one_line.ui +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/services/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/services/bec_queue/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/services/bec_queue/bec_queue.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/services/bec_queue/bec_queue.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/services/bec_queue/bec_queue_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/services/bec_queue/register_bec_queue.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/services/bec_status_box/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/services/bec_status_box/bec_status_box.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/services/bec_status_box/bec_status_box.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/services/bec_status_box/bec_status_box_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/services/bec_status_box/register_bec_status_box.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/services/bec_status_box/status_item.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/services/device_browser/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/services/device_browser/device_browser.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/services/device_browser/device_browser.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/services/device_browser/device_browser.ui +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/services/device_browser/device_browser_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/services/device_browser/device_item/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/services/device_browser/device_item/device_config_dialog.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/services/device_browser/device_item/device_config_form.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/services/device_browser/register_device_browser.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/services/device_browser/util.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/logpanel/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/logpanel/_util.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/logpanel/log_panel.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/logpanel/log_panel_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/logpanel/logpanel.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/logpanel/register_log_panel.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/signal_label/register_signal_label.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/signal_label/signal_label.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/signal_label/signal_label_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/spinbox/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/spinbox/bec_spin_box.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/spinbox/bec_spin_box_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/spinbox/decimal_spinbox.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/spinbox/register_bec_spin_box.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/spinner/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/spinner/register_spinner_widget.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/spinner/spinner.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/spinner/spinner_widget.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/spinner/spinner_widget_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/toggle/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/toggle/register_toggle_switch.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/toggle/toggle.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/toggle/toggle_switch.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/toggle/toggle_switch_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/visual/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/visual/color_button/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/visual/color_button/color_button.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/visual/color_button/color_button.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/visual/color_button/color_button_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/visual/color_button/register_color_button.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/visual/color_button_native/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/visual/color_button_native/color_button_native.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/visual/color_button_native/color_button_native.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/visual/color_button_native/color_button_native_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/visual/color_button_native/register_color_button_native.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/visual/colormap_selector/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/visual/colormap_selector/colormap_selector.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/visual/colormap_selector/colormap_selector.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/visual/colormap_selector/colormap_selector_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/visual/colormap_selector/register_colormap_selector.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/visual/colormap_widget/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/visual/colormap_widget/bec_color_map_widget.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/visual/colormap_widget/bec_color_map_widget_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/visual/colormap_widget/colormap_widget.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/visual/colormap_widget/register_bec_color_map_widget.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/visual/dark_mode_button/__init__.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button.pyproject +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button_plugin.py +0 -0
- {bec_widgets-2.17.0 → bec_widgets-2.19.0}/bec_widgets/widgets/utility/visual/dark_mode_button/register_dark_mode_button.py +0 -0
@@ -21,7 +21,7 @@ jobs:
|
|
21
21
|
isort --check --diff ./
|
22
22
|
|
23
23
|
- name: Check for disallowed imports from PySide
|
24
|
-
run: '! grep -re "from PySide6\." bec_widgets/ | grep -v -e "PySide6.QtDesigner" -e "PySide6.scripts"'
|
24
|
+
run: '! grep -re "from PySide6\." bec_widgets/ tests/ | grep -v -e "PySide6.QtDesigner" -e "PySide6.scripts"'
|
25
25
|
|
26
26
|
Pylint:
|
27
27
|
runs-on: ubuntu-latest
|
@@ -1,6 +1,55 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
3
|
|
4
|
+
## v2.19.0 (2025-06-23)
|
5
|
+
|
6
|
+
### Bug Fixes
|
7
|
+
|
8
|
+
- **ci**: Extend check for pyside import to tests
|
9
|
+
([`d5a40da`](https://github.com/bec-project/bec_widgets/commit/d5a40dabc74753acad05e3eb6b121499fc1e03d7))
|
10
|
+
|
11
|
+
### Features
|
12
|
+
|
13
|
+
- (#494) add signal display to device browser
|
14
|
+
([`f3da6e9`](https://github.com/bec-project/bec_widgets/commit/f3da6e959e0416827ee5d02e34e6ad0ecfc8e5e7))
|
15
|
+
|
16
|
+
- (#494) add tabbed layout for device item
|
17
|
+
([`3378051`](https://github.com/bec-project/bec_widgets/commit/337805125098c3e028a17b74ef6d9ae4b9ba3d6d))
|
18
|
+
|
19
|
+
- (#494) display device signals
|
20
|
+
([`3a10341`](https://github.com/bec-project/bec_widgets/commit/3a103410e7448256a56b59bb3276fee056ec42a0))
|
21
|
+
|
22
|
+
|
23
|
+
## v2.18.0 (2025-06-22)
|
24
|
+
|
25
|
+
### Bug Fixes
|
26
|
+
|
27
|
+
- Make settings dialog resizable
|
28
|
+
([`5a564a5`](https://github.com/bec-project/bec_widgets/commit/5a564a5f3f3229e6407ea52a59d3e63319dc214a))
|
29
|
+
|
30
|
+
- **curve settings**: Add initial size hint
|
31
|
+
([`a9708f6`](https://github.com/bec-project/bec_widgets/commit/a9708f6d8f15c42b142488da1e392a8f3179932a))
|
32
|
+
|
33
|
+
### Features
|
34
|
+
|
35
|
+
- **curve settings**: Add combobox selection for device and signal
|
36
|
+
([`eea5f7e`](https://github.com/bec-project/bec_widgets/commit/eea5f7ebbd2b477b3ed19c7efcc76390dd391f26))
|
37
|
+
|
38
|
+
- **device combobox**: Emit reset event if validation fails
|
39
|
+
([`4c2c0c5`](https://github.com/bec-project/bec_widgets/commit/4c2c0c5525d593d8ec7fd554336cb11adbe32de2))
|
40
|
+
|
41
|
+
- **FilterIO**: Add support for item data
|
42
|
+
([`8e8acd6`](https://github.com/bec-project/bec_widgets/commit/8e8acd672c0deb8dcd928886fb574452ac956de7))
|
43
|
+
|
44
|
+
- **signal combobox**: Add reset_selection slot
|
45
|
+
([`b51de1a`](https://github.com/bec-project/bec_widgets/commit/b51de1a00e4b17c44cab23e5097391c6fa8ea0e2))
|
46
|
+
|
47
|
+
### Refactoring
|
48
|
+
|
49
|
+
- **device input**: Refactor to SafeProperty and SafeSlot
|
50
|
+
([`6e2f2ce`](https://github.com/bec-project/bec_widgets/commit/6e2f2cea91ba3af33e9891532506f4b0b65b90c8))
|
51
|
+
|
52
|
+
|
4
53
|
## v2.17.0 (2025-06-22)
|
5
54
|
|
6
55
|
### Bug Fixes
|
@@ -96,9 +96,21 @@ class FakePositioner(BECPositioner):
|
|
96
96
|
}
|
97
97
|
self._info = {
|
98
98
|
"signals": {
|
99
|
-
"readback": {
|
100
|
-
|
101
|
-
|
99
|
+
"readback": {
|
100
|
+
"kind_str": "hinted",
|
101
|
+
"component_name": "readback",
|
102
|
+
"obj_name": self.name,
|
103
|
+
}, # hinted
|
104
|
+
"setpoint": {
|
105
|
+
"kind_str": "normal",
|
106
|
+
"component_name": "setpoint",
|
107
|
+
"obj_name": f"{self.name}_setpoint",
|
108
|
+
}, # normal
|
109
|
+
"velocity": {
|
110
|
+
"kind_str": "config",
|
111
|
+
"component_name": "velocity",
|
112
|
+
"obj_name": f"{self.name}_velocity",
|
113
|
+
}, # config
|
102
114
|
}
|
103
115
|
}
|
104
116
|
self.signals = {
|
@@ -0,0 +1,272 @@
|
|
1
|
+
"""Module for handling filter I/O operations in BEC Widgets for input fields.
|
2
|
+
These operations include filtering device/signal names and/or device types.
|
3
|
+
"""
|
4
|
+
|
5
|
+
from abc import ABC, abstractmethod
|
6
|
+
|
7
|
+
from bec_lib.logger import bec_logger
|
8
|
+
from qtpy.QtCore import QStringListModel
|
9
|
+
from qtpy.QtWidgets import QComboBox, QCompleter, QLineEdit
|
10
|
+
|
11
|
+
from bec_widgets.utils.ophyd_kind_util import Kind
|
12
|
+
|
13
|
+
logger = bec_logger.logger
|
14
|
+
|
15
|
+
|
16
|
+
class WidgetFilterHandler(ABC):
|
17
|
+
"""Abstract base class for widget filter handlers"""
|
18
|
+
|
19
|
+
@abstractmethod
|
20
|
+
def set_selection(self, widget, selection: list[str | tuple]) -> None:
|
21
|
+
"""Set the filtered_selection for the widget
|
22
|
+
|
23
|
+
Args:
|
24
|
+
widget: Widget instance
|
25
|
+
selection (list[str | tuple]): Filtered selection of items.
|
26
|
+
If tuple, it contains (text, data) pairs.
|
27
|
+
"""
|
28
|
+
|
29
|
+
@abstractmethod
|
30
|
+
def check_input(self, widget, text: str) -> bool:
|
31
|
+
"""Check if the input text is in the filtered selection
|
32
|
+
|
33
|
+
Args:
|
34
|
+
widget: Widget instance
|
35
|
+
text (str): Input text
|
36
|
+
|
37
|
+
Returns:
|
38
|
+
bool: True if the input text is in the filtered selection
|
39
|
+
"""
|
40
|
+
|
41
|
+
@abstractmethod
|
42
|
+
def update_with_kind(
|
43
|
+
self, kind: Kind, signal_filter: set, device_info: dict, device_name: str
|
44
|
+
) -> list[str | tuple]:
|
45
|
+
"""Update the selection based on the kind of signal.
|
46
|
+
|
47
|
+
Args:
|
48
|
+
kind (Kind): The kind of signal to filter.
|
49
|
+
signal_filter (set): Set of signal kinds to filter.
|
50
|
+
device_info (dict): Dictionary containing device information.
|
51
|
+
device_name (str): Name of the device.
|
52
|
+
|
53
|
+
Returns:
|
54
|
+
list[str | tuple]: A list of filtered signals based on the kind.
|
55
|
+
"""
|
56
|
+
# This method should be implemented in subclasses or extended as needed
|
57
|
+
|
58
|
+
|
59
|
+
class LineEditFilterHandler(WidgetFilterHandler):
|
60
|
+
"""Handler for QLineEdit widget"""
|
61
|
+
|
62
|
+
def set_selection(self, widget: QLineEdit, selection: list[str | tuple]) -> None:
|
63
|
+
"""Set the selection for the widget to the completer model
|
64
|
+
|
65
|
+
Args:
|
66
|
+
widget (QLineEdit): The QLineEdit widget
|
67
|
+
selection (list[str | tuple]): Filtered selection of items. If tuple, it contains (text, data) pairs.
|
68
|
+
"""
|
69
|
+
if isinstance(selection, tuple):
|
70
|
+
# If selection is a tuple, it contains (text, data) pairs
|
71
|
+
selection = [text for text, _ in selection]
|
72
|
+
if not isinstance(widget.completer, QCompleter):
|
73
|
+
completer = QCompleter(widget)
|
74
|
+
widget.setCompleter(completer)
|
75
|
+
widget.completer.setModel(QStringListModel(selection, widget))
|
76
|
+
|
77
|
+
def check_input(self, widget: QLineEdit, text: str) -> bool:
|
78
|
+
"""Check if the input text is in the filtered selection
|
79
|
+
|
80
|
+
Args:
|
81
|
+
widget (QLineEdit): The QLineEdit widget
|
82
|
+
text (str): Input text
|
83
|
+
|
84
|
+
Returns:
|
85
|
+
bool: True if the input text is in the filtered selection
|
86
|
+
"""
|
87
|
+
model = widget.completer.model()
|
88
|
+
model_data = [model.data(model.index(i)) for i in range(model.rowCount())]
|
89
|
+
return text in model_data
|
90
|
+
|
91
|
+
def update_with_kind(
|
92
|
+
self, kind: Kind, signal_filter: set, device_info: dict, device_name: str
|
93
|
+
) -> list[str | tuple]:
|
94
|
+
"""Update the selection based on the kind of signal.
|
95
|
+
|
96
|
+
Args:
|
97
|
+
kind (Kind): The kind of signal to filter.
|
98
|
+
signal_filter (set): Set of signal kinds to filter.
|
99
|
+
device_info (dict): Dictionary containing device information.
|
100
|
+
device_name (str): Name of the device.
|
101
|
+
|
102
|
+
Returns:
|
103
|
+
list[str | tuple]: A list of filtered signals based on the kind.
|
104
|
+
"""
|
105
|
+
|
106
|
+
return [
|
107
|
+
signal
|
108
|
+
for signal, signal_info in device_info.items()
|
109
|
+
if kind in signal_filter and (signal_info.get("kind_str", None) == str(kind.name))
|
110
|
+
]
|
111
|
+
|
112
|
+
|
113
|
+
class ComboBoxFilterHandler(WidgetFilterHandler):
|
114
|
+
"""Handler for QComboBox widget"""
|
115
|
+
|
116
|
+
def set_selection(self, widget: QComboBox, selection: list[str | tuple]) -> None:
|
117
|
+
"""Set the selection for the widget to the completer model
|
118
|
+
|
119
|
+
Args:
|
120
|
+
widget (QComboBox): The QComboBox widget
|
121
|
+
selection (list[str | tuple]): Filtered selection of items. If tuple, it contains (text, data) pairs.
|
122
|
+
"""
|
123
|
+
widget.clear()
|
124
|
+
if len(selection) == 0:
|
125
|
+
return
|
126
|
+
for element in selection:
|
127
|
+
if isinstance(element, str):
|
128
|
+
widget.addItem(element)
|
129
|
+
elif isinstance(element, tuple):
|
130
|
+
# If element is a tuple, it contains (text, data) pairs
|
131
|
+
widget.addItem(*element)
|
132
|
+
|
133
|
+
def check_input(self, widget: QComboBox, text: str) -> bool:
|
134
|
+
"""Check if the input text is in the filtered selection
|
135
|
+
|
136
|
+
Args:
|
137
|
+
widget (QComboBox): The QComboBox widget
|
138
|
+
text (str): Input text
|
139
|
+
|
140
|
+
Returns:
|
141
|
+
bool: True if the input text is in the filtered selection
|
142
|
+
"""
|
143
|
+
return text in [widget.itemText(i) for i in range(widget.count())]
|
144
|
+
|
145
|
+
def update_with_kind(
|
146
|
+
self, kind: Kind, signal_filter: set, device_info: dict, device_name: str
|
147
|
+
) -> list[str | tuple]:
|
148
|
+
"""Update the selection based on the kind of signal.
|
149
|
+
|
150
|
+
Args:
|
151
|
+
kind (Kind): The kind of signal to filter.
|
152
|
+
signal_filter (set): Set of signal kinds to filter.
|
153
|
+
device_info (dict): Dictionary containing device information.
|
154
|
+
device_name (str): Name of the device.
|
155
|
+
|
156
|
+
Returns:
|
157
|
+
list[str | tuple]: A list of filtered signals based on the kind.
|
158
|
+
"""
|
159
|
+
out = []
|
160
|
+
for signal, signal_info in device_info.items():
|
161
|
+
if kind not in signal_filter or (signal_info.get("kind_str", None) != str(kind.name)):
|
162
|
+
continue
|
163
|
+
obj_name = signal_info.get("obj_name", "")
|
164
|
+
component_name = signal_info.get("component_name", "")
|
165
|
+
signal_wo_device = obj_name.removeprefix(f"{device_name}_")
|
166
|
+
if not signal_wo_device:
|
167
|
+
signal_wo_device = obj_name
|
168
|
+
|
169
|
+
if signal_wo_device != signal and component_name.replace(".", "_") != signal_wo_device:
|
170
|
+
# If the object name is not the same as the signal name, we use the object name
|
171
|
+
# to display in the combobox.
|
172
|
+
out.append((f"{signal_wo_device} ({signal})", signal_info))
|
173
|
+
else:
|
174
|
+
# If the object name is the same as the signal name, we do not change it.
|
175
|
+
out.append((signal, signal_info))
|
176
|
+
|
177
|
+
return out
|
178
|
+
|
179
|
+
|
180
|
+
class FilterIO:
|
181
|
+
"""Public interface to set filters for input widgets.
|
182
|
+
It supports the list of widgets stored in class attribute _handlers.
|
183
|
+
"""
|
184
|
+
|
185
|
+
_handlers = {QLineEdit: LineEditFilterHandler, QComboBox: ComboBoxFilterHandler}
|
186
|
+
|
187
|
+
@staticmethod
|
188
|
+
def set_selection(widget, selection: list[str | tuple], ignore_errors=True):
|
189
|
+
"""
|
190
|
+
Retrieve value from the widget instance.
|
191
|
+
|
192
|
+
Args:
|
193
|
+
widget: Widget instance.
|
194
|
+
selection (list[str | tuple]): Filtered selection of items.
|
195
|
+
If tuple, it contains (text, data) pairs.
|
196
|
+
ignore_errors(bool, optional): Whether to ignore if no handler is found.
|
197
|
+
"""
|
198
|
+
handler_class = FilterIO._find_handler(widget)
|
199
|
+
if handler_class:
|
200
|
+
return handler_class().set_selection(widget=widget, selection=selection)
|
201
|
+
if not ignore_errors:
|
202
|
+
raise ValueError(
|
203
|
+
f"No matching handler for widget type: {type(widget)} in handler list {FilterIO._handlers}"
|
204
|
+
)
|
205
|
+
return None
|
206
|
+
|
207
|
+
@staticmethod
|
208
|
+
def check_input(widget, text: str, ignore_errors=True):
|
209
|
+
"""
|
210
|
+
Check if the input text is in the filtered selection.
|
211
|
+
|
212
|
+
Args:
|
213
|
+
widget: Widget instance.
|
214
|
+
text(str): Input text.
|
215
|
+
ignore_errors(bool, optional): Whether to ignore if no handler is found.
|
216
|
+
|
217
|
+
Returns:
|
218
|
+
bool: True if the input text is in the filtered selection.
|
219
|
+
"""
|
220
|
+
handler_class = FilterIO._find_handler(widget)
|
221
|
+
if handler_class:
|
222
|
+
return handler_class().check_input(widget=widget, text=text)
|
223
|
+
if not ignore_errors:
|
224
|
+
raise ValueError(
|
225
|
+
f"No matching handler for widget type: {type(widget)} in handler list {FilterIO._handlers}"
|
226
|
+
)
|
227
|
+
return None
|
228
|
+
|
229
|
+
@staticmethod
|
230
|
+
def update_with_kind(
|
231
|
+
widget, kind: Kind, signal_filter: set, device_info: dict, device_name: str
|
232
|
+
) -> list[str | tuple]:
|
233
|
+
"""
|
234
|
+
Update the selection based on the kind of signal.
|
235
|
+
|
236
|
+
Args:
|
237
|
+
widget: Widget instance.
|
238
|
+
kind (Kind): The kind of signal to filter.
|
239
|
+
signal_filter (set): Set of signal kinds to filter.
|
240
|
+
device_info (dict): Dictionary containing device information.
|
241
|
+
device_name (str): Name of the device.
|
242
|
+
|
243
|
+
Returns:
|
244
|
+
list[str | tuple]: A list of filtered signals based on the kind.
|
245
|
+
"""
|
246
|
+
handler_class = FilterIO._find_handler(widget)
|
247
|
+
if handler_class:
|
248
|
+
return handler_class().update_with_kind(
|
249
|
+
kind=kind,
|
250
|
+
signal_filter=signal_filter,
|
251
|
+
device_info=device_info,
|
252
|
+
device_name=device_name,
|
253
|
+
)
|
254
|
+
raise ValueError(
|
255
|
+
f"No matching handler for widget type: {type(widget)} in handler list {FilterIO._handlers}"
|
256
|
+
)
|
257
|
+
|
258
|
+
@staticmethod
|
259
|
+
def _find_handler(widget):
|
260
|
+
"""
|
261
|
+
Find the appropriate handler for the widget by checking its base classes.
|
262
|
+
|
263
|
+
Args:
|
264
|
+
widget: Widget instance.
|
265
|
+
|
266
|
+
Returns:
|
267
|
+
handler_class: The handler class if found, otherwise None.
|
268
|
+
"""
|
269
|
+
for base in type(widget).__mro__:
|
270
|
+
if base in FilterIO._handlers:
|
271
|
+
return FilterIO._handlers[base]
|
272
|
+
return None
|
@@ -6,10 +6,10 @@ from bec_lib.device import ComputedSignal, Device, Positioner, ReadoutPriority
|
|
6
6
|
from bec_lib.device import Signal as BECSignal
|
7
7
|
from bec_lib.logger import bec_logger
|
8
8
|
from pydantic import field_validator
|
9
|
-
from qtpy.QtCore import Property, Signal, Slot
|
10
9
|
|
11
10
|
from bec_widgets.utils import ConnectionConfig
|
12
11
|
from bec_widgets.utils.bec_widget import BECWidget
|
12
|
+
from bec_widgets.utils.error_popups import SafeProperty, SafeSlot
|
13
13
|
from bec_widgets.utils.filter_io import FilterIO
|
14
14
|
from bec_widgets.utils.widget_io import WidgetIO
|
15
15
|
|
@@ -100,7 +100,7 @@ class DeviceInputBase(BECWidget):
|
|
100
100
|
|
101
101
|
### QtSlots ###
|
102
102
|
|
103
|
-
@
|
103
|
+
@SafeSlot(str)
|
104
104
|
def set_device(self, device: str):
|
105
105
|
"""
|
106
106
|
Set the device.
|
@@ -114,7 +114,7 @@ class DeviceInputBase(BECWidget):
|
|
114
114
|
else:
|
115
115
|
logger.warning(f"Device {device} is not in the filtered selection.")
|
116
116
|
|
117
|
-
@
|
117
|
+
@SafeSlot()
|
118
118
|
def update_devices_from_filters(self):
|
119
119
|
"""Update the devices based on the current filter selection
|
120
120
|
in self.device_filter and self.readout_filter. If apply_filter is False,
|
@@ -133,7 +133,7 @@ class DeviceInputBase(BECWidget):
|
|
133
133
|
self.devices = [device.name for device in devs]
|
134
134
|
self.set_device(current_device)
|
135
135
|
|
136
|
-
@
|
136
|
+
@SafeSlot(list)
|
137
137
|
def set_available_devices(self, devices: list[str]):
|
138
138
|
"""
|
139
139
|
Set the devices. If a device in the list is not valid, it will not be considered.
|
@@ -146,7 +146,7 @@ class DeviceInputBase(BECWidget):
|
|
146
146
|
|
147
147
|
### QtProperties ###
|
148
148
|
|
149
|
-
@
|
149
|
+
@SafeProperty(
|
150
150
|
"QStringList",
|
151
151
|
doc="List of devices. If updated, it will disable the apply filters property.",
|
152
152
|
)
|
@@ -165,7 +165,7 @@ class DeviceInputBase(BECWidget):
|
|
165
165
|
self.config.devices = value
|
166
166
|
FilterIO.set_selection(widget=self, selection=value)
|
167
167
|
|
168
|
-
@
|
168
|
+
@SafeProperty(str)
|
169
169
|
def default(self):
|
170
170
|
"""Get the default device name. If set through this property, it will update only if the device is within the filtered selection."""
|
171
171
|
return self.config.default
|
@@ -177,7 +177,7 @@ class DeviceInputBase(BECWidget):
|
|
177
177
|
self.config.default = value
|
178
178
|
WidgetIO.set_value(widget=self, value=value)
|
179
179
|
|
180
|
-
@
|
180
|
+
@SafeProperty(bool)
|
181
181
|
def apply_filter(self):
|
182
182
|
"""Apply the filters on the devices."""
|
183
183
|
return self.config.apply_filter
|
@@ -187,7 +187,7 @@ class DeviceInputBase(BECWidget):
|
|
187
187
|
self.config.apply_filter = value
|
188
188
|
self.update_devices_from_filters()
|
189
189
|
|
190
|
-
@
|
190
|
+
@SafeProperty(bool)
|
191
191
|
def filter_to_device(self):
|
192
192
|
"""Include devices in filters."""
|
193
193
|
return BECDeviceFilter.DEVICE in self.device_filter
|
@@ -200,7 +200,7 @@ class DeviceInputBase(BECWidget):
|
|
200
200
|
self._device_filter.remove(BECDeviceFilter.DEVICE)
|
201
201
|
self.update_devices_from_filters()
|
202
202
|
|
203
|
-
@
|
203
|
+
@SafeProperty(bool)
|
204
204
|
def filter_to_positioner(self):
|
205
205
|
"""Include devices of type Positioner in filters."""
|
206
206
|
return BECDeviceFilter.POSITIONER in self.device_filter
|
@@ -213,7 +213,7 @@ class DeviceInputBase(BECWidget):
|
|
213
213
|
self._device_filter.remove(BECDeviceFilter.POSITIONER)
|
214
214
|
self.update_devices_from_filters()
|
215
215
|
|
216
|
-
@
|
216
|
+
@SafeProperty(bool)
|
217
217
|
def filter_to_signal(self):
|
218
218
|
"""Include devices of type Signal in filters."""
|
219
219
|
return BECDeviceFilter.SIGNAL in self.device_filter
|
@@ -226,7 +226,7 @@ class DeviceInputBase(BECWidget):
|
|
226
226
|
self._device_filter.remove(BECDeviceFilter.SIGNAL)
|
227
227
|
self.update_devices_from_filters()
|
228
228
|
|
229
|
-
@
|
229
|
+
@SafeProperty(bool)
|
230
230
|
def filter_to_computed_signal(self):
|
231
231
|
"""Include devices of type ComputedSignal in filters."""
|
232
232
|
return BECDeviceFilter.COMPUTED_SIGNAL in self.device_filter
|
@@ -239,7 +239,7 @@ class DeviceInputBase(BECWidget):
|
|
239
239
|
self._device_filter.remove(BECDeviceFilter.COMPUTED_SIGNAL)
|
240
240
|
self.update_devices_from_filters()
|
241
241
|
|
242
|
-
@
|
242
|
+
@SafeProperty(bool)
|
243
243
|
def readout_monitored(self):
|
244
244
|
"""Include devices with readout priority Monitored in filters."""
|
245
245
|
return ReadoutPriority.MONITORED in self.readout_filter
|
@@ -252,7 +252,7 @@ class DeviceInputBase(BECWidget):
|
|
252
252
|
self._readout_filter.remove(ReadoutPriority.MONITORED)
|
253
253
|
self.update_devices_from_filters()
|
254
254
|
|
255
|
-
@
|
255
|
+
@SafeProperty(bool)
|
256
256
|
def readout_baseline(self):
|
257
257
|
"""Include devices with readout priority Baseline in filters."""
|
258
258
|
return ReadoutPriority.BASELINE in self.readout_filter
|
@@ -265,7 +265,7 @@ class DeviceInputBase(BECWidget):
|
|
265
265
|
self._readout_filter.remove(ReadoutPriority.BASELINE)
|
266
266
|
self.update_devices_from_filters()
|
267
267
|
|
268
|
-
@
|
268
|
+
@SafeProperty(bool)
|
269
269
|
def readout_async(self):
|
270
270
|
"""Include devices with readout priority Async in filters."""
|
271
271
|
return ReadoutPriority.ASYNC in self.readout_filter
|
@@ -278,7 +278,7 @@ class DeviceInputBase(BECWidget):
|
|
278
278
|
self._readout_filter.remove(ReadoutPriority.ASYNC)
|
279
279
|
self.update_devices_from_filters()
|
280
280
|
|
281
|
-
@
|
281
|
+
@SafeProperty(bool)
|
282
282
|
def readout_continuous(self):
|
283
283
|
"""Include devices with readout priority continuous in filters."""
|
284
284
|
return ReadoutPriority.CONTINUOUS in self.readout_filter
|
@@ -291,7 +291,7 @@ class DeviceInputBase(BECWidget):
|
|
291
291
|
self._readout_filter.remove(ReadoutPriority.CONTINUOUS)
|
292
292
|
self.update_devices_from_filters()
|
293
293
|
|
294
|
-
@
|
294
|
+
@SafeProperty(bool)
|
295
295
|
def readout_on_request(self):
|
296
296
|
"""Include devices with readout priority OnRequest in filters."""
|
297
297
|
return ReadoutPriority.ON_REQUEST in self.readout_filter
|
@@ -6,7 +6,7 @@ from qtpy.QtCore import Property
|
|
6
6
|
from bec_widgets.utils import ConnectionConfig
|
7
7
|
from bec_widgets.utils.bec_widget import BECWidget
|
8
8
|
from bec_widgets.utils.error_popups import SafeSlot
|
9
|
-
from bec_widgets.utils.filter_io import FilterIO
|
9
|
+
from bec_widgets.utils.filter_io import FilterIO, LineEditFilterHandler
|
10
10
|
from bec_widgets.utils.ophyd_kind_util import Kind
|
11
11
|
from bec_widgets.utils.widget_io import WidgetIO
|
12
12
|
|
@@ -108,25 +108,32 @@ class DeviceSignalInputBase(BECWidget):
|
|
108
108
|
if not self.validate_device(self._device):
|
109
109
|
self._device = None
|
110
110
|
self.config.device = self._device
|
111
|
+
self._signals = []
|
112
|
+
self._hinted_signals = []
|
113
|
+
self._normal_signals = []
|
114
|
+
self._config_signals = []
|
115
|
+
FilterIO.set_selection(widget=self, selection=self._signals)
|
111
116
|
return
|
112
117
|
device = self.get_device_object(self._device)
|
118
|
+
device_info = device._info.get("signals", {})
|
119
|
+
|
113
120
|
# See above convention for Signals and ComputedSignals
|
114
121
|
if isinstance(device, Signal):
|
115
|
-
self._signals = [self._device]
|
116
|
-
self._hinted_signals = [self._device]
|
122
|
+
self._signals = [(self._device, {})]
|
123
|
+
self._hinted_signals = [(self._device, {})]
|
117
124
|
self._normal_signals = []
|
118
125
|
self._config_signals = []
|
119
126
|
FilterIO.set_selection(widget=self, selection=self._signals)
|
120
127
|
return
|
121
|
-
device_info = device._info.get("signals", {})
|
122
128
|
|
123
129
|
def _update(kind: Kind):
|
124
|
-
return
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
+
return FilterIO.update_with_kind(
|
131
|
+
widget=self,
|
132
|
+
kind=kind,
|
133
|
+
signal_filter=self.signal_filter,
|
134
|
+
device_info=device_info,
|
135
|
+
device_name=self._device,
|
136
|
+
)
|
130
137
|
|
131
138
|
self._hinted_signals = _update(Kind.hinted)
|
132
139
|
self._normal_signals = _update(Kind.normal)
|
@@ -271,8 +278,11 @@ class DeviceSignalInputBase(BECWidget):
|
|
271
278
|
Args:
|
272
279
|
signal(str): Signal to validate.
|
273
280
|
"""
|
274
|
-
|
275
|
-
|
281
|
+
for entry in self.signals:
|
282
|
+
if isinstance(entry, tuple):
|
283
|
+
entry = entry[0]
|
284
|
+
if entry == signal:
|
285
|
+
return True
|
276
286
|
return False
|
277
287
|
|
278
288
|
def _process_config_input(self, config: DeviceSignalInputBaseConfig | dict | None):
|
@@ -34,6 +34,7 @@ class DeviceComboBox(DeviceInputBase, QComboBox):
|
|
34
34
|
PLUGIN = True
|
35
35
|
|
36
36
|
device_selected = Signal(str)
|
37
|
+
device_reset = Signal()
|
37
38
|
device_config_update = Signal()
|
38
39
|
|
39
40
|
def __init__(
|
@@ -147,6 +148,7 @@ class DeviceComboBox(DeviceInputBase, QComboBox):
|
|
147
148
|
self.device_selected.emit(input_text)
|
148
149
|
else:
|
149
150
|
self._is_valid_input = False
|
151
|
+
self.device_reset.emit()
|
150
152
|
self.update()
|
151
153
|
|
152
154
|
def validate_device(self, device: str) -> bool: # type: ignore[override]
|
@@ -90,6 +90,14 @@ class SignalComboBox(DeviceSignalInputBase, QComboBox):
|
|
90
90
|
self.insertItem(0, "Hinted Signals")
|
91
91
|
self.model().item(0).setEnabled(False)
|
92
92
|
|
93
|
+
@SafeSlot()
|
94
|
+
def reset_selection(self):
|
95
|
+
"""Reset the selection of the combobox."""
|
96
|
+
self.clear()
|
97
|
+
self.setItemText(0, "Select a device")
|
98
|
+
self.update_signals_from_filters()
|
99
|
+
self.device_signal_changed.emit("")
|
100
|
+
|
93
101
|
@SafeSlot(str)
|
94
102
|
def on_text_changed(self, text: str):
|
95
103
|
"""Slot for text changed. If a device is selected and the signal is changed and valid it emits a signal.
|
@@ -102,11 +110,7 @@ class SignalComboBox(DeviceSignalInputBase, QComboBox):
|
|
102
110
|
return
|
103
111
|
if self.validate_signal(text) is False:
|
104
112
|
return
|
105
|
-
|
106
|
-
device_signal = self.device
|
107
|
-
else:
|
108
|
-
device_signal = f"{self.device}_{text}"
|
109
|
-
self.device_signal_changed.emit(device_signal)
|
113
|
+
self.device_signal_changed.emit(text)
|
110
114
|
|
111
115
|
|
112
116
|
if __name__ == "__main__": # pragma: no cover
|
@@ -2,6 +2,7 @@ from __future__ import annotations
|
|
2
2
|
|
3
3
|
from typing import TYPE_CHECKING
|
4
4
|
|
5
|
+
from qtpy.QtCore import QSize
|
5
6
|
from qtpy.QtWidgets import (
|
6
7
|
QComboBox,
|
7
8
|
QGroupBox,
|
@@ -35,7 +36,11 @@ class CurveSetting(SettingWidget):
|
|
35
36
|
self._init_x_box()
|
36
37
|
self._init_y_box()
|
37
38
|
|
38
|
-
|
39
|
+
def sizeHint(self) -> QSize:
|
40
|
+
"""
|
41
|
+
Returns the size hint for the settings widget.
|
42
|
+
"""
|
43
|
+
return QSize(800, 500)
|
39
44
|
|
40
45
|
def _init_x_box(self):
|
41
46
|
self.x_axis_box = QGroupBox("X Axis")
|
@@ -97,7 +102,7 @@ class CurveSetting(SettingWidget):
|
|
97
102
|
|
98
103
|
self.layout.addWidget(self.y_axis_box)
|
99
104
|
|
100
|
-
@SafeSlot()
|
105
|
+
@SafeSlot(popup_error=True)
|
101
106
|
def accept_changes(self):
|
102
107
|
"""
|
103
108
|
Accepts the changes made in the settings widget and applies them to the target widget.
|