bec-widgets 0.109.0__py3-none-any.whl → 0.110.0__py3-none-any.whl

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.
CHANGELOG.md CHANGED
@@ -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)
PKG-INFO CHANGED
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: bec_widgets
3
- Version: 0.109.0
3
+ Version: 0.110.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
bec_widgets/cli/client.py CHANGED
@@ -2914,31 +2914,21 @@ class StopButton(RPCBase):
2914
2914
 
2915
2915
  class TextBox(RPCBase):
2916
2916
  @rpc_call
2917
- def set_color(self, background_color: str, font_color: str) -> None:
2917
+ def set_plain_text(self, text: str) -> None:
2918
2918
  """
2919
- Set the background color of the widget.
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 set_font_size(self, size: int) -> None:
2926
+ def set_html_text(self, text: str) -> None:
2937
2927
  """
2938
- Set the font size of the text in the widget.
2928
+ Set the HTML text of the widget.
2939
2929
 
2940
2930
  Args:
2941
- size (int): The font size to set.
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_())
@@ -1,39 +1,47 @@
1
+ """Module for a text box widget that displays text in plain and HTML format and adheres to the BECWidget interface & style."""
2
+
1
3
  import re
4
+ from html.parser import HTMLParser
2
5
 
3
- from pydantic import Field, field_validator
4
- from qtpy.QtWidgets import QTextEdit
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
5
10
 
6
11
  from bec_widgets.utils.bec_connector import ConnectionConfig
7
12
  from bec_widgets.utils.bec_widget import BECWidget
8
- from bec_widgets.utils.colors import Colors
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>"
9
17
 
10
18
 
11
19
  class TextBoxConfig(ConnectionConfig):
20
+ """Configuration for the TextBox widget.
12
21
 
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.")
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
+ """
18
26
 
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
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.")
26
29
 
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, QWidget):
32
+ """A widget that displays text in plain and HTML format
30
33
 
31
- class TextBox(BECWidget, QTextEdit):
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
+ """
32
40
 
33
- USER_ACCESS = ["set_color", "set_text", "set_font_size"]
41
+ USER_ACCESS = ["set_plain_text", "set_html_text"]
34
42
  ICON_NAME = "chat"
35
43
 
36
- def __init__(self, parent=None, text: str = "", client=None, config=None, gui_id=None):
44
+ def __init__(self, parent=None, client=None, config=None, gui_id=None):
37
45
  if config is None:
38
46
  config = TextBoxConfig(widget_class=self.__class__.__name__)
39
47
  else:
@@ -41,80 +49,79 @@ class TextBox(BECWidget, QTextEdit):
41
49
  config = TextBoxConfig(**config)
42
50
  self.config = config
43
51
  super().__init__(client=client, config=config, gui_id=gui_id)
44
- QTextEdit.__init__(self, parent=parent)
45
-
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)
46
58
  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"
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)
62
65
  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)
66
+ self.set_html_text(DEFAULT_TEXT)
68
67
 
69
- def set_color(self, background_color: str, font_color: str) -> None:
70
- """Set the background color of the widget.
68
+ @Slot(str)
69
+ def set_plain_text(self, text: str) -> None:
70
+ """Set the plain text of the widget.
71
71
 
72
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
-
73
+ text (str): The text to set.
76
74
  """
77
- self.config.background_color = background_color
78
- self.config.font_color = font_color
79
- self._update_stylesheet()
75
+ self.text_box_text_edit.setPlainText(text)
76
+ self.config.text = text
77
+ self.config.is_html = False
80
78
 
81
- def set_font_size(self, size: int) -> None:
82
- """Set the font size of the text in the widget.
79
+ @Slot(str)
80
+ def set_html_text(self, text: str) -> None:
81
+ """Set the HTML text of the widget.
83
82
 
84
83
  Args:
85
- size (int): The font size to set.
84
+ text (str): The text to set.
86
85
  """
87
- self.config.font_size = size
88
- self._update_stylesheet()
86
+ self.text_box_text_edit.setHtml(text)
87
+ self.config.text = text
88
+ self.config.is_html = True
89
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
- )
90
+ @Property(str)
91
+ def plain_text(self) -> str:
92
+ """Get the text of the widget.
95
93
 
96
- def set_text(self, text: str) -> None:
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:
97
101
  """Set the text of the widget.
98
102
 
99
103
  Args:
100
104
  text (str): The text to set.
101
105
  """
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.
106
+ self.set_plain_text(text)
110
107
 
111
- Args:
112
- text (str): The text to check.
108
+ @Property(str)
109
+ def html_text(self) -> str:
110
+ """Get the HTML text of the widget.
113
111
 
114
112
  Returns:
115
- bool: True if the text contains HTML tags, False otherwise.
113
+ str: The HTML text of the widget.
116
114
  """
117
- return bool(re.search(r"<[a-zA-Z/][^>]*>", text))
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)
118
125
 
119
126
 
120
127
  if __name__ == "__main__":
@@ -123,7 +130,6 @@ if __name__ == "__main__":
123
130
  from qtpy.QtWidgets import QApplication
124
131
 
125
132
  app = QApplication(sys.argv)
126
-
127
133
  widget = TextBox()
128
134
  widget.show()
129
135
  sys.exit(app.exec())
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: bec_widgets
3
- Version: 0.109.0
3
+ Version: 0.110.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
@@ -2,11 +2,11 @@
2
2
  .gitlab-ci.yml,sha256=Dc1iDjsc72UxdUtihx4uSZU0lrTQeR8hZwGx1MQBfKE,8432
3
3
  .pylintrc,sha256=eeY8YwSI74oFfq6IYIbCqnx3Vk8ZncKaatv96n_Y8Rs,18544
4
4
  .readthedocs.yaml,sha256=aSOc277LqXcsTI6lgvm_JY80lMlr69GbPKgivua2cS0,603
5
- CHANGELOG.md,sha256=bgDc0rOOjtX6B9h8AhdM62BYiL3g22MWq3A5H-O3QMM,7258
5
+ CHANGELOG.md,sha256=nbKaG71Acd8pFUebpyIpOeqIlaGz5i4EB3EoNh_VWGQ,7088
6
6
  LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
7
- PKG-INFO,sha256=1CGyi--Q2TVQN36On9aWRM3ZgGhJTV-2DTyeuyRwIdw,1334
7
+ PKG-INFO,sha256=PruUfU4YvPambSO4Kb_dKj-f9GIBjdy4UA8X7n7k3OM,1334
8
8
  README.md,sha256=Od69x-RS85Hph0-WwWACwal4yUd67XkEn4APEfHhHFw,2649
9
- pyproject.toml,sha256=IM5KF7HZkkzb-e_nVkRg72j5C4OvcTooeYqd1mB8ddM,2544
9
+ pyproject.toml,sha256=2g-vBp_QGwnPnWJID5EPdePgrVRX5-FEqWgGGHlu53M,2544
10
10
  .git_hooks/pre-commit,sha256=n3RofIZHJl8zfJJIUomcMyYGFi_rwq4CC19z0snz3FI,286
11
11
  .gitlab/issue_templates/bug_report_template.md,sha256=gAuyEwl7XlnebBrkiJ9AqffSNOywmr8vygUFWKTuQeI,386
12
12
  .gitlab/issue_templates/documentation_update_template.md,sha256=FHLdb3TS_D9aL4CYZCjyXSulbaW5mrN2CmwTaeLPbNw,860
@@ -22,7 +22,7 @@ bec_widgets/assets/status_icons/running.svg,sha256=nlc6rKh_f-uOxQSk0BkBNyWnPAJU5
22
22
  bec_widgets/assets/status_icons/warning.svg,sha256=CNx88p9kbDG51s9ztKf-cfYan4JdDBbk3-IFKfOOFlI,364
23
23
  bec_widgets/cli/__init__.py,sha256=d0Q6Fn44e7wFfLabDOBxpcJ1DPKWlFunGYDUBmO-4hA,22
24
24
  bec_widgets/cli/auto_updates.py,sha256=DwzRChcFIWPH2kCYvp8H7dXvyYSKGYv6LwCmK2sDR2E,5676
25
- bec_widgets/cli/client.py,sha256=aG1m5xXbIsn0Cq7isrUgyA_l4yLFgbKsmmiXye6yPp8,81550
25
+ bec_widgets/cli/client.py,sha256=_sgO24vbZnc-dRPZjH_sDfvYHHvR-OeYkQmr_oGuSbU,81230
26
26
  bec_widgets/cli/client_utils.py,sha256=EdDfo3uuYAWtZiDGGu3_GPnl94FSLkNG2N_4I9FNfMc,11809
27
27
  bec_widgets/cli/generate_cli.py,sha256=zRhhcErjHqnNymoxu9oqeUZUfwLX84De1RIeGiZGUyY,6602
28
28
  bec_widgets/cli/rpc_register.py,sha256=QxXUZu5XNg00Yf5O3UHWOXg3-f_pzKjjoZYMOa-MOJc,2216
@@ -44,6 +44,7 @@ bec_widgets/examples/plugin_example_pyside/tictactoeplugin.py,sha256=MFMwONn4EZ3
44
44
  bec_widgets/examples/plugin_example_pyside/tictactoetaskmenu.py,sha256=V6OVnBTS-60zjQ2FAs88Ldjm1MfoMROfiQZZu6Guav8,2379
45
45
  bec_widgets/qt_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
46
46
  bec_widgets/qt_utils/error_popups.py,sha256=y9gKKWaafp468ioHr96nBhf02ZpEgjDc-BAVOTWh-e8,7680
47
+ bec_widgets/qt_utils/palette_viewer.py,sha256=VpcYSYh__Bp5lgKmKbcFFWC0v5g7NELzHf73OEGY1So,6298
47
48
  bec_widgets/qt_utils/redis_message_waiter.py,sha256=fvL_QgC0cTDv_FPJdRyp5AKjf401EJU4z3r38p47ydY,1745
48
49
  bec_widgets/qt_utils/settings_dialog.py,sha256=NhtzTer_xzlB2lLLrGklkI1QYLJEWQpJoZbCz4o5daI,3645
49
50
  bec_widgets/qt_utils/toolbar.py,sha256=QMXTbEFowVzbQzblXZVJcAhgd_zrqaqBISyd4QlPv1A,8576
@@ -226,7 +227,7 @@ bec_widgets/widgets/stop_button/stop_button.pyproject,sha256=Cc_xbv-zfzNVpsdg_1Q
226
227
  bec_widgets/widgets/stop_button/stop_button_plugin.py,sha256=VT-WVLq89fw7PwML7JDMCF1bqfopLCZIgMA4yetl65M,1365
227
228
  bec_widgets/widgets/text_box/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
228
229
  bec_widgets/widgets/text_box/register_text_box.py,sha256=UwrmCoYjAAtJJK8BwC0P_wSb-lOlOvxPe3-Bemg_9nw,459
229
- bec_widgets/widgets/text_box/text_box.py,sha256=urkHtDQBSf4ws5BcpYIe5cfj-r-GXQOngcGUVYWvgRo,4297
230
+ bec_widgets/widgets/text_box/text_box.py,sha256=S1VQwTkZje2x4iwjTEzd6zPP_wcHtIcx8o9KuCtsSbY,4247
230
231
  bec_widgets/widgets/text_box/text_box.pyproject,sha256=XohO1BIe2hrpU-z_KHKRgjcUkXru7jeFte31j2TPbNk,26
231
232
  bec_widgets/widgets/text_box/text_box_plugin.py,sha256=rjRxqqovggpiI3gfQrXU-uc7TEjugIameQBrFD6s9hY,1302
232
233
  bec_widgets/widgets/toggle/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -255,8 +256,8 @@ bec_widgets/widgets/website/register_website_widget.py,sha256=LIQJpV9uqcBiPR9cEA
255
256
  bec_widgets/widgets/website/website.py,sha256=42pncCc_zI2eqeMArIurVmPUukRo5bTxa2h1Skah-io,3012
256
257
  bec_widgets/widgets/website/website_widget.pyproject,sha256=scOiV3cV1_BjbzpPzy2N8rIJL5P2qIZz8ObTJ-Uvdtg,25
257
258
  bec_widgets/widgets/website/website_widget_plugin.py,sha256=pz38_C2cZ0yvPPS02wdIPcmhFo_yiwUhflsASocAPQQ,1341
258
- bec_widgets-0.109.0.dist-info/METADATA,sha256=1CGyi--Q2TVQN36On9aWRM3ZgGhJTV-2DTyeuyRwIdw,1334
259
- bec_widgets-0.109.0.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
260
- bec_widgets-0.109.0.dist-info/entry_points.txt,sha256=3otEkCdDB9LZJuBLzG4pFLK5Di0CVybN_12IsZrQ-58,166
261
- bec_widgets-0.109.0.dist-info/licenses/LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
262
- bec_widgets-0.109.0.dist-info/RECORD,,
259
+ bec_widgets-0.110.0.dist-info/METADATA,sha256=PruUfU4YvPambSO4Kb_dKj-f9GIBjdy4UA8X7n7k3OM,1334
260
+ bec_widgets-0.110.0.dist-info/WHEEL,sha256=1yFddiXMmvYK7QYTqtRNtX66WJ0Mz8PYEiEUoOUUxRY,87
261
+ bec_widgets-0.110.0.dist-info/entry_points.txt,sha256=3otEkCdDB9LZJuBLzG4pFLK5Di0CVybN_12IsZrQ-58,166
262
+ bec_widgets-0.110.0.dist-info/licenses/LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
263
+ bec_widgets-0.110.0.dist-info/RECORD,,
pyproject.toml CHANGED
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "bec_widgets"
7
- version = "0.109.0"
7
+ version = "0.110.0"
8
8
  description = "BEC Widgets"
9
9
  requires-python = ">=3.10"
10
10
  classifiers = [