bootstack 0.1.0a9__tar.gz → 0.1.0a11__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 (870) hide show
  1. bootstack-0.1.0a11/LICENSE +21 -0
  2. bootstack-0.1.0a11/PKG-INFO +264 -0
  3. bootstack-0.1.0a11/README.md +219 -0
  4. bootstack-0.1.0a11/pyproject.toml +139 -0
  5. bootstack-0.1.0a11/src/bootstack/__init__.py +153 -0
  6. bootstack-0.1.0a11/src/bootstack/_core/__init__.py +21 -0
  7. bootstack-0.1.0a11/src/bootstack/_core/capabilities/__init__.py +45 -0
  8. bootstack-0.1.0a11/src/bootstack/_core/capabilities/bind.py +192 -0
  9. bootstack-0.1.0a11/src/bootstack/_core/capabilities/busy.py +72 -0
  10. bootstack-0.1.0a11/src/bootstack/_core/capabilities/clipboard.py +89 -0
  11. bootstack-0.1.0a11/src/bootstack/_core/capabilities/grid.py +211 -0
  12. bootstack-0.1.0a11/src/bootstack/_core/capabilities/localization.py +231 -0
  13. bootstack-0.1.0a11/src/bootstack/_core/capabilities/pack.py +140 -0
  14. bootstack-0.1.0a11/src/bootstack/_core/capabilities/place.py +113 -0
  15. bootstack-0.1.0a11/src/bootstack/_core/capabilities/selection.py +136 -0
  16. bootstack-0.1.0a11/src/bootstack/_core/capabilities/signals.py +244 -0
  17. bootstack-0.1.0a11/src/bootstack/_core/exceptions.py +25 -0
  18. bootstack-0.1.0a11/src/bootstack/_core/images.py +463 -0
  19. bootstack-0.1.0a11/src/bootstack/_core/mixins/widget.py +132 -0
  20. bootstack-0.1.0a11/src/bootstack/_core/paths.py +49 -0
  21. bootstack-0.1.0a11/src/bootstack/_core/publisher.py +149 -0
  22. bootstack-0.1.0a11/src/bootstack/_runtime/app.py +892 -0
  23. bootstack-0.1.0a11/src/bootstack/_runtime/base_window.py +925 -0
  24. bootstack-0.1.0a11/src/bootstack/_runtime/shortcuts.py +496 -0
  25. bootstack-0.1.0a11/src/bootstack/_runtime/tk_patch.py +43 -0
  26. bootstack-0.1.0a11/src/bootstack/_runtime/toplevel.py +256 -0
  27. bootstack-0.1.0a11/src/bootstack/_runtime/utility.py +370 -0
  28. bootstack-0.1.0a11/src/bootstack/_runtime/window_utilities.py +1050 -0
  29. bootstack-0.1.0a11/src/bootstack/assets/__init__.py +21 -0
  30. bootstack-0.1.0a11/src/bootstack/assets/bootstack.ico +0 -0
  31. bootstack-0.1.0a11/src/bootstack/assets/bootstack.png +0 -0
  32. bootstack-0.1.0a11/src/bootstack/assets/elements/badge-pill.png +0 -0
  33. bootstack-0.1.0a11/src/bootstack/assets/elements/badge-square.png +0 -0
  34. bootstack-0.1.0a11/src/bootstack/assets/elements/button-compact.png +0 -0
  35. bootstack-0.1.0a11/src/bootstack/assets/elements/button-default.png +0 -0
  36. bootstack-0.1.0a11/src/bootstack/assets/elements/buttongroup-after-h-compact.png +0 -0
  37. bootstack-0.1.0a11/src/bootstack/assets/elements/buttongroup-after-h-default.png +0 -0
  38. bootstack-0.1.0a11/src/bootstack/assets/elements/buttongroup-after-v-compact.png +0 -0
  39. bootstack-0.1.0a11/src/bootstack/assets/elements/buttongroup-after-v-default.png +0 -0
  40. bootstack-0.1.0a11/src/bootstack/assets/elements/buttongroup-before-h-compact.png +0 -0
  41. bootstack-0.1.0a11/src/bootstack/assets/elements/buttongroup-before-h-default.png +0 -0
  42. bootstack-0.1.0a11/src/bootstack/assets/elements/buttongroup-before-v-compact.png +0 -0
  43. bootstack-0.1.0a11/src/bootstack/assets/elements/buttongroup-before-v-default.png +0 -0
  44. bootstack-0.1.0a11/src/bootstack/assets/elements/buttongroup-center-h-compact.png +0 -0
  45. bootstack-0.1.0a11/src/bootstack/assets/elements/buttongroup-center-h-default.png +0 -0
  46. bootstack-0.1.0a11/src/bootstack/assets/elements/buttongroup-center-v-compact.png +0 -0
  47. bootstack-0.1.0a11/src/bootstack/assets/elements/buttongroup-center-v-default.png +0 -0
  48. bootstack-0.1.0a11/src/bootstack/assets/elements/card.png +0 -0
  49. bootstack-0.1.0a11/src/bootstack/assets/elements/checkbox-checked.png +0 -0
  50. bootstack-0.1.0a11/src/bootstack/assets/elements/checkbox-indeterminate.png +0 -0
  51. bootstack-0.1.0a11/src/bootstack/assets/elements/checkbox-unchecked.png +0 -0
  52. bootstack-0.1.0a11/src/bootstack/assets/elements/field.png +0 -0
  53. bootstack-0.1.0a11/src/bootstack/assets/elements/input-addon-compact.png +0 -0
  54. bootstack-0.1.0a11/src/bootstack/assets/elements/input-addon-default.png +0 -0
  55. bootstack-0.1.0a11/src/bootstack/assets/elements/input-compact.png +0 -0
  56. bootstack-0.1.0a11/src/bootstack/assets/elements/input-default.png +0 -0
  57. bootstack-0.1.0a11/src/bootstack/assets/elements/listrow-compact.png +0 -0
  58. bootstack-0.1.0a11/src/bootstack/assets/elements/listrow-default.png +0 -0
  59. bootstack-0.1.0a11/src/bootstack/assets/elements/manifest.toml +361 -0
  60. bootstack-0.1.0a11/src/bootstack/assets/elements/navitem-compact.png +0 -0
  61. bootstack-0.1.0a11/src/bootstack/assets/elements/navitem-default.png +0 -0
  62. bootstack-0.1.0a11/src/bootstack/assets/elements/progressbar-h-compact.png +0 -0
  63. bootstack-0.1.0a11/src/bootstack/assets/elements/progressbar-h-default.png +0 -0
  64. bootstack-0.1.0a11/src/bootstack/assets/elements/progressbar-v-compact.png +0 -0
  65. bootstack-0.1.0a11/src/bootstack/assets/elements/progressbar-v-default.png +0 -0
  66. bootstack-0.1.0a11/src/bootstack/assets/elements/radiobutton.png +0 -0
  67. bootstack-0.1.0a11/src/bootstack/assets/elements/scrollbar-horizontal.png +0 -0
  68. bootstack-0.1.0a11/src/bootstack/assets/elements/scrollbar-vertical.png +0 -0
  69. bootstack-0.1.0a11/src/bootstack/assets/elements/slider-handle.png +0 -0
  70. bootstack-0.1.0a11/src/bootstack/assets/elements/slider-track-h.png +0 -0
  71. bootstack-0.1.0a11/src/bootstack/assets/elements/slider-track-v.png +0 -0
  72. bootstack-0.1.0a11/src/bootstack/assets/elements/switch-off.png +0 -0
  73. bootstack-0.1.0a11/src/bootstack/assets/elements/switch-on.png +0 -0
  74. bootstack-0.1.0a11/src/bootstack/assets/elements/tab-h.png +0 -0
  75. bootstack-0.1.0a11/src/bootstack/assets/elements/tab-v.png +0 -0
  76. bootstack-0.1.0a11/src/bootstack/assets/icons/bootstrap.ttf +0 -0
  77. bootstack-0.1.0a11/src/bootstack/assets/icons/glyphmap.json +2080 -0
  78. bootstack-0.1.0a11/src/bootstack/assets/icons/icon_metrics.json +12470 -0
  79. bootstack-0.1.0a11/src/bootstack/assets/locales/ar/LC_MESSAGES/bootstack.mo +0 -0
  80. bootstack-0.1.0a11/src/bootstack/assets/locales/ar/LC_MESSAGES/bootstack.po +853 -0
  81. bootstack-0.1.0a11/src/bootstack/assets/locales/bg/LC_MESSAGES/bootstack.mo +0 -0
  82. bootstack-0.1.0a11/src/bootstack/assets/locales/bg/LC_MESSAGES/bootstack.po +875 -0
  83. bootstack-0.1.0a11/src/bootstack/assets/locales/cs/LC_MESSAGES/bootstack.mo +0 -0
  84. bootstack-0.1.0a11/src/bootstack/assets/locales/cs/LC_MESSAGES/bootstack.po +853 -0
  85. bootstack-0.1.0a11/src/bootstack/assets/locales/da/LC_MESSAGES/bootstack.mo +0 -0
  86. bootstack-0.1.0a11/src/bootstack/assets/locales/da/LC_MESSAGES/bootstack.po +853 -0
  87. bootstack-0.1.0a11/src/bootstack/assets/locales/de/LC_MESSAGES/bootstack.mo +0 -0
  88. bootstack-0.1.0a11/src/bootstack/assets/locales/de/LC_MESSAGES/bootstack.po +853 -0
  89. bootstack-0.1.0a11/src/bootstack/assets/locales/en/LC_MESSAGES/bootstack.mo +0 -0
  90. bootstack-0.1.0a11/src/bootstack/assets/locales/en/LC_MESSAGES/bootstack.po +875 -0
  91. bootstack-0.1.0a11/src/bootstack/assets/locales/es/LC_MESSAGES/bootstack.mo +0 -0
  92. bootstack-0.1.0a11/src/bootstack/assets/locales/es/LC_MESSAGES/bootstack.po +853 -0
  93. bootstack-0.1.0a11/src/bootstack/assets/locales/fr/LC_MESSAGES/bootstack.mo +0 -0
  94. bootstack-0.1.0a11/src/bootstack/assets/locales/fr/LC_MESSAGES/bootstack.po +853 -0
  95. bootstack-0.1.0a11/src/bootstack/assets/locales/he/LC_MESSAGES/bootstack.mo +0 -0
  96. bootstack-0.1.0a11/src/bootstack/assets/locales/he/LC_MESSAGES/bootstack.po +851 -0
  97. bootstack-0.1.0a11/src/bootstack/assets/locales/hi/LC_MESSAGES/bootstack.mo +0 -0
  98. bootstack-0.1.0a11/src/bootstack/assets/locales/hi/LC_MESSAGES/bootstack.po +842 -0
  99. bootstack-0.1.0a11/src/bootstack/assets/locales/it/LC_MESSAGES/bootstack.mo +0 -0
  100. bootstack-0.1.0a11/src/bootstack/assets/locales/it/LC_MESSAGES/bootstack.po +841 -0
  101. bootstack-0.1.0a11/src/bootstack/assets/locales/ja/LC_MESSAGES/bootstack.mo +0 -0
  102. bootstack-0.1.0a11/src/bootstack/assets/locales/ja/LC_MESSAGES/bootstack.po +914 -0
  103. bootstack-0.1.0a11/src/bootstack/assets/locales/ko/LC_MESSAGES/bootstack.mo +0 -0
  104. bootstack-0.1.0a11/src/bootstack/assets/locales/ko/LC_MESSAGES/bootstack.po +842 -0
  105. bootstack-0.1.0a11/src/bootstack/assets/locales/nb/LC_MESSAGES/bootstack.mo +0 -0
  106. bootstack-0.1.0a11/src/bootstack/assets/locales/nb/LC_MESSAGES/bootstack.po +841 -0
  107. bootstack-0.1.0a11/src/bootstack/assets/locales/nl/LC_MESSAGES/bootstack.mo +0 -0
  108. bootstack-0.1.0a11/src/bootstack/assets/locales/nl/LC_MESSAGES/bootstack.po +841 -0
  109. bootstack-0.1.0a11/src/bootstack/assets/locales/pl/LC_MESSAGES/bootstack.mo +0 -0
  110. bootstack-0.1.0a11/src/bootstack/assets/locales/pl/LC_MESSAGES/bootstack.po +842 -0
  111. bootstack-0.1.0a11/src/bootstack/assets/locales/pt/LC_MESSAGES/bootstack.mo +0 -0
  112. bootstack-0.1.0a11/src/bootstack/assets/locales/pt/LC_MESSAGES/bootstack.po +842 -0
  113. bootstack-0.1.0a11/src/bootstack/assets/locales/pt_BR/LC_MESSAGES/bootstack.mo +0 -0
  114. bootstack-0.1.0a11/src/bootstack/assets/locales/pt_BR/LC_MESSAGES/bootstack.po +842 -0
  115. bootstack-0.1.0a11/src/bootstack/assets/locales/sl/LC_MESSAGES/bootstack.mo +0 -0
  116. bootstack-0.1.0a11/src/bootstack/assets/locales/sl/LC_MESSAGES/bootstack.po +842 -0
  117. bootstack-0.1.0a11/src/bootstack/assets/locales/sv/LC_MESSAGES/bootstack.mo +0 -0
  118. bootstack-0.1.0a11/src/bootstack/assets/locales/sv/LC_MESSAGES/bootstack.po +842 -0
  119. bootstack-0.1.0a11/src/bootstack/assets/locales/tr/LC_MESSAGES/bootstack.mo +0 -0
  120. bootstack-0.1.0a11/src/bootstack/assets/locales/tr/LC_MESSAGES/bootstack.po +842 -0
  121. bootstack-0.1.0a11/src/bootstack/assets/locales/zh_CN/LC_MESSAGES/bootstack.mo +0 -0
  122. bootstack-0.1.0a11/src/bootstack/assets/locales/zh_CN/LC_MESSAGES/bootstack.po +842 -0
  123. bootstack-0.1.0a11/src/bootstack/assets/locales/zh_TW/LC_MESSAGES/bootstack.mo +0 -0
  124. bootstack-0.1.0a11/src/bootstack/assets/locales/zh_TW/LC_MESSAGES/bootstack.po +842 -0
  125. bootstack-0.1.0a11/src/bootstack/cli/__init__.py +130 -0
  126. bootstack-0.1.0a11/src/bootstack/cli/add.py +387 -0
  127. bootstack-0.1.0a11/src/bootstack/cli/appicon.py +285 -0
  128. bootstack-0.1.0a11/src/bootstack/cli/config.py +313 -0
  129. bootstack-0.1.0a11/src/bootstack/cli/demo.py +937 -0
  130. bootstack-0.1.0a11/src/bootstack/cli/icons.py +327 -0
  131. bootstack-0.1.0a11/src/bootstack/cli/pyinstaller.py +267 -0
  132. bootstack-0.1.0a11/src/bootstack/cli/run.py +95 -0
  133. bootstack-0.1.0a11/src/bootstack/cli/start.py +117 -0
  134. bootstack-0.1.0a11/src/bootstack/cli/templates/__init__.py +959 -0
  135. bootstack-0.1.0a11/src/bootstack/clipboard.py +48 -0
  136. bootstack-0.1.0a11/src/bootstack/constants.py +318 -0
  137. bootstack-0.1.0a11/src/bootstack/data/README.md +615 -0
  138. bootstack-0.1.0a11/src/bootstack/data/__init__.py +78 -0
  139. bootstack-0.1.0a11/src/bootstack/data/_observable.py +276 -0
  140. bootstack-0.1.0a11/src/bootstack/data/base.py +780 -0
  141. bootstack-0.1.0a11/src/bootstack/data/file_source.py +367 -0
  142. bootstack-0.1.0a11/src/bootstack/data/memory_source.py +430 -0
  143. bootstack-0.1.0a11/src/bootstack/data/query.py +367 -0
  144. bootstack-0.1.0a11/src/bootstack/data/readers.py +289 -0
  145. bootstack-0.1.0a11/src/bootstack/data/sqlite_source.py +869 -0
  146. bootstack-0.1.0a11/src/bootstack/data/types.py +354 -0
  147. bootstack-0.1.0a11/src/bootstack/data/writers.py +232 -0
  148. bootstack-0.1.0a11/src/bootstack/dialogs/__init__.py +947 -0
  149. bootstack-0.1.0a11/src/bootstack/dialogs/_impl/__init__.py +51 -0
  150. bootstack-0.1.0a11/src/bootstack/dialogs/_impl/colorchooser.py +539 -0
  151. bootstack-0.1.0a11/src/bootstack/dialogs/_impl/colordropper.py +257 -0
  152. bootstack-0.1.0a11/src/bootstack/dialogs/_impl/datedialog.py +426 -0
  153. bootstack-0.1.0a11/src/bootstack/dialogs/_impl/dialog.py +524 -0
  154. bootstack-0.1.0a11/src/bootstack/dialogs/_impl/filterdialog.py +353 -0
  155. bootstack-0.1.0a11/src/bootstack/dialogs/_impl/fontdialog.py +377 -0
  156. bootstack-0.1.0a11/src/bootstack/dialogs/_impl/formdialog.py +545 -0
  157. bootstack-0.1.0a11/src/bootstack/dialogs/_impl/message.py +485 -0
  158. bootstack-0.1.0a11/src/bootstack/dialogs/_impl/query.py +569 -0
  159. bootstack-0.1.0a11/src/bootstack/errors.py +67 -0
  160. bootstack-0.1.0a11/src/bootstack/events/__init__.py +100 -0
  161. bootstack-0.1.0a11/src/bootstack/events/_event.py +135 -0
  162. bootstack-0.1.0a11/src/bootstack/events/_payloads.py +489 -0
  163. bootstack-0.1.0a11/src/bootstack/events/_subscription.py +38 -0
  164. bootstack-0.1.0a11/src/bootstack/i18n/README.md +77 -0
  165. bootstack-0.1.0a11/src/bootstack/i18n/__init__.py +23 -0
  166. bootstack-0.1.0a11/src/bootstack/i18n/catalog.py +121 -0
  167. bootstack-0.1.0a11/src/bootstack/i18n/intl_format.py +584 -0
  168. bootstack-0.1.0a11/src/bootstack/i18n/msgcat.py +425 -0
  169. bootstack-0.1.0a11/src/bootstack/i18n/specs.py +156 -0
  170. bootstack-0.1.0a11/src/bootstack/images.py +546 -0
  171. bootstack-0.1.0a11/src/bootstack/scheduling/__init__.py +11 -0
  172. bootstack-0.1.0a11/src/bootstack/scheduling/_schedule.py +218 -0
  173. bootstack-0.1.0a11/src/bootstack/shortcuts.py +21 -0
  174. bootstack-0.1.0a11/src/bootstack/signals/README.md +112 -0
  175. bootstack-0.1.0a11/src/bootstack/signals/__init__.py +10 -0
  176. bootstack-0.1.0a11/src/bootstack/signals/integration.py +100 -0
  177. bootstack-0.1.0a11/src/bootstack/signals/signal.py +310 -0
  178. bootstack-0.1.0a11/src/bootstack/signals/types.py +6 -0
  179. bootstack-0.1.0a11/src/bootstack/store.py +286 -0
  180. bootstack-0.1.0a11/src/bootstack/streams/__init__.py +12 -0
  181. bootstack-0.1.0a11/src/bootstack/streams/_stream.py +321 -0
  182. bootstack-0.1.0a11/src/bootstack/style/__init__.py +38 -0
  183. bootstack-0.1.0a11/src/bootstack/style/builders/__init__.py +51 -0
  184. bootstack-0.1.0a11/src/bootstack/style/builders/badge.py +46 -0
  185. bootstack-0.1.0a11/src/bootstack/style/builders/button.py +339 -0
  186. bootstack-0.1.0a11/src/bootstack/style/builders/buttongroup.py +311 -0
  187. bootstack-0.1.0a11/src/bootstack/style/builders/calendar.py +271 -0
  188. bootstack-0.1.0a11/src/bootstack/style/builders/checkbutton.py +110 -0
  189. bootstack-0.1.0a11/src/bootstack/style/builders/combobox.py +113 -0
  190. bootstack-0.1.0a11/src/bootstack/style/builders/contextmenu.py +268 -0
  191. bootstack-0.1.0a11/src/bootstack/style/builders/entry.py +82 -0
  192. bootstack-0.1.0a11/src/bootstack/style/builders/expander.py +148 -0
  193. bootstack-0.1.0a11/src/bootstack/style/builders/field.py +335 -0
  194. bootstack-0.1.0a11/src/bootstack/style/builders/frame.py +42 -0
  195. bootstack-0.1.0a11/src/bootstack/style/builders/label.py +28 -0
  196. bootstack-0.1.0a11/src/bootstack/style/builders/labelframe.py +34 -0
  197. bootstack-0.1.0a11/src/bootstack/style/builders/listview.py +369 -0
  198. bootstack-0.1.0a11/src/bootstack/style/builders/menubar.py +91 -0
  199. bootstack-0.1.0a11/src/bootstack/style/builders/menubutton.py +357 -0
  200. bootstack-0.1.0a11/src/bootstack/style/builders/panedwindow.py +25 -0
  201. bootstack-0.1.0a11/src/bootstack/style/builders/progressbar.py +67 -0
  202. bootstack-0.1.0a11/src/bootstack/style/builders/radiobutton.py +99 -0
  203. bootstack-0.1.0a11/src/bootstack/style/builders/scale.py +64 -0
  204. bootstack-0.1.0a11/src/bootstack/style/builders/scrollbar.py +225 -0
  205. bootstack-0.1.0a11/src/bootstack/style/builders/separator.py +49 -0
  206. bootstack-0.1.0a11/src/bootstack/style/builders/sidenav.py +643 -0
  207. bootstack-0.1.0a11/src/bootstack/style/builders/sizegrip.py +15 -0
  208. bootstack-0.1.0a11/src/bootstack/style/builders/spinbox.py +119 -0
  209. bootstack-0.1.0a11/src/bootstack/style/builders/switch.py +70 -0
  210. bootstack-0.1.0a11/src/bootstack/style/builders/tabitem.py +204 -0
  211. bootstack-0.1.0a11/src/bootstack/style/builders/togglegroup.py +294 -0
  212. bootstack-0.1.0a11/src/bootstack/style/builders/toolbutton.py +275 -0
  213. bootstack-0.1.0a11/src/bootstack/style/builders/tooltip.py +26 -0
  214. bootstack-0.1.0a11/src/bootstack/style/builders/treeview.py +193 -0
  215. bootstack-0.1.0a11/src/bootstack/style/builders/utils.py +446 -0
  216. bootstack-0.1.0a11/src/bootstack/style/builders_tk/__init__.py +16 -0
  217. bootstack-0.1.0a11/src/bootstack/style/builders_tk/defaults.py +229 -0
  218. bootstack-0.1.0a11/src/bootstack/style/fonts.py +123 -0
  219. bootstack-0.1.0a11/src/bootstack/style/style.py +566 -0
  220. bootstack-0.1.0a11/src/bootstack/style/style_builder_base.py +693 -0
  221. bootstack-0.1.0a11/src/bootstack/style/style_builder_mixed.py +93 -0
  222. bootstack-0.1.0a11/src/bootstack/style/style_builder_tk.py +109 -0
  223. bootstack-0.1.0a11/src/bootstack/style/style_builder_ttk.py +353 -0
  224. bootstack-0.1.0a11/src/bootstack/style/style_resolver.py +443 -0
  225. bootstack-0.1.0a11/src/bootstack/style/theme.py +245 -0
  226. bootstack-0.1.0a11/src/bootstack/style/theme_provider.py +471 -0
  227. bootstack-0.1.0a11/src/bootstack/style/themes/__init__.py +128 -0
  228. bootstack-0.1.0a11/src/bootstack/style/tk_patch.py +5 -0
  229. bootstack-0.1.0a11/src/bootstack/style/token_maps.py +41 -0
  230. bootstack-0.1.0a11/src/bootstack/style/types.py +32 -0
  231. bootstack-0.1.0a11/src/bootstack/style/typography.py +508 -0
  232. bootstack-0.1.0a11/src/bootstack/style/utility.py +746 -0
  233. bootstack-0.1.0a11/src/bootstack/types.py +37 -0
  234. bootstack-0.1.0a11/src/bootstack/validation/__init__.py +6 -0
  235. bootstack-0.1.0a11/src/bootstack/validation/types.py +15 -0
  236. bootstack-0.1.0a11/src/bootstack/validation/validation_rules.py +139 -0
  237. bootstack-0.1.0a11/src/bootstack/widgets/__init__.py +77 -0
  238. bootstack-0.1.0a11/src/bootstack/widgets/_core/__init__.py +31 -0
  239. bootstack-0.1.0a11/src/bootstack/widgets/_core/app_config.py +266 -0
  240. bootstack-0.1.0a11/src/bootstack/widgets/_core/base.py +377 -0
  241. bootstack-0.1.0a11/src/bootstack/widgets/_core/container.py +202 -0
  242. bootstack-0.1.0a11/src/bootstack/widgets/_core/context.py +35 -0
  243. bootstack-0.1.0a11/src/bootstack/widgets/_core/events.py +130 -0
  244. bootstack-0.1.0a11/src/bootstack/widgets/_core/field_mixin.py +281 -0
  245. bootstack-0.1.0a11/src/bootstack/widgets/_core/icon_image_props.py +72 -0
  246. bootstack-0.1.0a11/src/bootstack/widgets/_core/image_binding.py +93 -0
  247. bootstack-0.1.0a11/src/bootstack/widgets/_core/navmodel.py +345 -0
  248. bootstack-0.1.0a11/src/bootstack/widgets/_core/options.py +210 -0
  249. bootstack-0.1.0a11/src/bootstack/widgets/_core/selection_group.py +130 -0
  250. bootstack-0.1.0a11/src/bootstack/widgets/_core/window_controls.py +96 -0
  251. bootstack-0.1.0a11/src/bootstack/widgets/_core/window_menu.py +188 -0
  252. bootstack-0.1.0a11/src/bootstack/widgets/_impl/__init__.py +1 -0
  253. bootstack-0.1.0a11/src/bootstack/widgets/_impl/_internal/wrapper_base.py +307 -0
  254. bootstack-0.1.0a11/src/bootstack/widgets/_impl/_parts/__init__.py +11 -0
  255. bootstack-0.1.0a11/src/bootstack/widgets/_impl/_parts/numberentry_part.py +357 -0
  256. bootstack-0.1.0a11/src/bootstack/widgets/_impl/_parts/spinnerentry_part.py +385 -0
  257. bootstack-0.1.0a11/src/bootstack/widgets/_impl/_parts/textentry_part.py +382 -0
  258. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/__init__.py +33 -0
  259. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/_dateutils.py +33 -0
  260. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/_image_fit.py +105 -0
  261. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/accordion.py +381 -0
  262. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/avatar.py +192 -0
  263. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/buttongroup.py +371 -0
  264. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/calendar.py +957 -0
  265. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/carousel.py +558 -0
  266. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/compositeframe.py +298 -0
  267. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/contextmenu.py +1914 -0
  268. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/dateentry.py +404 -0
  269. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/dropdownbutton.py +325 -0
  270. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/expander.py +508 -0
  271. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/field.py +660 -0
  272. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/floodgauge.py +427 -0
  273. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/form.py +1030 -0
  274. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/gallery.py +502 -0
  275. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/list/__init__.py +15 -0
  276. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/list/listitem.py +802 -0
  277. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/list/listview.py +1441 -0
  278. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/menu/__init__.py +18 -0
  279. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/menu/model.py +358 -0
  280. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/menu/render_native.py +134 -0
  281. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/menu/render_themed.py +134 -0
  282. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/meter.py +851 -0
  283. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/numericentry.py +201 -0
  284. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/pagestack.py +344 -0
  285. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/passwordentry.py +131 -0
  286. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/pathentry.py +168 -0
  287. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/picture.py +290 -0
  288. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/radiogroup.py +511 -0
  289. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/scrolledtext.py +375 -0
  290. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/scrollview.py +698 -0
  291. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/selectbox.py +1026 -0
  292. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/shell/__init__.py +40 -0
  293. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/shell/content_host.py +46 -0
  294. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/shell/layout.py +326 -0
  295. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/shell/nav_panel.py +343 -0
  296. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/shell/providers.py +558 -0
  297. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/shell/rail.py +117 -0
  298. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/shell/shell.py +526 -0
  299. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/shell/workspace.py +260 -0
  300. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/sidenav/__init__.py +16 -0
  301. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/sidenav/header.py +81 -0
  302. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/sidenav/separator.py +44 -0
  303. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/slider/__init__.py +7 -0
  304. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/slider/_shared.py +161 -0
  305. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/slider/rangeslider.py +843 -0
  306. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/slider/slider.py +741 -0
  307. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/spinnerentry.py +177 -0
  308. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/tableview/tableview.py +3281 -0
  309. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/tabs/__init__.py +23 -0
  310. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/tabs/tabitem.py +389 -0
  311. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/tabs/tabs.py +567 -0
  312. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/tabs/tabview.py +646 -0
  313. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/textarea/__init__.py +26 -0
  314. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/textarea/change.py +46 -0
  315. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/textarea/codeeditor.py +382 -0
  316. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/textarea/core.py +464 -0
  317. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/textarea/decoration.py +42 -0
  318. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/textarea/diff.py +127 -0
  319. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/textarea/extensions/__init__.py +1 -0
  320. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/textarea/extensions/bracket_matcher.py +138 -0
  321. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/textarea/extensions/indent_guides.py +143 -0
  322. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/textarea/extensions/line_numbers.py +138 -0
  323. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/textarea/extensions/pygments_highlighter.py +312 -0
  324. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/textarea/extensions/smart_indent.py +87 -0
  325. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/textarea/filter.py +171 -0
  326. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/textarea/search_overlay.py +438 -0
  327. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/textarea/sidebar.py +88 -0
  328. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/textarea/style_registry.py +156 -0
  329. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/textarea/textarea.py +565 -0
  330. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/textarea/undo.py +217 -0
  331. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/textentry.py +57 -0
  332. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/timeentry.py +172 -0
  333. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/toast.py +390 -0
  334. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/toast_stack.py +151 -0
  335. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/togglegroup.py +418 -0
  336. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/toolbar.py +577 -0
  337. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/tooltip.py +404 -0
  338. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/tree/__init__.py +7 -0
  339. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/tree/source_binding.py +136 -0
  340. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/tree/treeitem.py +393 -0
  341. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/tree/treenode.py +174 -0
  342. bootstack-0.1.0a11/src/bootstack/widgets/_impl/composites/tree/treeview.py +841 -0
  343. bootstack-0.1.0a11/src/bootstack/widgets/_impl/mixins/__init__.py +24 -0
  344. bootstack-0.1.0a11/src/bootstack/widgets/_impl/mixins/configure_mixin.py +216 -0
  345. bootstack-0.1.0a11/src/bootstack/widgets/_impl/mixins/entry_mixin.py +134 -0
  346. bootstack-0.1.0a11/src/bootstack/widgets/_impl/mixins/font_mixin.py +368 -0
  347. bootstack-0.1.0a11/src/bootstack/widgets/_impl/mixins/icon_mixin.py +61 -0
  348. bootstack-0.1.0a11/src/bootstack/widgets/_impl/mixins/localization_mixin.py +253 -0
  349. bootstack-0.1.0a11/src/bootstack/widgets/_impl/mixins/signal_mixin.py +268 -0
  350. bootstack-0.1.0a11/src/bootstack/widgets/_impl/mixins/validation_mixin.py +212 -0
  351. bootstack-0.1.0a11/src/bootstack/widgets/_impl/primitives/__init__.py +49 -0
  352. bootstack-0.1.0a11/src/bootstack/widgets/_impl/primitives/_menubutton.py +107 -0
  353. bootstack-0.1.0a11/src/bootstack/widgets/_impl/primitives/badge.py +45 -0
  354. bootstack-0.1.0a11/src/bootstack/widgets/_impl/primitives/button.py +76 -0
  355. bootstack-0.1.0a11/src/bootstack/widgets/_impl/primitives/card.py +45 -0
  356. bootstack-0.1.0a11/src/bootstack/widgets/_impl/primitives/checkbutton.py +124 -0
  357. bootstack-0.1.0a11/src/bootstack/widgets/_impl/primitives/checktoggle.py +62 -0
  358. bootstack-0.1.0a11/src/bootstack/widgets/_impl/primitives/combobox.py +155 -0
  359. bootstack-0.1.0a11/src/bootstack/widgets/_impl/primitives/entry.py +87 -0
  360. bootstack-0.1.0a11/src/bootstack/widgets/_impl/primitives/frame.py +180 -0
  361. bootstack-0.1.0a11/src/bootstack/widgets/_impl/primitives/gridframe.py +527 -0
  362. bootstack-0.1.0a11/src/bootstack/widgets/_impl/primitives/label.py +84 -0
  363. bootstack-0.1.0a11/src/bootstack/widgets/_impl/primitives/labelframe.py +54 -0
  364. bootstack-0.1.0a11/src/bootstack/widgets/_impl/primitives/optionmenu.py +387 -0
  365. bootstack-0.1.0a11/src/bootstack/widgets/_impl/primitives/packframe.py +224 -0
  366. bootstack-0.1.0a11/src/bootstack/widgets/_impl/primitives/panedwindow.py +45 -0
  367. bootstack-0.1.0a11/src/bootstack/widgets/_impl/primitives/progressbar.py +83 -0
  368. bootstack-0.1.0a11/src/bootstack/widgets/_impl/primitives/radiobutton.py +115 -0
  369. bootstack-0.1.0a11/src/bootstack/widgets/_impl/primitives/radiotoggle.py +54 -0
  370. bootstack-0.1.0a11/src/bootstack/widgets/_impl/primitives/scrollbar.py +42 -0
  371. bootstack-0.1.0a11/src/bootstack/widgets/_impl/primitives/separator.py +43 -0
  372. bootstack-0.1.0a11/src/bootstack/widgets/_impl/primitives/sizegrip.py +33 -0
  373. bootstack-0.1.0a11/src/bootstack/widgets/_impl/primitives/spinbox.py +95 -0
  374. bootstack-0.1.0a11/src/bootstack/widgets/_impl/primitives/switch.py +44 -0
  375. bootstack-0.1.0a11/src/bootstack/widgets/_impl/primitives/treeview.py +69 -0
  376. bootstack-0.1.0a11/src/bootstack/widgets/app.py +235 -0
  377. bootstack-0.1.0a11/src/bootstack/widgets/appshell.py +798 -0
  378. bootstack-0.1.0a11/src/bootstack/widgets/avatar.py +140 -0
  379. bootstack-0.1.0a11/src/bootstack/widgets/boolean_controls.py +455 -0
  380. bootstack-0.1.0a11/src/bootstack/widgets/button.py +176 -0
  381. bootstack-0.1.0a11/src/bootstack/widgets/buttongroup.py +239 -0
  382. bootstack-0.1.0a11/src/bootstack/widgets/calendar.py +195 -0
  383. bootstack-0.1.0a11/src/bootstack/widgets/card.py +146 -0
  384. bootstack-0.1.0a11/src/bootstack/widgets/carousel.py +240 -0
  385. bootstack-0.1.0a11/src/bootstack/widgets/codeeditor.py +491 -0
  386. bootstack-0.1.0a11/src/bootstack/widgets/contextmenu.py +368 -0
  387. bootstack-0.1.0a11/src/bootstack/widgets/datatable.py +674 -0
  388. bootstack-0.1.0a11/src/bootstack/widgets/datefield.py +401 -0
  389. bootstack-0.1.0a11/src/bootstack/widgets/expander.py +574 -0
  390. bootstack-0.1.0a11/src/bootstack/widgets/form.py +169 -0
  391. bootstack-0.1.0a11/src/bootstack/widgets/gallery.py +250 -0
  392. bootstack-0.1.0a11/src/bootstack/widgets/gauge.py +168 -0
  393. bootstack-0.1.0a11/src/bootstack/widgets/grid.py +105 -0
  394. bootstack-0.1.0a11/src/bootstack/widgets/groupbox.py +149 -0
  395. bootstack-0.1.0a11/src/bootstack/widgets/label.py +221 -0
  396. bootstack-0.1.0a11/src/bootstack/widgets/listview.py +354 -0
  397. bootstack-0.1.0a11/src/bootstack/widgets/menubutton.py +394 -0
  398. bootstack-0.1.0a11/src/bootstack/widgets/numberfield.py +429 -0
  399. bootstack-0.1.0a11/src/bootstack/widgets/pagestack.py +334 -0
  400. bootstack-0.1.0a11/src/bootstack/widgets/passwordfield.py +384 -0
  401. bootstack-0.1.0a11/src/bootstack/widgets/pathfield.py +399 -0
  402. bootstack-0.1.0a11/src/bootstack/widgets/picture.py +251 -0
  403. bootstack-0.1.0a11/src/bootstack/widgets/progressbar.py +106 -0
  404. bootstack-0.1.0a11/src/bootstack/widgets/radio_variants.py +271 -0
  405. bootstack-0.1.0a11/src/bootstack/widgets/radiogroup.py +228 -0
  406. bootstack-0.1.0a11/src/bootstack/widgets/scrollbar.py +64 -0
  407. bootstack-0.1.0a11/src/bootstack/widgets/scrollview.py +134 -0
  408. bootstack-0.1.0a11/src/bootstack/widgets/select.py +302 -0
  409. bootstack-0.1.0a11/src/bootstack/widgets/selectbutton.py +182 -0
  410. bootstack-0.1.0a11/src/bootstack/widgets/separator.py +59 -0
  411. bootstack-0.1.0a11/src/bootstack/widgets/sizegrip.py +42 -0
  412. bootstack-0.1.0a11/src/bootstack/widgets/slider.py +376 -0
  413. bootstack-0.1.0a11/src/bootstack/widgets/spinbox.py +147 -0
  414. bootstack-0.1.0a11/src/bootstack/widgets/spinnerfield.py +390 -0
  415. bootstack-0.1.0a11/src/bootstack/widgets/splitview.py +392 -0
  416. bootstack-0.1.0a11/src/bootstack/widgets/stacks.py +214 -0
  417. bootstack-0.1.0a11/src/bootstack/widgets/statusbar.py +169 -0
  418. bootstack-0.1.0a11/src/bootstack/widgets/tabs.py +407 -0
  419. bootstack-0.1.0a11/src/bootstack/widgets/textarea.py +427 -0
  420. bootstack-0.1.0a11/src/bootstack/widgets/textfield.py +405 -0
  421. bootstack-0.1.0a11/src/bootstack/widgets/theme_toggle.py +92 -0
  422. bootstack-0.1.0a11/src/bootstack/widgets/timefield.py +346 -0
  423. bootstack-0.1.0a11/src/bootstack/widgets/toast.py +314 -0
  424. bootstack-0.1.0a11/src/bootstack/widgets/togglegroup.py +231 -0
  425. bootstack-0.1.0a11/src/bootstack/widgets/toolbar.py +280 -0
  426. bootstack-0.1.0a11/src/bootstack/widgets/tooltip.py +71 -0
  427. bootstack-0.1.0a11/src/bootstack/widgets/tree.py +648 -0
  428. bootstack-0.1.0a11/src/bootstack/widgets/types.py +289 -0
  429. bootstack-0.1.0a11/src/bootstack/widgets/window.py +276 -0
  430. bootstack-0.1.0a11/src/bootstack.egg-info/PKG-INFO +264 -0
  431. bootstack-0.1.0a11/src/bootstack.egg-info/SOURCES.txt +472 -0
  432. bootstack-0.1.0a11/src/bootstack.egg-info/requires.txt +26 -0
  433. bootstack-0.1.0a11/tests/test_images.py +112 -0
  434. bootstack-0.1.0a11/tests/test_images_gui.py +72 -0
  435. bootstack-0.1.0a11/tests/test_intl_format.py +99 -0
  436. bootstack-0.1.0a11/tests/test_navmodel.py +327 -0
  437. bootstack-0.1.0a11/tests/test_public_surface.py +142 -0
  438. bootstack-0.1.0a11/tests/test_store.py +169 -0
  439. bootstack-0.1.0a11/tests/test_theme_from_existing.py +64 -0
  440. bootstack-0.1.0a11/tests/test_validation_rules.py +152 -0
  441. bootstack-0.1.0a9/LICENSE +0 -22
  442. bootstack-0.1.0a9/PKG-INFO +0 -214
  443. bootstack-0.1.0a9/README.md +0 -180
  444. bootstack-0.1.0a9/pyproject.toml +0 -111
  445. bootstack-0.1.0a9/src/bootstack/__init__.py +0 -254
  446. bootstack-0.1.0a9/src/bootstack/api/__init__.py +0 -128
  447. bootstack-0.1.0a9/src/bootstack/api/app.py +0 -30
  448. bootstack-0.1.0a9/src/bootstack/api/constants.py +0 -3
  449. bootstack-0.1.0a9/src/bootstack/api/data.py +0 -23
  450. bootstack-0.1.0a9/src/bootstack/api/dialogs.py +0 -44
  451. bootstack-0.1.0a9/src/bootstack/api/i18n.py +0 -17
  452. bootstack-0.1.0a9/src/bootstack/api/localization.py +0 -16
  453. bootstack-0.1.0a9/src/bootstack/api/menu.py +0 -7
  454. bootstack-0.1.0a9/src/bootstack/api/style.py +0 -26
  455. bootstack-0.1.0a9/src/bootstack/api/utils.py +0 -24
  456. bootstack-0.1.0a9/src/bootstack/api/widgets.py +0 -140
  457. bootstack-0.1.0a9/src/bootstack/assets/__init__.py +0 -24
  458. bootstack-0.1.0a9/src/bootstack/assets/bootstack-dark.ico +0 -0
  459. bootstack-0.1.0a9/src/bootstack/assets/bootstack-light.ico +0 -0
  460. bootstack-0.1.0a9/src/bootstack/assets/bootstack-transparent.png +0 -0
  461. bootstack-0.1.0a9/src/bootstack/assets/bootstack.ico +0 -0
  462. bootstack-0.1.0a9/src/bootstack/assets/bootstack.png +0 -0
  463. bootstack-0.1.0a9/src/bootstack/assets/elements/badge-pill.png +0 -0
  464. bootstack-0.1.0a9/src/bootstack/assets/elements/badge-square.png +0 -0
  465. bootstack-0.1.0a9/src/bootstack/assets/elements/border.png +0 -0
  466. bootstack-0.1.0a9/src/bootstack/assets/elements/button-compact.png +0 -0
  467. bootstack-0.1.0a9/src/bootstack/assets/elements/button-default.png +0 -0
  468. bootstack-0.1.0a9/src/bootstack/assets/elements/button-group-horizontal-after-compact.png +0 -0
  469. bootstack-0.1.0a9/src/bootstack/assets/elements/button-group-horizontal-after-default.png +0 -0
  470. bootstack-0.1.0a9/src/bootstack/assets/elements/button-group-horizontal-before-compact.png +0 -0
  471. bootstack-0.1.0a9/src/bootstack/assets/elements/button-group-horizontal-before-default.png +0 -0
  472. bootstack-0.1.0a9/src/bootstack/assets/elements/button-group-horizontal-center-compact.png +0 -0
  473. bootstack-0.1.0a9/src/bootstack/assets/elements/button-group-horizontal-center-default.png +0 -0
  474. bootstack-0.1.0a9/src/bootstack/assets/elements/button-group-vertical-after-compact.png +0 -0
  475. bootstack-0.1.0a9/src/bootstack/assets/elements/button-group-vertical-after-default.png +0 -0
  476. bootstack-0.1.0a9/src/bootstack/assets/elements/button-group-vertical-before-compact.png +0 -0
  477. bootstack-0.1.0a9/src/bootstack/assets/elements/button-group-vertical-before-default.png +0 -0
  478. bootstack-0.1.0a9/src/bootstack/assets/elements/button-group-vertical-center-compact.png +0 -0
  479. bootstack-0.1.0a9/src/bootstack/assets/elements/button-group-vertical-center-default.png +0 -0
  480. bootstack-0.1.0a9/src/bootstack/assets/elements/checkbox-checked.png +0 -0
  481. bootstack-0.1.0a9/src/bootstack/assets/elements/checkbox-indeterminate.png +0 -0
  482. bootstack-0.1.0a9/src/bootstack/assets/elements/checkbox-unchecked.png +0 -0
  483. bootstack-0.1.0a9/src/bootstack/assets/elements/field.png +0 -0
  484. bootstack-0.1.0a9/src/bootstack/assets/elements/input-after-compact.png +0 -0
  485. bootstack-0.1.0a9/src/bootstack/assets/elements/input-after-default.png +0 -0
  486. bootstack-0.1.0a9/src/bootstack/assets/elements/input-before-compact.png +0 -0
  487. bootstack-0.1.0a9/src/bootstack/assets/elements/input-before-default.png +0 -0
  488. bootstack-0.1.0a9/src/bootstack/assets/elements/input-compact.png +0 -0
  489. bootstack-0.1.0a9/src/bootstack/assets/elements/input-default.png +0 -0
  490. bootstack-0.1.0a9/src/bootstack/assets/elements/manifest.toml +0 -480
  491. bootstack-0.1.0a9/src/bootstack/assets/elements/nav-button-compact.png +0 -0
  492. bootstack-0.1.0a9/src/bootstack/assets/elements/nav-button-default.png +0 -0
  493. bootstack-0.1.0a9/src/bootstack/assets/elements/nav-icon-button-compact.png +0 -0
  494. bootstack-0.1.0a9/src/bootstack/assets/elements/nav-icon-button-default.png +0 -0
  495. bootstack-0.1.0a9/src/bootstack/assets/elements/notebook-client-border.png +0 -0
  496. bootstack-0.1.0a9/src/bootstack/assets/elements/notebook-tab-active.png +0 -0
  497. bootstack-0.1.0a9/src/bootstack/assets/elements/notebook-tab-bar.png +0 -0
  498. bootstack-0.1.0a9/src/bootstack/assets/elements/notebook-tab-normal.png +0 -0
  499. bootstack-0.1.0a9/src/bootstack/assets/elements/notebook-tab-pill.png +0 -0
  500. bootstack-0.1.0a9/src/bootstack/assets/elements/progress-bar-horizontal-striped.png +0 -0
  501. bootstack-0.1.0a9/src/bootstack/assets/elements/progress-bar-solid.png +0 -0
  502. bootstack-0.1.0a9/src/bootstack/assets/elements/progress-bar-thin.png +0 -0
  503. bootstack-0.1.0a9/src/bootstack/assets/elements/progress-bar-vertical-striped.png +0 -0
  504. bootstack-0.1.0a9/src/bootstack/assets/elements/radio-selected.png +0 -0
  505. bootstack-0.1.0a9/src/bootstack/assets/elements/radio-unselected.png +0 -0
  506. bootstack-0.1.0a9/src/bootstack/assets/elements/scrollbar-horizontal.png +0 -0
  507. bootstack-0.1.0a9/src/bootstack/assets/elements/scrollbar-vertical.png +0 -0
  508. bootstack-0.1.0a9/src/bootstack/assets/elements/slider-handle-focus.png +0 -0
  509. bootstack-0.1.0a9/src/bootstack/assets/elements/slider-handle.png +0 -0
  510. bootstack-0.1.0a9/src/bootstack/assets/elements/slider-track-horizontal.png +0 -0
  511. bootstack-0.1.0a9/src/bootstack/assets/elements/slider-track-vertical.png +0 -0
  512. bootstack-0.1.0a9/src/bootstack/assets/elements/switch-off.png +0 -0
  513. bootstack-0.1.0a9/src/bootstack/assets/elements/switch-on.png +0 -0
  514. bootstack-0.1.0a9/src/bootstack/assets/elements/tabs-bar-horizontal.png +0 -0
  515. bootstack-0.1.0a9/src/bootstack/assets/elements/tabs-bar-vertical.png +0 -0
  516. bootstack-0.1.0a9/src/bootstack/assets/elements/tabs-pill.png +0 -0
  517. bootstack-0.1.0a9/src/bootstack/assets/locales/ar/LC_MESSAGES/bootstack.mo +0 -0
  518. bootstack-0.1.0a9/src/bootstack/assets/locales/ar/LC_MESSAGES/bootstack.po +0 -853
  519. bootstack-0.1.0a9/src/bootstack/assets/locales/bg/LC_MESSAGES/bootstack.po +0 -875
  520. bootstack-0.1.0a9/src/bootstack/assets/locales/cs/LC_MESSAGES/bootstack.mo +0 -0
  521. bootstack-0.1.0a9/src/bootstack/assets/locales/cs/LC_MESSAGES/bootstack.po +0 -853
  522. bootstack-0.1.0a9/src/bootstack/assets/locales/da/LC_MESSAGES/bootstack.mo +0 -0
  523. bootstack-0.1.0a9/src/bootstack/assets/locales/da/LC_MESSAGES/bootstack.po +0 -853
  524. bootstack-0.1.0a9/src/bootstack/assets/locales/de/LC_MESSAGES/bootstack.mo +0 -0
  525. bootstack-0.1.0a9/src/bootstack/assets/locales/de/LC_MESSAGES/bootstack.po +0 -853
  526. bootstack-0.1.0a9/src/bootstack/assets/locales/en/LC_MESSAGES/bootstack.mo +0 -0
  527. bootstack-0.1.0a9/src/bootstack/assets/locales/en/LC_MESSAGES/bootstack.po +0 -875
  528. bootstack-0.1.0a9/src/bootstack/assets/locales/es/LC_MESSAGES/bootstack.mo +0 -0
  529. bootstack-0.1.0a9/src/bootstack/assets/locales/es/LC_MESSAGES/bootstack.po +0 -853
  530. bootstack-0.1.0a9/src/bootstack/assets/locales/fr/LC_MESSAGES/bootstack.mo +0 -0
  531. bootstack-0.1.0a9/src/bootstack/assets/locales/fr/LC_MESSAGES/bootstack.po +0 -853
  532. bootstack-0.1.0a9/src/bootstack/assets/locales/he/LC_MESSAGES/bootstack.mo +0 -0
  533. bootstack-0.1.0a9/src/bootstack/assets/locales/he/LC_MESSAGES/bootstack.po +0 -851
  534. bootstack-0.1.0a9/src/bootstack/assets/locales/hi/LC_MESSAGES/bootstack.mo +0 -0
  535. bootstack-0.1.0a9/src/bootstack/assets/locales/hi/LC_MESSAGES/bootstack.po +0 -842
  536. bootstack-0.1.0a9/src/bootstack/assets/locales/it/LC_MESSAGES/bootstack.mo +0 -0
  537. bootstack-0.1.0a9/src/bootstack/assets/locales/it/LC_MESSAGES/bootstack.po +0 -841
  538. bootstack-0.1.0a9/src/bootstack/assets/locales/ja/LC_MESSAGES/bootstack.mo +0 -0
  539. bootstack-0.1.0a9/src/bootstack/assets/locales/ja/LC_MESSAGES/bootstack.po +0 -914
  540. bootstack-0.1.0a9/src/bootstack/assets/locales/ko/LC_MESSAGES/bootstack.mo +0 -0
  541. bootstack-0.1.0a9/src/bootstack/assets/locales/ko/LC_MESSAGES/bootstack.po +0 -842
  542. bootstack-0.1.0a9/src/bootstack/assets/locales/nb/LC_MESSAGES/bootstack.mo +0 -0
  543. bootstack-0.1.0a9/src/bootstack/assets/locales/nb/LC_MESSAGES/bootstack.po +0 -841
  544. bootstack-0.1.0a9/src/bootstack/assets/locales/nl/LC_MESSAGES/bootstack.mo +0 -0
  545. bootstack-0.1.0a9/src/bootstack/assets/locales/nl/LC_MESSAGES/bootstack.po +0 -841
  546. bootstack-0.1.0a9/src/bootstack/assets/locales/pl/LC_MESSAGES/bootstack.mo +0 -0
  547. bootstack-0.1.0a9/src/bootstack/assets/locales/pl/LC_MESSAGES/bootstack.po +0 -842
  548. bootstack-0.1.0a9/src/bootstack/assets/locales/pt/LC_MESSAGES/bootstack.mo +0 -0
  549. bootstack-0.1.0a9/src/bootstack/assets/locales/pt/LC_MESSAGES/bootstack.po +0 -842
  550. bootstack-0.1.0a9/src/bootstack/assets/locales/pt_BR/LC_MESSAGES/bootstack.mo +0 -0
  551. bootstack-0.1.0a9/src/bootstack/assets/locales/pt_BR/LC_MESSAGES/bootstack.po +0 -842
  552. bootstack-0.1.0a9/src/bootstack/assets/locales/sl/LC_MESSAGES/bootstack.mo +0 -0
  553. bootstack-0.1.0a9/src/bootstack/assets/locales/sl/LC_MESSAGES/bootstack.po +0 -842
  554. bootstack-0.1.0a9/src/bootstack/assets/locales/sv/LC_MESSAGES/bootstack.mo +0 -0
  555. bootstack-0.1.0a9/src/bootstack/assets/locales/sv/LC_MESSAGES/bootstack.po +0 -842
  556. bootstack-0.1.0a9/src/bootstack/assets/locales/tr/LC_MESSAGES/bootstack.mo +0 -0
  557. bootstack-0.1.0a9/src/bootstack/assets/locales/tr/LC_MESSAGES/bootstack.po +0 -842
  558. bootstack-0.1.0a9/src/bootstack/assets/locales/zh_CN/LC_MESSAGES/bootstack.mo +0 -0
  559. bootstack-0.1.0a9/src/bootstack/assets/locales/zh_CN/LC_MESSAGES/bootstack.po +0 -842
  560. bootstack-0.1.0a9/src/bootstack/assets/locales/zh_TW/LC_MESSAGES/bootstack.mo +0 -0
  561. bootstack-0.1.0a9/src/bootstack/assets/locales/zh_TW/LC_MESSAGES/bootstack.po +0 -842
  562. bootstack-0.1.0a9/src/bootstack/assets/themes/amber-dark.json +0 -32
  563. bootstack-0.1.0a9/src/bootstack/assets/themes/amber-light.json +0 -32
  564. bootstack-0.1.0a9/src/bootstack/assets/themes/aurora-dark.json +0 -32
  565. bootstack-0.1.0a9/src/bootstack/assets/themes/aurora-light.json +0 -32
  566. bootstack-0.1.0a9/src/bootstack/assets/themes/bootstrap-dark.json +0 -32
  567. bootstack-0.1.0a9/src/bootstack/assets/themes/bootstrap-light.json +0 -32
  568. bootstack-0.1.0a9/src/bootstack/assets/themes/classic-dark.json +0 -32
  569. bootstack-0.1.0a9/src/bootstack/assets/themes/classic-light.json +0 -32
  570. bootstack-0.1.0a9/src/bootstack/assets/themes/docs-dark.json +0 -32
  571. bootstack-0.1.0a9/src/bootstack/assets/themes/docs-light.json +0 -32
  572. bootstack-0.1.0a9/src/bootstack/assets/themes/forest-dark.json +0 -32
  573. bootstack-0.1.0a9/src/bootstack/assets/themes/forest-light.json +0 -32
  574. bootstack-0.1.0a9/src/bootstack/assets/themes/ocean-dark.json +0 -32
  575. bootstack-0.1.0a9/src/bootstack/assets/themes/ocean-light.json +0 -32
  576. bootstack-0.1.0a9/src/bootstack/assets/themes/rose-dark.json +0 -32
  577. bootstack-0.1.0a9/src/bootstack/assets/themes/rose-light.json +0 -32
  578. bootstack-0.1.0a9/src/bootstack/assets/widgets/__init__.py +0 -0
  579. bootstack-0.1.0a9/src/bootstack/assets/widgets/badge-default.png +0 -0
  580. bootstack-0.1.0a9/src/bootstack/assets/widgets/badge-pill.png +0 -0
  581. bootstack-0.1.0a9/src/bootstack/assets/widgets/border.png +0 -0
  582. bootstack-0.1.0a9/src/bootstack/assets/widgets/button-group-horizontal-after.png +0 -0
  583. bootstack-0.1.0a9/src/bootstack/assets/widgets/button-group-horizontal-before.png +0 -0
  584. bootstack-0.1.0a9/src/bootstack/assets/widgets/button-group-horizontal-center.png +0 -0
  585. bootstack-0.1.0a9/src/bootstack/assets/widgets/button-group-vertical-after.png +0 -0
  586. bootstack-0.1.0a9/src/bootstack/assets/widgets/button-group-vertical-before.png +0 -0
  587. bootstack-0.1.0a9/src/bootstack/assets/widgets/button-group-vertical-center.png +0 -0
  588. bootstack-0.1.0a9/src/bootstack/assets/widgets/button.png +0 -0
  589. bootstack-0.1.0a9/src/bootstack/assets/widgets/checkbox-checked.png +0 -0
  590. bootstack-0.1.0a9/src/bootstack/assets/widgets/checkbox-indeterminate.png +0 -0
  591. bootstack-0.1.0a9/src/bootstack/assets/widgets/checkbox-unchecked.png +0 -0
  592. bootstack-0.1.0a9/src/bootstack/assets/widgets/field.png +0 -0
  593. bootstack-0.1.0a9/src/bootstack/assets/widgets/icon-button.png +0 -0
  594. bootstack-0.1.0a9/src/bootstack/assets/widgets/input-inner.png +0 -0
  595. bootstack-0.1.0a9/src/bootstack/assets/widgets/input-prefix.png +0 -0
  596. bootstack-0.1.0a9/src/bootstack/assets/widgets/input-suffix.png +0 -0
  597. bootstack-0.1.0a9/src/bootstack/assets/widgets/input.png +0 -0
  598. bootstack-0.1.0a9/src/bootstack/assets/widgets/list-item-focus.png +0 -0
  599. bootstack-0.1.0a9/src/bootstack/assets/widgets/list-item-separated.png +0 -0
  600. bootstack-0.1.0a9/src/bootstack/assets/widgets/menu-item-separated.png +0 -0
  601. bootstack-0.1.0a9/src/bootstack/assets/widgets/notebook-client-border.png +0 -0
  602. bootstack-0.1.0a9/src/bootstack/assets/widgets/notebook-pill-active.png +0 -0
  603. bootstack-0.1.0a9/src/bootstack/assets/widgets/notebook-pill-inactive.png +0 -0
  604. bootstack-0.1.0a9/src/bootstack/assets/widgets/notebook-tab-active.png +0 -0
  605. bootstack-0.1.0a9/src/bootstack/assets/widgets/notebook-tab-border.png +0 -0
  606. bootstack-0.1.0a9/src/bootstack/assets/widgets/notebook-tab-normal.png +0 -0
  607. bootstack-0.1.0a9/src/bootstack/assets/widgets/notebook-underline.png +0 -0
  608. bootstack-0.1.0a9/src/bootstack/assets/widgets/progress-bar-horizontal-default.png +0 -0
  609. bootstack-0.1.0a9/src/bootstack/assets/widgets/progress-bar-horizontal-striped.png +0 -0
  610. bootstack-0.1.0a9/src/bootstack/assets/widgets/progress-bar-vertical-default.png +0 -0
  611. bootstack-0.1.0a9/src/bootstack/assets/widgets/progress-bar-vertical-striped.png +0 -0
  612. bootstack-0.1.0a9/src/bootstack/assets/widgets/progress-trough-horizontal.png +0 -0
  613. bootstack-0.1.0a9/src/bootstack/assets/widgets/progress-trough-vertical.png +0 -0
  614. bootstack-0.1.0a9/src/bootstack/assets/widgets/radio-selected.png +0 -0
  615. bootstack-0.1.0a9/src/bootstack/assets/widgets/radio-unselected.png +0 -0
  616. bootstack-0.1.0a9/src/bootstack/assets/widgets/scrollbar-horizontal-rounded.png +0 -0
  617. bootstack-0.1.0a9/src/bootstack/assets/widgets/scrollbar-vertical-rounded.png +0 -0
  618. bootstack-0.1.0a9/src/bootstack/assets/widgets/separator-horizontal.png +0 -0
  619. bootstack-0.1.0a9/src/bootstack/assets/widgets/separator-vertical.png +0 -0
  620. bootstack-0.1.0a9/src/bootstack/assets/widgets/slider-handle-focus.png +0 -0
  621. bootstack-0.1.0a9/src/bootstack/assets/widgets/slider-handle.png +0 -0
  622. bootstack-0.1.0a9/src/bootstack/assets/widgets/slider-track-horizontal.png +0 -0
  623. bootstack-0.1.0a9/src/bootstack/assets/widgets/slider-track-vertical.png +0 -0
  624. bootstack-0.1.0a9/src/bootstack/assets/widgets/switch-off.png +0 -0
  625. bootstack-0.1.0a9/src/bootstack/assets/widgets/switch-on.png +0 -0
  626. bootstack-0.1.0a9/src/bootstack/assets/widgets/tabs-bar-horizontal.png +0 -0
  627. bootstack-0.1.0a9/src/bootstack/assets/widgets/tabs-bar-vertical.png +0 -0
  628. bootstack-0.1.0a9/src/bootstack/assets/widgets/tabs-pill.png +0 -0
  629. bootstack-0.1.0a9/src/bootstack/cli/__init__.py +0 -134
  630. bootstack-0.1.0a9/src/bootstack/cli/add.py +0 -439
  631. bootstack-0.1.0a9/src/bootstack/cli/config.py +0 -287
  632. bootstack-0.1.0a9/src/bootstack/cli/demo.py +0 -1267
  633. bootstack-0.1.0a9/src/bootstack/cli/icons.py +0 -28
  634. bootstack-0.1.0a9/src/bootstack/cli/list_cmd.py +0 -71
  635. bootstack-0.1.0a9/src/bootstack/cli/pyinstaller.py +0 -246
  636. bootstack-0.1.0a9/src/bootstack/cli/run.py +0 -99
  637. bootstack-0.1.0a9/src/bootstack/cli/start.py +0 -105
  638. bootstack-0.1.0a9/src/bootstack/cli/templates/__init__.py +0 -861
  639. bootstack-0.1.0a9/src/bootstack/constants.py +0 -325
  640. bootstack-0.1.0a9/src/bootstack/core/__init__.py +0 -34
  641. bootstack-0.1.0a9/src/bootstack/core/capabilities/__init__.py +0 -45
  642. bootstack-0.1.0a9/src/bootstack/core/capabilities/bind.py +0 -154
  643. bootstack-0.1.0a9/src/bootstack/core/capabilities/busy.py +0 -61
  644. bootstack-0.1.0a9/src/bootstack/core/capabilities/clipboard.py +0 -88
  645. bootstack-0.1.0a9/src/bootstack/core/capabilities/grid.py +0 -188
  646. bootstack-0.1.0a9/src/bootstack/core/capabilities/localization.py +0 -231
  647. bootstack-0.1.0a9/src/bootstack/core/capabilities/pack.py +0 -119
  648. bootstack-0.1.0a9/src/bootstack/core/capabilities/place.py +0 -92
  649. bootstack-0.1.0a9/src/bootstack/core/capabilities/selection.py +0 -136
  650. bootstack-0.1.0a9/src/bootstack/core/capabilities/signals.py +0 -242
  651. bootstack-0.1.0a9/src/bootstack/core/exceptions.py +0 -95
  652. bootstack-0.1.0a9/src/bootstack/core/images.py +0 -283
  653. bootstack-0.1.0a9/src/bootstack/core/localization/README.md +0 -90
  654. bootstack-0.1.0a9/src/bootstack/core/localization/__init__.py +0 -13
  655. bootstack-0.1.0a9/src/bootstack/core/localization/intl_format.py +0 -580
  656. bootstack-0.1.0a9/src/bootstack/core/localization/msgcat.py +0 -425
  657. bootstack-0.1.0a9/src/bootstack/core/localization/specs.py +0 -143
  658. bootstack-0.1.0a9/src/bootstack/core/mixins/widget.py +0 -132
  659. bootstack-0.1.0a9/src/bootstack/core/publisher.py +0 -147
  660. bootstack-0.1.0a9/src/bootstack/core/signals/README.md +0 -112
  661. bootstack-0.1.0a9/src/bootstack/core/signals/__init__.py +0 -8
  662. bootstack-0.1.0a9/src/bootstack/core/signals/integration.py +0 -100
  663. bootstack-0.1.0a9/src/bootstack/core/signals/signal.py +0 -317
  664. bootstack-0.1.0a9/src/bootstack/core/signals/types.py +0 -4
  665. bootstack-0.1.0a9/src/bootstack/core/validation/__init__.py +0 -5
  666. bootstack-0.1.0a9/src/bootstack/core/validation/types.py +0 -13
  667. bootstack-0.1.0a9/src/bootstack/core/validation/validation_rules.py +0 -112
  668. bootstack-0.1.0a9/src/bootstack/datasource/README.md +0 -612
  669. bootstack-0.1.0a9/src/bootstack/datasource/__init__.py +0 -51
  670. bootstack-0.1.0a9/src/bootstack/datasource/base.py +0 -510
  671. bootstack-0.1.0a9/src/bootstack/datasource/file_source.py +0 -541
  672. bootstack-0.1.0a9/src/bootstack/datasource/memory_source.py +0 -524
  673. bootstack-0.1.0a9/src/bootstack/datasource/sqlite_source.py +0 -472
  674. bootstack-0.1.0a9/src/bootstack/datasource/types.py +0 -292
  675. bootstack-0.1.0a9/src/bootstack/dialogs/__init__.py +0 -56
  676. bootstack-0.1.0a9/src/bootstack/dialogs/colorchooser.py +0 -674
  677. bootstack-0.1.0a9/src/bootstack/dialogs/colordropper.py +0 -257
  678. bootstack-0.1.0a9/src/bootstack/dialogs/datedialog.py +0 -430
  679. bootstack-0.1.0a9/src/bootstack/dialogs/dialog.py +0 -514
  680. bootstack-0.1.0a9/src/bootstack/dialogs/filterdialog.py +0 -358
  681. bootstack-0.1.0a9/src/bootstack/dialogs/fontdialog.py +0 -339
  682. bootstack-0.1.0a9/src/bootstack/dialogs/formdialog.py +0 -541
  683. bootstack-0.1.0a9/src/bootstack/dialogs/message.py +0 -489
  684. bootstack-0.1.0a9/src/bootstack/dialogs/query.py +0 -561
  685. bootstack-0.1.0a9/src/bootstack/runtime/app.py +0 -889
  686. bootstack-0.1.0a9/src/bootstack/runtime/base_window.py +0 -811
  687. bootstack-0.1.0a9/src/bootstack/runtime/menu.py +0 -463
  688. bootstack-0.1.0a9/src/bootstack/runtime/shortcuts.py +0 -423
  689. bootstack-0.1.0a9/src/bootstack/runtime/tk_patch.py +0 -31
  690. bootstack-0.1.0a9/src/bootstack/runtime/toplevel.py +0 -131
  691. bootstack-0.1.0a9/src/bootstack/runtime/utility.py +0 -371
  692. bootstack-0.1.0a9/src/bootstack/runtime/window_utilities.py +0 -1050
  693. bootstack-0.1.0a9/src/bootstack/style/__init__.py +0 -5498
  694. bootstack-0.1.0a9/src/bootstack/style/bootstyle.py +0 -507
  695. bootstack-0.1.0a9/src/bootstack/style/bootstyle_builder_base.py +0 -752
  696. bootstack-0.1.0a9/src/bootstack/style/bootstyle_builder_mixed.py +0 -93
  697. bootstack-0.1.0a9/src/bootstack/style/bootstyle_builder_tk.py +0 -109
  698. bootstack-0.1.0a9/src/bootstack/style/bootstyle_builder_ttk.py +0 -354
  699. bootstack-0.1.0a9/src/bootstack/style/builders/__init__.py +0 -51
  700. bootstack-0.1.0a9/src/bootstack/style/builders/badge.py +0 -44
  701. bootstack-0.1.0a9/src/bootstack/style/builders/button.py +0 -453
  702. bootstack-0.1.0a9/src/bootstack/style/builders/buttongroup.py +0 -344
  703. bootstack-0.1.0a9/src/bootstack/style/builders/calendar.py +0 -271
  704. bootstack-0.1.0a9/src/bootstack/style/builders/checkbutton.py +0 -125
  705. bootstack-0.1.0a9/src/bootstack/style/builders/combobox.py +0 -112
  706. bootstack-0.1.0a9/src/bootstack/style/builders/contextmenu.py +0 -268
  707. bootstack-0.1.0a9/src/bootstack/style/builders/entry.py +0 -83
  708. bootstack-0.1.0a9/src/bootstack/style/builders/expander.py +0 -171
  709. bootstack-0.1.0a9/src/bootstack/style/builders/field.py +0 -318
  710. bootstack-0.1.0a9/src/bootstack/style/builders/frame.py +0 -27
  711. bootstack-0.1.0a9/src/bootstack/style/builders/label.py +0 -28
  712. bootstack-0.1.0a9/src/bootstack/style/builders/labelframe.py +0 -41
  713. bootstack-0.1.0a9/src/bootstack/style/builders/listview.py +0 -264
  714. bootstack-0.1.0a9/src/bootstack/style/builders/menubar.py +0 -74
  715. bootstack-0.1.0a9/src/bootstack/style/builders/menubutton.py +0 -408
  716. bootstack-0.1.0a9/src/bootstack/style/builders/notebook.py +0 -316
  717. bootstack-0.1.0a9/src/bootstack/style/builders/panedwindow.py +0 -25
  718. bootstack-0.1.0a9/src/bootstack/style/builders/progressbar.py +0 -71
  719. bootstack-0.1.0a9/src/bootstack/style/builders/radiobutton.py +0 -97
  720. bootstack-0.1.0a9/src/bootstack/style/builders/scale.py +0 -66
  721. bootstack-0.1.0a9/src/bootstack/style/builders/scrollbar.py +0 -360
  722. bootstack-0.1.0a9/src/bootstack/style/builders/separator.py +0 -45
  723. bootstack-0.1.0a9/src/bootstack/style/builders/sidenav.py +0 -313
  724. bootstack-0.1.0a9/src/bootstack/style/builders/sizegrip.py +0 -15
  725. bootstack-0.1.0a9/src/bootstack/style/builders/spinbox.py +0 -119
  726. bootstack-0.1.0a9/src/bootstack/style/builders/switch.py +0 -67
  727. bootstack-0.1.0a9/src/bootstack/style/builders/tabitem.py +0 -205
  728. bootstack-0.1.0a9/src/bootstack/style/builders/toolbutton.py +0 -260
  729. bootstack-0.1.0a9/src/bootstack/style/builders/tooltip.py +0 -26
  730. bootstack-0.1.0a9/src/bootstack/style/builders/treeview.py +0 -269
  731. bootstack-0.1.0a9/src/bootstack/style/builders/utils.py +0 -430
  732. bootstack-0.1.0a9/src/bootstack/style/builders_tk/__init__.py +0 -16
  733. bootstack-0.1.0a9/src/bootstack/style/builders_tk/defaults.py +0 -229
  734. bootstack-0.1.0a9/src/bootstack/style/style.py +0 -499
  735. bootstack-0.1.0a9/src/bootstack/style/theme_provider.py +0 -449
  736. bootstack-0.1.0a9/src/bootstack/style/tk_patch.py +0 -5
  737. bootstack-0.1.0a9/src/bootstack/style/token_maps.py +0 -42
  738. bootstack-0.1.0a9/src/bootstack/style/types.py +0 -32
  739. bootstack-0.1.0a9/src/bootstack/style/typography.py +0 -527
  740. bootstack-0.1.0a9/src/bootstack/style/utility.py +0 -696
  741. bootstack-0.1.0a9/src/bootstack/themes/__init__.py +0 -12
  742. bootstack-0.1.0a9/src/bootstack/themes/standard.py +0 -415
  743. bootstack-0.1.0a9/src/bootstack/themes/user.py +0 -45
  744. bootstack-0.1.0a9/src/bootstack/widgets/__init__.py +0 -53
  745. bootstack-0.1.0a9/src/bootstack/widgets/composites/__init__.py +0 -38
  746. bootstack-0.1.0a9/src/bootstack/widgets/composites/accordion.py +0 -385
  747. bootstack-0.1.0a9/src/bootstack/widgets/composites/appshell.py +0 -476
  748. bootstack-0.1.0a9/src/bootstack/widgets/composites/buttongroup.py +0 -391
  749. bootstack-0.1.0a9/src/bootstack/widgets/composites/calendar.py +0 -914
  750. bootstack-0.1.0a9/src/bootstack/widgets/composites/compositeframe.py +0 -282
  751. bootstack-0.1.0a9/src/bootstack/widgets/composites/contextmenu.py +0 -1754
  752. bootstack-0.1.0a9/src/bootstack/widgets/composites/dateentry.py +0 -434
  753. bootstack-0.1.0a9/src/bootstack/widgets/composites/dropdownbutton.py +0 -188
  754. bootstack-0.1.0a9/src/bootstack/widgets/composites/expander.py +0 -508
  755. bootstack-0.1.0a9/src/bootstack/widgets/composites/field.py +0 -474
  756. bootstack-0.1.0a9/src/bootstack/widgets/composites/floodgauge.py +0 -434
  757. bootstack-0.1.0a9/src/bootstack/widgets/composites/form.py +0 -982
  758. bootstack-0.1.0a9/src/bootstack/widgets/composites/labeledscale.py +0 -209
  759. bootstack-0.1.0a9/src/bootstack/widgets/composites/list/__init__.py +0 -15
  760. bootstack-0.1.0a9/src/bootstack/widgets/composites/list/listitem.py +0 -715
  761. bootstack-0.1.0a9/src/bootstack/widgets/composites/list/listview.py +0 -1212
  762. bootstack-0.1.0a9/src/bootstack/widgets/composites/menubar.py +0 -303
  763. bootstack-0.1.0a9/src/bootstack/widgets/composites/meter.py +0 -882
  764. bootstack-0.1.0a9/src/bootstack/widgets/composites/numericentry.py +0 -183
  765. bootstack-0.1.0a9/src/bootstack/widgets/composites/pagestack.py +0 -330
  766. bootstack-0.1.0a9/src/bootstack/widgets/composites/passwordentry.py +0 -149
  767. bootstack-0.1.0a9/src/bootstack/widgets/composites/pathentry.py +0 -223
  768. bootstack-0.1.0a9/src/bootstack/widgets/composites/radiogroup.py +0 -474
  769. bootstack-0.1.0a9/src/bootstack/widgets/composites/scrolledtext.py +0 -388
  770. bootstack-0.1.0a9/src/bootstack/widgets/composites/scrollview.py +0 -684
  771. bootstack-0.1.0a9/src/bootstack/widgets/composites/selectbox.py +0 -551
  772. bootstack-0.1.0a9/src/bootstack/widgets/composites/sidenav/__init__.py +0 -24
  773. bootstack-0.1.0a9/src/bootstack/widgets/composites/sidenav/group.py +0 -485
  774. bootstack-0.1.0a9/src/bootstack/widgets/composites/sidenav/header.py +0 -83
  775. bootstack-0.1.0a9/src/bootstack/widgets/composites/sidenav/item.py +0 -413
  776. bootstack-0.1.0a9/src/bootstack/widgets/composites/sidenav/separator.py +0 -51
  777. bootstack-0.1.0a9/src/bootstack/widgets/composites/sidenav/view.py +0 -910
  778. bootstack-0.1.0a9/src/bootstack/widgets/composites/spinnerentry.py +0 -232
  779. bootstack-0.1.0a9/src/bootstack/widgets/composites/tableview/tableview.py +0 -2254
  780. bootstack-0.1.0a9/src/bootstack/widgets/composites/tabs/__init__.py +0 -6
  781. bootstack-0.1.0a9/src/bootstack/widgets/composites/tabs/tabitem.py +0 -372
  782. bootstack-0.1.0a9/src/bootstack/widgets/composites/tabs/tabs.py +0 -478
  783. bootstack-0.1.0a9/src/bootstack/widgets/composites/tabs/tabview.py +0 -352
  784. bootstack-0.1.0a9/src/bootstack/widgets/composites/textentry.py +0 -87
  785. bootstack-0.1.0a9/src/bootstack/widgets/composites/timeentry.py +0 -196
  786. bootstack-0.1.0a9/src/bootstack/widgets/composites/toast.py +0 -371
  787. bootstack-0.1.0a9/src/bootstack/widgets/composites/togglegroup.py +0 -382
  788. bootstack-0.1.0a9/src/bootstack/widgets/composites/toolbar.py +0 -393
  789. bootstack-0.1.0a9/src/bootstack/widgets/composites/tooltip.py +0 -404
  790. bootstack-0.1.0a9/src/bootstack/widgets/internal/__init__.py +0 -0
  791. bootstack-0.1.0a9/src/bootstack/widgets/internal/wrapper_base.py +0 -304
  792. bootstack-0.1.0a9/src/bootstack/widgets/mixins/__init__.py +0 -25
  793. bootstack-0.1.0a9/src/bootstack/widgets/mixins/configure_mixin.py +0 -186
  794. bootstack-0.1.0a9/src/bootstack/widgets/mixins/entry_mixin.py +0 -70
  795. bootstack-0.1.0a9/src/bootstack/widgets/mixins/font_mixin.py +0 -346
  796. bootstack-0.1.0a9/src/bootstack/widgets/mixins/icon_mixin.py +0 -38
  797. bootstack-0.1.0a9/src/bootstack/widgets/mixins/localization_mixin.py +0 -255
  798. bootstack-0.1.0a9/src/bootstack/widgets/mixins/signal_mixin.py +0 -272
  799. bootstack-0.1.0a9/src/bootstack/widgets/mixins/validation_mixin.py +0 -204
  800. bootstack-0.1.0a9/src/bootstack/widgets/parts/__init__.py +0 -11
  801. bootstack-0.1.0a9/src/bootstack/widgets/parts/numberentry_part.py +0 -345
  802. bootstack-0.1.0a9/src/bootstack/widgets/parts/spinnerentry_part.py +0 -394
  803. bootstack-0.1.0a9/src/bootstack/widgets/parts/textentry_part.py +0 -346
  804. bootstack-0.1.0a9/src/bootstack/widgets/primitives/__init__.py +0 -55
  805. bootstack-0.1.0a9/src/bootstack/widgets/primitives/badge.py +0 -44
  806. bootstack-0.1.0a9/src/bootstack/widgets/primitives/button.py +0 -89
  807. bootstack-0.1.0a9/src/bootstack/widgets/primitives/card.py +0 -66
  808. bootstack-0.1.0a9/src/bootstack/widgets/primitives/checkbutton.py +0 -134
  809. bootstack-0.1.0a9/src/bootstack/widgets/primitives/checktoggle.py +0 -58
  810. bootstack-0.1.0a9/src/bootstack/widgets/primitives/combobox.py +0 -165
  811. bootstack-0.1.0a9/src/bootstack/widgets/primitives/entry.py +0 -98
  812. bootstack-0.1.0a9/src/bootstack/widgets/primitives/frame.py +0 -206
  813. bootstack-0.1.0a9/src/bootstack/widgets/primitives/gridframe.py +0 -479
  814. bootstack-0.1.0a9/src/bootstack/widgets/primitives/label.py +0 -95
  815. bootstack-0.1.0a9/src/bootstack/widgets/primitives/labelframe.py +0 -63
  816. bootstack-0.1.0a9/src/bootstack/widgets/primitives/menubutton.py +0 -118
  817. bootstack-0.1.0a9/src/bootstack/widgets/primitives/notebook.py +0 -551
  818. bootstack-0.1.0a9/src/bootstack/widgets/primitives/optionmenu.py +0 -248
  819. bootstack-0.1.0a9/src/bootstack/widgets/primitives/packframe.py +0 -228
  820. bootstack-0.1.0a9/src/bootstack/widgets/primitives/panedwindow.py +0 -58
  821. bootstack-0.1.0a9/src/bootstack/widgets/primitives/progressbar.py +0 -95
  822. bootstack-0.1.0a9/src/bootstack/widgets/primitives/radiobutton.py +0 -125
  823. bootstack-0.1.0a9/src/bootstack/widgets/primitives/radiotoggle.py +0 -50
  824. bootstack-0.1.0a9/src/bootstack/widgets/primitives/scale.py +0 -85
  825. bootstack-0.1.0a9/src/bootstack/widgets/primitives/scrollbar.py +0 -56
  826. bootstack-0.1.0a9/src/bootstack/widgets/primitives/separator.py +0 -56
  827. bootstack-0.1.0a9/src/bootstack/widgets/primitives/sizegrip.py +0 -47
  828. bootstack-0.1.0a9/src/bootstack/widgets/primitives/spinbox.py +0 -91
  829. bootstack-0.1.0a9/src/bootstack/widgets/primitives/switch.py +0 -41
  830. bootstack-0.1.0a9/src/bootstack/widgets/primitives/treeview.py +0 -77
  831. bootstack-0.1.0a9/src/bootstack/widgets/types.py +0 -20
  832. bootstack-0.1.0a9/src/bootstack.egg-info/PKG-INFO +0 -214
  833. bootstack-0.1.0a9/src/bootstack.egg-info/SOURCES.txt +0 -428
  834. bootstack-0.1.0a9/src/bootstack.egg-info/requires.txt +0 -11
  835. bootstack-0.1.0a9/tests/test_togglegroup.py +0 -147
  836. bootstack-0.1.0a9/tests/test_variables.py +0 -81
  837. {bootstack-0.1.0a9 → bootstack-0.1.0a11}/MANIFEST.in +0 -0
  838. {bootstack-0.1.0a9 → bootstack-0.1.0a11}/NOTICE +0 -0
  839. {bootstack-0.1.0a9 → bootstack-0.1.0a11}/setup.cfg +0 -0
  840. {bootstack-0.1.0a9 → bootstack-0.1.0a11}/src/bootstack/__main__.py +0 -0
  841. {bootstack-0.1.0a9/src/bootstack/core → bootstack-0.1.0a11/src/bootstack/_core}/capabilities/after.py +0 -0
  842. {bootstack-0.1.0a9/src/bootstack/core → bootstack-0.1.0a11/src/bootstack/_core}/capabilities/bindtags.py +0 -0
  843. {bootstack-0.1.0a9/src/bootstack/core → bootstack-0.1.0a11/src/bootstack/_core}/capabilities/focus.py +0 -0
  844. {bootstack-0.1.0a9/src/bootstack/core → bootstack-0.1.0a11/src/bootstack/_core}/capabilities/grab.py +0 -0
  845. {bootstack-0.1.0a9/src/bootstack/core → bootstack-0.1.0a11/src/bootstack/_core}/capabilities/winfo.py +0 -0
  846. {bootstack-0.1.0a9/src/bootstack/core → bootstack-0.1.0a11/src/bootstack/_core}/colorutils.py +0 -0
  847. {bootstack-0.1.0a9/src/bootstack/core → bootstack-0.1.0a11/src/bootstack/_core}/mixins/__init__.py +0 -0
  848. {bootstack-0.1.0a9/src/bootstack/core → bootstack-0.1.0a11/src/bootstack/_core}/mixins/ttk_state.py +0 -0
  849. {bootstack-0.1.0a9/src/bootstack/core → bootstack-0.1.0a11/src/bootstack/_core}/variables.py +0 -0
  850. {bootstack-0.1.0a9/src/bootstack/runtime → bootstack-0.1.0a11/src/bootstack/_runtime}/__init__.py +0 -0
  851. {bootstack-0.1.0a9/src/bootstack/runtime → bootstack-0.1.0a11/src/bootstack/_runtime}/events.py +0 -0
  852. {bootstack-0.1.0a9/src/bootstack/runtime → bootstack-0.1.0a11/src/bootstack/_runtime}/visual_focus.py +0 -0
  853. {bootstack-0.1.0a9 → bootstack-0.1.0a11}/src/bootstack/assets/elements/__init__.py +0 -0
  854. {bootstack-0.1.0a9 → bootstack-0.1.0a11}/src/bootstack/assets/elements/list-item-separated.png +0 -0
  855. {bootstack-0.1.0a9 → bootstack-0.1.0a11}/src/bootstack/assets/elements/list-item.png +0 -0
  856. {bootstack-0.1.0a9 → bootstack-0.1.0a11}/src/bootstack/assets/elements/menu-item.png +0 -0
  857. {bootstack-0.1.0a9 → bootstack-0.1.0a11}/src/bootstack/cli/__main__.py +0 -0
  858. {bootstack-0.1.0a9 → bootstack-0.1.0a11}/src/bootstack/cli/build.py +0 -0
  859. {bootstack-0.1.0a9 → bootstack-0.1.0a11}/src/bootstack/cli/doctor.py +0 -0
  860. {bootstack-0.1.0a9 → bootstack-0.1.0a11}/src/bootstack/cli/promote.py +0 -0
  861. {bootstack-0.1.0a9 → bootstack-0.1.0a11}/src/bootstack/py.typed +0 -0
  862. {bootstack-0.1.0a9 → bootstack-0.1.0a11}/src/bootstack/style/element.py +0 -0
  863. {bootstack-0.1.0a9/src/bootstack/core → bootstack-0.1.0a11/src/bootstack}/validation/validation_result.py +0 -0
  864. {bootstack-0.1.0a9/src/bootstack/assets/themes → bootstack-0.1.0a11/src/bootstack/widgets/_impl/_internal}/__init__.py +0 -0
  865. {bootstack-0.1.0a9/src/bootstack/widgets → bootstack-0.1.0a11/src/bootstack/widgets/_impl}/composites/scrolledtext.pyi +0 -0
  866. {bootstack-0.1.0a9/src/bootstack/widgets → bootstack-0.1.0a11/src/bootstack/widgets/_impl}/composites/tableview/__init__.py +0 -0
  867. {bootstack-0.1.0a9/src/bootstack/widgets → bootstack-0.1.0a11/src/bootstack/widgets/_impl}/composites/tableview/types.py +0 -0
  868. {bootstack-0.1.0a9 → bootstack-0.1.0a11}/src/bootstack.egg-info/dependency_links.txt +0 -0
  869. {bootstack-0.1.0a9 → bootstack-0.1.0a11}/src/bootstack.egg-info/entry_points.txt +0 -0
  870. {bootstack-0.1.0a9 → bootstack-0.1.0a11}/src/bootstack.egg-info/top_level.txt +0 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2021 - 2026 Israel Dryer
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,264 @@
1
+ Metadata-Version: 2.4
2
+ Name: bootstack
3
+ Version: 0.1.0a11
4
+ Summary: From idea to a shipped desktop app, fast — a declarative, reactive, batteries-included Python UI framework with 60+ widgets, semantic theming, and built-in packaging.
5
+ Author-email: Israel Dryer <israel.dryer@gmail.com>
6
+ License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/israel-dryer/bootstack
8
+ Project-URL: Documentation, https://bootstack.org/
9
+ Keywords: tkinter,ttk,gui,desktop,python3,ui,widgets,theming,cross-platform,modern,framework,application-framework,desktop-ui,python-gui
10
+ Classifier: Development Status :: 3 - Alpha
11
+ Classifier: Environment :: Win32 (MS Windows)
12
+ Classifier: Environment :: X11 Applications :: GTK
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.12
16
+ Classifier: Programming Language :: Python :: 3.13
17
+ Classifier: Programming Language :: Python :: 3.14
18
+ Classifier: Topic :: Software Development :: User Interfaces
19
+ Classifier: Operating System :: OS Independent
20
+ Requires-Python: >=3.12
21
+ Description-Content-Type: text/markdown
22
+ License-File: LICENSE
23
+ License-File: NOTICE
24
+ Requires-Dist: pillow<=12,>=10
25
+ Requires-Dist: typing-extensions>=4.10
26
+ Requires-Dist: Babel>=2.12
27
+ Requires-Dist: python-dateutil>=2.9
28
+ Requires-Dist: dateparser>=1.1
29
+ Requires-Dist: pywinstyles>=1.8; sys_platform == "win32"
30
+ Requires-Dist: screeninfo>=0.8
31
+ Provides-Extra: excel
32
+ Requires-Dist: XlsxWriter>=3; extra == "excel"
33
+ Provides-Extra: parquet
34
+ Requires-Dist: pyarrow>=14; extra == "parquet"
35
+ Provides-Extra: hdf5
36
+ Requires-Dist: pandas>=2; extra == "hdf5"
37
+ Requires-Dist: tables>=3.8; extra == "hdf5"
38
+ Provides-Extra: docs
39
+ Requires-Dist: sphinx>=7.2; extra == "docs"
40
+ Requires-Dist: pydata-sphinx-theme; extra == "docs"
41
+ Requires-Dist: sphinx-design; extra == "docs"
42
+ Requires-Dist: sphinx-copybutton; extra == "docs"
43
+ Requires-Dist: sphinx-autobuild; extra == "docs"
44
+ Dynamic: license-file
45
+
46
+ ![bootstack](https://raw.githubusercontent.com/israel-dryer/bootstack/main/assets/banner-readme.png)
47
+
48
+ ![](https://img.shields.io/github/release/israel-dryer/bootstack.svg)
49
+ [![Downloads](https://pepy.tech/badge/bootstack)](https://pepy.tech/project/bootstack)
50
+ [![Downloads](https://pepy.tech/badge/bootstack/month)](https://pepy.tech/project/bootstack)
51
+ ![](https://img.shields.io/github/issues/israel-dryer/bootstack.svg)
52
+ ![](https://img.shields.io/github/issues-closed/israel-dryer/bootstack.svg)
53
+ ![](https://img.shields.io/github/license/israel-dryer/bootstack.svg)
54
+ ![](https://img.shields.io/github/stars/israel-dryer/bootstack.svg)
55
+ ![](https://img.shields.io/github/forks/israel-dryer/bootstack.svg)
56
+
57
+ > **Pre-release.** The API may still change before 1.0. Full documentation is at
58
+ > **[bootstack.org](https://bootstack.org)**.
59
+
60
+ ### From idea to a shipped desktop app — fast.
61
+
62
+ bootstack gives engineers, data scientists, and hobbyists everything to build a
63
+ polished desktop interface and package it into a standalone executable —
64
+ declarative, reactive, and batteries-included, all in pure Python.
65
+
66
+ <picture>
67
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/israel-dryer/bootstack/main/assets/readme/hero-dark.png">
68
+ <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/israel-dryer/bootstack/main/assets/readme/hero-light.png">
69
+ <img alt="bootstack hero demo" src="https://raw.githubusercontent.com/israel-dryer/bootstack/main/assets/readme/hero-light.png">
70
+ </picture>
71
+
72
+ ## Why bootstack?
73
+
74
+ Most Python desktop frameworks make you fight the framework. bootstack gets out of the way.
75
+
76
+ - **30% less code** — the declarative, context-manager layout eliminates geometry calls, explicit parenting, and most of the wiring boilerplate
77
+ - **Reads like Python** — nested `with` blocks mirror your UI structure; the code hierarchy *is* the layout
78
+ - **Modern layout system** — `HStack`, `VStack`, and `Grid` containers handle spacing, alignment, and fill automatically; CSS conventions (`gap`, `padding`, `margin`, `fill`, `anchor`) without writing CSS
79
+ - **60+ widgets out of the box** — primitives through full composites: tables, trees, calendars, date pickers, gauges, sliders, and more — including a full `CodeEditor` with syntax highlighting, line numbers, bracket matching, smart indent, and search; no external editor dependency required
80
+ - **Reactive signals** — observable state that flows between widgets; bind once, update everywhere
81
+ - **Event and stream pipelines** — compose, filter, debounce, and throttle UI events with a chainable stream API
82
+ - **Built-in icons** — the full Bootstrap Icons catalog, theme-aware and DPI-scaled, bundled with the framework
83
+ - **Built-in localization** — 23 language catalogs, locale-aware number/date/time formatting, runtime language switching
84
+ - **Semantic styling** — `accent="primary"`, `variant="outline"` — no hard-coded colors; looks right across every theme automatically
85
+ - **8 paired light/dark themes** — with a runtime switcher and a custom-theme API
86
+ - **Forms and validation** — field-level validators, inline error messages, and a `FormDialog` for quick modal forms
87
+ - **DataSource abstraction** — one interface over SQLite, in-memory, and file backends with filtering, sorting, pagination, and CRUD
88
+ - **A real CLI** — scaffold, run, add pages/views/dialogs/themes, and package for distribution
89
+ - **PyInstaller packaging built in** — `bootstack build` produces a standalone executable; no separate toolchain required
90
+
91
+ ## Installation
92
+
93
+ Requires Python 3.12+ and Tk/Tcl (bundled with most Python distributions).
94
+ bootstack is in pre-release, so opt in with `--pre`:
95
+
96
+ ```bash
97
+ python -m pip install --pre bootstack
98
+ ```
99
+
100
+ See the [installation guide](https://bootstack.org/getting-started/installation/)
101
+ for platform-specific Tk setup and the optional data-format extras.
102
+
103
+ ## See it
104
+
105
+ The widget gallery is a single-window tour of everything bootstack ships — every widget, theme switcher, accent variants, and layout containers. Fastest way to see the framework in action without writing a line of code:
106
+
107
+ ```bash
108
+ bootstack gallery
109
+ ```
110
+
111
+ <picture>
112
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/israel-dryer/bootstack/main/assets/readme/gallery-dark.png">
113
+ <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/israel-dryer/bootstack/main/assets/readme/gallery-light.png">
114
+ <img alt="bootstack widget gallery" src="https://raw.githubusercontent.com/israel-dryer/bootstack/main/assets/readme/gallery-light.png">
115
+ </picture>
116
+
117
+ ## Quick Start
118
+
119
+ ```python
120
+ import bootstack as bs
121
+
122
+ with bs.App(title="Hello", padding=16, gap=16) as app:
123
+ bs.Label("Hello from bootstack!")
124
+ bs.Button("Primary", accent="primary")
125
+ bs.Button("Success", accent="success")
126
+ bs.Button("Danger Outline", accent="danger", variant="outline")
127
+
128
+ app.run()
129
+ ```
130
+
131
+ <picture>
132
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/israel-dryer/bootstack/main/assets/readme/ex-quickstart-dark.png">
133
+ <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/israel-dryer/bootstack/main/assets/readme/ex-quickstart-light.png">
134
+ <img alt="bootstack quick start example" src="https://raw.githubusercontent.com/israel-dryer/bootstack/main/assets/readme/ex-quickstart-light.png">
135
+ </picture>
136
+
137
+ For navigation-based apps, use `AppShell` — it gives you stacked toolbars, a sidebar, and a page stack in one call:
138
+
139
+ ```python
140
+ import bootstack as bs
141
+
142
+ shell = bs.AppShell(title="My App", size=(1000, 650))
143
+
144
+ with shell.add_page("home", text="Home", icon="house"):
145
+ bs.Label("Welcome!")
146
+
147
+ with shell.add_page("docs", text="Documents", icon="file-earmark-text"):
148
+ bs.Label("Your documents.")
149
+
150
+ shell.run()
151
+ ```
152
+
153
+ ## How it works
154
+
155
+ ### Layout containers
156
+
157
+ `VStack`, `HStack`, and `Grid` let you describe a layout once instead of repeating geometry calls on each child:
158
+
159
+ ```python
160
+ with bs.App(title="Sign In") as app:
161
+ with bs.Grid(columns=["auto", 1], gap=(12, 6), sticky_items="ew", padding=16):
162
+ bs.Label("Name:")
163
+ bs.TextField(placeholder="Full name")
164
+ bs.Label("Email:")
165
+ bs.TextField(placeholder="email@example.com")
166
+ bs.Label("Role:")
167
+ bs.Select(options=["Admin", "User", "Viewer"], value="User")
168
+ bs.Button("Submit", accent="primary", columnspan=2)
169
+
170
+ app.run()
171
+ ```
172
+
173
+ <picture>
174
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/israel-dryer/bootstack/main/assets/readme/ex-layout-dark.png">
175
+ <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/israel-dryer/bootstack/main/assets/readme/ex-layout-light.png">
176
+ <img alt="bootstack layout containers example" src="https://raw.githubusercontent.com/israel-dryer/bootstack/main/assets/readme/ex-layout-light.png">
177
+ </picture>
178
+
179
+ ### Semantic styling
180
+
181
+ Widgets take an `accent` (color intent) and `variant` (visual weight) instead of hard-coded colors, so the same code looks right across themes and light/dark modes:
182
+
183
+ ```python
184
+ bs.Button("Save", accent="primary")
185
+ bs.Button("Cancel", accent="secondary", variant="outline")
186
+ bs.Label("Heading", font="heading-lg")
187
+ ```
188
+
189
+ <picture>
190
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/israel-dryer/bootstack/main/assets/readme/ex-semantic-styling-dark.png">
191
+ <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/israel-dryer/bootstack/main/assets/readme/ex-semantic-styling-light.png">
192
+ <img alt="bootstack semantic styling example" src="https://raw.githubusercontent.com/israel-dryer/bootstack/main/assets/readme/ex-semantic-styling-light.png">
193
+ </picture>
194
+
195
+ ### Signals (optional)
196
+
197
+ Plain callbacks work fine for most things. When state needs to flow between widgets, signals give you a small reactive primitive with two-way binding:
198
+
199
+ ```python
200
+ with bs.App(title="Hello") as app:
201
+ name = bs.Signal("World")
202
+ bs.Label(textsignal=name) # updates automatically when name changes
203
+ bs.TextField(textsignal=name) # two-way binding to the same state
204
+
205
+ app.run()
206
+ ```
207
+
208
+ ## Features
209
+
210
+ - **Application scaffolding** — `App` for blank windows, `AppShell` for command-bar + sidebar + page-stack apps, undecorated windows with custom chrome
211
+ - **60+ themed widgets** — primitives plus higher-level composites (DataTable, Tree, ListView, Calendar, DateField, Form, Gauge, ToggleGroup, PageStack, Carousel, Tooltip, and more)
212
+ - **Dialogs and messages** — `alert()` / `confirm()` / `ask_*()` prompts and `FormDialog` / `FontDialog` / `FilterDialog`, plus non-blocking `toast()`, `Notification`, and `Snackbar` surfaces
213
+ - **Layout containers** — `VStack`, `HStack`, and `Grid` for declarative layouts; `Card`, `GroupBox`, `ScrollView`, `SplitView`, `Accordion`, `Expander`
214
+ - **Design system** — semantic `accent` colors (primary, secondary, success, danger, warning, info) and `variant` tokens (solid, outline, ghost), consistent across widgets
215
+ - **Built-in themes** — paired light/dark variants (amber, aurora, bootstrap, classic, docs, forest, ocean, rose) with runtime theme switching and a custom-theme API
216
+ - **Reactive signals** — observable state with subscribe/set, integrates with widgets via `signal=` / `textsignal=`
217
+ - **Forms & validation** — `Form` with built-in field-level validators and inline error messages
218
+ - **DataSource** — common interface over in-memory, SQLite, and file backends, with pagination, filtering, sorting, CRUD, and CSV/TSV/Excel export
219
+ - **Localization (i18n)** — 23 bundled message catalogs, locale-aware number/date/time formatting via Babel, runtime language switching
220
+ - **Icons & images** — Bootstrap Icons catalog with theme-aware recoloring, DPI scaling, and caching
221
+ - **Platform support** — DPI awareness, multi-monitor centering, mica/acrylic effects on Windows
222
+ - **CLI (`bootstack`)** — project scaffolding, run, add components, theme/i18n setup, doctor, build/package
223
+
224
+ ## Widget Categories
225
+
226
+ | Category | Widgets |
227
+ |----------|---------|
228
+ | **Actions** | Button, ButtonGroup, MenuButton, ContextMenu, Toolbar |
229
+ | **Inputs** | TextField, PasswordField, PathField, NumberField, SpinnerField, Slider, RangeSlider, TextArea, CodeEditor, DateField, TimeField |
230
+ | **Selection** | Checkbox, Switch, ToggleButton, Radio, RadioGroup, ToggleGroup, Select, SelectButton, Calendar |
231
+ | **Data Display** | Label, Badge, ListView, Tree, DataTable, ProgressBar, Gauge |
232
+ | **Media** | Avatar, Picture, Gallery, Carousel |
233
+ | **Layout** | VStack, HStack, Grid, Card, GroupBox, SplitView, ScrollView, Accordion, Separator |
234
+ | **Navigation** | AppShell, SideNav, StatusBar, Tabs, PageStack |
235
+ | **Dialogs** | `alert()`, `confirm()`, `ask_*()` prompts, FormDialog, FontDialog, FilterDialog |
236
+ | **Overlays** | `toast()`, Notification, Snackbar, Tooltip |
237
+ | **Forms** | Form, with field-level validation |
238
+
239
+ ## CLI
240
+
241
+ bootstack ships with an optional CLI for scaffolding, running, and packaging applications:
242
+
243
+ ```bash
244
+ bootstack gallery # Launch the interactive widget gallery
245
+ bootstack icons # Browse the built-in icon catalog
246
+ bootstack start MyApp # Create a new project (basic template)
247
+ bootstack start MyApp --template appshell # ...or with sidebar navigation
248
+ bootstack run # Run the app defined in the project config
249
+ bootstack add page Dashboard # Add a new page (appshell)
250
+ bootstack add view Settings # Add a new view (basic)
251
+ bootstack add dialog Preferences # Add a new dialog
252
+ bootstack add i18n --languages en es fr # Add i18n support
253
+ bootstack doctor # Diagnose project & environment
254
+ bootstack build # Package for distribution
255
+ ```
256
+
257
+ ## Documentation
258
+
259
+ Full documentation — guides, the widget catalog, and the API reference — lives at
260
+ **[bootstack.org](https://bootstack.org)**.
261
+
262
+ ## Links
263
+
264
+ - **GitHub**: https://github.com/israel-dryer/bootstack
@@ -0,0 +1,219 @@
1
+ ![bootstack](https://raw.githubusercontent.com/israel-dryer/bootstack/main/assets/banner-readme.png)
2
+
3
+ ![](https://img.shields.io/github/release/israel-dryer/bootstack.svg)
4
+ [![Downloads](https://pepy.tech/badge/bootstack)](https://pepy.tech/project/bootstack)
5
+ [![Downloads](https://pepy.tech/badge/bootstack/month)](https://pepy.tech/project/bootstack)
6
+ ![](https://img.shields.io/github/issues/israel-dryer/bootstack.svg)
7
+ ![](https://img.shields.io/github/issues-closed/israel-dryer/bootstack.svg)
8
+ ![](https://img.shields.io/github/license/israel-dryer/bootstack.svg)
9
+ ![](https://img.shields.io/github/stars/israel-dryer/bootstack.svg)
10
+ ![](https://img.shields.io/github/forks/israel-dryer/bootstack.svg)
11
+
12
+ > **Pre-release.** The API may still change before 1.0. Full documentation is at
13
+ > **[bootstack.org](https://bootstack.org)**.
14
+
15
+ ### From idea to a shipped desktop app — fast.
16
+
17
+ bootstack gives engineers, data scientists, and hobbyists everything to build a
18
+ polished desktop interface and package it into a standalone executable —
19
+ declarative, reactive, and batteries-included, all in pure Python.
20
+
21
+ <picture>
22
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/israel-dryer/bootstack/main/assets/readme/hero-dark.png">
23
+ <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/israel-dryer/bootstack/main/assets/readme/hero-light.png">
24
+ <img alt="bootstack hero demo" src="https://raw.githubusercontent.com/israel-dryer/bootstack/main/assets/readme/hero-light.png">
25
+ </picture>
26
+
27
+ ## Why bootstack?
28
+
29
+ Most Python desktop frameworks make you fight the framework. bootstack gets out of the way.
30
+
31
+ - **30% less code** — the declarative, context-manager layout eliminates geometry calls, explicit parenting, and most of the wiring boilerplate
32
+ - **Reads like Python** — nested `with` blocks mirror your UI structure; the code hierarchy *is* the layout
33
+ - **Modern layout system** — `HStack`, `VStack`, and `Grid` containers handle spacing, alignment, and fill automatically; CSS conventions (`gap`, `padding`, `margin`, `fill`, `anchor`) without writing CSS
34
+ - **60+ widgets out of the box** — primitives through full composites: tables, trees, calendars, date pickers, gauges, sliders, and more — including a full `CodeEditor` with syntax highlighting, line numbers, bracket matching, smart indent, and search; no external editor dependency required
35
+ - **Reactive signals** — observable state that flows between widgets; bind once, update everywhere
36
+ - **Event and stream pipelines** — compose, filter, debounce, and throttle UI events with a chainable stream API
37
+ - **Built-in icons** — the full Bootstrap Icons catalog, theme-aware and DPI-scaled, bundled with the framework
38
+ - **Built-in localization** — 23 language catalogs, locale-aware number/date/time formatting, runtime language switching
39
+ - **Semantic styling** — `accent="primary"`, `variant="outline"` — no hard-coded colors; looks right across every theme automatically
40
+ - **8 paired light/dark themes** — with a runtime switcher and a custom-theme API
41
+ - **Forms and validation** — field-level validators, inline error messages, and a `FormDialog` for quick modal forms
42
+ - **DataSource abstraction** — one interface over SQLite, in-memory, and file backends with filtering, sorting, pagination, and CRUD
43
+ - **A real CLI** — scaffold, run, add pages/views/dialogs/themes, and package for distribution
44
+ - **PyInstaller packaging built in** — `bootstack build` produces a standalone executable; no separate toolchain required
45
+
46
+ ## Installation
47
+
48
+ Requires Python 3.12+ and Tk/Tcl (bundled with most Python distributions).
49
+ bootstack is in pre-release, so opt in with `--pre`:
50
+
51
+ ```bash
52
+ python -m pip install --pre bootstack
53
+ ```
54
+
55
+ See the [installation guide](https://bootstack.org/getting-started/installation/)
56
+ for platform-specific Tk setup and the optional data-format extras.
57
+
58
+ ## See it
59
+
60
+ The widget gallery is a single-window tour of everything bootstack ships — every widget, theme switcher, accent variants, and layout containers. Fastest way to see the framework in action without writing a line of code:
61
+
62
+ ```bash
63
+ bootstack gallery
64
+ ```
65
+
66
+ <picture>
67
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/israel-dryer/bootstack/main/assets/readme/gallery-dark.png">
68
+ <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/israel-dryer/bootstack/main/assets/readme/gallery-light.png">
69
+ <img alt="bootstack widget gallery" src="https://raw.githubusercontent.com/israel-dryer/bootstack/main/assets/readme/gallery-light.png">
70
+ </picture>
71
+
72
+ ## Quick Start
73
+
74
+ ```python
75
+ import bootstack as bs
76
+
77
+ with bs.App(title="Hello", padding=16, gap=16) as app:
78
+ bs.Label("Hello from bootstack!")
79
+ bs.Button("Primary", accent="primary")
80
+ bs.Button("Success", accent="success")
81
+ bs.Button("Danger Outline", accent="danger", variant="outline")
82
+
83
+ app.run()
84
+ ```
85
+
86
+ <picture>
87
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/israel-dryer/bootstack/main/assets/readme/ex-quickstart-dark.png">
88
+ <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/israel-dryer/bootstack/main/assets/readme/ex-quickstart-light.png">
89
+ <img alt="bootstack quick start example" src="https://raw.githubusercontent.com/israel-dryer/bootstack/main/assets/readme/ex-quickstart-light.png">
90
+ </picture>
91
+
92
+ For navigation-based apps, use `AppShell` — it gives you stacked toolbars, a sidebar, and a page stack in one call:
93
+
94
+ ```python
95
+ import bootstack as bs
96
+
97
+ shell = bs.AppShell(title="My App", size=(1000, 650))
98
+
99
+ with shell.add_page("home", text="Home", icon="house"):
100
+ bs.Label("Welcome!")
101
+
102
+ with shell.add_page("docs", text="Documents", icon="file-earmark-text"):
103
+ bs.Label("Your documents.")
104
+
105
+ shell.run()
106
+ ```
107
+
108
+ ## How it works
109
+
110
+ ### Layout containers
111
+
112
+ `VStack`, `HStack`, and `Grid` let you describe a layout once instead of repeating geometry calls on each child:
113
+
114
+ ```python
115
+ with bs.App(title="Sign In") as app:
116
+ with bs.Grid(columns=["auto", 1], gap=(12, 6), sticky_items="ew", padding=16):
117
+ bs.Label("Name:")
118
+ bs.TextField(placeholder="Full name")
119
+ bs.Label("Email:")
120
+ bs.TextField(placeholder="email@example.com")
121
+ bs.Label("Role:")
122
+ bs.Select(options=["Admin", "User", "Viewer"], value="User")
123
+ bs.Button("Submit", accent="primary", columnspan=2)
124
+
125
+ app.run()
126
+ ```
127
+
128
+ <picture>
129
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/israel-dryer/bootstack/main/assets/readme/ex-layout-dark.png">
130
+ <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/israel-dryer/bootstack/main/assets/readme/ex-layout-light.png">
131
+ <img alt="bootstack layout containers example" src="https://raw.githubusercontent.com/israel-dryer/bootstack/main/assets/readme/ex-layout-light.png">
132
+ </picture>
133
+
134
+ ### Semantic styling
135
+
136
+ Widgets take an `accent` (color intent) and `variant` (visual weight) instead of hard-coded colors, so the same code looks right across themes and light/dark modes:
137
+
138
+ ```python
139
+ bs.Button("Save", accent="primary")
140
+ bs.Button("Cancel", accent="secondary", variant="outline")
141
+ bs.Label("Heading", font="heading-lg")
142
+ ```
143
+
144
+ <picture>
145
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/israel-dryer/bootstack/main/assets/readme/ex-semantic-styling-dark.png">
146
+ <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/israel-dryer/bootstack/main/assets/readme/ex-semantic-styling-light.png">
147
+ <img alt="bootstack semantic styling example" src="https://raw.githubusercontent.com/israel-dryer/bootstack/main/assets/readme/ex-semantic-styling-light.png">
148
+ </picture>
149
+
150
+ ### Signals (optional)
151
+
152
+ Plain callbacks work fine for most things. When state needs to flow between widgets, signals give you a small reactive primitive with two-way binding:
153
+
154
+ ```python
155
+ with bs.App(title="Hello") as app:
156
+ name = bs.Signal("World")
157
+ bs.Label(textsignal=name) # updates automatically when name changes
158
+ bs.TextField(textsignal=name) # two-way binding to the same state
159
+
160
+ app.run()
161
+ ```
162
+
163
+ ## Features
164
+
165
+ - **Application scaffolding** — `App` for blank windows, `AppShell` for command-bar + sidebar + page-stack apps, undecorated windows with custom chrome
166
+ - **60+ themed widgets** — primitives plus higher-level composites (DataTable, Tree, ListView, Calendar, DateField, Form, Gauge, ToggleGroup, PageStack, Carousel, Tooltip, and more)
167
+ - **Dialogs and messages** — `alert()` / `confirm()` / `ask_*()` prompts and `FormDialog` / `FontDialog` / `FilterDialog`, plus non-blocking `toast()`, `Notification`, and `Snackbar` surfaces
168
+ - **Layout containers** — `VStack`, `HStack`, and `Grid` for declarative layouts; `Card`, `GroupBox`, `ScrollView`, `SplitView`, `Accordion`, `Expander`
169
+ - **Design system** — semantic `accent` colors (primary, secondary, success, danger, warning, info) and `variant` tokens (solid, outline, ghost), consistent across widgets
170
+ - **Built-in themes** — paired light/dark variants (amber, aurora, bootstrap, classic, docs, forest, ocean, rose) with runtime theme switching and a custom-theme API
171
+ - **Reactive signals** — observable state with subscribe/set, integrates with widgets via `signal=` / `textsignal=`
172
+ - **Forms & validation** — `Form` with built-in field-level validators and inline error messages
173
+ - **DataSource** — common interface over in-memory, SQLite, and file backends, with pagination, filtering, sorting, CRUD, and CSV/TSV/Excel export
174
+ - **Localization (i18n)** — 23 bundled message catalogs, locale-aware number/date/time formatting via Babel, runtime language switching
175
+ - **Icons & images** — Bootstrap Icons catalog with theme-aware recoloring, DPI scaling, and caching
176
+ - **Platform support** — DPI awareness, multi-monitor centering, mica/acrylic effects on Windows
177
+ - **CLI (`bootstack`)** — project scaffolding, run, add components, theme/i18n setup, doctor, build/package
178
+
179
+ ## Widget Categories
180
+
181
+ | Category | Widgets |
182
+ |----------|---------|
183
+ | **Actions** | Button, ButtonGroup, MenuButton, ContextMenu, Toolbar |
184
+ | **Inputs** | TextField, PasswordField, PathField, NumberField, SpinnerField, Slider, RangeSlider, TextArea, CodeEditor, DateField, TimeField |
185
+ | **Selection** | Checkbox, Switch, ToggleButton, Radio, RadioGroup, ToggleGroup, Select, SelectButton, Calendar |
186
+ | **Data Display** | Label, Badge, ListView, Tree, DataTable, ProgressBar, Gauge |
187
+ | **Media** | Avatar, Picture, Gallery, Carousel |
188
+ | **Layout** | VStack, HStack, Grid, Card, GroupBox, SplitView, ScrollView, Accordion, Separator |
189
+ | **Navigation** | AppShell, SideNav, StatusBar, Tabs, PageStack |
190
+ | **Dialogs** | `alert()`, `confirm()`, `ask_*()` prompts, FormDialog, FontDialog, FilterDialog |
191
+ | **Overlays** | `toast()`, Notification, Snackbar, Tooltip |
192
+ | **Forms** | Form, with field-level validation |
193
+
194
+ ## CLI
195
+
196
+ bootstack ships with an optional CLI for scaffolding, running, and packaging applications:
197
+
198
+ ```bash
199
+ bootstack gallery # Launch the interactive widget gallery
200
+ bootstack icons # Browse the built-in icon catalog
201
+ bootstack start MyApp # Create a new project (basic template)
202
+ bootstack start MyApp --template appshell # ...or with sidebar navigation
203
+ bootstack run # Run the app defined in the project config
204
+ bootstack add page Dashboard # Add a new page (appshell)
205
+ bootstack add view Settings # Add a new view (basic)
206
+ bootstack add dialog Preferences # Add a new dialog
207
+ bootstack add i18n --languages en es fr # Add i18n support
208
+ bootstack doctor # Diagnose project & environment
209
+ bootstack build # Package for distribution
210
+ ```
211
+
212
+ ## Documentation
213
+
214
+ Full documentation — guides, the widget catalog, and the API reference — lives at
215
+ **[bootstack.org](https://bootstack.org)**.
216
+
217
+ ## Links
218
+
219
+ - **GitHub**: https://github.com/israel-dryer/bootstack
@@ -0,0 +1,139 @@
1
+ [build-system]
2
+ requires = ["setuptools>=61", "wheel"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "bootstack"
7
+ version = "0.1.0a11"
8
+ description = "From idea to a shipped desktop app, fast — a declarative, reactive, batteries-included Python UI framework with 60+ widgets, semantic theming, and built-in packaging."
9
+ readme = "README.md"
10
+ requires-python = ">=3.12"
11
+ license = "MIT"
12
+ authors = [
13
+ { name = "Israel Dryer", email = "israel.dryer@gmail.com" }
14
+ ]
15
+ keywords = [
16
+ "tkinter",
17
+ "ttk",
18
+ "gui",
19
+ "desktop",
20
+ "python3",
21
+ "ui",
22
+ "widgets",
23
+ "theming",
24
+ "cross-platform",
25
+ "modern",
26
+ "framework",
27
+ "application-framework",
28
+ "desktop-ui",
29
+ "python-gui"
30
+ ]
31
+ classifiers = [
32
+ "Development Status :: 3 - Alpha",
33
+ "Environment :: Win32 (MS Windows)",
34
+ "Environment :: X11 Applications :: GTK",
35
+ "Intended Audience :: Developers",
36
+ "Programming Language :: Python :: 3",
37
+ "Programming Language :: Python :: 3.12",
38
+ "Programming Language :: Python :: 3.13",
39
+ "Programming Language :: Python :: 3.14",
40
+ "Topic :: Software Development :: User Interfaces",
41
+ "Operating System :: OS Independent",
42
+ ]
43
+
44
+ dependencies = [
45
+ "pillow>=10,<=12",
46
+
47
+ # Backported typing primitives (Self, Unpack, ParamSpec, etc.)
48
+ "typing-extensions>=4.10",
49
+
50
+ # Runtime localization/formatting stack
51
+ "Babel>=2.12",
52
+ "python-dateutil>=2.9",
53
+ "dateparser>=1.1",
54
+
55
+ # Windows-specific: modern window effects (mica, acrylic, etc.)
56
+ "pywinstyles>=1.8; sys_platform == 'win32'",
57
+
58
+ # Multi-monitor support for proper window centering
59
+ "screeninfo>=0.8",
60
+ ]
61
+
62
+ [project.optional-dependencies]
63
+ # Excel (.xlsx) export for Table. Write-only, zero-dependency, pure Python.
64
+ excel = [
65
+ "XlsxWriter>=3",
66
+ ]
67
+ # Columnar formats — read/write Parquet and Feather/Arrow via pyarrow.
68
+ parquet = [
69
+ "pyarrow>=14",
70
+ ]
71
+ # Scientific tabular format — read/write HDF5 via pandas + PyTables.
72
+ hdf5 = [
73
+ "pandas>=2",
74
+ "tables>=3.8",
75
+ ]
76
+ docs = [
77
+ "sphinx>=7.2",
78
+ "pydata-sphinx-theme",
79
+ "sphinx-design",
80
+ "sphinx-copybutton",
81
+ "sphinx-autobuild",
82
+ ]
83
+
84
+ [project.urls]
85
+ Homepage = "https://github.com/israel-dryer/bootstack"
86
+ Documentation = "https://bootstack.org/"
87
+
88
+ [project.scripts]
89
+ bootstack = "bootstack.cli:main"
90
+
91
+ [tool.setuptools.packages.find]
92
+ where = ["src"]
93
+
94
+ [tool.setuptools.package-data]
95
+ "bootstack" = [
96
+ "assets/*",
97
+ "assets/icons/*",
98
+ # ship compiled gettext catalogs within the package
99
+ "assets/locales/**/LC_MESSAGES/*.mo",
100
+ ]
101
+
102
+ [tool.bumpversion]
103
+ current_version = "0.1.0a11"
104
+ parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)((?P<pre>a|b|rc)(?P<pre_n>\\d+))?"
105
+ serialize = [
106
+ "{major}.{minor}.{patch}{pre}{pre_n}",
107
+ "{major}.{minor}.{patch}",
108
+ ]
109
+ search = "version = \"{current_version}\""
110
+ replace = "version = \"{new_version}\""
111
+ commit = true
112
+ tag = true
113
+ tag_name = "v{new_version}"
114
+ tag_message = "Release {new_version}"
115
+ message = "Release {new_version}"
116
+ allow_dirty = false
117
+
118
+ [tool.bumpversion.parts.pre]
119
+ optional_value = ""
120
+ first_value = ""
121
+ values = ["", "a", "b", "rc"]
122
+
123
+ [tool.bumpversion.parts.pre_n]
124
+ first_value = "1"
125
+
126
+ [[tool.bumpversion.files]]
127
+ filename = "pyproject.toml"
128
+ search = "version = \"{current_version}\""
129
+ replace = "version = \"{new_version}\""
130
+
131
+ [tool.pytest.ini_options]
132
+ testpaths = ["tests/cli", "tests/widgets/public"]
133
+ markers = [
134
+ "gui: requires a Tk display (deselect with -m 'not gui')",
135
+ ]
136
+
137
+ [tool.ruff.lint]
138
+ # F401: imported but unused — suppress for __init__.py where all imports are public re-exports
139
+ per-file-ignores = { "src/bootstack/__init__.py" = ["F401"] }