From b0d786b991677c0846a0c6ba3f2252d48d94ccaa Mon Sep 17 00:00:00 2001 From: appel_c Date: Fri, 6 Sep 2024 18:33:36 +0200 Subject: [PATCH] fix: refactor textbox widget, remove inheritance, adhere to bec style; closes #324 --- bec_widgets/cli/client.py | 20 +-- bec_widgets/widgets/text_box/text_box.py | 158 +++++++++--------- .../text_box_properties.png | Bin 0 -> 82897 bytes .../user/widgets/lmfit_dialog/lmfit_dialog.md | 2 +- .../user/widgets/scan_control/scan_control.md | 1 + docs/user/widgets/text_box/text_box.md | 25 +-- tests/unit_tests/test_text_box_widget.py | 44 ++--- 7 files changed, 104 insertions(+), 146 deletions(-) create mode 100644 docs/assets/widget_screenshots/text_box_properties.png diff --git a/bec_widgets/cli/client.py b/bec_widgets/cli/client.py index f45fdb56..a477c1a2 100644 --- a/bec_widgets/cli/client.py +++ b/bec_widgets/cli/client.py @@ -2914,31 +2914,21 @@ class StopButton(RPCBase): class TextBox(RPCBase): @rpc_call - def set_color(self, background_color: str, font_color: str) -> None: + def set_plain_text(self, text: str) -> None: """ - Set the background color of the widget. - - Args: - background_color (str): The color to set the background in HEX. - font_color (str): The color to set the font in HEX. - """ - - @rpc_call - def set_text(self, text: str) -> None: - """ - Set the text of the widget. + Set the plain text of the widget. Args: text (str): The text to set. """ @rpc_call - def set_font_size(self, size: int) -> None: + def set_html_text(self, text: str) -> None: """ - Set the font size of the text in the widget. + Set the HTML text of the widget. Args: - size (int): The font size to set. + text (str): The text to set. """ diff --git a/bec_widgets/widgets/text_box/text_box.py b/bec_widgets/widgets/text_box/text_box.py index ae099eae..6bc343d0 100644 --- a/bec_widgets/widgets/text_box/text_box.py +++ b/bec_widgets/widgets/text_box/text_box.py @@ -1,39 +1,47 @@ -import re +"""Module for a text box widget that displays text in plain and HTML format and adheres to the BECWidget interface & style.""" -from pydantic import Field, field_validator -from qtpy.QtWidgets import QTextEdit +import re +from html.parser import HTMLParser + +from bec_lib.logger import bec_logger +from pydantic import Field +from qtpy.QtCore import Property, Slot +from qtpy.QtWidgets import QTextEdit, QVBoxLayout, QWidget from bec_widgets.utils.bec_connector import ConnectionConfig from bec_widgets.utils.bec_widget import BECWidget -from bec_widgets.utils.colors import Colors + +logger = bec_logger.logger + +DEFAULT_TEXT = "

Welcome to the BEC Widget TextBox

A widget that allows user to display text in plain and HTML format.

This is an example of displaying HTML text.

" class TextBoxConfig(ConnectionConfig): + """Configuration for the TextBox widget. - theme: str = Field("dark", description="The theme of the figure widget.") - font_color: str = Field("#FFF", description="The font color of the text") - background_color: str = Field("#000", description="The background color of the widget.") - font_size: int = Field(16, description="The font size of the text in the widget.") - text: str = Field("", description="The text to display in the widget.") + Args: + text (str, optional): The text to display in the widget. Defaults to None. + is_html (bool, optional): Whether the text is in HTML format or not. Defaults to False. + """ - @classmethod - @field_validator("theme") - def validate_theme(cls, v): - """Validate the theme of the figure widget.""" - if v not in ["dark", "light"]: - raise ValueError("Theme must be either 'dark' or 'light'") - return v - - _validate_font_color = field_validator("font_color")(Colors.validate_color) - _validate_background_color = field_validator("background_color")(Colors.validate_color) + text: str | None = Field(None, description="The text to display in the widget.") + is_html: bool = Field(False, description="Whether the text is in HTML format or not.") -class TextBox(BECWidget, QTextEdit): +class TextBox(BECWidget, QWidget): + """A widget that displays text in plain and HTML format - USER_ACCESS = ["set_color", "set_text", "set_font_size"] + Args: + parent (QWidget, optional): The parent widget. Defaults to None. + client ([type], optional): The client to use. Defaults to None. + config ([type], optional): The config to use. Defaults to None. + gui_id ([type], optional): The gui_id to use. Defaults to None. + """ + + USER_ACCESS = ["set_plain_text", "set_html_text"] ICON_NAME = "chat" - def __init__(self, parent=None, text: str = "", client=None, config=None, gui_id=None): + def __init__(self, parent=None, client=None, config=None, gui_id=None): if config is None: config = TextBoxConfig(widget_class=self.__class__.__name__) else: @@ -41,80 +49,79 @@ class TextBox(BECWidget, QTextEdit): config = TextBoxConfig(**config) self.config = config super().__init__(client=client, config=config, gui_id=gui_id) - QTextEdit.__init__(self, parent=parent) - + QWidget.__init__(self, parent) + self.layout = QVBoxLayout(self) + self.text_box_text_edit = QTextEdit(parent=self) + self.layout.addWidget(self.text_box_text_edit) + self.setLayout(self.layout) + self.layout.setContentsMargins(0, 0, 0, 0) self.config = config - self.setReadOnly(True) - self.setGeometry(self.rect()) - self.set_color(self.config.background_color, self.config.font_color) - if not text: - text = "

Welcome to the BEC Widget TextBox

A widget that allows user to display text in plain and HTML format.

This is an example of displaying HTML text.

" - self.set_text(text) - - def change_theme(self) -> None: - """ - Change the theme of the figure widget. - """ - if self.config.theme == "dark": - theme = "light" - font_color = "#000" - background_color = "#FFF" + self.text_box_text_edit.setReadOnly(True) + if self.config.text is not None: + if self.config.is_html: + self.set_html_text(self.config.text) + else: + self.set_plain_text(self.config.text) else: - theme = "dark" - font_color = "#FFF" - background_color = "#000" - self.config.theme = theme - self.set_color(background_color, font_color) + self.set_html_text(DEFAULT_TEXT) - def set_color(self, background_color: str, font_color: str) -> None: - """Set the background color of the widget. + @Slot(str) + def set_plain_text(self, text: str) -> None: + """Set the plain text of the widget. Args: - background_color (str): The color to set the background in HEX. - font_color (str): The color to set the font in HEX. - + text (str): The text to set. """ - self.config.background_color = background_color - self.config.font_color = font_color - self._update_stylesheet() + self.text_box_text_edit.setPlainText(text) + self.config.text = text + self.config.is_html = False - def set_font_size(self, size: int) -> None: - """Set the font size of the text in the widget. + @Slot(str) + def set_html_text(self, text: str) -> None: + """Set the HTML text of the widget. Args: - size (int): The font size to set. + text (str): The text to set. """ - self.config.font_size = size - self._update_stylesheet() + self.text_box_text_edit.setHtml(text) + self.config.text = text + self.config.is_html = True - def _update_stylesheet(self): - """Update the stylesheet of the widget.""" - self.setStyleSheet( - f"background-color: {self.config.background_color}; color: {self.config.font_color}; font-size: {self.config.font_size}px" - ) + @Property(str) + def plain_text(self) -> str: + """Get the text of the widget. - def set_text(self, text: str) -> None: + Returns: + str: The text of the widget. + """ + return self.text_box_text_edit.toPlainText() + + @plain_text.setter + def plain_text(self, text: str) -> None: """Set the text of the widget. Args: text (str): The text to set. """ - if self.is_html(text): - self.setHtml(text) - else: - self.setPlainText(text) - self.config.text = text + self.set_plain_text(text) - def is_html(self, text: str) -> bool: - """Check if the text contains HTML tags. - - Args: - text (str): The text to check. + @Property(str) + def html_text(self) -> str: + """Get the HTML text of the widget. Returns: - bool: True if the text contains HTML tags, False otherwise. + str: The HTML text of the widget. """ - return bool(re.search(r"<[a-zA-Z/][^>]*>", text)) + return self.text_box_text_edit.toHtml() + + @html_text.setter + def html_text(self, text: str) -> None: + """Set the HTML text of the widget. + + Args: + text (str): The HTML text to set. + """ + self.set_html_text(text) if __name__ == "__main__": @@ -123,7 +130,6 @@ if __name__ == "__main__": from qtpy.QtWidgets import QApplication app = QApplication(sys.argv) - widget = TextBox() widget.show() sys.exit(app.exec()) diff --git a/docs/assets/widget_screenshots/text_box_properties.png b/docs/assets/widget_screenshots/text_box_properties.png new file mode 100644 index 0000000000000000000000000000000000000000..c9100053e689a8fe08131330a47e57b398f01429 GIT binary patch literal 82897 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 literal 0 HcmV?d00001 diff --git a/docs/user/widgets/lmfit_dialog/lmfit_dialog.md b/docs/user/widgets/lmfit_dialog/lmfit_dialog.md index ae498c92..a3157e0a 100644 --- a/docs/user/widgets/lmfit_dialog/lmfit_dialog.md +++ b/docs/user/widgets/lmfit_dialog/lmfit_dialog.md @@ -36,7 +36,7 @@ waveform.dap_summary_update.connect(lmfit_dialog.update_summary_tree) ```` ````{tab} API ```{eval-rst} -.. include:: /api_reference/_autosummary/bec_widgets.cli.client.LMFitDialog.rst +.. include:: /api_reference/_autosummary/bec_widgets.widgets.lmfit_dialog.lmfit_dialog.LMFitDialog.rst ``` ```` diff --git a/docs/user/widgets/scan_control/scan_control.md b/docs/user/widgets/scan_control/scan_control.md index 5cae6d5a..2e894756 100644 --- a/docs/user/widgets/scan_control/scan_control.md +++ b/docs/user/widgets/scan_control/scan_control.md @@ -30,6 +30,7 @@ Within the BECDesigner's [property editor](https://doc.qt.io/qt-6/designer-widge - **Hide Scan Control**: Allows you to hide the scan control buttons from the widget interface. This is useful when you want to place the control buttons in a different location. - **Hide Scan Selection**: Allows you to hide the scan selection combobox from the widget interface. This is useful when you want to restrict the user to a specific scan type or implement a custom scan selection mechanism. - **Hide Scan Remember Toggle**: Allows you to hide the toggle button that reloads scan parameters from the last executed scan. This is useful if you want to disable or restrict this functionality in specific scenarios. +- **Hide Bundle Buttons**: Allows you to hide the buttons that add or remove argument bundles from the widget interface. This is useful when you want to restrict the user from adding additional motor bundles to the scan by accident. **BEC Designer properties:** ```{figure} ./hide_scan_control.png diff --git a/docs/user/widgets/text_box/text_box.md b/docs/user/widgets/text_box/text_box.md index 24bd1275..083c8087 100644 --- a/docs/user/widgets/text_box/text_box.md +++ b/docs/user/widgets/text_box/text_box.md @@ -8,8 +8,11 @@ The [`Text Box Widget`](/api_reference/_autosummary/bec_widgets.cli.client.TextB ## Key Features: - **Text Display**: Display either plain text or HTML content, with automatic detection of the format. -- **Customizable Appearance**: Set the background and font colors to match the design of your application. -- **Font Size Adjustment**: Customize the font size of the displayed text for better readability. +- **Automatic styling**: The widget automatically adheres to BEC's style guides. No need to worry about background colors, font sizes, or other appearance settings. + +## BEC Designer Properties +```{figure} ../../assets/widget_screenshots/text_box_properties.png +``` ```` @@ -38,24 +41,6 @@ The `TextBox` widget can automatically detect and render HTML content. This exam text_box.set_text("

Welcome to BEC Widgets

This is an example of displaying HTML text.

") ``` -## Example 3 - Customizing Appearance - -The `TextBox` widget allows you to customize the background and font colors to fit your application's design. Below is an example of how to set these properties. - -```python -# Set the background color to white and the font color to black -text_box.set_color(background_color="#FFF", font_color="#000") -``` - -## Example 4 - Adjusting Font Size - -To improve readability or fit more text within the widget, you can adjust the font size. - -```python -# Set the font size to 14 pixels -text_box.set_font_size(14) -``` - ```` ````{tab} API diff --git a/tests/unit_tests/test_text_box_widget.py b/tests/unit_tests/test_text_box_widget.py index fa95970c..1c706c7e 100644 --- a/tests/unit_tests/test_text_box_widget.py +++ b/tests/unit_tests/test_text_box_widget.py @@ -1,9 +1,6 @@ -import re -from unittest import mock - import pytest -from bec_widgets.widgets.text_box.text_box import TextBox +from bec_widgets.widgets.text_box.text_box import DEFAULT_TEXT, TextBox from .client_mocks import mocked_client @@ -18,37 +15,16 @@ def text_box_widget(qtbot, mocked_client): def test_textbox_widget(text_box_widget): """Test the TextBox widget.""" + # Test default + assert text_box_widget.config.text == DEFAULT_TEXT + # Test set text text = "Hello World!" - text_box_widget.set_text(text) - assert text_box_widget.toPlainText() == text - - text_box_widget.set_color("#FFDDC1", "#123456") - text_box_widget.set_font_size(20) - assert ( - text_box_widget.styleSheet() == "background-color: #FFDDC1; color: #123456; font-size: 20px" - ) - text_box_widget.set_color("white", "blue") - text_box_widget.set_font_size(14) - assert text_box_widget.styleSheet() == "background-color: white; color: blue; font-size: 14px" + text_box_widget.set_plain_text(text) + assert text_box_widget.plain_text == text + # Test set HTML text text = "

Welcome to PyQt6

This is an example of displaying HTML text.

" - with mock.patch.object(text_box_widget, "setHtml") as mocked_set_html: - text_box_widget.set_text(text) - assert mocked_set_html.call_count == 1 - assert mocked_set_html.call_args == mock.call(text) - - -def test_textbox_change_theme(text_box_widget): - """Test change theme functionaility""" - # Default is dark theme - text_box_widget.change_theme() - assert text_box_widget.config.theme == "light" + text_box_widget.set_html_text(text) assert ( - text_box_widget.styleSheet() - == f"background-color: #FFF; color: #000; font-size: {text_box_widget.config.font_size}px" - ) - text_box_widget.change_theme() - assert text_box_widget.config.theme == "dark" - assert ( - text_box_widget.styleSheet() - == f"background-color: #000; color: #FFF; font-size: {text_box_widget.config.font_size}px" + text_box_widget.plain_text + == "Welcome to PyQt6\nThis is an example of displaying HTML text." )