breeze-widget 0.3.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.
Files changed (167) hide show
  1. breeze_widget-0.3.0/LICENSE +21 -0
  2. breeze_widget-0.3.0/PKG-INFO +109 -0
  3. breeze_widget-0.3.0/README.md +79 -0
  4. breeze_widget-0.3.0/pyproject.toml +55 -0
  5. breeze_widget-0.3.0/setup.cfg +4 -0
  6. breeze_widget-0.3.0/src/breeze_widget.egg-info/PKG-INFO +109 -0
  7. breeze_widget-0.3.0/src/breeze_widget.egg-info/SOURCES.txt +165 -0
  8. breeze_widget-0.3.0/src/breeze_widget.egg-info/dependency_links.txt +1 -0
  9. breeze_widget-0.3.0/src/breeze_widget.egg-info/requires.txt +5 -0
  10. breeze_widget-0.3.0/src/breeze_widget.egg-info/top_level.txt +1 -0
  11. breeze_widget-0.3.0/src/breezewidget/__init__.py +277 -0
  12. breeze_widget-0.3.0/src/breezewidget/animation/__init__.py +12 -0
  13. breeze_widget-0.3.0/src/breezewidget/animation/color.py +89 -0
  14. breeze_widget-0.3.0/src/breezewidget/animation/property.py +48 -0
  15. breeze_widget-0.3.0/src/breezewidget/animation/shadow.py +90 -0
  16. breeze_widget-0.3.0/src/breezewidget/calendar_widget/__init__.py +33 -0
  17. breeze_widget-0.3.0/src/breezewidget/calendar_widget/calendar_widget.py +659 -0
  18. breeze_widget-0.3.0/src/breezewidget/calendar_widget/commons.py +276 -0
  19. breeze_widget-0.3.0/src/breezewidget/calendar_widget/month_model.py +40 -0
  20. breeze_widget-0.3.0/src/breezewidget/cards/__init__.py +34 -0
  21. breeze_widget-0.3.0/src/breezewidget/cards/card.py +127 -0
  22. breeze_widget-0.3.0/src/breezewidget/cards/header_card.py +72 -0
  23. breeze_widget-0.3.0/src/breezewidget/cards/settings_cards.py +498 -0
  24. breeze_widget-0.3.0/src/breezewidget/constants.py +99 -0
  25. breeze_widget-0.3.0/src/breezewidget/core/__init__.py +42 -0
  26. breeze_widget-0.3.0/src/breezewidget/core/config.py +406 -0
  27. breeze_widget-0.3.0/src/breezewidget/core/exception_handler.py +176 -0
  28. breeze_widget-0.3.0/src/breezewidget/core/router.py +104 -0
  29. breeze_widget-0.3.0/src/breezewidget/core/translator.py +155 -0
  30. breeze_widget-0.3.0/src/breezewidget/dialogs/__init__.py +18 -0
  31. breeze_widget-0.3.0/src/breezewidget/dialogs/base.py +160 -0
  32. breeze_widget-0.3.0/src/breezewidget/dialogs/color_dialog.py +170 -0
  33. breeze_widget-0.3.0/src/breezewidget/dialogs/folder_list_dialog.py +91 -0
  34. breeze_widget-0.3.0/src/breezewidget/dialogs/masked.py +247 -0
  35. breeze_widget-0.3.0/src/breezewidget/dialogs/message.py +29 -0
  36. breeze_widget-0.3.0/src/breezewidget/flyout/__init__.py +14 -0
  37. breeze_widget-0.3.0/src/breezewidget/flyout/animation.py +78 -0
  38. breeze_widget-0.3.0/src/breezewidget/flyout/flyout.py +264 -0
  39. breeze_widget-0.3.0/src/breezewidget/flyout/teaching_tip.py +157 -0
  40. breeze_widget-0.3.0/src/breezewidget/icons/__init__.py +7 -0
  41. breeze_widget-0.3.0/src/breezewidget/icons/_svg.py +131 -0
  42. breeze_widget-0.3.0/src/breezewidget/icons/_themed.py +102 -0
  43. breeze_widget-0.3.0/src/breezewidget/icons/breeze_icon.py +57 -0
  44. breeze_widget-0.3.0/src/breezewidget/icons/outline/alert-triangle.svg +21 -0
  45. breeze_widget-0.3.0/src/breezewidget/icons/outline/arrow-left.svg +21 -0
  46. breeze_widget-0.3.0/src/breezewidget/icons/outline/arrow-right.svg +21 -0
  47. breeze_widget-0.3.0/src/breezewidget/icons/outline/calendar.svg +24 -0
  48. breeze_widget-0.3.0/src/breezewidget/icons/outline/check.svg +19 -0
  49. breeze_widget-0.3.0/src/breezewidget/icons/outline/chevron-down.svg +19 -0
  50. breeze_widget-0.3.0/src/breezewidget/icons/outline/chevron-right.svg +19 -0
  51. breeze_widget-0.3.0/src/breezewidget/icons/outline/circle-x.svg +20 -0
  52. breeze_widget-0.3.0/src/breezewidget/icons/outline/device-floppy.svg +21 -0
  53. breeze_widget-0.3.0/src/breezewidget/icons/outline/dots.svg +21 -0
  54. breeze_widget-0.3.0/src/breezewidget/icons/outline/download.svg +21 -0
  55. breeze_widget-0.3.0/src/breezewidget/icons/outline/edit.svg +21 -0
  56. breeze_widget-0.3.0/src/breezewidget/icons/outline/external-link.svg +21 -0
  57. breeze_widget-0.3.0/src/breezewidget/icons/outline/file-text.svg +23 -0
  58. breeze_widget-0.3.0/src/breezewidget/icons/outline/folder.svg +19 -0
  59. breeze_widget-0.3.0/src/breezewidget/icons/outline/home.svg +21 -0
  60. breeze_widget-0.3.0/src/breezewidget/icons/outline/info-circle.svg +21 -0
  61. breeze_widget-0.3.0/src/breezewidget/icons/outline/menu-2.svg +21 -0
  62. breeze_widget-0.3.0/src/breezewidget/icons/outline/moon.svg +19 -0
  63. breeze_widget-0.3.0/src/breezewidget/icons/outline/plus.svg +20 -0
  64. breeze_widget-0.3.0/src/breezewidget/icons/outline/search.svg +20 -0
  65. breeze_widget-0.3.0/src/breezewidget/icons/outline/settings.svg +20 -0
  66. breeze_widget-0.3.0/src/breezewidget/icons/outline/sun.svg +20 -0
  67. breeze_widget-0.3.0/src/breezewidget/icons/outline/trash.svg +23 -0
  68. breeze_widget-0.3.0/src/breezewidget/icons/outline/users.svg +22 -0
  69. breeze_widget-0.3.0/src/breezewidget/icons/outline/x.svg +20 -0
  70. breeze_widget-0.3.0/src/breezewidget/icons/registry.py +269 -0
  71. breeze_widget-0.3.0/src/breezewidget/icons/svg_icons.py +51 -0
  72. breeze_widget-0.3.0/src/breezewidget/layout/__init__.py +7 -0
  73. breeze_widget-0.3.0/src/breezewidget/layout/_utils.py +14 -0
  74. breeze_widget-0.3.0/src/breezewidget/layout/expand.py +31 -0
  75. breeze_widget-0.3.0/src/breezewidget/layout/flow.py +155 -0
  76. breeze_widget-0.3.0/src/breezewidget/media/__init__.py +8 -0
  77. breeze_widget-0.3.0/src/breezewidget/media/media_player.py +95 -0
  78. breeze_widget-0.3.0/src/breezewidget/media/play_bar.py +181 -0
  79. breeze_widget-0.3.0/src/breezewidget/media/video_widget.py +15 -0
  80. breeze_widget-0.3.0/src/breezewidget/menu/__init__.py +8 -0
  81. breeze_widget-0.3.0/src/breezewidget/menu/checkable_menu.py +49 -0
  82. breeze_widget-0.3.0/src/breezewidget/menu/command_bar.py +183 -0
  83. breeze_widget-0.3.0/src/breezewidget/menu/round_menu.py +56 -0
  84. breeze_widget-0.3.0/src/breezewidget/navigation/__init__.py +23 -0
  85. breeze_widget-0.3.0/src/breezewidget/navigation/breadcrumb.py +136 -0
  86. breeze_widget-0.3.0/src/breezewidget/navigation/interface.py +229 -0
  87. breeze_widget-0.3.0/src/breezewidget/navigation/pivot.py +172 -0
  88. breeze_widget-0.3.0/src/breezewidget/navigation/segmented.py +74 -0
  89. breeze_widget-0.3.0/src/breezewidget/navigation/tab_bar.py +135 -0
  90. breeze_widget-0.3.0/src/breezewidget/pickers/__init__.py +9 -0
  91. breeze_widget-0.3.0/src/breezewidget/pickers/calendar_picker.py +81 -0
  92. breeze_widget-0.3.0/src/breezewidget/pickers/date_picker.py +115 -0
  93. breeze_widget-0.3.0/src/breezewidget/pickers/fast_calendar_picker.py +13 -0
  94. breeze_widget-0.3.0/src/breezewidget/pickers/time_picker.py +111 -0
  95. breeze_widget-0.3.0/src/breezewidget/scroll/__init__.py +7 -0
  96. breeze_widget-0.3.0/src/breezewidget/scroll/pips.py +135 -0
  97. breeze_widget-0.3.0/src/breezewidget/scroll/smooth.py +95 -0
  98. breeze_widget-0.3.0/src/breezewidget/status/__init__.py +18 -0
  99. breeze_widget-0.3.0/src/breezewidget/status/badge.py +237 -0
  100. breeze_widget-0.3.0/src/breezewidget/status/info_bar.py +120 -0
  101. breeze_widget-0.3.0/src/breezewidget/status/progress_ring.py +214 -0
  102. breeze_widget-0.3.0/src/breezewidget/status/state_tooltip.py +134 -0
  103. breeze_widget-0.3.0/src/breezewidget/theme/__init__.py +30 -0
  104. breeze_widget-0.3.0/src/breezewidget/theme/listener.py +132 -0
  105. breeze_widget-0.3.0/src/breezewidget/theme/palette.py +121 -0
  106. breeze_widget-0.3.0/src/breezewidget/theme/provider_base.py +13 -0
  107. breeze_widget-0.3.0/src/breezewidget/theme/providers.py +990 -0
  108. breeze_widget-0.3.0/src/breezewidget/theme/styles.py +178 -0
  109. breeze_widget-0.3.0/src/breezewidget/theme/theme.py +157 -0
  110. breeze_widget-0.3.0/src/breezewidget/views/__init__.py +19 -0
  111. breeze_widget-0.3.0/src/breezewidget/views/avatar.py +110 -0
  112. breeze_widget-0.3.0/src/breezewidget/views/cycle_list.py +83 -0
  113. breeze_widget-0.3.0/src/breezewidget/views/flip_view.py +174 -0
  114. breeze_widget-0.3.0/src/breezewidget/views/item_views.py +41 -0
  115. breeze_widget-0.3.0/src/breezewidget/views/table_widget.py +154 -0
  116. breeze_widget-0.3.0/src/breezewidget/widgets/__init__.py +53 -0
  117. breeze_widget-0.3.0/src/breezewidget/widgets/_base.py +23 -0
  118. breeze_widget-0.3.0/src/breezewidget/widgets/_chevron.py +56 -0
  119. breeze_widget-0.3.0/src/breezewidget/widgets/_popup.py +25 -0
  120. breeze_widget-0.3.0/src/breezewidget/widgets/button.py +257 -0
  121. breeze_widget-0.3.0/src/breezewidget/widgets/checkbox.py +179 -0
  122. breeze_widget-0.3.0/src/breezewidget/widgets/combo_box.py +55 -0
  123. breeze_widget-0.3.0/src/breezewidget/widgets/icon_widget.py +49 -0
  124. breeze_widget-0.3.0/src/breezewidget/widgets/label.py +41 -0
  125. breeze_widget-0.3.0/src/breezewidget/widgets/line_edit.py +32 -0
  126. breeze_widget-0.3.0/src/breezewidget/widgets/progress.py +15 -0
  127. breeze_widget-0.3.0/src/breezewidget/widgets/slider.py +127 -0
  128. breeze_widget-0.3.0/src/breezewidget/widgets/spin_box.py +128 -0
  129. breeze_widget-0.3.0/src/breezewidget/widgets/switch.py +340 -0
  130. breeze_widget-0.3.0/src/breezewidget/widgets/text_edit.py +15 -0
  131. breeze_widget-0.3.0/src/breezewidget/window/__init__.py +22 -0
  132. breeze_widget-0.3.0/src/breezewidget/window/_navigation.py +125 -0
  133. breeze_widget-0.3.0/src/breezewidget/window/_title_buttons.py +137 -0
  134. breeze_widget-0.3.0/src/breezewidget/window/breeze_window.py +61 -0
  135. breeze_widget-0.3.0/src/breezewidget/window/material.py +67 -0
  136. breeze_widget-0.3.0/src/breezewidget/window/ms_breeze_window.py +55 -0
  137. breeze_widget-0.3.0/src/breezewidget/window/splash_screen.py +95 -0
  138. breeze_widget-0.3.0/src/breezewidget/window/split_breeze_window.py +84 -0
  139. breeze_widget-0.3.0/src/breezewidget/window/title_bar.py +199 -0
  140. breeze_widget-0.3.0/tests/test_animation_7e.py +131 -0
  141. breeze_widget-0.3.0/tests/test_calendar_widget.py +67 -0
  142. breeze_widget-0.3.0/tests/test_cards_3d.py +178 -0
  143. breeze_widget-0.3.0/tests/test_config_7a.py +303 -0
  144. breeze_widget-0.3.0/tests/test_constants.py +86 -0
  145. breeze_widget-0.3.0/tests/test_demo_gallery.py +72 -0
  146. breeze_widget-0.3.0/tests/test_dialogs_4d.py +187 -0
  147. breeze_widget-0.3.0/tests/test_exception_handler_7b.py +142 -0
  148. breeze_widget-0.3.0/tests/test_flyout.py +68 -0
  149. breeze_widget-0.3.0/tests/test_icons.py +129 -0
  150. breeze_widget-0.3.0/tests/test_imports.py +138 -0
  151. breeze_widget-0.3.0/tests/test_infobar.py +44 -0
  152. breeze_widget-0.3.0/tests/test_layout_4a.py +145 -0
  153. breeze_widget-0.3.0/tests/test_menu_4c.py +152 -0
  154. breeze_widget-0.3.0/tests/test_navigation.py +66 -0
  155. breeze_widget-0.3.0/tests/test_navigation_3c.py +180 -0
  156. breeze_widget-0.3.0/tests/test_pickers_4e.py +135 -0
  157. breeze_widget-0.3.0/tests/test_pill_render.py +32 -0
  158. breeze_widget-0.3.0/tests/test_router.py +163 -0
  159. breeze_widget-0.3.0/tests/test_scroll_4b.py +115 -0
  160. breeze_widget-0.3.0/tests/test_status.py +124 -0
  161. breeze_widget-0.3.0/tests/test_theme.py +170 -0
  162. breeze_widget-0.3.0/tests/test_theme_listener_7d.py +92 -0
  163. breeze_widget-0.3.0/tests/test_translator_7c.py +113 -0
  164. breeze_widget-0.3.0/tests/test_views_6.py +414 -0
  165. breeze_widget-0.3.0/tests/test_widgets.py +295 -0
  166. breeze_widget-0.3.0/tests/test_window.py +261 -0
  167. breeze_widget-0.3.0/tests/test_window_5.py +154 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 BreezeWidget contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,109 @@
1
+ Metadata-Version: 2.4
2
+ Name: breeze-widget
3
+ Version: 0.3.0
4
+ Summary: Clean-room Breeze widget toolkit for PySide6 desktop applications
5
+ Author: Taron686
6
+ Maintainer: Taron686
7
+ License-Expression: MIT
8
+ Project-URL: Homepage, https://github.com/Taron686/breeze-widget
9
+ Project-URL: Repository, https://github.com/Taron686/breeze-widget
10
+ Project-URL: Documentation, https://github.com/Taron686/breeze-widget#readme
11
+ Project-URL: Issue Tracker, https://github.com/Taron686/breeze-widget/issues
12
+ Keywords: pyside6,qt,widgets,desktop,breeze,ui
13
+ Classifier: Development Status :: 3 - Alpha
14
+ Classifier: Environment :: X11 Applications :: Qt
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python :: 3 :: Only
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Topic :: Software Development :: User Interfaces
22
+ Requires-Python: >=3.11
23
+ Description-Content-Type: text/markdown
24
+ License-File: LICENSE
25
+ Requires-Dist: PySide6>=6.6.0
26
+ Provides-Extra: test
27
+ Requires-Dist: pytest>=8; extra == "test"
28
+ Requires-Dist: pytest-qt>=4.4; extra == "test"
29
+ Dynamic: license-file
30
+
31
+ # BreezeWidget
32
+
33
+ > Dieses Repository ist ein komplett vibe coded Work-in-Progress-Projekt fuer
34
+ > PySide6. Die API ist noch nicht final, interne Strukturen koennen sich aendern,
35
+ > und das Repo ist aktuell vor allem fuer Entwicklung, Tests, Experimente und
36
+ > Migrationen gedacht.
37
+
38
+ BreezeWidget ist eine saubere, lokale PySide6-Widget- und Theming-Schicht mit
39
+ einem Breeze-inspirierten Look. Das Projekt verfolgt das Ziel, Desktop-Apps mit
40
+ Qt/PySide6 ein konsistentes Fenstersystem, Theme-Handling, Icons, Navigation,
41
+ Status-Komponenten, Eingaben, Karten, Views und Demo-Oberflaechen bereitzustellen,
42
+ ohne von einer externen GPL-Widget-Bibliothek abhaengig zu sein.
43
+
44
+ ## Aktueller Status
45
+
46
+ Das Paket ist pre-1.0 und wird aktiv umgebaut. Die oeffentliche API ist in
47
+ [`AGENTS.md`](AGENTS.md) beschrieben und wird durch Tests abgesichert; alles
48
+ ausserhalb dieser dokumentierten Oberflaeche gilt als intern. Das Repo enthaelt
49
+ bereits lauffaehige Demos, Tests, lokale Icons, Theme-/Stylesheet-Infrastruktur
50
+ und eine wachsende Sammlung von PySide6-Komponenten, ist aber noch kein
51
+ stabiler Framework-Release.
52
+
53
+ ## Was man mit dem Repo machen kann
54
+
55
+ - BreezeWidget lokal installieren und in eigenen PySide6-Prototypen verwenden.
56
+ - BreezeWidget nach der PyPI-Veroeffentlichung direkt per `pip install`
57
+ installieren.
58
+ - Die Demo-Anwendungen starten, um den aktuellen Stand der UI-Schicht zu pruefen.
59
+ - Tests ausfuehren, um die dokumentierte Public API und Kernverhalten zu
60
+ verifizieren.
61
+ - Eigene Widgets oder Stylesheet-Fragmente gegen die vorhandene Theme- und
62
+ Icon-Infrastruktur entwickeln.
63
+ - Das Projekt frei forken, anpassen und weiterverwenden.
64
+
65
+ ## Installation aus PyPI
66
+
67
+ ```powershell
68
+ python -m pip install breeze-widget
69
+ ```
70
+
71
+ Das PyPI-Paket heisst `breeze-widget`; der Python-Import bleibt
72
+ `breezewidget`.
73
+
74
+ ## Installation fuer Entwicklung
75
+
76
+ ```powershell
77
+ .\.venv\Scripts\python.exe -m pip install -e ".[test]"
78
+ ```
79
+
80
+ ## Demos starten
81
+
82
+ ```powershell
83
+ .\.venv\Scripts\python.exe .\examples\breeze_demo.py
84
+ .\.venv\Scripts\python.exe .\examples\widget_demo.py
85
+ ```
86
+
87
+ ## Tests ausfuehren
88
+
89
+ ```powershell
90
+ $env:QT_QPA_PLATFORM = "offscreen"
91
+ .\.venv\Scripts\python.exe -m pytest
92
+ ```
93
+
94
+ ## Public API
95
+
96
+ Die Root-Imports aus `breezewidget` sowie die kuratierten Subsystemmodule
97
+ `breezewidget.window`, `breezewidget.theme`, `breezewidget.icons` und
98
+ `breezewidget.navigation` sind die relevante oeffentliche Oberflaeche. Details,
99
+ Symbolnamen, stabile Qt-Dynamic-Properties und nicht-oeffentliche Bereiche sind
100
+ im API-Vertrag in [`AGENTS.md`](AGENTS.md) festgehalten.
101
+
102
+ Direkte Imports aus tieferen Implementierungsmodulen sollten vermieden werden,
103
+ weil diese waehrend des Refactors verschoben oder umbenannt werden koennen.
104
+
105
+ ## Lizenz
106
+
107
+ BreezeWidget steht unter der MIT-Lizenz. Das Repo kann damit frei genutzt,
108
+ kopiert, veraendert und weitergegeben werden, auch ohne Bezahlung. Details
109
+ stehen in [`LICENSE`](LICENSE).
@@ -0,0 +1,79 @@
1
+ # BreezeWidget
2
+
3
+ > Dieses Repository ist ein komplett vibe coded Work-in-Progress-Projekt fuer
4
+ > PySide6. Die API ist noch nicht final, interne Strukturen koennen sich aendern,
5
+ > und das Repo ist aktuell vor allem fuer Entwicklung, Tests, Experimente und
6
+ > Migrationen gedacht.
7
+
8
+ BreezeWidget ist eine saubere, lokale PySide6-Widget- und Theming-Schicht mit
9
+ einem Breeze-inspirierten Look. Das Projekt verfolgt das Ziel, Desktop-Apps mit
10
+ Qt/PySide6 ein konsistentes Fenstersystem, Theme-Handling, Icons, Navigation,
11
+ Status-Komponenten, Eingaben, Karten, Views und Demo-Oberflaechen bereitzustellen,
12
+ ohne von einer externen GPL-Widget-Bibliothek abhaengig zu sein.
13
+
14
+ ## Aktueller Status
15
+
16
+ Das Paket ist pre-1.0 und wird aktiv umgebaut. Die oeffentliche API ist in
17
+ [`AGENTS.md`](AGENTS.md) beschrieben und wird durch Tests abgesichert; alles
18
+ ausserhalb dieser dokumentierten Oberflaeche gilt als intern. Das Repo enthaelt
19
+ bereits lauffaehige Demos, Tests, lokale Icons, Theme-/Stylesheet-Infrastruktur
20
+ und eine wachsende Sammlung von PySide6-Komponenten, ist aber noch kein
21
+ stabiler Framework-Release.
22
+
23
+ ## Was man mit dem Repo machen kann
24
+
25
+ - BreezeWidget lokal installieren und in eigenen PySide6-Prototypen verwenden.
26
+ - BreezeWidget nach der PyPI-Veroeffentlichung direkt per `pip install`
27
+ installieren.
28
+ - Die Demo-Anwendungen starten, um den aktuellen Stand der UI-Schicht zu pruefen.
29
+ - Tests ausfuehren, um die dokumentierte Public API und Kernverhalten zu
30
+ verifizieren.
31
+ - Eigene Widgets oder Stylesheet-Fragmente gegen die vorhandene Theme- und
32
+ Icon-Infrastruktur entwickeln.
33
+ - Das Projekt frei forken, anpassen und weiterverwenden.
34
+
35
+ ## Installation aus PyPI
36
+
37
+ ```powershell
38
+ python -m pip install breeze-widget
39
+ ```
40
+
41
+ Das PyPI-Paket heisst `breeze-widget`; der Python-Import bleibt
42
+ `breezewidget`.
43
+
44
+ ## Installation fuer Entwicklung
45
+
46
+ ```powershell
47
+ .\.venv\Scripts\python.exe -m pip install -e ".[test]"
48
+ ```
49
+
50
+ ## Demos starten
51
+
52
+ ```powershell
53
+ .\.venv\Scripts\python.exe .\examples\breeze_demo.py
54
+ .\.venv\Scripts\python.exe .\examples\widget_demo.py
55
+ ```
56
+
57
+ ## Tests ausfuehren
58
+
59
+ ```powershell
60
+ $env:QT_QPA_PLATFORM = "offscreen"
61
+ .\.venv\Scripts\python.exe -m pytest
62
+ ```
63
+
64
+ ## Public API
65
+
66
+ Die Root-Imports aus `breezewidget` sowie die kuratierten Subsystemmodule
67
+ `breezewidget.window`, `breezewidget.theme`, `breezewidget.icons` und
68
+ `breezewidget.navigation` sind die relevante oeffentliche Oberflaeche. Details,
69
+ Symbolnamen, stabile Qt-Dynamic-Properties und nicht-oeffentliche Bereiche sind
70
+ im API-Vertrag in [`AGENTS.md`](AGENTS.md) festgehalten.
71
+
72
+ Direkte Imports aus tieferen Implementierungsmodulen sollten vermieden werden,
73
+ weil diese waehrend des Refactors verschoben oder umbenannt werden koennen.
74
+
75
+ ## Lizenz
76
+
77
+ BreezeWidget steht unter der MIT-Lizenz. Das Repo kann damit frei genutzt,
78
+ kopiert, veraendert und weitergegeben werden, auch ohne Bezahlung. Details
79
+ stehen in [`LICENSE`](LICENSE).
@@ -0,0 +1,55 @@
1
+ [build-system]
2
+ requires = ["setuptools>=77", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "breeze-widget"
7
+ version = "0.3.0"
8
+ description = "Clean-room Breeze widget toolkit for PySide6 desktop applications"
9
+ readme = "README.md"
10
+ license = "MIT"
11
+ authors = [{name = "Taron686"}]
12
+ maintainers = [{name = "Taron686"}]
13
+ requires-python = ">=3.11"
14
+ keywords = ["pyside6", "qt", "widgets", "desktop", "breeze", "ui"]
15
+ classifiers = [
16
+ "Development Status :: 3 - Alpha",
17
+ "Environment :: X11 Applications :: Qt",
18
+ "Intended Audience :: Developers",
19
+ "Operating System :: OS Independent",
20
+ "Programming Language :: Python :: 3 :: Only",
21
+ "Programming Language :: Python :: 3.11",
22
+ "Programming Language :: Python :: 3.12",
23
+ "Programming Language :: Python :: 3.13",
24
+ "Topic :: Software Development :: User Interfaces",
25
+ ]
26
+ dependencies = [
27
+ "PySide6>=6.6.0",
28
+ ]
29
+
30
+ [project.urls]
31
+ Homepage = "https://github.com/Taron686/breeze-widget"
32
+ Repository = "https://github.com/Taron686/breeze-widget"
33
+ Documentation = "https://github.com/Taron686/breeze-widget#readme"
34
+ "Issue Tracker" = "https://github.com/Taron686/breeze-widget/issues"
35
+
36
+ [project.optional-dependencies]
37
+ test = [
38
+ "pytest>=8",
39
+ "pytest-qt>=4.4",
40
+ ]
41
+
42
+ [tool.setuptools]
43
+ package-dir = {"" = "src"}
44
+
45
+ [tool.setuptools.package-data]
46
+ "breezewidget.icons" = ["outline/*.svg"]
47
+
48
+ [tool.setuptools.packages.find]
49
+ where = ["src"]
50
+
51
+ [tool.pytest.ini_options]
52
+ minversion = "8.0"
53
+ testpaths = ["tests"]
54
+ qt_api = "pyside6"
55
+ addopts = "-ra"
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,109 @@
1
+ Metadata-Version: 2.4
2
+ Name: breeze-widget
3
+ Version: 0.3.0
4
+ Summary: Clean-room Breeze widget toolkit for PySide6 desktop applications
5
+ Author: Taron686
6
+ Maintainer: Taron686
7
+ License-Expression: MIT
8
+ Project-URL: Homepage, https://github.com/Taron686/breeze-widget
9
+ Project-URL: Repository, https://github.com/Taron686/breeze-widget
10
+ Project-URL: Documentation, https://github.com/Taron686/breeze-widget#readme
11
+ Project-URL: Issue Tracker, https://github.com/Taron686/breeze-widget/issues
12
+ Keywords: pyside6,qt,widgets,desktop,breeze,ui
13
+ Classifier: Development Status :: 3 - Alpha
14
+ Classifier: Environment :: X11 Applications :: Qt
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python :: 3 :: Only
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Topic :: Software Development :: User Interfaces
22
+ Requires-Python: >=3.11
23
+ Description-Content-Type: text/markdown
24
+ License-File: LICENSE
25
+ Requires-Dist: PySide6>=6.6.0
26
+ Provides-Extra: test
27
+ Requires-Dist: pytest>=8; extra == "test"
28
+ Requires-Dist: pytest-qt>=4.4; extra == "test"
29
+ Dynamic: license-file
30
+
31
+ # BreezeWidget
32
+
33
+ > Dieses Repository ist ein komplett vibe coded Work-in-Progress-Projekt fuer
34
+ > PySide6. Die API ist noch nicht final, interne Strukturen koennen sich aendern,
35
+ > und das Repo ist aktuell vor allem fuer Entwicklung, Tests, Experimente und
36
+ > Migrationen gedacht.
37
+
38
+ BreezeWidget ist eine saubere, lokale PySide6-Widget- und Theming-Schicht mit
39
+ einem Breeze-inspirierten Look. Das Projekt verfolgt das Ziel, Desktop-Apps mit
40
+ Qt/PySide6 ein konsistentes Fenstersystem, Theme-Handling, Icons, Navigation,
41
+ Status-Komponenten, Eingaben, Karten, Views und Demo-Oberflaechen bereitzustellen,
42
+ ohne von einer externen GPL-Widget-Bibliothek abhaengig zu sein.
43
+
44
+ ## Aktueller Status
45
+
46
+ Das Paket ist pre-1.0 und wird aktiv umgebaut. Die oeffentliche API ist in
47
+ [`AGENTS.md`](AGENTS.md) beschrieben und wird durch Tests abgesichert; alles
48
+ ausserhalb dieser dokumentierten Oberflaeche gilt als intern. Das Repo enthaelt
49
+ bereits lauffaehige Demos, Tests, lokale Icons, Theme-/Stylesheet-Infrastruktur
50
+ und eine wachsende Sammlung von PySide6-Komponenten, ist aber noch kein
51
+ stabiler Framework-Release.
52
+
53
+ ## Was man mit dem Repo machen kann
54
+
55
+ - BreezeWidget lokal installieren und in eigenen PySide6-Prototypen verwenden.
56
+ - BreezeWidget nach der PyPI-Veroeffentlichung direkt per `pip install`
57
+ installieren.
58
+ - Die Demo-Anwendungen starten, um den aktuellen Stand der UI-Schicht zu pruefen.
59
+ - Tests ausfuehren, um die dokumentierte Public API und Kernverhalten zu
60
+ verifizieren.
61
+ - Eigene Widgets oder Stylesheet-Fragmente gegen die vorhandene Theme- und
62
+ Icon-Infrastruktur entwickeln.
63
+ - Das Projekt frei forken, anpassen und weiterverwenden.
64
+
65
+ ## Installation aus PyPI
66
+
67
+ ```powershell
68
+ python -m pip install breeze-widget
69
+ ```
70
+
71
+ Das PyPI-Paket heisst `breeze-widget`; der Python-Import bleibt
72
+ `breezewidget`.
73
+
74
+ ## Installation fuer Entwicklung
75
+
76
+ ```powershell
77
+ .\.venv\Scripts\python.exe -m pip install -e ".[test]"
78
+ ```
79
+
80
+ ## Demos starten
81
+
82
+ ```powershell
83
+ .\.venv\Scripts\python.exe .\examples\breeze_demo.py
84
+ .\.venv\Scripts\python.exe .\examples\widget_demo.py
85
+ ```
86
+
87
+ ## Tests ausfuehren
88
+
89
+ ```powershell
90
+ $env:QT_QPA_PLATFORM = "offscreen"
91
+ .\.venv\Scripts\python.exe -m pytest
92
+ ```
93
+
94
+ ## Public API
95
+
96
+ Die Root-Imports aus `breezewidget` sowie die kuratierten Subsystemmodule
97
+ `breezewidget.window`, `breezewidget.theme`, `breezewidget.icons` und
98
+ `breezewidget.navigation` sind die relevante oeffentliche Oberflaeche. Details,
99
+ Symbolnamen, stabile Qt-Dynamic-Properties und nicht-oeffentliche Bereiche sind
100
+ im API-Vertrag in [`AGENTS.md`](AGENTS.md) festgehalten.
101
+
102
+ Direkte Imports aus tieferen Implementierungsmodulen sollten vermieden werden,
103
+ weil diese waehrend des Refactors verschoben oder umbenannt werden koennen.
104
+
105
+ ## Lizenz
106
+
107
+ BreezeWidget steht unter der MIT-Lizenz. Das Repo kann damit frei genutzt,
108
+ kopiert, veraendert und weitergegeben werden, auch ohne Bezahlung. Details
109
+ stehen in [`LICENSE`](LICENSE).
@@ -0,0 +1,165 @@
1
+ LICENSE
2
+ README.md
3
+ pyproject.toml
4
+ src/breeze_widget.egg-info/PKG-INFO
5
+ src/breeze_widget.egg-info/SOURCES.txt
6
+ src/breeze_widget.egg-info/dependency_links.txt
7
+ src/breeze_widget.egg-info/requires.txt
8
+ src/breeze_widget.egg-info/top_level.txt
9
+ src/breezewidget/__init__.py
10
+ src/breezewidget/constants.py
11
+ src/breezewidget/animation/__init__.py
12
+ src/breezewidget/animation/color.py
13
+ src/breezewidget/animation/property.py
14
+ src/breezewidget/animation/shadow.py
15
+ src/breezewidget/calendar_widget/__init__.py
16
+ src/breezewidget/calendar_widget/calendar_widget.py
17
+ src/breezewidget/calendar_widget/commons.py
18
+ src/breezewidget/calendar_widget/month_model.py
19
+ src/breezewidget/cards/__init__.py
20
+ src/breezewidget/cards/card.py
21
+ src/breezewidget/cards/header_card.py
22
+ src/breezewidget/cards/settings_cards.py
23
+ src/breezewidget/core/__init__.py
24
+ src/breezewidget/core/config.py
25
+ src/breezewidget/core/exception_handler.py
26
+ src/breezewidget/core/router.py
27
+ src/breezewidget/core/translator.py
28
+ src/breezewidget/dialogs/__init__.py
29
+ src/breezewidget/dialogs/base.py
30
+ src/breezewidget/dialogs/color_dialog.py
31
+ src/breezewidget/dialogs/folder_list_dialog.py
32
+ src/breezewidget/dialogs/masked.py
33
+ src/breezewidget/dialogs/message.py
34
+ src/breezewidget/flyout/__init__.py
35
+ src/breezewidget/flyout/animation.py
36
+ src/breezewidget/flyout/flyout.py
37
+ src/breezewidget/flyout/teaching_tip.py
38
+ src/breezewidget/icons/__init__.py
39
+ src/breezewidget/icons/_svg.py
40
+ src/breezewidget/icons/_themed.py
41
+ src/breezewidget/icons/breeze_icon.py
42
+ src/breezewidget/icons/registry.py
43
+ src/breezewidget/icons/svg_icons.py
44
+ src/breezewidget/icons/outline/alert-triangle.svg
45
+ src/breezewidget/icons/outline/arrow-left.svg
46
+ src/breezewidget/icons/outline/arrow-right.svg
47
+ src/breezewidget/icons/outline/calendar.svg
48
+ src/breezewidget/icons/outline/check.svg
49
+ src/breezewidget/icons/outline/chevron-down.svg
50
+ src/breezewidget/icons/outline/chevron-right.svg
51
+ src/breezewidget/icons/outline/circle-x.svg
52
+ src/breezewidget/icons/outline/device-floppy.svg
53
+ src/breezewidget/icons/outline/dots.svg
54
+ src/breezewidget/icons/outline/download.svg
55
+ src/breezewidget/icons/outline/edit.svg
56
+ src/breezewidget/icons/outline/external-link.svg
57
+ src/breezewidget/icons/outline/file-text.svg
58
+ src/breezewidget/icons/outline/folder.svg
59
+ src/breezewidget/icons/outline/home.svg
60
+ src/breezewidget/icons/outline/info-circle.svg
61
+ src/breezewidget/icons/outline/menu-2.svg
62
+ src/breezewidget/icons/outline/moon.svg
63
+ src/breezewidget/icons/outline/plus.svg
64
+ src/breezewidget/icons/outline/search.svg
65
+ src/breezewidget/icons/outline/settings.svg
66
+ src/breezewidget/icons/outline/sun.svg
67
+ src/breezewidget/icons/outline/trash.svg
68
+ src/breezewidget/icons/outline/users.svg
69
+ src/breezewidget/icons/outline/x.svg
70
+ src/breezewidget/layout/__init__.py
71
+ src/breezewidget/layout/_utils.py
72
+ src/breezewidget/layout/expand.py
73
+ src/breezewidget/layout/flow.py
74
+ src/breezewidget/media/__init__.py
75
+ src/breezewidget/media/media_player.py
76
+ src/breezewidget/media/play_bar.py
77
+ src/breezewidget/media/video_widget.py
78
+ src/breezewidget/menu/__init__.py
79
+ src/breezewidget/menu/checkable_menu.py
80
+ src/breezewidget/menu/command_bar.py
81
+ src/breezewidget/menu/round_menu.py
82
+ src/breezewidget/navigation/__init__.py
83
+ src/breezewidget/navigation/breadcrumb.py
84
+ src/breezewidget/navigation/interface.py
85
+ src/breezewidget/navigation/pivot.py
86
+ src/breezewidget/navigation/segmented.py
87
+ src/breezewidget/navigation/tab_bar.py
88
+ src/breezewidget/pickers/__init__.py
89
+ src/breezewidget/pickers/calendar_picker.py
90
+ src/breezewidget/pickers/date_picker.py
91
+ src/breezewidget/pickers/fast_calendar_picker.py
92
+ src/breezewidget/pickers/time_picker.py
93
+ src/breezewidget/scroll/__init__.py
94
+ src/breezewidget/scroll/pips.py
95
+ src/breezewidget/scroll/smooth.py
96
+ src/breezewidget/status/__init__.py
97
+ src/breezewidget/status/badge.py
98
+ src/breezewidget/status/info_bar.py
99
+ src/breezewidget/status/progress_ring.py
100
+ src/breezewidget/status/state_tooltip.py
101
+ src/breezewidget/theme/__init__.py
102
+ src/breezewidget/theme/listener.py
103
+ src/breezewidget/theme/palette.py
104
+ src/breezewidget/theme/provider_base.py
105
+ src/breezewidget/theme/providers.py
106
+ src/breezewidget/theme/styles.py
107
+ src/breezewidget/theme/theme.py
108
+ src/breezewidget/views/__init__.py
109
+ src/breezewidget/views/avatar.py
110
+ src/breezewidget/views/cycle_list.py
111
+ src/breezewidget/views/flip_view.py
112
+ src/breezewidget/views/item_views.py
113
+ src/breezewidget/views/table_widget.py
114
+ src/breezewidget/widgets/__init__.py
115
+ src/breezewidget/widgets/_base.py
116
+ src/breezewidget/widgets/_chevron.py
117
+ src/breezewidget/widgets/_popup.py
118
+ src/breezewidget/widgets/button.py
119
+ src/breezewidget/widgets/checkbox.py
120
+ src/breezewidget/widgets/combo_box.py
121
+ src/breezewidget/widgets/icon_widget.py
122
+ src/breezewidget/widgets/label.py
123
+ src/breezewidget/widgets/line_edit.py
124
+ src/breezewidget/widgets/progress.py
125
+ src/breezewidget/widgets/slider.py
126
+ src/breezewidget/widgets/spin_box.py
127
+ src/breezewidget/widgets/switch.py
128
+ src/breezewidget/widgets/text_edit.py
129
+ src/breezewidget/window/__init__.py
130
+ src/breezewidget/window/_navigation.py
131
+ src/breezewidget/window/_title_buttons.py
132
+ src/breezewidget/window/breeze_window.py
133
+ src/breezewidget/window/material.py
134
+ src/breezewidget/window/ms_breeze_window.py
135
+ src/breezewidget/window/splash_screen.py
136
+ src/breezewidget/window/split_breeze_window.py
137
+ src/breezewidget/window/title_bar.py
138
+ tests/test_animation_7e.py
139
+ tests/test_calendar_widget.py
140
+ tests/test_cards_3d.py
141
+ tests/test_config_7a.py
142
+ tests/test_constants.py
143
+ tests/test_demo_gallery.py
144
+ tests/test_dialogs_4d.py
145
+ tests/test_exception_handler_7b.py
146
+ tests/test_flyout.py
147
+ tests/test_icons.py
148
+ tests/test_imports.py
149
+ tests/test_infobar.py
150
+ tests/test_layout_4a.py
151
+ tests/test_menu_4c.py
152
+ tests/test_navigation.py
153
+ tests/test_navigation_3c.py
154
+ tests/test_pickers_4e.py
155
+ tests/test_pill_render.py
156
+ tests/test_router.py
157
+ tests/test_scroll_4b.py
158
+ tests/test_status.py
159
+ tests/test_theme.py
160
+ tests/test_theme_listener_7d.py
161
+ tests/test_translator_7c.py
162
+ tests/test_views_6.py
163
+ tests/test_widgets.py
164
+ tests/test_window.py
165
+ tests/test_window_5.py
@@ -0,0 +1,5 @@
1
+ PySide6>=6.6.0
2
+
3
+ [test]
4
+ pytest>=8
5
+ pytest-qt>=4.4
@@ -0,0 +1 @@
1
+ breezewidget