bec-widgets 0.115.0__tar.gz → 0.117.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.117.0}/CHANGELOG.md +31 -28
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/PKG-INFO +2 -2
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/applications/alignment/alignment_1d/alignment_1d.ui +96 -42
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/cli/client.py +45 -0
- bec_widgets-0.117.0/bec_widgets/qt_utils/compact_popup.py +223 -0
- bec_widgets-0.117.0/bec_widgets/utils/fps_counter.py +84 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/bec_queue/bec_queue.py +22 -7
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/bec_status_box/bec_status_box.py +11 -7
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/figure/plots/image/image.py +1 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/figure/plots/image/image_item.py +2 -2
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/figure/plots/plot_base.py +62 -3
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/figure/plots/waveform/waveform.py +1 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/image/image_widget.py +17 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/waveform/waveform_widget.py +23 -3
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/pyproject.toml +2 -2
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/.git_hooks/pre-commit +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/.gitignore +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/.gitlab/issue_templates/bug_report_template.md +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/.gitlab/issue_templates/documentation_update_template.md +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/.gitlab/issue_templates/feature_request_template.md +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/.gitlab/merge_request_templates/default.md +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/.gitlab-ci.yml +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/.pylintrc +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/.readthedocs.yaml +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/LICENSE +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/README.md +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/applications/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/applications/alignment/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/applications/alignment/alignment_1d/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/applications/alignment/alignment_1d/alignment_1d.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/applications/bec_app.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/assets/app_icons/BEC-General-App.png +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/assets/app_icons/alignment_1d.png +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/assets/app_icons/bec_widgets_icon.png +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/cli/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/cli/auto_updates.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/cli/client_utils.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/cli/generate_cli.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/cli/rpc_register.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/cli/rpc_wigdet_handler.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/cli/server.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/examples/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/examples/general_app/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/examples/general_app/general_app.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/examples/general_app/general_app.ui +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/examples/general_app/web_links.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/examples/jupyter_console/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/examples/jupyter_console/jupyter_console_window.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/examples/plugin_example_pyside/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/examples/plugin_example_pyside/main.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/examples/plugin_example_pyside/registertictactoe.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/examples/plugin_example_pyside/taskmenuextension.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/examples/plugin_example_pyside/tictactoe.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/examples/plugin_example_pyside/tictactoeplugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/examples/plugin_example_pyside/tictactoetaskmenu.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/qt_utils/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/qt_utils/error_popups.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/qt_utils/palette_viewer.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/qt_utils/redis_message_waiter.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/qt_utils/settings_dialog.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/qt_utils/toolbar.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/utils/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/utils/bec_connector.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/utils/bec_designer.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/utils/bec_dispatcher.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/utils/bec_signal_proxy.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/utils/bec_table.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/utils/bec_widget.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/utils/colors.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/utils/container_utils.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/utils/crosshair.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/utils/entry_validator.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/utils/generate_designer_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/utils/layout_manager.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/utils/linear_region_selector.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/utils/plot_indicator_items.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/utils/plugin_templates/plugin.template +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/utils/plugin_templates/register.template +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/utils/plugin_utils.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/utils/reference_utils.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/utils/rpc_decorator.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/utils/thread_checker.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/utils/ui_loader.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/utils/validator_delegate.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/utils/widget_io.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/utils/yaml_dialog.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/base_classes/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/base_classes/device_input_base.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/bec_progressbar/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/bec_progressbar/bec_progress_bar.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/bec_progressbar/bec_progress_bar_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/bec_progressbar/bec_progressbar.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/bec_progressbar/register_bec_progress_bar.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/bec_queue/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/bec_queue/bec_queue.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/bec_queue/bec_queue_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/bec_queue/register_bec_queue.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/bec_status_box/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/bec_status_box/bec_status_box.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/bec_status_box/bec_status_box_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/bec_status_box/register_bec_status_box.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/bec_status_box/status_item.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/button_abort/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/button_abort/abort_button.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/button_abort/abort_button_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/button_abort/button_abort.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/button_abort/register_abort_button.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/button_reset/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/button_reset/button_reset.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/button_reset/register_reset_button.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/button_reset/reset_button.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/button_reset/reset_button_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/button_resume/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/button_resume/button_resume.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/button_resume/register_resume_button.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/button_resume/resume_button.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/button_resume/resume_button_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/color_button/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/color_button/color_button.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/color_button/color_button.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/color_button/color_button_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/color_button/register_color_button.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/colormap_selector/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/colormap_selector/colormap_selector.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/colormap_selector/colormap_selector.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/colormap_selector/colormap_selector_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/colormap_selector/register_colormap_selector.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/console/console.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/console/console.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/console/console_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/console/register_console.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/dap_combo_box/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/dap_combo_box/dap_combo_box.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/dap_combo_box/dap_combo_box.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/dap_combo_box/dap_combo_box_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/dap_combo_box/register_dap_combo_box.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/dark_mode_button/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/dark_mode_button/dark_mode_button.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/dark_mode_button/dark_mode_button.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/dark_mode_button/dark_mode_button_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/dark_mode_button/register_dark_mode_button.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/device_browser/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/device_browser/device_browser.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/device_browser/device_browser.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/device_browser/device_browser.ui +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/device_browser/device_browser_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/device_browser/device_item/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/device_browser/device_item/device_item.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/device_browser/register_device_browser.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/device_combobox/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/device_combobox/device_combo_box.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/device_combobox/device_combo_box_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/device_combobox/device_combobox.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/device_combobox/register_device_combo_box.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/device_line_edit/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/device_line_edit/device_line_edit.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/device_line_edit/device_line_edit.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/device_line_edit/device_line_edit_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/device_line_edit/register_device_line_edit.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/dock/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/dock/dock.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/dock/dock_area.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/dock/dock_area.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/dock/dock_area_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/dock/register_dock_area.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/figure/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/figure/figure.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/figure/plots/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/figure/plots/axis_settings.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/figure/plots/axis_settings.ui +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/figure/plots/image/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/figure/plots/image/image_processor.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/figure/plots/motor_map/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/figure/plots/motor_map/motor_map.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/figure/plots/waveform/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/figure/plots/waveform/waveform_curve.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/image/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/image/bec_image_widget.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/image/bec_image_widget_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/image/register_bec_image_widget.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/jupyter_console/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/jupyter_console/jupyter_console.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/lmfit_dialog/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/lmfit_dialog/lm_fit_dialog.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/lmfit_dialog/lm_fit_dialog_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/lmfit_dialog/lmfit_dialog.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/lmfit_dialog/lmfit_dialog_compact.ui +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/lmfit_dialog/lmfit_dialog_vertical.ui +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/lmfit_dialog/register_lm_fit_dialog.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/motor_map/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/motor_map/bec_motor_map_widget.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/motor_map/bec_motor_map_widget_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/motor_map/motor_map_dialog/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/motor_map/motor_map_dialog/motor_map_settings.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/motor_map/motor_map_dialog/motor_map_settings.ui +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/motor_map/motor_map_widget.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/motor_map/register_bec_motor_map_widget.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/position_indicator/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/position_indicator/position_indicator.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/position_indicator/position_indicator.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/position_indicator/position_indicator_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/position_indicator/register_position_indicator.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/positioner_box/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/positioner_box/positioner_box.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/positioner_box/positioner_box.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/positioner_box/positioner_box.ui +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/positioner_box/positioner_box_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/positioner_box/positioner_control_line.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/positioner_box/positioner_control_line.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/positioner_box/positioner_control_line.ui +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/positioner_box/positioner_control_line_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/positioner_box/register_positioner_box.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/positioner_box/register_positioner_control_line.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/ring_progress_bar/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/ring_progress_bar/register_ring_progress_bar.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/ring_progress_bar/ring.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/ring_progress_bar/ring_progress_bar.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/ring_progress_bar/ring_progress_bar.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/ring_progress_bar/ring_progress_bar_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/scan_control/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/scan_control/register_scan_control.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/scan_control/scan_control.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/scan_control/scan_control.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/scan_control/scan_control_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/scan_control/scan_group_box.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/spinner/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/spinner/register_spinner_widget.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/spinner/spinner.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/spinner/spinner_widget.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/spinner/spinner_widget_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/stop_button/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/stop_button/register_stop_button.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/stop_button/stop_button.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/stop_button/stop_button.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/stop_button/stop_button_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/text_box/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/text_box/register_text_box.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/text_box/text_box.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/text_box/text_box.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/text_box/text_box_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/toggle/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/toggle/register_toggle_switch.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/toggle/toggle.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/toggle/toggle_switch.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/toggle/toggle_switch_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/vscode/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/vscode/register_vs_code_editor.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/vscode/vs_code_editor.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/vscode/vs_code_editor_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/vscode/vscode.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/waveform/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/waveform/bec_waveform_widget.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/waveform/bec_waveform_widget_plugin.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/waveform/register_bec_waveform_widget.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/waveform/waveform_popups/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/waveform/waveform_popups/curve_dialog/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/waveform/waveform_popups/curve_dialog/curve_dialog.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/waveform/waveform_popups/curve_dialog/curve_dialog.ui +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog/dap_summary_dialog.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/website/__init__.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/website/register_website_widget.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/website/website.py +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/website/website_widget.pyproject +0 -0
- {bec_widgets-0.115.0 → bec_widgets-0.117.0}/bec_widgets/widgets/website/website_widget_plugin.py +0 -0
@@ -1,6 +1,37 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
3
|
|
4
|
+
## v0.117.0 (2024-10-11)
|
5
|
+
|
6
|
+
### Features
|
7
|
+
|
8
|
+
* feat(utils): FPS counter utility based on the viewBox updates, integrated to waveform and image widget ([`8c5ef26`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/8c5ef268430d5243ac05fcbbdb6b76ad24ac5735))
|
9
|
+
|
10
|
+
### Unknown
|
11
|
+
|
12
|
+
* tests(plot_base): tests extended ([`8dc892d`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/8dc892df0a47ccbdd812555b7c5775a455a23ede))
|
13
|
+
|
14
|
+
|
15
|
+
## v0.116.0 (2024-10-11)
|
16
|
+
|
17
|
+
### Build System
|
18
|
+
|
19
|
+
* build: fix PySide6 to 6.7.2 ([`908dbc1`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/908dbc1760da5b323722207163f00850b84fb90b))
|
20
|
+
|
21
|
+
### Features
|
22
|
+
|
23
|
+
* feat: UI changes to have top toolbar with compact popup widgets (fix issue #360) ([`499b6b9`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/499b6b9a12efd931b5728b519404c41a7e29e4d6))
|
24
|
+
|
25
|
+
* feat: adapt BECQueue and BECStatusBox widgets to use CompactPopupWidget ([`94ce92f`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/94ce92f5b054d25ea3bb7976c1f75e14b78b9edc))
|
26
|
+
|
27
|
+
* feat: add 'CompactPopupWidget' container widget
|
28
|
+
|
29
|
+
Makes it easy to write widgets which can have a compact
|
30
|
+
representation with LED-like global state indicator,
|
31
|
+
with the possibility to display a popup dialog with more
|
32
|
+
complete UI ([`49268e3`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/49268e3829406d70b09e4d88989812f5578e46f4))
|
33
|
+
|
34
|
+
|
4
35
|
## v0.115.0 (2024-10-08)
|
5
36
|
|
6
37
|
### Features
|
@@ -143,31 +174,3 @@ Fixes #361, do not try to change x axis when not permitted ([`efa2763`](https://
|
|
143
174
|
### Features
|
144
175
|
|
145
176
|
* feat(progressbar): added bec progressbar ([`f6d1d0b`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/f6d1d0bbe3ba30a3b7291cd36a1f7f8e6bd5b895))
|
146
|
-
|
147
|
-
* feat(generate_cli): added support for property and qproperty setter ([`a52182d`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/a52182dca978833bfc3fad755c596d3a2ef45c42))
|
148
|
-
|
149
|
-
|
150
|
-
## v0.107.0 (2024-09-06)
|
151
|
-
|
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
|
-
### Refactoring
|
161
|
-
|
162
|
-
* 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.117.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>
|
@@ -1135,6 +1135,15 @@ class BECImageShow(RPCBase):
|
|
1135
1135
|
y(bool): Show grid on the y-axis.
|
1136
1136
|
"""
|
1137
1137
|
|
1138
|
+
@rpc_call
|
1139
|
+
def enable_fps_monitor(self, enable: "bool" = True):
|
1140
|
+
"""
|
1141
|
+
Enable the FPS monitor.
|
1142
|
+
|
1143
|
+
Args:
|
1144
|
+
enable(bool): True to enable, False to disable.
|
1145
|
+
"""
|
1146
|
+
|
1138
1147
|
@rpc_call
|
1139
1148
|
def lock_aspect_ratio(self, lock):
|
1140
1149
|
"""
|
@@ -1330,6 +1339,15 @@ class BECImageWidget(RPCBase):
|
|
1330
1339
|
y_grid(bool): Visibility of the y-axis grid.
|
1331
1340
|
"""
|
1332
1341
|
|
1342
|
+
@rpc_call
|
1343
|
+
def enable_fps_monitor(self, enabled: "bool"):
|
1344
|
+
"""
|
1345
|
+
Enable the FPS monitor of the plot widget.
|
1346
|
+
|
1347
|
+
Args:
|
1348
|
+
enabled(bool): If True, enable the FPS monitor.
|
1349
|
+
"""
|
1350
|
+
|
1333
1351
|
@rpc_call
|
1334
1352
|
def lock_aspect_ratio(self, lock: "bool"):
|
1335
1353
|
"""
|
@@ -1666,6 +1684,15 @@ class BECPlotBase(RPCBase):
|
|
1666
1684
|
show(bool): Show the outer axes.
|
1667
1685
|
"""
|
1668
1686
|
|
1687
|
+
@rpc_call
|
1688
|
+
def enable_fps_monitor(self, enable: "bool" = True):
|
1689
|
+
"""
|
1690
|
+
Enable the FPS monitor.
|
1691
|
+
|
1692
|
+
Args:
|
1693
|
+
enable(bool): True to enable, False to disable.
|
1694
|
+
"""
|
1695
|
+
|
1669
1696
|
@rpc_call
|
1670
1697
|
def lock_aspect_ratio(self, lock):
|
1671
1698
|
"""
|
@@ -2069,6 +2096,15 @@ class BECWaveform(RPCBase):
|
|
2069
2096
|
colormap(str, optional): Scale the colors of curves to colormap. If None, use the default color palette.
|
2070
2097
|
"""
|
2071
2098
|
|
2099
|
+
@rpc_call
|
2100
|
+
def enable_fps_monitor(self, enable: "bool" = True):
|
2101
|
+
"""
|
2102
|
+
Enable the FPS monitor.
|
2103
|
+
|
2104
|
+
Args:
|
2105
|
+
enable(bool): True to enable, False to disable.
|
2106
|
+
"""
|
2107
|
+
|
2072
2108
|
@rpc_call
|
2073
2109
|
def lock_aspect_ratio(self, lock):
|
2074
2110
|
"""
|
@@ -2374,6 +2410,15 @@ class BECWaveformWidget(RPCBase):
|
|
2374
2410
|
y_grid(bool): Visibility of the y-axis grid.
|
2375
2411
|
"""
|
2376
2412
|
|
2413
|
+
@rpc_call
|
2414
|
+
def enable_fps_monitor(self, enabled: "bool"):
|
2415
|
+
"""
|
2416
|
+
Enable the FPS monitor of the plot widget.
|
2417
|
+
|
2418
|
+
Args:
|
2419
|
+
enabled(bool): If True, enable the FPS monitor.
|
2420
|
+
"""
|
2421
|
+
|
2377
2422
|
@rpc_call
|
2378
2423
|
def lock_aspect_ratio(self, lock: "bool"):
|
2379
2424
|
"""
|
@@ -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()
|
@@ -0,0 +1,84 @@
|
|
1
|
+
"""
|
2
|
+
This module provides a utility class for counting and reporting frames per second (FPS) in a PyQtGraph application.
|
3
|
+
|
4
|
+
Classes:
|
5
|
+
FPSCounter: A class that monitors the paint events of a `ViewBox` to calculate and emit FPS values.
|
6
|
+
|
7
|
+
Usage:
|
8
|
+
The `FPSCounter` class can be used to monitor the rendering performance of a `ViewBox` in a PyQtGraph application.
|
9
|
+
It connects to the `ViewBox`'s paint event and calculates the FPS over a specified interval, emitting the FPS value
|
10
|
+
at regular intervals.
|
11
|
+
|
12
|
+
Example:
|
13
|
+
from qtpy import QtWidgets, QtCore
|
14
|
+
import pyqtgraph as pg
|
15
|
+
from fps_counter import FPSCounter
|
16
|
+
|
17
|
+
app = pg.mkQApp("FPS Counter Example")
|
18
|
+
win = pg.GraphicsLayoutWidget()
|
19
|
+
win.show()
|
20
|
+
|
21
|
+
vb = pg.ViewBox()
|
22
|
+
plot_item = pg.PlotItem(viewBox=vb)
|
23
|
+
win.addItem(plot_item)
|
24
|
+
|
25
|
+
fps_counter = FPSCounter(vb)
|
26
|
+
fps_counter.sigFpsUpdate.connect(lambda fps: print(f"FPS: {fps:.2f}"))
|
27
|
+
|
28
|
+
sys.exit(app.exec_())
|
29
|
+
"""
|
30
|
+
|
31
|
+
from time import perf_counter
|
32
|
+
|
33
|
+
import pyqtgraph as pg
|
34
|
+
from qtpy import QtCore
|
35
|
+
|
36
|
+
|
37
|
+
class FPSCounter(QtCore.QObject):
|
38
|
+
"""
|
39
|
+
A utility class for counting and reporting frames per second (FPS).
|
40
|
+
|
41
|
+
This class connects to a `ViewBox`'s paint event to count the number of
|
42
|
+
frames rendered and calculates the FPS over a specified interval. It emits
|
43
|
+
a signal with the FPS value at regular intervals.
|
44
|
+
|
45
|
+
Attributes:
|
46
|
+
sigFpsUpdate (QtCore.Signal): Signal emitted with the FPS value.
|
47
|
+
view_box (pg.ViewBox): The `ViewBox` instance to monitor.
|
48
|
+
"""
|
49
|
+
|
50
|
+
sigFpsUpdate = QtCore.Signal(float)
|
51
|
+
|
52
|
+
def __init__(self, view_box):
|
53
|
+
super().__init__()
|
54
|
+
self.view_box = view_box
|
55
|
+
self.view_box.sigPaint.connect(self.increment_count)
|
56
|
+
self.count = 0
|
57
|
+
self.last_update = perf_counter()
|
58
|
+
self.timer = QtCore.QTimer()
|
59
|
+
self.timer.timeout.connect(self.calculate_fps)
|
60
|
+
self.timer.start(1000)
|
61
|
+
|
62
|
+
def increment_count(self):
|
63
|
+
"""
|
64
|
+
Increment the frame count when the `ViewBox` is painted.
|
65
|
+
"""
|
66
|
+
self.count += 1
|
67
|
+
|
68
|
+
def calculate_fps(self):
|
69
|
+
"""
|
70
|
+
Calculate the frames per second (FPS) based on the number of frames
|
71
|
+
"""
|
72
|
+
now = perf_counter()
|
73
|
+
elapsed = now - self.last_update
|
74
|
+
fps = self.count / elapsed if elapsed > 0 else 0.0
|
75
|
+
self.last_update = now
|
76
|
+
self.count = 0
|
77
|
+
self.sigFpsUpdate.emit(fps)
|
78
|
+
|
79
|
+
def cleanup(self):
|
80
|
+
"""
|
81
|
+
Clean up the FPS counter by stopping the timer and disconnecting the signal.
|
82
|
+
"""
|
83
|
+
self.timer.stop()
|
84
|
+
self.timer.timeout.disconnect(self.calculate_fps)
|