bec-widgets 1.10.0__py3-none-any.whl → 1.11.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,6 +1,20 @@
1
1
  # CHANGELOG
2
2
 
3
3
 
4
+ ## v1.11.0 (2024-12-11)
5
+
6
+ ### Features
7
+
8
+ - **collapsible_panel_manager**: Panel manager to handle collapsing and expanding widgets from the
9
+ main widget added
10
+ ([`a434d3e`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/a434d3ee574081356c32c096d2fd61f641e04542))
11
+
12
+ ### Testing
13
+
14
+ - **collapsible_panel_manager**: Fixture changed to not use .show()
15
+ ([`ff654b5`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/ff654b56ae98388a2b707c040d51220be6cbce13))
16
+
17
+
4
18
  ## v1.10.0 (2024-12-10)
5
19
 
6
20
  ### Features
@@ -197,16 +211,3 @@ Depending on the test, auto-updates are enabled or not.
197
211
 
198
212
  - **crosshair**: Label of coordinates of TextItem displays numbers in general format
199
213
  ([`11e5937`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/11e5937ae0f3c1413acd4e66878a692ebe4ef7d0))
200
-
201
- - **crosshair**: Label of coordinates of TextItem is updated according to the current theme of qapp
202
- ([`4f31ea6`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/4f31ea655cf6190e141e6a2720a2d6da517a2b5b))
203
-
204
- ### Features
205
-
206
- - **crosshair**: Textitem to display crosshair coordinates
207
- ([`035136d`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/035136d5171ec5f4311d15a9aa5bad2bdbc1f6cb))
208
-
209
- ### Testing
210
-
211
- - **crosshair**: Tests extended
212
- ([`64df805`](https://gitlab.psi.ch/bec/bec_widgets/-/commit/64df805a9ed92bb97e580ac3bc0a1bbd2b1cb81e))
PKG-INFO CHANGED
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: bec_widgets
3
- Version: 1.10.0
3
+ Version: 1.11.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
@@ -0,0 +1,380 @@
1
+ from __future__ import annotations
2
+
3
+ import sys
4
+ from typing import Literal
5
+
6
+ import pyqtgraph as pg
7
+ from qtpy.QtCore import Property, QEasingCurve, QObject, QPropertyAnimation
8
+ from qtpy.QtWidgets import (
9
+ QApplication,
10
+ QHBoxLayout,
11
+ QMainWindow,
12
+ QPushButton,
13
+ QSizePolicy,
14
+ QVBoxLayout,
15
+ QWidget,
16
+ )
17
+ from typeguard import typechecked
18
+
19
+ from bec_widgets.widgets.containers.layout_manager.layout_manager import LayoutManagerWidget
20
+
21
+
22
+ class DimensionAnimator(QObject):
23
+ """
24
+ Helper class to animate the size of a panel widget.
25
+ """
26
+
27
+ def __init__(self, panel_widget: QWidget, direction: str):
28
+ super().__init__()
29
+ self.panel_widget = panel_widget
30
+ self.direction = direction
31
+ self._size = 0
32
+
33
+ @Property(int)
34
+ def panel_width(self):
35
+ """
36
+ Returns the current width of the panel widget.
37
+ """
38
+ return self._size
39
+
40
+ @panel_width.setter
41
+ def panel_width(self, val: int):
42
+ """
43
+ Set the width of the panel widget.
44
+
45
+ Args:
46
+ val(int): The width to set.
47
+ """
48
+ self._size = val
49
+ self.panel_widget.setFixedWidth(val)
50
+
51
+ @Property(int)
52
+ def panel_height(self):
53
+ """
54
+ Returns the current height of the panel widget.
55
+ """
56
+ return self._size
57
+
58
+ @panel_height.setter
59
+ def panel_height(self, val: int):
60
+ """
61
+ Set the height of the panel widget.
62
+
63
+ Args:
64
+ val(int): The height to set.
65
+ """
66
+ self._size = val
67
+ self.panel_widget.setFixedHeight(val)
68
+
69
+
70
+ class CollapsiblePanelManager(QObject):
71
+ """
72
+ Manager class to handle collapsible panels from a main widget using LayoutManagerWidget.
73
+ """
74
+
75
+ def __init__(self, layout_manager: LayoutManagerWidget, reference_widget: QWidget, parent=None):
76
+ super().__init__(parent)
77
+ self.layout_manager = layout_manager
78
+ self.reference_widget = reference_widget
79
+ self.animations = {}
80
+ self.panels = {}
81
+ self.direction_settings = {
82
+ "left": {"property": b"maximumWidth", "default_size": 200},
83
+ "right": {"property": b"maximumWidth", "default_size": 200},
84
+ "top": {"property": b"maximumHeight", "default_size": 150},
85
+ "bottom": {"property": b"maximumHeight", "default_size": 150},
86
+ }
87
+
88
+ def add_panel(
89
+ self,
90
+ direction: Literal["left", "right", "top", "bottom"],
91
+ panel_widget: QWidget,
92
+ target_size: int | None = None,
93
+ duration: int = 300,
94
+ ):
95
+ """
96
+ Add a panel widget to the layout manager.
97
+
98
+ Args:
99
+ direction(Literal["left", "right", "top", "bottom"]): Direction of the panel.
100
+ panel_widget(QWidget): The panel widget to add.
101
+ target_size(int, optional): The target size of the panel. Defaults to None.
102
+ duration(int): The duration of the animation in milliseconds. Defaults to 300.
103
+ """
104
+ if direction not in self.direction_settings:
105
+ raise ValueError("Direction must be one of 'left', 'right', 'top', 'bottom'.")
106
+
107
+ if target_size is None:
108
+ target_size = self.direction_settings[direction]["default_size"]
109
+
110
+ self.layout_manager.add_widget_relative(
111
+ widget=panel_widget, reference_widget=self.reference_widget, position=direction
112
+ )
113
+ panel_widget.setVisible(False)
114
+
115
+ # Set initial constraints as flexible
116
+ if direction in ["left", "right"]:
117
+ panel_widget.setMaximumWidth(0)
118
+ panel_widget.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
119
+ else:
120
+ panel_widget.setMaximumHeight(0)
121
+ panel_widget.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
122
+
123
+ self.panels[direction] = {
124
+ "widget": panel_widget,
125
+ "direction": direction,
126
+ "target_size": target_size,
127
+ "duration": duration,
128
+ "animator": None,
129
+ }
130
+
131
+ def toggle_panel(
132
+ self,
133
+ direction: Literal["left", "right", "top", "bottom"],
134
+ target_size: int | None = None,
135
+ duration: int | None = None,
136
+ easing_curve: QEasingCurve = QEasingCurve.InOutQuad,
137
+ ensure_max: bool = False,
138
+ scale: float | None = None,
139
+ animation: bool = True,
140
+ ):
141
+ """
142
+ Toggle the specified panel.
143
+
144
+ Parameters:
145
+ direction (Literal["left", "right", "top", "bottom"]): Direction of the panel to toggle.
146
+ target_size (int, optional): Override target size for this toggle.
147
+ duration (int, optional): Override the animation duration.
148
+ easing_curve (QEasingCurve): Animation easing curve.
149
+ ensure_max (bool): If True, animate as a fixed-size panel.
150
+ scale (float, optional): If provided, calculate target_size from main widget size.
151
+ animation (bool): If False, no animation is performed; panel instantly toggles.
152
+ """
153
+ if direction not in self.panels:
154
+ raise ValueError(f"No panel found in direction '{direction}'.")
155
+
156
+ panel_info = self.panels[direction]
157
+ panel_widget = panel_info["widget"]
158
+ dir_settings = self.direction_settings[direction]
159
+
160
+ # Determine final target size
161
+ if scale is not None:
162
+ main_rect = self.reference_widget.geometry()
163
+ if direction in ["left", "right"]:
164
+ computed_target = int(main_rect.width() * scale)
165
+ else:
166
+ computed_target = int(main_rect.height() * scale)
167
+ final_target_size = computed_target
168
+ else:
169
+ if target_size is None:
170
+ final_target_size = panel_info["target_size"]
171
+ else:
172
+ final_target_size = target_size
173
+
174
+ if duration is None:
175
+ duration = panel_info["duration"]
176
+
177
+ expanding_property = dir_settings["property"]
178
+ currently_visible = panel_widget.isVisible()
179
+
180
+ if ensure_max:
181
+ if panel_info["animator"] is None:
182
+ panel_info["animator"] = DimensionAnimator(panel_widget, direction)
183
+ animator = panel_info["animator"]
184
+
185
+ if direction in ["left", "right"]:
186
+ prop_name = b"panel_width"
187
+ else:
188
+ prop_name = b"panel_height"
189
+ else:
190
+ animator = None
191
+ prop_name = expanding_property
192
+
193
+ if currently_visible:
194
+ # Hide the panel
195
+ if ensure_max:
196
+ start_value = final_target_size
197
+ end_value = 0
198
+ finish_callback = lambda w=panel_widget, d=direction: self._after_hide_reset(w, d)
199
+ else:
200
+ start_value = (
201
+ panel_widget.width()
202
+ if direction in ["left", "right"]
203
+ else panel_widget.height()
204
+ )
205
+ end_value = 0
206
+ finish_callback = lambda w=panel_widget: w.setVisible(False)
207
+ else:
208
+ # Show the panel
209
+ start_value = 0
210
+ end_value = final_target_size
211
+ finish_callback = None
212
+ if ensure_max:
213
+ # Fix panel exactly
214
+ if direction in ["left", "right"]:
215
+ panel_widget.setMinimumWidth(0)
216
+ panel_widget.setMaximumWidth(final_target_size)
217
+ panel_widget.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Expanding)
218
+ else:
219
+ panel_widget.setMinimumHeight(0)
220
+ panel_widget.setMaximumHeight(final_target_size)
221
+ panel_widget.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
222
+ else:
223
+ # Flexible mode
224
+ if direction in ["left", "right"]:
225
+ panel_widget.setMinimumWidth(0)
226
+ panel_widget.setMaximumWidth(final_target_size)
227
+ panel_widget.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
228
+ else:
229
+ panel_widget.setMinimumHeight(0)
230
+ panel_widget.setMaximumHeight(final_target_size)
231
+ panel_widget.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
232
+
233
+ panel_widget.setVisible(True)
234
+
235
+ if not animation:
236
+ # No animation: instantly set final state
237
+ if end_value == 0:
238
+ # Hiding
239
+ if ensure_max:
240
+ # Reset after hide
241
+ self._after_hide_reset(panel_widget, direction)
242
+ else:
243
+ panel_widget.setVisible(False)
244
+ else:
245
+ # Showing
246
+ if ensure_max:
247
+ # Already set fixed size
248
+ if direction in ["left", "right"]:
249
+ panel_widget.setFixedWidth(end_value)
250
+ else:
251
+ panel_widget.setFixedHeight(end_value)
252
+ else:
253
+ # Just set maximum dimension
254
+ if direction in ["left", "right"]:
255
+ panel_widget.setMaximumWidth(end_value)
256
+ else:
257
+ panel_widget.setMaximumHeight(end_value)
258
+ return
259
+
260
+ # With animation
261
+ animation = QPropertyAnimation(animator if ensure_max else panel_widget, prop_name)
262
+ animation.setDuration(duration)
263
+ animation.setStartValue(start_value)
264
+ animation.setEndValue(end_value)
265
+ animation.setEasingCurve(easing_curve)
266
+
267
+ if end_value == 0 and finish_callback:
268
+ animation.finished.connect(finish_callback)
269
+ elif end_value == 0 and not finish_callback:
270
+ animation.finished.connect(lambda w=panel_widget: w.setVisible(False))
271
+
272
+ animation.start()
273
+ self.animations[panel_widget] = animation
274
+
275
+ @typechecked
276
+ def _after_hide_reset(
277
+ self, panel_widget: QWidget, direction: Literal["left", "right", "top", "bottom"]
278
+ ):
279
+ """
280
+ Reset the panel widget after hiding it in ensure_max mode.
281
+
282
+ Args:
283
+ panel_widget(QWidget): The panel widget to reset.
284
+ direction(Literal["left", "right", "top", "bottom"]): The direction of the panel.
285
+ """
286
+ # Called after hiding a panel in ensure_max mode
287
+ panel_widget.setVisible(False)
288
+ if direction in ["left", "right"]:
289
+ panel_widget.setMinimumWidth(0)
290
+ panel_widget.setMaximumWidth(0)
291
+ panel_widget.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
292
+ else:
293
+ panel_widget.setMinimumHeight(0)
294
+ panel_widget.setMaximumHeight(16777215)
295
+ panel_widget.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
296
+
297
+
298
+ ####################################################################################################
299
+ # The following code is for the GUI control panel to interact with the CollapsiblePanelManager.
300
+ # It is not covered by any tests as it serves only as an example for the CollapsiblePanelManager class.
301
+ ####################################################################################################
302
+
303
+
304
+ class MainWindow(QMainWindow): # pragma: no cover
305
+ def __init__(self):
306
+ super().__init__()
307
+ self.setWindowTitle("Panels with ensure_max, scale, and animation toggle")
308
+ self.resize(800, 600)
309
+
310
+ central_widget = QWidget()
311
+ self.setCentralWidget(central_widget)
312
+ main_layout = QVBoxLayout(central_widget)
313
+ main_layout.setContentsMargins(10, 10, 10, 10)
314
+ main_layout.setSpacing(10)
315
+
316
+ # Buttons
317
+ buttons_layout = QHBoxLayout()
318
+ self.btn_left = QPushButton("Toggle Left (ensure_max=True)")
319
+ self.btn_top = QPushButton("Toggle Top (scale=0.5, no animation)")
320
+ self.btn_right = QPushButton("Toggle Right (ensure_max=True, scale=0.3)")
321
+ self.btn_bottom = QPushButton("Toggle Bottom (no animation)")
322
+
323
+ buttons_layout.addWidget(self.btn_left)
324
+ buttons_layout.addWidget(self.btn_top)
325
+ buttons_layout.addWidget(self.btn_right)
326
+ buttons_layout.addWidget(self.btn_bottom)
327
+
328
+ main_layout.addLayout(buttons_layout)
329
+
330
+ self.layout_manager = LayoutManagerWidget()
331
+ main_layout.addWidget(self.layout_manager)
332
+
333
+ # Main widget
334
+ self.main_plot = pg.PlotWidget()
335
+ self.main_plot.plot([1, 2, 3, 4], [4, 3, 2, 1])
336
+ self.layout_manager.add_widget(self.main_plot, 0, 0)
337
+
338
+ self.panel_manager = CollapsiblePanelManager(self.layout_manager, self.main_plot)
339
+
340
+ # Panels
341
+ self.left_panel = pg.PlotWidget()
342
+ self.left_panel.plot([1, 2, 3], [3, 2, 1])
343
+ self.panel_manager.add_panel("left", self.left_panel, target_size=200)
344
+
345
+ self.right_panel = pg.PlotWidget()
346
+ self.right_panel.plot([10, 20, 30], [1, 10, 1])
347
+ self.panel_manager.add_panel("right", self.right_panel, target_size=200)
348
+
349
+ self.top_panel = pg.PlotWidget()
350
+ self.top_panel.plot([1, 2, 3], [1, 2, 3])
351
+ self.panel_manager.add_panel("top", self.top_panel, target_size=150)
352
+
353
+ self.bottom_panel = pg.PlotWidget()
354
+ self.bottom_panel.plot([2, 4, 6], [10, 5, 10])
355
+ self.panel_manager.add_panel("bottom", self.bottom_panel, target_size=150)
356
+
357
+ # Connect buttons
358
+ # Left with ensure_max
359
+ self.btn_left.clicked.connect(
360
+ lambda: self.panel_manager.toggle_panel("left", ensure_max=True)
361
+ )
362
+ # Top with scale=0.5 and no animation
363
+ self.btn_top.clicked.connect(
364
+ lambda: self.panel_manager.toggle_panel("top", scale=0.5, animation=False)
365
+ )
366
+ # Right with ensure_max, scale=0.3
367
+ self.btn_right.clicked.connect(
368
+ lambda: self.panel_manager.toggle_panel("right", ensure_max=True, scale=0.3)
369
+ )
370
+ # Bottom no animation
371
+ self.btn_bottom.clicked.connect(
372
+ lambda: self.panel_manager.toggle_panel("bottom", target_size=100, animation=False)
373
+ )
374
+
375
+
376
+ if __name__ == "__main__": # pragma: no cover
377
+ app = QApplication(sys.argv)
378
+ w = MainWindow()
379
+ w.show()
380
+ sys.exit(app.exec())
@@ -408,9 +408,9 @@ class LayoutManagerWidget(QWidget):
408
408
 
409
409
  def remove(
410
410
  self,
411
- row: Optional[int] = None,
412
- col: Optional[int] = None,
413
- coordinates: Optional[Tuple[int, int]] = None,
411
+ row: int | None = None,
412
+ col: int | None = None,
413
+ coordinates: Tuple[int, int] | None = None,
414
414
  ) -> None:
415
415
  """
416
416
  Remove a widget from the layout. Can be removed by widget ID or by coordinates.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: bec_widgets
3
- Version: 1.10.0
3
+ Version: 1.11.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=bAWGX_NR9rQZmv_bmyLXkEMRreWp0JzVNpsNTxk0NwE,8637
3
3
  .pylintrc,sha256=eeY8YwSI74oFfq6IYIbCqnx3Vk8ZncKaatv96n_Y8Rs,18544
4
4
  .readthedocs.yaml,sha256=aSOc277LqXcsTI6lgvm_JY80lMlr69GbPKgivua2cS0,603
5
- CHANGELOG.md,sha256=IKF4CsJODVEwtIjKM2zTTS9m_JRHCY3XRYlUdJ4DZLs,7686
5
+ CHANGELOG.md,sha256=jXJI2uWGwhsaGyF_V9ngkP30ZoyF3gm3RaSO8RSbZfQ,7602
6
6
  LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
7
- PKG-INFO,sha256=hICH58v6kexJp6j2db_OOpSQQlaMAO57Af9ScSPDgSg,1309
7
+ PKG-INFO,sha256=QgtqyeZ80BrmFfNphdBTCBs0g17ZZ-pzLaZ14MuV8EY,1309
8
8
  README.md,sha256=Od69x-RS85Hph0-WwWACwal4yUd67XkEn4APEfHhHFw,2649
9
- pyproject.toml,sha256=D6UU8tgbCO_3ovaiysqzl6EAp0qc_nHHOBav0gKDFvY,2587
9
+ pyproject.toml,sha256=PPZ0RXljmNIqxbncdTU8wamWgRyUXXRINs8NHn58TX0,2587
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
@@ -45,6 +45,7 @@ bec_widgets/examples/plugin_example_pyside/tictactoe.py,sha256=s3rCurXloVcmMdzZi
45
45
  bec_widgets/examples/plugin_example_pyside/tictactoeplugin.py,sha256=MFMwONn4EZ3V8DboEG4I3BXpURE9JDbKB7XTzzfZl5w,1978
46
46
  bec_widgets/examples/plugin_example_pyside/tictactoetaskmenu.py,sha256=V6OVnBTS-60zjQ2FAs88Ldjm1MfoMROfiQZZu6Guav8,2379
47
47
  bec_widgets/qt_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
48
+ bec_widgets/qt_utils/collapsible_panel_manager.py,sha256=tvv77-9YTfYpsU6M_Le3bHR6wtANC83DEOrJ2Hhj6rs,14201
48
49
  bec_widgets/qt_utils/compact_popup.py,sha256=3yeb-GJ1PUla5Q_hT0XDKqvyIEH9yV_eGidf1t8Dbbw,10234
49
50
  bec_widgets/qt_utils/error_popups.py,sha256=y9gKKWaafp468ioHr96nBhf02ZpEgjDc-BAVOTWh-e8,7680
50
51
  bec_widgets/qt_utils/palette_viewer.py,sha256=--B0x7aE7bniHIeuuLY_pH8yBDrTTXaE0IDrC_AM1mo,6326
@@ -109,7 +110,7 @@ bec_widgets/widgets/containers/figure/plots/waveform/__init__.py,sha256=47DEQpj8
109
110
  bec_widgets/widgets/containers/figure/plots/waveform/waveform.py,sha256=6j-3hg0tVtpCnDgbYObTYwiNI7ciuWgQ5L1TlAN0Kg8,57543
110
111
  bec_widgets/widgets/containers/figure/plots/waveform/waveform_curve.py,sha256=9rOFHIxRjz0-G6f-mpw0FNmX846ZPwGn8yrJ3FpxlVc,8725
111
112
  bec_widgets/widgets/containers/layout_manager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
112
- bec_widgets/widgets/containers/layout_manager/layout_manager.py,sha256=98G91ffPynoZTTi2IjklS9TwZh_JZbJX1_MeXAB2eC4,33766
113
+ bec_widgets/widgets/containers/layout_manager/layout_manager.py,sha256=LJFEjzi10mzo0wxD84Iud1A-jKahqAf8nJ5qIBx1MfE,33757
113
114
  bec_widgets/widgets/containers/main_window/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
114
115
  bec_widgets/widgets/containers/main_window/main_window.py,sha256=A2IAux-lqupMCVZOQu7AUt1AEaeIG3Eza85eN0bknlI,272
115
116
  bec_widgets/widgets/control/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -317,8 +318,8 @@ bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button.py,sha256=Z
317
318
  bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button.pyproject,sha256=Lbi9zb6HNlIq14k6hlzR-oz6PIFShBuF7QxE6d87d64,34
318
319
  bec_widgets/widgets/utility/visual/dark_mode_button/dark_mode_button_plugin.py,sha256=CzChz2SSETYsR8-36meqWnsXCT-FIy_J_xeU5coWDY8,1350
319
320
  bec_widgets/widgets/utility/visual/dark_mode_button/register_dark_mode_button.py,sha256=rMpZ1CaoucwobgPj1FuKTnt07W82bV1GaSYdoqcdMb8,521
320
- bec_widgets-1.10.0.dist-info/METADATA,sha256=hICH58v6kexJp6j2db_OOpSQQlaMAO57Af9ScSPDgSg,1309
321
- bec_widgets-1.10.0.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
322
- bec_widgets-1.10.0.dist-info/entry_points.txt,sha256=dItMzmwA1wizJ1Itx15qnfJ0ZzKVYFLVJ1voxT7K7D4,214
323
- bec_widgets-1.10.0.dist-info/licenses/LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
324
- bec_widgets-1.10.0.dist-info/RECORD,,
321
+ bec_widgets-1.11.0.dist-info/METADATA,sha256=QgtqyeZ80BrmFfNphdBTCBs0g17ZZ-pzLaZ14MuV8EY,1309
322
+ bec_widgets-1.11.0.dist-info/WHEEL,sha256=C2FUgwZgiLbznR-k0b_5k3Ai_1aASOXDss3lzCUsUug,87
323
+ bec_widgets-1.11.0.dist-info/entry_points.txt,sha256=dItMzmwA1wizJ1Itx15qnfJ0ZzKVYFLVJ1voxT7K7D4,214
324
+ bec_widgets-1.11.0.dist-info/licenses/LICENSE,sha256=YRKe85CBRyP7UpEAWwU8_qSIyuy5-l_9C-HKg5Qm8MQ,1511
325
+ bec_widgets-1.11.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 = "1.10.0"
7
+ version = "1.11.0"
8
8
  description = "BEC Widgets"
9
9
  requires-python = ">=3.10"
10
10
  classifiers = [