bec-widgets 0.115.0__tar.gz → 0.116.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-0.115.0 → bec_widgets-0.116.0}/CHANGELOG.md +20 -19
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/PKG-INFO +2 -2
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/applications/alignment/alignment_1d/alignment_1d.ui +96 -42
- bec_widgets-0.116.0/bec_widgets/qt_utils/compact_popup.py +223 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/bec_queue/bec_queue.py +22 -7
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/bec_status_box/bec_status_box.py +11 -7
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/pyproject.toml +2 -2
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/.git_hooks/pre-commit +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/.gitignore +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/.gitlab/issue_templates/bug_report_template.md +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/.gitlab/issue_templates/documentation_update_template.md +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/.gitlab/issue_templates/feature_request_template.md +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/.gitlab/merge_request_templates/default.md +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/.gitlab-ci.yml +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/.pylintrc +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/.readthedocs.yaml +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/LICENSE +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/README.md +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/applications/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/applications/alignment/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/applications/alignment/alignment_1d/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/applications/alignment/alignment_1d/alignment_1d.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/applications/bec_app.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/assets/app_icons/BEC-General-App.png +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/assets/app_icons/alignment_1d.png +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/assets/app_icons/bec_widgets_icon.png +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/cli/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/cli/auto_updates.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/cli/client.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/cli/client_utils.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/cli/generate_cli.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/cli/rpc_register.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/cli/rpc_wigdet_handler.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/cli/server.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/examples/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/examples/general_app/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/examples/general_app/general_app.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/examples/general_app/general_app.ui +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/examples/general_app/web_links.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/examples/jupyter_console/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/examples/jupyter_console/jupyter_console_window.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/examples/plugin_example_pyside/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/examples/plugin_example_pyside/main.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/examples/plugin_example_pyside/registertictactoe.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/examples/plugin_example_pyside/taskmenuextension.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/examples/plugin_example_pyside/tictactoe.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/examples/plugin_example_pyside/tictactoeplugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/examples/plugin_example_pyside/tictactoetaskmenu.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/qt_utils/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/qt_utils/error_popups.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/qt_utils/palette_viewer.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/qt_utils/redis_message_waiter.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/qt_utils/settings_dialog.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/qt_utils/toolbar.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/utils/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/utils/bec_connector.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/utils/bec_designer.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/utils/bec_dispatcher.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/utils/bec_signal_proxy.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/utils/bec_table.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/utils/bec_widget.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/utils/colors.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/utils/container_utils.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/utils/crosshair.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/utils/entry_validator.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/utils/generate_designer_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/utils/layout_manager.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/utils/linear_region_selector.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/utils/plot_indicator_items.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/utils/plugin_templates/plugin.template +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/utils/plugin_templates/register.template +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/utils/plugin_utils.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/utils/reference_utils.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/utils/rpc_decorator.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/utils/thread_checker.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/utils/ui_loader.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/utils/validator_delegate.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/utils/widget_io.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/utils/yaml_dialog.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/base_classes/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/base_classes/device_input_base.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/bec_progressbar/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/bec_progressbar/bec_progress_bar.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/bec_progressbar/bec_progress_bar_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/bec_progressbar/bec_progressbar.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/bec_progressbar/register_bec_progress_bar.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/bec_queue/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/bec_queue/bec_queue.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/bec_queue/bec_queue_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/bec_queue/register_bec_queue.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/bec_status_box/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/bec_status_box/bec_status_box.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/bec_status_box/bec_status_box_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/bec_status_box/register_bec_status_box.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/bec_status_box/status_item.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/button_abort/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/button_abort/abort_button.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/button_abort/abort_button_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/button_abort/button_abort.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/button_abort/register_abort_button.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/button_reset/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/button_reset/button_reset.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/button_reset/register_reset_button.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/button_reset/reset_button.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/button_reset/reset_button_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/button_resume/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/button_resume/button_resume.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/button_resume/register_resume_button.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/button_resume/resume_button.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/button_resume/resume_button_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/color_button/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/color_button/color_button.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/color_button/color_button.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/color_button/color_button_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/color_button/register_color_button.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/colormap_selector/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/colormap_selector/colormap_selector.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/colormap_selector/colormap_selector.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/colormap_selector/colormap_selector_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/colormap_selector/register_colormap_selector.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/console/console.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/console/console.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/console/console_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/console/register_console.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/dap_combo_box/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/dap_combo_box/dap_combo_box.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/dap_combo_box/dap_combo_box.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/dap_combo_box/dap_combo_box_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/dap_combo_box/register_dap_combo_box.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/dark_mode_button/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/dark_mode_button/dark_mode_button.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/dark_mode_button/dark_mode_button.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/dark_mode_button/dark_mode_button_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/dark_mode_button/register_dark_mode_button.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/device_browser/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/device_browser/device_browser.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/device_browser/device_browser.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/device_browser/device_browser.ui +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/device_browser/device_browser_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/device_browser/device_item/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/device_browser/device_item/device_item.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/device_browser/register_device_browser.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/device_combobox/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/device_combobox/device_combo_box.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/device_combobox/device_combo_box_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/device_combobox/device_combobox.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/device_combobox/register_device_combo_box.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/device_line_edit/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/device_line_edit/device_line_edit.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/device_line_edit/device_line_edit.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/device_line_edit/device_line_edit_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/device_line_edit/register_device_line_edit.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/dock/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/dock/dock.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/dock/dock_area.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/dock/dock_area.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/dock/dock_area_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/dock/register_dock_area.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/figure/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/figure/figure.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/figure/plots/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/figure/plots/axis_settings.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/figure/plots/axis_settings.ui +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/figure/plots/image/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/figure/plots/image/image.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/figure/plots/image/image_item.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/figure/plots/image/image_processor.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/figure/plots/motor_map/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/figure/plots/motor_map/motor_map.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/figure/plots/plot_base.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/figure/plots/waveform/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/figure/plots/waveform/waveform.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/figure/plots/waveform/waveform_curve.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/image/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/image/bec_image_widget.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/image/bec_image_widget_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/image/image_widget.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/image/register_bec_image_widget.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/jupyter_console/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/jupyter_console/jupyter_console.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/lmfit_dialog/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/lmfit_dialog/lm_fit_dialog.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/lmfit_dialog/lm_fit_dialog_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/lmfit_dialog/lmfit_dialog.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/lmfit_dialog/lmfit_dialog_compact.ui +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/lmfit_dialog/lmfit_dialog_vertical.ui +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/lmfit_dialog/register_lm_fit_dialog.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/motor_map/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/motor_map/bec_motor_map_widget.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/motor_map/bec_motor_map_widget_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/motor_map/motor_map_dialog/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/motor_map/motor_map_dialog/motor_map_settings.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/motor_map/motor_map_dialog/motor_map_settings.ui +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/motor_map/motor_map_widget.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/motor_map/register_bec_motor_map_widget.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/position_indicator/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/position_indicator/position_indicator.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/position_indicator/position_indicator.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/position_indicator/position_indicator_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/position_indicator/register_position_indicator.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/positioner_box/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/positioner_box/positioner_box.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/positioner_box/positioner_box.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/positioner_box/positioner_box.ui +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/positioner_box/positioner_box_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/positioner_box/positioner_control_line.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/positioner_box/positioner_control_line.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/positioner_box/positioner_control_line.ui +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/positioner_box/positioner_control_line_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/positioner_box/register_positioner_box.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/positioner_box/register_positioner_control_line.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/ring_progress_bar/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/ring_progress_bar/register_ring_progress_bar.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/ring_progress_bar/ring.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/ring_progress_bar/ring_progress_bar.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/ring_progress_bar/ring_progress_bar.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/ring_progress_bar/ring_progress_bar_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/scan_control/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/scan_control/register_scan_control.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/scan_control/scan_control.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/scan_control/scan_control.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/scan_control/scan_control_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/scan_control/scan_group_box.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/spinner/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/spinner/register_spinner_widget.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/spinner/spinner.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/spinner/spinner_widget.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/spinner/spinner_widget_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/stop_button/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/stop_button/register_stop_button.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/stop_button/stop_button.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/stop_button/stop_button.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/stop_button/stop_button_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/text_box/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/text_box/register_text_box.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/text_box/text_box.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/text_box/text_box.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/text_box/text_box_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/toggle/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/toggle/register_toggle_switch.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/toggle/toggle.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/toggle/toggle_switch.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/toggle/toggle_switch_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/vscode/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/vscode/register_vs_code_editor.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/vscode/vs_code_editor.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/vscode/vs_code_editor_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/vscode/vscode.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/waveform/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/waveform/bec_waveform_widget.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/waveform/bec_waveform_widget_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/waveform/register_bec_waveform_widget.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/waveform/waveform_popups/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/waveform/waveform_popups/curve_dialog/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/waveform/waveform_popups/curve_dialog/curve_dialog.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/waveform/waveform_popups/curve_dialog/curve_dialog.ui +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog/dap_summary_dialog.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/waveform/waveform_widget.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/website/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/website/register_website_widget.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/website/website.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/website/website_widget.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/website/website_widget_plugin.py +0 -0
@@ -1,6 +1,26 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
3
|
|
4
|
+
## v0.116.0 (2024-10-11)
|
5
|
+
|
6
|
+
### Build System
|
7
|
+
|
8
|
+
* build: fix PySide6 to 6.7.2 ([`908dbc1`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/908dbc1760da5b323722207163f00850b84fb90b))
|
9
|
+
|
10
|
+
### Features
|
11
|
+
|
12
|
+
* feat: UI changes to have top toolbar with compact popup widgets (fix issue #360) ([`499b6b9`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/499b6b9a12efd931b5728b519404c41a7e29e4d6))
|
13
|
+
|
14
|
+
* feat: adapt BECQueue and BECStatusBox widgets to use CompactPopupWidget ([`94ce92f`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/94ce92f5b054d25ea3bb7976c1f75e14b78b9edc))
|
15
|
+
|
16
|
+
* feat: add 'CompactPopupWidget' container widget
|
17
|
+
|
18
|
+
Makes it easy to write widgets which can have a compact
|
19
|
+
representation with LED-like global state indicator,
|
20
|
+
with the possibility to display a popup dialog with more
|
21
|
+
complete UI ([`49268e3`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/49268e3829406d70b09e4d88989812f5578e46f4))
|
22
|
+
|
23
|
+
|
4
24
|
## v0.115.0 (2024-10-08)
|
5
25
|
|
6
26
|
### Features
|
@@ -149,25 +169,6 @@ Fixes #361, do not try to change x axis when not permitted ([`efa2763`](https://
|
|
149
169
|
|
150
170
|
## v0.107.0 (2024-09-06)
|
151
171
|
|
152
|
-
### Documentation
|
153
|
-
|
154
|
-
* docs: extend waveform docs ([`e6976dc`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/e6976dc15105209852090a00a97b7cda723142e9))
|
155
|
-
|
156
|
-
### Features
|
157
|
-
|
158
|
-
* feat: add roi select for dap, allow automatic clear curves on plot request ([`7bdca84`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/7bdca8431496fe6562d2c28f5a6af869d1a2e654))
|
159
|
-
|
160
172
|
### Refactoring
|
161
173
|
|
162
174
|
* refactor: change style to bec_accent_colors ([`bd126dd`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/bd126dddbbec3e6c448cce263433d328d577c5c0))
|
163
|
-
|
164
|
-
### Testing
|
165
|
-
|
166
|
-
* test: add tests, including extension to end-2-end test ([`b1aff6d`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/b1aff6d791ff847eb2f628e66ccaa4672fdeea08))
|
167
|
-
|
168
|
-
|
169
|
-
## v0.106.0 (2024-09-05)
|
170
|
-
|
171
|
-
### Features
|
172
|
-
|
173
|
-
* feat(plot_base): toggle to switch outer axes for plotting widgets ([`06d7741`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/06d7741622aea8556208cd17cae521c37333f8b6))
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: bec_widgets
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.116.0
|
4
4
|
Summary: BEC Widgets
|
5
5
|
Project-URL: Bug Tracker, https://gitlab.psi.ch/bec/bec_widgets/issues
|
6
6
|
Project-URL: Homepage, https://gitlab.psi.ch/bec/bec_widgets
|
@@ -32,4 +32,4 @@ Provides-Extra: pyqt6
|
|
32
32
|
Requires-Dist: pyqt6-webengine>=6.7; extra == 'pyqt6'
|
33
33
|
Requires-Dist: pyqt6>=6.7; extra == 'pyqt6'
|
34
34
|
Provides-Extra: pyside6
|
35
|
-
Requires-Dist: pyside6
|
35
|
+
Requires-Dist: pyside6~=6.7.2; extra == 'pyside6'
|
@@ -15,47 +15,65 @@
|
|
15
15
|
</property>
|
16
16
|
<layout class="QVBoxLayout" name="verticalLayout">
|
17
17
|
<item>
|
18
|
-
<layout class="QHBoxLayout" name="horizontalLayout_3" stretch="0,0,0,0,0,1">
|
18
|
+
<layout class="QHBoxLayout" name="horizontalLayout_3" stretch="0,0,0,0,0,0,0,0,0,0,1">
|
19
19
|
<item>
|
20
20
|
<widget class="DarkModeButton" name="dark_mode_button"/>
|
21
21
|
</item>
|
22
22
|
<item>
|
23
|
-
<
|
24
|
-
<property name="
|
25
|
-
<
|
26
|
-
</property>
|
27
|
-
<property name="text">
|
28
|
-
<string>BEC Server State</string>
|
23
|
+
<spacer name="horizontalSpacer_6">
|
24
|
+
<property name="orientation">
|
25
|
+
<enum>Qt::Orientation::Horizontal</enum>
|
29
26
|
</property>
|
30
|
-
<property name="
|
31
|
-
<
|
27
|
+
<property name="sizeHint" stdset="0">
|
28
|
+
<size>
|
29
|
+
<width>40</width>
|
30
|
+
<height>20</height>
|
31
|
+
</size>
|
32
32
|
</property>
|
33
|
-
|
33
|
+
</spacer>
|
34
|
+
</item>
|
35
|
+
<item>
|
36
|
+
<widget class="BECStatusBox" name="bec_status_box">
|
37
|
+
<property name="compact" stdset="0">
|
34
38
|
<bool>true</bool>
|
35
39
|
</property>
|
36
|
-
<property name="
|
37
|
-
<
|
40
|
+
<property name="label" stdset="0">
|
41
|
+
<string>BEC Servers</string>
|
38
42
|
</property>
|
39
43
|
</widget>
|
40
44
|
</item>
|
41
45
|
<item>
|
42
|
-
<
|
43
|
-
<property name="
|
44
|
-
<
|
46
|
+
<spacer name="horizontalSpacer_4">
|
47
|
+
<property name="orientation">
|
48
|
+
<enum>Qt::Orientation::Horizontal</enum>
|
45
49
|
</property>
|
46
|
-
<property name="
|
47
|
-
<
|
50
|
+
<property name="sizeHint" stdset="0">
|
51
|
+
<size>
|
52
|
+
<width>40</width>
|
53
|
+
<height>20</height>
|
54
|
+
</size>
|
48
55
|
</property>
|
49
|
-
|
56
|
+
</spacer>
|
57
|
+
</item>
|
58
|
+
<item>
|
59
|
+
<widget class="BECQueue" name="bec_queue">
|
60
|
+
<property name="compact" stdset="0">
|
50
61
|
<bool>true</bool>
|
51
62
|
</property>
|
52
|
-
|
53
|
-
|
63
|
+
</widget>
|
64
|
+
</item>
|
65
|
+
<item>
|
66
|
+
<spacer name="horizontalSpacer_3">
|
67
|
+
<property name="orientation">
|
68
|
+
<enum>Qt::Orientation::Horizontal</enum>
|
54
69
|
</property>
|
55
|
-
<property name="
|
56
|
-
<
|
70
|
+
<property name="sizeHint" stdset="0">
|
71
|
+
<size>
|
72
|
+
<width>40</width>
|
73
|
+
<height>20</height>
|
74
|
+
</size>
|
57
75
|
</property>
|
58
|
-
</
|
76
|
+
</spacer>
|
59
77
|
</item>
|
60
78
|
<item>
|
61
79
|
<widget class="QRadioButton" name="radioButton">
|
@@ -76,6 +94,19 @@
|
|
76
94
|
</property>
|
77
95
|
</widget>
|
78
96
|
</item>
|
97
|
+
<item>
|
98
|
+
<spacer name="horizontalSpacer_5">
|
99
|
+
<property name="orientation">
|
100
|
+
<enum>Qt::Orientation::Horizontal</enum>
|
101
|
+
</property>
|
102
|
+
<property name="sizeHint" stdset="0">
|
103
|
+
<size>
|
104
|
+
<width>40</width>
|
105
|
+
<height>20</height>
|
106
|
+
</size>
|
107
|
+
</property>
|
108
|
+
</spacer>
|
109
|
+
</item>
|
79
110
|
<item>
|
80
111
|
<widget class="QRadioButton" name="radioButton_3">
|
81
112
|
<property name="enabled">
|
@@ -95,6 +126,19 @@
|
|
95
126
|
</property>
|
96
127
|
</widget>
|
97
128
|
</item>
|
129
|
+
<item>
|
130
|
+
<spacer name="horizontalSpacer_7">
|
131
|
+
<property name="orientation">
|
132
|
+
<enum>Qt::Orientation::Horizontal</enum>
|
133
|
+
</property>
|
134
|
+
<property name="sizeHint" stdset="0">
|
135
|
+
<size>
|
136
|
+
<width>40</width>
|
137
|
+
<height>20</height>
|
138
|
+
</size>
|
139
|
+
</property>
|
140
|
+
</spacer>
|
141
|
+
</item>
|
98
142
|
<item>
|
99
143
|
<widget class="StopButton" name="stop_button">
|
100
144
|
<property name="sizePolicy">
|
@@ -652,14 +696,19 @@
|
|
652
696
|
</widget>
|
653
697
|
<customwidgets>
|
654
698
|
<customwidget>
|
655
|
-
<class>
|
699
|
+
<class>ToggleSwitch</class>
|
656
700
|
<extends>QWidget</extends>
|
657
|
-
<header>
|
701
|
+
<header>toggle_switch</header>
|
658
702
|
</customwidget>
|
659
703
|
<customwidget>
|
660
|
-
<class>
|
704
|
+
<class>BECWaveformWidget</class>
|
661
705
|
<extends>QWidget</extends>
|
662
|
-
<header>
|
706
|
+
<header>bec_waveform_widget</header>
|
707
|
+
</customwidget>
|
708
|
+
<customwidget>
|
709
|
+
<class>BECStatusBox</class>
|
710
|
+
<extends>QWidget</extends>
|
711
|
+
<header>bec_status_box</header>
|
663
712
|
</customwidget>
|
664
713
|
<customwidget>
|
665
714
|
<class>WebsiteWidget</class>
|
@@ -667,44 +716,49 @@
|
|
667
716
|
<header>website_widget</header>
|
668
717
|
</customwidget>
|
669
718
|
<customwidget>
|
670
|
-
<class>
|
719
|
+
<class>StopButton</class>
|
671
720
|
<extends>QWidget</extends>
|
672
|
-
<header>
|
721
|
+
<header>stop_button</header>
|
673
722
|
</customwidget>
|
674
723
|
<customwidget>
|
675
|
-
<class>
|
724
|
+
<class>LMFitDialog</class>
|
676
725
|
<extends>QWidget</extends>
|
677
|
-
<header>
|
726
|
+
<header>lm_fit_dialog</header>
|
678
727
|
</customwidget>
|
679
728
|
<customwidget>
|
680
|
-
<class>
|
729
|
+
<class>ScanControl</class>
|
681
730
|
<extends>QWidget</extends>
|
682
|
-
<header>
|
731
|
+
<header>scan_control</header>
|
732
|
+
</customwidget>
|
733
|
+
<customwidget>
|
734
|
+
<class>BECQueue</class>
|
735
|
+
<extends>QWidget</extends>
|
736
|
+
<header>bec_queue</header>
|
683
737
|
</customwidget>
|
684
738
|
<customwidget>
|
685
739
|
<class>BECProgressBar</class>
|
686
740
|
<extends>QWidget</extends>
|
687
741
|
<header>bec_progress_bar</header>
|
688
742
|
</customwidget>
|
743
|
+
<customwidget>
|
744
|
+
<class>DeviceComboBox</class>
|
745
|
+
<extends>QComboBox</extends>
|
746
|
+
<header>device_combobox</header>
|
747
|
+
</customwidget>
|
689
748
|
<customwidget>
|
690
749
|
<class>DarkModeButton</class>
|
691
750
|
<extends>QWidget</extends>
|
692
751
|
<header>dark_mode_button</header>
|
693
752
|
</customwidget>
|
694
753
|
<customwidget>
|
695
|
-
<class>
|
754
|
+
<class>DapComboBox</class>
|
696
755
|
<extends>QWidget</extends>
|
697
|
-
<header>
|
698
|
-
</customwidget>
|
699
|
-
<customwidget>
|
700
|
-
<class>DeviceComboBox</class>
|
701
|
-
<extends>QComboBox</extends>
|
702
|
-
<header>device_combobox</header>
|
756
|
+
<header>dap_combo_box</header>
|
703
757
|
</customwidget>
|
704
758
|
<customwidget>
|
705
|
-
<class>
|
759
|
+
<class>PositionerBox</class>
|
706
760
|
<extends>QWidget</extends>
|
707
|
-
<header>
|
761
|
+
<header>positioner_box</header>
|
708
762
|
</customwidget>
|
709
763
|
</customwidgets>
|
710
764
|
<tabstops>
|
@@ -0,0 +1,223 @@
|
|
1
|
+
from types import SimpleNamespace
|
2
|
+
|
3
|
+
from bec_qthemes import material_icon
|
4
|
+
from qtpy.QtCore import Property, Qt
|
5
|
+
from qtpy.QtGui import QColor
|
6
|
+
from qtpy.QtWidgets import (
|
7
|
+
QDialog,
|
8
|
+
QHBoxLayout,
|
9
|
+
QLabel,
|
10
|
+
QPushButton,
|
11
|
+
QSizePolicy,
|
12
|
+
QVBoxLayout,
|
13
|
+
QWidget,
|
14
|
+
)
|
15
|
+
|
16
|
+
from bec_widgets.utils.colors import get_accent_colors
|
17
|
+
|
18
|
+
|
19
|
+
class LedLabel(QLabel):
|
20
|
+
success_led = "color: white;border-radius: 10;background-color: qlineargradient(spread:pad, x1:0.145, y1:0.16, x2:1, y2:1, stop:0 %s, stop:1 %s);"
|
21
|
+
emergency_led = "color: white;border-radius: 10;background-color: qlineargradient(spread:pad, x1:0.145, y1:0.16, x2:0.92, y2:0.988636, stop:0 %s, stop:1 %s);"
|
22
|
+
warning_led = "color: white;border-radius: 10;background-color: qlineargradient(spread:pad, x1:0.232, y1:0.272, x2:0.98, y2:0.959773, stop:0 %s, stop:1 %s);"
|
23
|
+
default_led = "color: white;border-radius: 10;background-color: qlineargradient(spread:pad, x1:0.04, y1:0.0565909, x2:0.799, y2:0.795, stop:0 %s, stop:1 %s);"
|
24
|
+
|
25
|
+
def __init__(self, parent=None):
|
26
|
+
super().__init__(parent)
|
27
|
+
|
28
|
+
self.palette = get_accent_colors()
|
29
|
+
if self.palette is None:
|
30
|
+
# no theme!
|
31
|
+
self.palette = SimpleNamespace(
|
32
|
+
default=QColor("blue"),
|
33
|
+
success=QColor("green"),
|
34
|
+
warning=QColor("orange"),
|
35
|
+
emergency=QColor("red"),
|
36
|
+
)
|
37
|
+
self.setState("default")
|
38
|
+
self.setFixedSize(20, 20)
|
39
|
+
|
40
|
+
def setState(self, state: str):
|
41
|
+
match state:
|
42
|
+
case "success":
|
43
|
+
r, g, b, a = self.palette.success.getRgb()
|
44
|
+
self.setStyleSheet(
|
45
|
+
LedLabel.success_led
|
46
|
+
% (
|
47
|
+
f"rgba({r},{g},{b},{a})",
|
48
|
+
f"rgba({int(r*0.8)},{int(g*0.8)},{int(b*0.8)},{a})",
|
49
|
+
)
|
50
|
+
)
|
51
|
+
case "default":
|
52
|
+
r, g, b, a = self.palette.default.getRgb()
|
53
|
+
self.setStyleSheet(
|
54
|
+
LedLabel.default_led
|
55
|
+
% (
|
56
|
+
f"rgba({r},{g},{b},{a})",
|
57
|
+
f"rgba({int(r*0.8)},{int(g*0.8)},{int(b*0.8)},{a})",
|
58
|
+
)
|
59
|
+
)
|
60
|
+
case "warning":
|
61
|
+
r, g, b, a = self.palette.warning.getRgb()
|
62
|
+
self.setStyleSheet(
|
63
|
+
LedLabel.warning_led
|
64
|
+
% (
|
65
|
+
f"rgba({r},{g},{b},{a})",
|
66
|
+
f"rgba({int(r*0.8)},{int(g*0.8)},{int(b*0.8)},{a})",
|
67
|
+
)
|
68
|
+
)
|
69
|
+
case "emergency":
|
70
|
+
r, g, b, a = self.palette.emergency.getRgb()
|
71
|
+
self.setStyleSheet(
|
72
|
+
LedLabel.emergency_led
|
73
|
+
% (
|
74
|
+
f"rgba({r},{g},{b},{a})",
|
75
|
+
f"rgba({int(r*0.8)},{int(g*0.8)},{int(b*0.8)},{a})",
|
76
|
+
)
|
77
|
+
)
|
78
|
+
case unknown_state:
|
79
|
+
raise ValueError(
|
80
|
+
f"Unknown state {repr(unknown_state)}, must be one of default, success, warning or emergency"
|
81
|
+
)
|
82
|
+
|
83
|
+
|
84
|
+
class PopupDialog(QDialog):
|
85
|
+
def __init__(self, content_widget):
|
86
|
+
self.parent = content_widget.parent()
|
87
|
+
self.content_widget = content_widget
|
88
|
+
|
89
|
+
super().__init__(self.parent)
|
90
|
+
|
91
|
+
self.setAttribute(Qt.WA_DeleteOnClose)
|
92
|
+
|
93
|
+
self.content_widget.setParent(self)
|
94
|
+
QVBoxLayout(self)
|
95
|
+
self.layout().addWidget(self.content_widget)
|
96
|
+
self.content_widget.setVisible(True)
|
97
|
+
|
98
|
+
def closeEvent(self, event):
|
99
|
+
self.content_widget.setVisible(False)
|
100
|
+
self.content_widget.setParent(self.parent)
|
101
|
+
|
102
|
+
|
103
|
+
class CompactPopupWidget(QWidget):
|
104
|
+
"""Container widget, that can display its content or have a compact form,
|
105
|
+
in this case clicking on a small button pops the contained widget up.
|
106
|
+
|
107
|
+
In the compact form, a LED-like indicator shows a status indicator.
|
108
|
+
"""
|
109
|
+
|
110
|
+
def __init__(self, parent=None, layout=QVBoxLayout):
|
111
|
+
super().__init__(parent)
|
112
|
+
|
113
|
+
self._popup_window = None
|
114
|
+
|
115
|
+
QVBoxLayout(self)
|
116
|
+
self.compact_view = QWidget(self)
|
117
|
+
self.compact_view.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
|
118
|
+
QHBoxLayout(self.compact_view)
|
119
|
+
self.compact_view.layout().setSpacing(0)
|
120
|
+
self.compact_view.layout().setContentsMargins(0, 0, 0, 0)
|
121
|
+
self.compact_label = QLabel(self.compact_view)
|
122
|
+
self.compact_status = LedLabel(self.compact_view)
|
123
|
+
self.compact_show_popup = QPushButton(self.compact_view)
|
124
|
+
self.compact_show_popup.setFlat(True)
|
125
|
+
self.compact_show_popup.setIcon(
|
126
|
+
material_icon(icon_name="pan_zoom", size=(10, 10), convert_to_pixmap=False)
|
127
|
+
)
|
128
|
+
self.compact_view.layout().addWidget(self.compact_label)
|
129
|
+
self.compact_view.layout().addWidget(self.compact_status)
|
130
|
+
self.compact_view.layout().addWidget(self.compact_show_popup)
|
131
|
+
self.compact_view.setVisible(False)
|
132
|
+
self.layout().addWidget(self.compact_view)
|
133
|
+
self.container = QWidget(self)
|
134
|
+
self.layout().addWidget(self.container)
|
135
|
+
self.container.setVisible(True)
|
136
|
+
layout(self.container)
|
137
|
+
self.layout = self.container.layout()
|
138
|
+
|
139
|
+
self.compact_show_popup.clicked.connect(self.show_popup)
|
140
|
+
|
141
|
+
def set_global_state(self, state: str):
|
142
|
+
"""Set the LED-indicator state
|
143
|
+
|
144
|
+
The LED indicator represents the 'global' state. State can be one of the
|
145
|
+
following: "default", "success", "warning", "emergency"
|
146
|
+
"""
|
147
|
+
self.compact_status.setState(state)
|
148
|
+
|
149
|
+
def show_popup(self):
|
150
|
+
"""Display the contained widgets in a popup dialog"""
|
151
|
+
self._popup_window = PopupDialog(self.container)
|
152
|
+
self._popup_window.show()
|
153
|
+
|
154
|
+
def setSizePolicy(self, size_policy1, size_policy2=None):
|
155
|
+
# setting size policy on the compact popup widget will set
|
156
|
+
# the policy for the container, and for itself
|
157
|
+
if size_policy2 is None:
|
158
|
+
# assuming first form: setSizePolicy(QSizePolicy)
|
159
|
+
self.container.setSizePolicy(size_policy1)
|
160
|
+
QWidget.setSizePolicy(self, size_policy1)
|
161
|
+
else:
|
162
|
+
self.container.setSizePolicy(size_policy1, size_policy2)
|
163
|
+
QWidget.setSizePolicy(self, size_policy1, size_policy2)
|
164
|
+
|
165
|
+
def addWidget(self, widget):
|
166
|
+
"""Add a widget to the popup container
|
167
|
+
|
168
|
+
The popup container corresponds to the "full view" (not compact)
|
169
|
+
The widget is reparented to the container, and added to the container layout
|
170
|
+
"""
|
171
|
+
widget.setParent(self.container)
|
172
|
+
self.container.layout().addWidget(widget)
|
173
|
+
|
174
|
+
@Property(bool)
|
175
|
+
def compact(self):
|
176
|
+
return self.compact_view.isVisible()
|
177
|
+
|
178
|
+
@compact.setter
|
179
|
+
def compact(self, set_compact: bool):
|
180
|
+
"""Sets the compact form
|
181
|
+
|
182
|
+
If set_compact is True, the compact view is displayed ; otherwise,
|
183
|
+
the full view is displayed. This is handled by toggling visibility of
|
184
|
+
the container widget or the compact view widget.
|
185
|
+
"""
|
186
|
+
if set_compact:
|
187
|
+
self.compact_view.setVisible(True)
|
188
|
+
self.container.setVisible(False)
|
189
|
+
QWidget.setSizePolicy(self, QSizePolicy.Fixed, QSizePolicy.Fixed)
|
190
|
+
else:
|
191
|
+
self.compact_view.setVisible(False)
|
192
|
+
self.container.setVisible(True)
|
193
|
+
QWidget.setSizePolicy(self, self.container.sizePolicy())
|
194
|
+
if self.parentWidget():
|
195
|
+
self.parentWidget().adjustSize()
|
196
|
+
else:
|
197
|
+
self.adjustSize()
|
198
|
+
|
199
|
+
@Property(str)
|
200
|
+
def label(self):
|
201
|
+
return self.compact_label.text()
|
202
|
+
|
203
|
+
@label.setter
|
204
|
+
def label(self, compact_label_text: str):
|
205
|
+
"""Set the label text associated to the compact view"""
|
206
|
+
self.compact_label.setText(compact_label_text)
|
207
|
+
|
208
|
+
@Property(str)
|
209
|
+
def tooltip(self):
|
210
|
+
return self.compact_label.toolTip()
|
211
|
+
|
212
|
+
@tooltip.setter
|
213
|
+
def tooltip(self, tooltip: str):
|
214
|
+
"""Set the tooltip text associated to the compact view"""
|
215
|
+
self.compact_label.setToolTip(tooltip)
|
216
|
+
self.compact_status.setToolTip(tooltip)
|
217
|
+
|
218
|
+
def closeEvent(self, event):
|
219
|
+
# Called by Qt, on closing - since the children widgets can be
|
220
|
+
# BECWidgets, it is good to explicitely call 'close' on them,
|
221
|
+
# to ensure proper resources cleanup
|
222
|
+
for child in self.container.findChildren(QWidget, options=Qt.FindDirectChildrenOnly):
|
223
|
+
child.close()
|
@@ -2,10 +2,11 @@ from __future__ import annotations
|
|
2
2
|
|
3
3
|
from bec_lib.endpoints import MessageEndpoints
|
4
4
|
from bec_qthemes import material_icon
|
5
|
-
from qtpy.QtCore import Property, Qt, Slot
|
5
|
+
from qtpy.QtCore import Property, Qt, Signal, Slot
|
6
6
|
from qtpy.QtGui import QColor
|
7
7
|
from qtpy.QtWidgets import QHeaderView, QLabel, QTableWidget, QTableWidgetItem, QVBoxLayout, QWidget
|
8
8
|
|
9
|
+
from bec_widgets.qt_utils.compact_popup import CompactPopupWidget
|
9
10
|
from bec_widgets.qt_utils.toolbar import ModularToolBar, SeparatorAction, WidgetAction
|
10
11
|
from bec_widgets.utils.bec_connector import ConnectionConfig
|
11
12
|
from bec_widgets.utils.bec_widget import BECWidget
|
@@ -15,7 +16,7 @@ from bec_widgets.widgets.button_resume.button_resume import ResumeButton
|
|
15
16
|
from bec_widgets.widgets.stop_button.stop_button import StopButton
|
16
17
|
|
17
18
|
|
18
|
-
class BECQueue(BECWidget,
|
19
|
+
class BECQueue(BECWidget, CompactPopupWidget):
|
19
20
|
"""
|
20
21
|
Widget to display the BEC queue.
|
21
22
|
"""
|
@@ -31,6 +32,8 @@ class BECQueue(BECWidget, QWidget):
|
|
31
32
|
"COMPLETED": "blue",
|
32
33
|
}
|
33
34
|
|
35
|
+
queue_busy = Signal(bool)
|
36
|
+
|
34
37
|
def __init__(
|
35
38
|
self,
|
36
39
|
parent: QWidget | None = None,
|
@@ -40,22 +43,24 @@ class BECQueue(BECWidget, QWidget):
|
|
40
43
|
refresh_upon_start: bool = True,
|
41
44
|
):
|
42
45
|
super().__init__(client, config, gui_id)
|
43
|
-
|
44
|
-
self.layout = QVBoxLayout(self)
|
46
|
+
CompactPopupWidget.__init__(self, parent=parent, layout=QVBoxLayout)
|
45
47
|
self.layout.setSpacing(0)
|
46
48
|
self.layout.setContentsMargins(0, 0, 0, 0)
|
47
49
|
|
48
50
|
# Set up the toolbar
|
49
51
|
self.set_toolbar()
|
50
|
-
|
51
52
|
# Set up the table
|
52
53
|
self.table = QTableWidget(self)
|
53
|
-
self.layout.addWidget(self.table)
|
54
|
+
# self.layout.addWidget(self.table)
|
54
55
|
self.table.setColumnCount(4)
|
55
56
|
self.table.setHorizontalHeaderLabels(["Scan Number", "Type", "Status", "Cancel"])
|
56
57
|
header = self.table.horizontalHeader()
|
57
58
|
header.setSectionResizeMode(QHeaderView.Stretch)
|
58
59
|
|
60
|
+
self.addWidget(self.table)
|
61
|
+
self.label = "BEC Queue"
|
62
|
+
self.tooltip = "BEC Queue status"
|
63
|
+
|
59
64
|
self.bec_dispatcher.connect_slot(self.update_queue, MessageEndpoints.scan_queue_status())
|
60
65
|
self.reset_content()
|
61
66
|
if refresh_upon_start:
|
@@ -78,7 +83,7 @@ class BECQueue(BECWidget, QWidget):
|
|
78
83
|
target_widget=self,
|
79
84
|
)
|
80
85
|
|
81
|
-
self.
|
86
|
+
self.addWidget(self.toolbar)
|
82
87
|
|
83
88
|
@Property(bool)
|
84
89
|
def hide_toolbar(self):
|
@@ -109,6 +114,9 @@ class BECQueue(BECWidget, QWidget):
|
|
109
114
|
Refresh the queue.
|
110
115
|
"""
|
111
116
|
msg = self.client.connector.get(MessageEndpoints.scan_queue_status())
|
117
|
+
if msg is None:
|
118
|
+
# msg is None if no scan has been run yet (fresh start)
|
119
|
+
return
|
112
120
|
self.update_queue(msg.content, msg.metadata)
|
113
121
|
|
114
122
|
@Slot(dict, dict)
|
@@ -152,6 +160,13 @@ class BECQueue(BECWidget, QWidget):
|
|
152
160
|
if scan_ids:
|
153
161
|
scan_ids = ", ".join(scan_ids)
|
154
162
|
self.set_row(index, scan_numbers, scan_types, status, scan_ids)
|
163
|
+
busy = (
|
164
|
+
False
|
165
|
+
if all(item.get("status") in ("STOPPED", "COMPLETED", "IDLE") for item in queue_info)
|
166
|
+
else True
|
167
|
+
)
|
168
|
+
self.set_global_state("warning" if busy else "default")
|
169
|
+
self.queue_busy.emit(busy)
|
155
170
|
|
156
171
|
def format_item(self, content: str, status=False) -> QTableWidgetItem:
|
157
172
|
"""
|
{bec_widgets-0.115.0 → bec_widgets-0.116.0}/bec_widgets/widgets/bec_status_box/bec_status_box.py
RENAMED
@@ -13,8 +13,8 @@ from bec_lib.utils.import_utils import lazy_import_from
|
|
13
13
|
from qtpy.QtCore import QObject, QTimer, Signal, Slot
|
14
14
|
from qtpy.QtWidgets import QHBoxLayout, QTreeWidget, QTreeWidgetItem, QWidget
|
15
15
|
|
16
|
+
from bec_widgets.qt_utils.compact_popup import CompactPopupWidget
|
16
17
|
from bec_widgets.utils.bec_widget import BECWidget
|
17
|
-
from bec_widgets.utils.colors import set_theme
|
18
18
|
from bec_widgets.widgets.bec_status_box.status_item import StatusItem
|
19
19
|
|
20
20
|
if TYPE_CHECKING:
|
@@ -64,7 +64,7 @@ class BECServiceStatusMixin(QObject):
|
|
64
64
|
self._service_update_timer.deleteLater()
|
65
65
|
|
66
66
|
|
67
|
-
class BECStatusBox(BECWidget,
|
67
|
+
class BECStatusBox(BECWidget, CompactPopupWidget):
|
68
68
|
"""An autonomous widget to display the status of BEC services.
|
69
69
|
|
70
70
|
Args:
|
@@ -83,15 +83,13 @@ class BECStatusBox(BECWidget, QWidget):
|
|
83
83
|
def __init__(
|
84
84
|
self,
|
85
85
|
parent=None,
|
86
|
-
box_name: str = "BEC
|
86
|
+
box_name: str = "BEC Servers",
|
87
87
|
client: BECClient = None,
|
88
88
|
bec_service_status_mixin: BECServiceStatusMixin = None,
|
89
89
|
gui_id: str = None,
|
90
90
|
):
|
91
91
|
super().__init__(client=client, gui_id=gui_id)
|
92
|
-
|
93
|
-
self.tree = QTreeWidget(self)
|
94
|
-
self.layout = QHBoxLayout(self)
|
92
|
+
CompactPopupWidget.__init__(self, parent=parent, layout=QHBoxLayout)
|
95
93
|
|
96
94
|
self.box_name = box_name
|
97
95
|
self.status_container = defaultdict(lambda: {"info": None, "item": None, "widget": None})
|
@@ -100,11 +98,13 @@ class BECStatusBox(BECWidget, QWidget):
|
|
100
98
|
bec_service_status_mixin = BECServiceStatusMixin(self, client=self.client)
|
101
99
|
self.bec_service_status = bec_service_status_mixin
|
102
100
|
|
101
|
+
self.label = box_name
|
102
|
+
self.tooltip = "BEC servers health status"
|
103
103
|
self.init_ui()
|
104
104
|
self.bec_service_status.services_update.connect(self.update_service_status)
|
105
105
|
self.bec_core_state.connect(self.update_top_item_status)
|
106
106
|
self.tree.itemDoubleClicked.connect(self.on_tree_item_double_clicked)
|
107
|
-
self.
|
107
|
+
self.addWidget(self.tree)
|
108
108
|
|
109
109
|
def init_ui(self) -> None:
|
110
110
|
"""Init the UI for the BECStatusBox widget, should only take place once."""
|
@@ -121,6 +121,7 @@ class BECStatusBox(BECWidget, QWidget):
|
|
121
121
|
|
122
122
|
def init_ui_tree_widget(self) -> None:
|
123
123
|
"""Initialise the tree widget for the status box."""
|
124
|
+
self.tree = QTreeWidget(self)
|
124
125
|
self.tree.setHeaderHidden(True)
|
125
126
|
# TODO probably here is a problem still with setting the stylesheet
|
126
127
|
self.tree.setStyleSheet(
|
@@ -163,6 +164,7 @@ class BECStatusBox(BECWidget, QWidget):
|
|
163
164
|
status (BECStatus): The state of the core services.
|
164
165
|
"""
|
165
166
|
self.status_container[self.box_name]["info"].status = status
|
167
|
+
self.set_global_state("emergency" if status == "NOTCONNECTED" else "success")
|
166
168
|
self.service_update.emit(self.status_container[self.box_name]["info"])
|
167
169
|
|
168
170
|
def _update_status_container(
|
@@ -308,6 +310,8 @@ if __name__ == "__main__": # pragma: no cover
|
|
308
310
|
|
309
311
|
from qtpy.QtWidgets import QApplication
|
310
312
|
|
313
|
+
from bec_widgets.utils.colors import set_theme
|
314
|
+
|
311
315
|
app = QApplication(sys.argv)
|
312
316
|
set_theme("dark")
|
313
317
|
main_window = BECStatusBox()
|