bec-widgets 0.109.0__tar.gz → 0.110.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.109.0 → bec_widgets-0.110.0}/CHANGELOG.md +12 -14
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/PKG-INFO +1 -1
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/cli/client.py +5 -15
- bec_widgets-0.110.0/bec_widgets/qt_utils/palette_viewer.py +183 -0
- bec_widgets-0.110.0/bec_widgets/widgets/text_box/text_box.py +135 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/pyproject.toml +1 -1
- bec_widgets-0.109.0/bec_widgets/widgets/text_box/text_box.py +0 -129
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/.git_hooks/pre-commit +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/.gitignore +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/.gitlab/issue_templates/bug_report_template.md +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/.gitlab/issue_templates/documentation_update_template.md +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/.gitlab/issue_templates/feature_request_template.md +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/.gitlab/merge_request_templates/default.md +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/.gitlab-ci.yml +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/.pylintrc +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/.readthedocs.yaml +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/LICENSE +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/README.md +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/assets/app_icons/BEC-General-App.png +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/assets/app_icons/bec_widgets_icon.png +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/assets/status_icons/error.svg +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/assets/status_icons/not_connected.svg +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/assets/status_icons/refresh.svg +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/assets/status_icons/running.svg +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/assets/status_icons/warning.svg +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/cli/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/cli/auto_updates.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/cli/client_utils.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/cli/generate_cli.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/cli/rpc_register.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/cli/rpc_wigdet_handler.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/cli/server.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/examples/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/examples/general_app/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/examples/general_app/general_app.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/examples/general_app/general_app.ui +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/examples/general_app/web_links.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/examples/jupyter_console/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/examples/jupyter_console/jupyter_console_window.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/examples/plugin_example_pyside/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/examples/plugin_example_pyside/main.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/examples/plugin_example_pyside/registertictactoe.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/examples/plugin_example_pyside/taskmenuextension.pyproject +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/examples/plugin_example_pyside/tictactoe.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/examples/plugin_example_pyside/tictactoeplugin.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/examples/plugin_example_pyside/tictactoetaskmenu.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/qt_utils/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/qt_utils/error_popups.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/qt_utils/redis_message_waiter.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/qt_utils/settings_dialog.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/qt_utils/toolbar.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/utils/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/utils/bec_connector.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/utils/bec_designer.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/utils/bec_dispatcher.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/utils/bec_table.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/utils/bec_widget.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/utils/colors.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/utils/container_utils.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/utils/crosshair.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/utils/entry_validator.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/utils/generate_designer_plugin.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/utils/layout_manager.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/utils/linear_region_selector.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/utils/plugin_templates/plugin.template +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/utils/plugin_templates/register.template +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/utils/plugin_utils.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/utils/reference_utils.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/utils/rpc_decorator.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/utils/thread_checker.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/utils/ui_loader.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/utils/validator_delegate.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/utils/widget_io.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/utils/yaml_dialog.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/base_classes/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/base_classes/device_input_base.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/bec_progressbar/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/bec_progressbar/bec_progress_bar.pyproject +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/bec_progressbar/bec_progress_bar_plugin.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/bec_progressbar/bec_progressbar.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/bec_progressbar/register_bec_progress_bar.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/bec_queue/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/bec_queue/bec_queue.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/bec_queue/bec_queue.pyproject +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/bec_queue/bec_queue_plugin.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/bec_queue/register_bec_queue.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/bec_status_box/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/bec_status_box/bec_status_box.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/bec_status_box/bec_status_box.pyproject +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/bec_status_box/bec_status_box_plugin.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/bec_status_box/register_bec_status_box.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/bec_status_box/status_item.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/button_abort/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/button_abort/abort_button.pyproject +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/button_abort/abort_button_plugin.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/button_abort/button_abort.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/button_abort/register_abort_button.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/button_reset/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/button_reset/button_reset.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/button_reset/register_reset_button.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/button_reset/reset_button.pyproject +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/button_reset/reset_button_plugin.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/button_resume/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/button_resume/button_resume.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/button_resume/register_resume_button.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/button_resume/resume_button.pyproject +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/button_resume/resume_button_plugin.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/color_button/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/color_button/color_button.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/color_button/color_button.pyproject +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/color_button/color_button_plugin.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/color_button/register_color_button.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/colormap_selector/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/colormap_selector/colormap_selector.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/colormap_selector/colormap_selector.pyproject +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/colormap_selector/colormap_selector_plugin.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/colormap_selector/register_colormap_selector.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/console/console.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/dap_combo_box/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/dap_combo_box/dap_combo_box.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/dap_combo_box/dap_combo_box.pyproject +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/dap_combo_box/dap_combo_box_plugin.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/dap_combo_box/register_dap_combo_box.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/dark_mode_button/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/dark_mode_button/dark_mode_button.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/dark_mode_button/dark_mode_button.pyproject +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/dark_mode_button/dark_mode_button_plugin.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/dark_mode_button/register_dark_mode_button.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/device_browser/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/device_browser/device_browser.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/device_browser/device_browser.pyproject +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/device_browser/device_browser.ui +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/device_browser/device_browser_plugin.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/device_browser/device_item/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/device_browser/device_item/device_item.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/device_browser/register_device_browser.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/device_combobox/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/device_combobox/device_combo_box.pyproject +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/device_combobox/device_combo_box_plugin.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/device_combobox/device_combobox.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/device_combobox/register_device_combo_box.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/device_line_edit/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/device_line_edit/device_line_edit.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/device_line_edit/device_line_edit.pyproject +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/device_line_edit/device_line_edit_plugin.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/device_line_edit/register_device_line_edit.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/dock/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/dock/dock.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/dock/dock_area.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/dock/dock_area.pyproject +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/dock/dock_area_plugin.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/dock/register_dock_area.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/figure/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/figure/figure.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/figure/plots/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/figure/plots/axis_settings.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/figure/plots/axis_settings.ui +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/figure/plots/image/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/figure/plots/image/image.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/figure/plots/image/image_item.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/figure/plots/image/image_processor.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/figure/plots/motor_map/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/figure/plots/motor_map/motor_map.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/figure/plots/plot_base.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/figure/plots/waveform/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/figure/plots/waveform/waveform.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/figure/plots/waveform/waveform_curve.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/image/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/image/bec_image_widget.pyproject +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/image/bec_image_widget_plugin.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/image/image_widget.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/image/register_bec_image_widget.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/jupyter_console/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/jupyter_console/jupyter_console.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/lmfit_dialog/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/lmfit_dialog/lm_fit_dialog.pyproject +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/lmfit_dialog/lm_fit_dialog_plugin.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/lmfit_dialog/lmfit_dialog.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/lmfit_dialog/lmfit_dialog_compact.ui +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/lmfit_dialog/lmfit_dialog_vertical.ui +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/lmfit_dialog/register_lm_fit_dialog.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/motor_map/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/motor_map/bec_motor_map_widget.pyproject +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/motor_map/bec_motor_map_widget_plugin.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/motor_map/motor_map_dialog/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/motor_map/motor_map_dialog/motor_map_settings.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/motor_map/motor_map_dialog/motor_map_settings.ui +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/motor_map/motor_map_widget.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/motor_map/register_bec_motor_map_widget.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/position_indicator/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/position_indicator/position_indicator.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/position_indicator/position_indicator.pyproject +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/position_indicator/position_indicator_plugin.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/position_indicator/register_position_indicator.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/positioner_box/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/positioner_box/positioner_box.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/positioner_box/positioner_box.pyproject +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/positioner_box/positioner_box.ui +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/positioner_box/positioner_box_plugin.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/positioner_box/positioner_control_line.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/positioner_box/positioner_control_line.pyproject +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/positioner_box/positioner_control_line.ui +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/positioner_box/positioner_control_line_plugin.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/positioner_box/register_positioner_box.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/positioner_box/register_positioner_control_line.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/ring_progress_bar/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/ring_progress_bar/register_ring_progress_bar.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/ring_progress_bar/ring.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/ring_progress_bar/ring_progress_bar.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/ring_progress_bar/ring_progress_bar.pyproject +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/ring_progress_bar/ring_progress_bar_plugin.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/scan_control/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/scan_control/register_scan_control.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/scan_control/scan_control.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/scan_control/scan_control.pyproject +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/scan_control/scan_control_plugin.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/scan_control/scan_group_box.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/spinner/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/spinner/register_spinner_widget.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/spinner/spinner.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/spinner/spinner_widget.pyproject +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/spinner/spinner_widget_plugin.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/stop_button/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/stop_button/register_stop_button.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/stop_button/stop_button.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/stop_button/stop_button.pyproject +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/stop_button/stop_button_plugin.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/text_box/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/text_box/register_text_box.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/text_box/text_box.pyproject +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/text_box/text_box_plugin.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/toggle/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/toggle/register_toggle_switch.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/toggle/toggle.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/toggle/toggle_switch.pyproject +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/toggle/toggle_switch_plugin.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/vscode/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/vscode/register_vs_code_editor.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/vscode/vs_code_editor.pyproject +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/vscode/vs_code_editor_plugin.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/vscode/vscode.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/waveform/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/waveform/bec_waveform_widget.pyproject +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/waveform/bec_waveform_widget_plugin.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/waveform/register_bec_waveform_widget.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/waveform/waveform_popups/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/waveform/waveform_popups/curve_dialog/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/waveform/waveform_popups/curve_dialog/curve_dialog.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/waveform/waveform_popups/curve_dialog/curve_dialog.ui +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/waveform/waveform_popups/dap_summary_dialog/dap_summary_dialog.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/waveform/waveform_widget.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/website/__init__.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/website/register_website_widget.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/website/website.py +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/website/website_widget.pyproject +0 -0
- {bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/widgets/website/website_widget_plugin.py +0 -0
@@ -1,5 +1,17 @@
|
|
1
1
|
# CHANGELOG
|
2
2
|
|
3
|
+
## v0.110.0 (2024-09-12)
|
4
|
+
|
5
|
+
### Feature
|
6
|
+
|
7
|
+
* feat(palette_viewer): added widget to display the current palette and accent colors ([`a8576c1`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/a8576c164cad17746ec4fcd5c775fb78f70c055c))
|
8
|
+
|
9
|
+
## v0.109.1 (2024-09-09)
|
10
|
+
|
11
|
+
### Fix
|
12
|
+
|
13
|
+
* fix: refactor textbox widget, remove inheritance, adhere to bec style; closes #324 ([`b0d786b`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/b0d786b991677c0846a0c6ba3f2252d48d94ccaa))
|
14
|
+
|
3
15
|
## v0.109.0 (2024-09-06)
|
4
16
|
|
5
17
|
### Feature
|
@@ -149,17 +161,3 @@
|
|
149
161
|
* refactor: add docs, cleanup ([`61ecf49`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/61ecf491e52bfbfa0d5a84764a9095310659043d))
|
150
162
|
|
151
163
|
## v0.100.0 (2024-09-01)
|
152
|
-
|
153
|
-
### Documentation
|
154
|
-
|
155
|
-
* docs(becwidget): improvements to the bec widget base class docs; fixed type hint import for sphinx ([`99d5e8e`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/99d5e8e71c7f89a53d7967126f4056dde005534c))
|
156
|
-
|
157
|
-
### Feature
|
158
|
-
|
159
|
-
* feat(theme): added theme handler to bec widget base class; added tests ([`7fb938a`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/7fb938a8506685278ee5eeb6fe9a03f74b713cf8))
|
160
|
-
|
161
|
-
### Fix
|
162
|
-
|
163
|
-
* fix(pyqt slot): removed slot decorator to avoid problems with pyqt6 ([`6c1f89a`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/6c1f89ad39b7240ab1d1c1123422b99ae195bf01))
|
164
|
-
|
165
|
-
## v0.99.15 (2024-08-31)
|
@@ -2914,31 +2914,21 @@ class StopButton(RPCBase):
|
|
2914
2914
|
|
2915
2915
|
class TextBox(RPCBase):
|
2916
2916
|
@rpc_call
|
2917
|
-
def
|
2917
|
+
def set_plain_text(self, text: str) -> None:
|
2918
2918
|
"""
|
2919
|
-
Set the
|
2920
|
-
|
2921
|
-
Args:
|
2922
|
-
background_color (str): The color to set the background in HEX.
|
2923
|
-
font_color (str): The color to set the font in HEX.
|
2924
|
-
"""
|
2925
|
-
|
2926
|
-
@rpc_call
|
2927
|
-
def set_text(self, text: str) -> None:
|
2928
|
-
"""
|
2929
|
-
Set the text of the widget.
|
2919
|
+
Set the plain text of the widget.
|
2930
2920
|
|
2931
2921
|
Args:
|
2932
2922
|
text (str): The text to set.
|
2933
2923
|
"""
|
2934
2924
|
|
2935
2925
|
@rpc_call
|
2936
|
-
def
|
2926
|
+
def set_html_text(self, text: str) -> None:
|
2937
2927
|
"""
|
2938
|
-
Set the
|
2928
|
+
Set the HTML text of the widget.
|
2939
2929
|
|
2940
2930
|
Args:
|
2941
|
-
|
2931
|
+
text (str): The text to set.
|
2942
2932
|
"""
|
2943
2933
|
|
2944
2934
|
|
@@ -0,0 +1,183 @@
|
|
1
|
+
from qtpy.QtCore import Qt
|
2
|
+
from qtpy.QtWidgets import (
|
3
|
+
QApplication,
|
4
|
+
QFrame,
|
5
|
+
QGridLayout,
|
6
|
+
QHBoxLayout,
|
7
|
+
QLabel,
|
8
|
+
QScrollArea,
|
9
|
+
QSizePolicy,
|
10
|
+
QVBoxLayout,
|
11
|
+
QWidget,
|
12
|
+
)
|
13
|
+
|
14
|
+
from bec_widgets.utils.bec_widget import BECWidget
|
15
|
+
from bec_widgets.utils.colors import get_accent_colors, get_theme_palette
|
16
|
+
from bec_widgets.widgets.dark_mode_button.dark_mode_button import DarkModeButton
|
17
|
+
|
18
|
+
|
19
|
+
class PaletteViewer(BECWidget, QWidget):
|
20
|
+
"""
|
21
|
+
This class is a widget that displays current palette colors.
|
22
|
+
"""
|
23
|
+
|
24
|
+
ICON_NAME = "palette"
|
25
|
+
|
26
|
+
def __init__(self, *args, parent=None, **kwargs):
|
27
|
+
super().__init__(*args, theme_update=True, **kwargs)
|
28
|
+
QWidget.__init__(self, parent=parent)
|
29
|
+
self.setFixedSize(400, 600)
|
30
|
+
layout = QVBoxLayout(self)
|
31
|
+
dark_mode_button = DarkModeButton(self)
|
32
|
+
layout.addWidget(dark_mode_button)
|
33
|
+
|
34
|
+
# Create a scroll area to hold the color boxes
|
35
|
+
scroll_area = QScrollArea(self)
|
36
|
+
scroll_area.setWidgetResizable(True)
|
37
|
+
scroll_area.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
|
38
|
+
|
39
|
+
# Create a frame to hold the color boxes
|
40
|
+
self.frame = QFrame(self)
|
41
|
+
self.frame_layout = QGridLayout(self.frame)
|
42
|
+
self.frame_layout.setSpacing(0)
|
43
|
+
self.frame_layout.setContentsMargins(0, 0, 0, 0)
|
44
|
+
|
45
|
+
scroll_area.setWidget(self.frame)
|
46
|
+
layout.addWidget(scroll_area)
|
47
|
+
|
48
|
+
self.setLayout(layout)
|
49
|
+
|
50
|
+
self.update_palette()
|
51
|
+
|
52
|
+
def apply_theme(self, theme) -> None:
|
53
|
+
"""
|
54
|
+
Apply the theme to the widget.
|
55
|
+
|
56
|
+
Args:
|
57
|
+
theme (str): The theme to apply.
|
58
|
+
"""
|
59
|
+
self.update_palette()
|
60
|
+
|
61
|
+
def clear_palette(self) -> None:
|
62
|
+
"""
|
63
|
+
Clear the palette colors from the frame.
|
64
|
+
Recursively removes all widgets and layouts in the frame layout.
|
65
|
+
"""
|
66
|
+
# Iterate over all items in the layout in reverse to safely remove them
|
67
|
+
for i in reversed(range(self.frame_layout.count())):
|
68
|
+
item = self.frame_layout.itemAt(i)
|
69
|
+
|
70
|
+
# If the item is a layout, clear its contents
|
71
|
+
if isinstance(item, QHBoxLayout):
|
72
|
+
# Recursively remove all widgets from the layout
|
73
|
+
for j in reversed(range(item.count())):
|
74
|
+
widget = item.itemAt(j).widget()
|
75
|
+
if widget:
|
76
|
+
item.removeWidget(widget)
|
77
|
+
widget.deleteLater()
|
78
|
+
self.frame_layout.removeItem(item)
|
79
|
+
|
80
|
+
# If the item is a widget, remove and delete it
|
81
|
+
elif item.widget():
|
82
|
+
widget = item.widget()
|
83
|
+
self.frame_layout.removeWidget(widget)
|
84
|
+
widget.deleteLater()
|
85
|
+
|
86
|
+
def update_palette(self) -> None:
|
87
|
+
"""
|
88
|
+
Update the palette colors in the frame.
|
89
|
+
"""
|
90
|
+
self.clear_palette()
|
91
|
+
palette_label = QLabel("Palette Colors (e.g. palette.windowText().color())")
|
92
|
+
palette_label.setStyleSheet("font-weight: bold;")
|
93
|
+
self.frame_layout.addWidget(palette_label, 0, 0)
|
94
|
+
|
95
|
+
palette = get_theme_palette()
|
96
|
+
# Add the palette colors (roles) to the frame
|
97
|
+
palette_roles = [
|
98
|
+
palette.windowText,
|
99
|
+
palette.toolTipText,
|
100
|
+
palette.placeholderText,
|
101
|
+
palette.text,
|
102
|
+
palette.buttonText,
|
103
|
+
palette.highlight,
|
104
|
+
palette.link,
|
105
|
+
palette.light,
|
106
|
+
palette.midlight,
|
107
|
+
palette.mid,
|
108
|
+
palette.shadow,
|
109
|
+
palette.button,
|
110
|
+
palette.brightText,
|
111
|
+
palette.toolTipBase,
|
112
|
+
palette.alternateBase,
|
113
|
+
palette.dark,
|
114
|
+
palette.base,
|
115
|
+
palette.window,
|
116
|
+
palette.highlightedText,
|
117
|
+
palette.linkVisited,
|
118
|
+
]
|
119
|
+
|
120
|
+
offset = 1
|
121
|
+
for i, pal in enumerate(palette_roles):
|
122
|
+
i += offset
|
123
|
+
color = pal().color()
|
124
|
+
label_layout = QHBoxLayout()
|
125
|
+
color_label = QLabel(f"{pal().color().name()} ({pal.__name__})")
|
126
|
+
background_label = self.background_label_with_clipboard(color)
|
127
|
+
label_layout.addWidget(color_label)
|
128
|
+
label_layout.addWidget(background_label)
|
129
|
+
self.frame_layout.addLayout(label_layout, i, 0)
|
130
|
+
|
131
|
+
# add a horizontal spacer
|
132
|
+
spacer = QLabel()
|
133
|
+
spacer.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Minimum)
|
134
|
+
self.frame_layout.addWidget(spacer, i + 1, 0)
|
135
|
+
|
136
|
+
accent_colors_label = QLabel("Accent Colors (e.g. accent_colors.default)")
|
137
|
+
accent_colors_label.setStyleSheet("font-weight: bold;")
|
138
|
+
self.frame_layout.addWidget(accent_colors_label, i + 2, 0)
|
139
|
+
|
140
|
+
accent_colors = get_accent_colors()
|
141
|
+
items = [
|
142
|
+
(accent_colors.default, "default"),
|
143
|
+
(accent_colors.success, "success"),
|
144
|
+
(accent_colors.warning, "warning"),
|
145
|
+
(accent_colors.emergency, "emergency"),
|
146
|
+
(accent_colors.highlight, "highlight"),
|
147
|
+
]
|
148
|
+
|
149
|
+
offset = len(palette_roles) + 2
|
150
|
+
for i, (color, name) in enumerate(items):
|
151
|
+
i += offset
|
152
|
+
label_layout = QHBoxLayout()
|
153
|
+
color_label = QLabel(f"{color.name()} ({name})")
|
154
|
+
background_label = self.background_label_with_clipboard(color)
|
155
|
+
label_layout.addWidget(color_label)
|
156
|
+
label_layout.addWidget(background_label)
|
157
|
+
self.frame_layout.addLayout(label_layout, i + 2, 0)
|
158
|
+
|
159
|
+
def background_label_with_clipboard(self, color) -> QLabel:
|
160
|
+
"""
|
161
|
+
Create a label with a background color that copies the color to the clipboard when clicked.
|
162
|
+
|
163
|
+
Args:
|
164
|
+
color (QColor): The color to display in the background.
|
165
|
+
|
166
|
+
Returns:
|
167
|
+
QLabel: The label with the background color.
|
168
|
+
"""
|
169
|
+
button = QLabel()
|
170
|
+
button.setStyleSheet(f"background-color: {color.name()};")
|
171
|
+
button.setToolTip("Click to copy color to clipboard")
|
172
|
+
button.setCursor(Qt.PointingHandCursor)
|
173
|
+
button.mousePressEvent = lambda event: QApplication.clipboard().setText(color.name())
|
174
|
+
return button
|
175
|
+
|
176
|
+
|
177
|
+
if __name__ == "__main__": # pragma: no cover
|
178
|
+
import sys
|
179
|
+
|
180
|
+
app = QApplication(sys.argv)
|
181
|
+
viewer = PaletteViewer()
|
182
|
+
viewer.show()
|
183
|
+
sys.exit(app.exec_())
|
@@ -0,0 +1,135 @@
|
|
1
|
+
"""Module for a text box widget that displays text in plain and HTML format and adheres to the BECWidget interface & style."""
|
2
|
+
|
3
|
+
import re
|
4
|
+
from html.parser import HTMLParser
|
5
|
+
|
6
|
+
from bec_lib.logger import bec_logger
|
7
|
+
from pydantic import Field
|
8
|
+
from qtpy.QtCore import Property, Slot
|
9
|
+
from qtpy.QtWidgets import QTextEdit, QVBoxLayout, QWidget
|
10
|
+
|
11
|
+
from bec_widgets.utils.bec_connector import ConnectionConfig
|
12
|
+
from bec_widgets.utils.bec_widget import BECWidget
|
13
|
+
|
14
|
+
logger = bec_logger.logger
|
15
|
+
|
16
|
+
DEFAULT_TEXT = "<h1>Welcome to the BEC Widget TextBox</h1><p>A widget that allows user to display text in plain and HTML format.</p><p>This is an example of displaying HTML text.</p>"
|
17
|
+
|
18
|
+
|
19
|
+
class TextBoxConfig(ConnectionConfig):
|
20
|
+
"""Configuration for the TextBox widget.
|
21
|
+
|
22
|
+
Args:
|
23
|
+
text (str, optional): The text to display in the widget. Defaults to None.
|
24
|
+
is_html (bool, optional): Whether the text is in HTML format or not. Defaults to False.
|
25
|
+
"""
|
26
|
+
|
27
|
+
text: str | None = Field(None, description="The text to display in the widget.")
|
28
|
+
is_html: bool = Field(False, description="Whether the text is in HTML format or not.")
|
29
|
+
|
30
|
+
|
31
|
+
class TextBox(BECWidget, QWidget):
|
32
|
+
"""A widget that displays text in plain and HTML format
|
33
|
+
|
34
|
+
Args:
|
35
|
+
parent (QWidget, optional): The parent widget. Defaults to None.
|
36
|
+
client ([type], optional): The client to use. Defaults to None.
|
37
|
+
config ([type], optional): The config to use. Defaults to None.
|
38
|
+
gui_id ([type], optional): The gui_id to use. Defaults to None.
|
39
|
+
"""
|
40
|
+
|
41
|
+
USER_ACCESS = ["set_plain_text", "set_html_text"]
|
42
|
+
ICON_NAME = "chat"
|
43
|
+
|
44
|
+
def __init__(self, parent=None, client=None, config=None, gui_id=None):
|
45
|
+
if config is None:
|
46
|
+
config = TextBoxConfig(widget_class=self.__class__.__name__)
|
47
|
+
else:
|
48
|
+
if isinstance(config, dict):
|
49
|
+
config = TextBoxConfig(**config)
|
50
|
+
self.config = config
|
51
|
+
super().__init__(client=client, config=config, gui_id=gui_id)
|
52
|
+
QWidget.__init__(self, parent)
|
53
|
+
self.layout = QVBoxLayout(self)
|
54
|
+
self.text_box_text_edit = QTextEdit(parent=self)
|
55
|
+
self.layout.addWidget(self.text_box_text_edit)
|
56
|
+
self.setLayout(self.layout)
|
57
|
+
self.layout.setContentsMargins(0, 0, 0, 0)
|
58
|
+
self.config = config
|
59
|
+
self.text_box_text_edit.setReadOnly(True)
|
60
|
+
if self.config.text is not None:
|
61
|
+
if self.config.is_html:
|
62
|
+
self.set_html_text(self.config.text)
|
63
|
+
else:
|
64
|
+
self.set_plain_text(self.config.text)
|
65
|
+
else:
|
66
|
+
self.set_html_text(DEFAULT_TEXT)
|
67
|
+
|
68
|
+
@Slot(str)
|
69
|
+
def set_plain_text(self, text: str) -> None:
|
70
|
+
"""Set the plain text of the widget.
|
71
|
+
|
72
|
+
Args:
|
73
|
+
text (str): The text to set.
|
74
|
+
"""
|
75
|
+
self.text_box_text_edit.setPlainText(text)
|
76
|
+
self.config.text = text
|
77
|
+
self.config.is_html = False
|
78
|
+
|
79
|
+
@Slot(str)
|
80
|
+
def set_html_text(self, text: str) -> None:
|
81
|
+
"""Set the HTML text of the widget.
|
82
|
+
|
83
|
+
Args:
|
84
|
+
text (str): The text to set.
|
85
|
+
"""
|
86
|
+
self.text_box_text_edit.setHtml(text)
|
87
|
+
self.config.text = text
|
88
|
+
self.config.is_html = True
|
89
|
+
|
90
|
+
@Property(str)
|
91
|
+
def plain_text(self) -> str:
|
92
|
+
"""Get the text of the widget.
|
93
|
+
|
94
|
+
Returns:
|
95
|
+
str: The text of the widget.
|
96
|
+
"""
|
97
|
+
return self.text_box_text_edit.toPlainText()
|
98
|
+
|
99
|
+
@plain_text.setter
|
100
|
+
def plain_text(self, text: str) -> None:
|
101
|
+
"""Set the text of the widget.
|
102
|
+
|
103
|
+
Args:
|
104
|
+
text (str): The text to set.
|
105
|
+
"""
|
106
|
+
self.set_plain_text(text)
|
107
|
+
|
108
|
+
@Property(str)
|
109
|
+
def html_text(self) -> str:
|
110
|
+
"""Get the HTML text of the widget.
|
111
|
+
|
112
|
+
Returns:
|
113
|
+
str: The HTML text of the widget.
|
114
|
+
"""
|
115
|
+
return self.text_box_text_edit.toHtml()
|
116
|
+
|
117
|
+
@html_text.setter
|
118
|
+
def html_text(self, text: str) -> None:
|
119
|
+
"""Set the HTML text of the widget.
|
120
|
+
|
121
|
+
Args:
|
122
|
+
text (str): The HTML text to set.
|
123
|
+
"""
|
124
|
+
self.set_html_text(text)
|
125
|
+
|
126
|
+
|
127
|
+
if __name__ == "__main__":
|
128
|
+
import sys
|
129
|
+
|
130
|
+
from qtpy.QtWidgets import QApplication
|
131
|
+
|
132
|
+
app = QApplication(sys.argv)
|
133
|
+
widget = TextBox()
|
134
|
+
widget.show()
|
135
|
+
sys.exit(app.exec())
|
@@ -1,129 +0,0 @@
|
|
1
|
-
import re
|
2
|
-
|
3
|
-
from pydantic import Field, field_validator
|
4
|
-
from qtpy.QtWidgets import QTextEdit
|
5
|
-
|
6
|
-
from bec_widgets.utils.bec_connector import ConnectionConfig
|
7
|
-
from bec_widgets.utils.bec_widget import BECWidget
|
8
|
-
from bec_widgets.utils.colors import Colors
|
9
|
-
|
10
|
-
|
11
|
-
class TextBoxConfig(ConnectionConfig):
|
12
|
-
|
13
|
-
theme: str = Field("dark", description="The theme of the figure widget.")
|
14
|
-
font_color: str = Field("#FFF", description="The font color of the text")
|
15
|
-
background_color: str = Field("#000", description="The background color of the widget.")
|
16
|
-
font_size: int = Field(16, description="The font size of the text in the widget.")
|
17
|
-
text: str = Field("", description="The text to display in the widget.")
|
18
|
-
|
19
|
-
@classmethod
|
20
|
-
@field_validator("theme")
|
21
|
-
def validate_theme(cls, v):
|
22
|
-
"""Validate the theme of the figure widget."""
|
23
|
-
if v not in ["dark", "light"]:
|
24
|
-
raise ValueError("Theme must be either 'dark' or 'light'")
|
25
|
-
return v
|
26
|
-
|
27
|
-
_validate_font_color = field_validator("font_color")(Colors.validate_color)
|
28
|
-
_validate_background_color = field_validator("background_color")(Colors.validate_color)
|
29
|
-
|
30
|
-
|
31
|
-
class TextBox(BECWidget, QTextEdit):
|
32
|
-
|
33
|
-
USER_ACCESS = ["set_color", "set_text", "set_font_size"]
|
34
|
-
ICON_NAME = "chat"
|
35
|
-
|
36
|
-
def __init__(self, parent=None, text: str = "", client=None, config=None, gui_id=None):
|
37
|
-
if config is None:
|
38
|
-
config = TextBoxConfig(widget_class=self.__class__.__name__)
|
39
|
-
else:
|
40
|
-
if isinstance(config, dict):
|
41
|
-
config = TextBoxConfig(**config)
|
42
|
-
self.config = config
|
43
|
-
super().__init__(client=client, config=config, gui_id=gui_id)
|
44
|
-
QTextEdit.__init__(self, parent=parent)
|
45
|
-
|
46
|
-
self.config = config
|
47
|
-
self.setReadOnly(True)
|
48
|
-
self.setGeometry(self.rect())
|
49
|
-
self.set_color(self.config.background_color, self.config.font_color)
|
50
|
-
if not text:
|
51
|
-
text = "<h1>Welcome to the BEC Widget TextBox</h1><p>A widget that allows user to display text in plain and HTML format.</p><p>This is an example of displaying HTML text.</p>"
|
52
|
-
self.set_text(text)
|
53
|
-
|
54
|
-
def change_theme(self) -> None:
|
55
|
-
"""
|
56
|
-
Change the theme of the figure widget.
|
57
|
-
"""
|
58
|
-
if self.config.theme == "dark":
|
59
|
-
theme = "light"
|
60
|
-
font_color = "#000"
|
61
|
-
background_color = "#FFF"
|
62
|
-
else:
|
63
|
-
theme = "dark"
|
64
|
-
font_color = "#FFF"
|
65
|
-
background_color = "#000"
|
66
|
-
self.config.theme = theme
|
67
|
-
self.set_color(background_color, font_color)
|
68
|
-
|
69
|
-
def set_color(self, background_color: str, font_color: str) -> None:
|
70
|
-
"""Set the background color of the widget.
|
71
|
-
|
72
|
-
Args:
|
73
|
-
background_color (str): The color to set the background in HEX.
|
74
|
-
font_color (str): The color to set the font in HEX.
|
75
|
-
|
76
|
-
"""
|
77
|
-
self.config.background_color = background_color
|
78
|
-
self.config.font_color = font_color
|
79
|
-
self._update_stylesheet()
|
80
|
-
|
81
|
-
def set_font_size(self, size: int) -> None:
|
82
|
-
"""Set the font size of the text in the widget.
|
83
|
-
|
84
|
-
Args:
|
85
|
-
size (int): The font size to set.
|
86
|
-
"""
|
87
|
-
self.config.font_size = size
|
88
|
-
self._update_stylesheet()
|
89
|
-
|
90
|
-
def _update_stylesheet(self):
|
91
|
-
"""Update the stylesheet of the widget."""
|
92
|
-
self.setStyleSheet(
|
93
|
-
f"background-color: {self.config.background_color}; color: {self.config.font_color}; font-size: {self.config.font_size}px"
|
94
|
-
)
|
95
|
-
|
96
|
-
def set_text(self, text: str) -> None:
|
97
|
-
"""Set the text of the widget.
|
98
|
-
|
99
|
-
Args:
|
100
|
-
text (str): The text to set.
|
101
|
-
"""
|
102
|
-
if self.is_html(text):
|
103
|
-
self.setHtml(text)
|
104
|
-
else:
|
105
|
-
self.setPlainText(text)
|
106
|
-
self.config.text = text
|
107
|
-
|
108
|
-
def is_html(self, text: str) -> bool:
|
109
|
-
"""Check if the text contains HTML tags.
|
110
|
-
|
111
|
-
Args:
|
112
|
-
text (str): The text to check.
|
113
|
-
|
114
|
-
Returns:
|
115
|
-
bool: True if the text contains HTML tags, False otherwise.
|
116
|
-
"""
|
117
|
-
return bool(re.search(r"<[a-zA-Z/][^>]*>", text))
|
118
|
-
|
119
|
-
|
120
|
-
if __name__ == "__main__":
|
121
|
-
import sys
|
122
|
-
|
123
|
-
from qtpy.QtWidgets import QApplication
|
124
|
-
|
125
|
-
app = QApplication(sys.argv)
|
126
|
-
|
127
|
-
widget = TextBox()
|
128
|
-
widget.show()
|
129
|
-
sys.exit(app.exec())
|
File without changes
|
File without changes
|
File without changes
|
{bec_widgets-0.109.0 → bec_widgets-0.110.0}/.gitlab/issue_templates/documentation_update_template.md
RENAMED
File without changes
|
{bec_widgets-0.109.0 → bec_widgets-0.110.0}/.gitlab/issue_templates/feature_request_template.md
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/assets/app_icons/BEC-General-App.png
RENAMED
File without changes
|
{bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/assets/app_icons/bec_widgets_icon.png
RENAMED
File without changes
|
File without changes
|
{bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/assets/status_icons/not_connected.svg
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/examples/jupyter_console/__init__.py
RENAMED
File without changes
|
File without changes
|
{bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/examples/plugin_example_pyside/__init__.py
RENAMED
File without changes
|
{bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/examples/plugin_example_pyside/main.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{bec_widgets-0.109.0 → bec_widgets-0.110.0}/bec_widgets/examples/plugin_example_pyside/tictactoe.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|