bootstack 0.1.0a9__tar.gz → 0.1.0a10__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 (859) hide show
  1. bootstack-0.1.0a10/LICENSE +21 -0
  2. bootstack-0.1.0a10/PKG-INFO +264 -0
  3. bootstack-0.1.0a10/README.md +219 -0
  4. bootstack-0.1.0a10/pyproject.toml +139 -0
  5. bootstack-0.1.0a10/src/bootstack/__init__.py +152 -0
  6. bootstack-0.1.0a10/src/bootstack/_core/__init__.py +31 -0
  7. bootstack-0.1.0a10/src/bootstack/_core/capabilities/__init__.py +45 -0
  8. bootstack-0.1.0a10/src/bootstack/_core/capabilities/bind.py +192 -0
  9. bootstack-0.1.0a10/src/bootstack/_core/capabilities/busy.py +72 -0
  10. bootstack-0.1.0a10/src/bootstack/_core/capabilities/clipboard.py +89 -0
  11. bootstack-0.1.0a10/src/bootstack/_core/capabilities/grid.py +211 -0
  12. bootstack-0.1.0a10/src/bootstack/_core/capabilities/localization.py +231 -0
  13. bootstack-0.1.0a10/src/bootstack/_core/capabilities/pack.py +140 -0
  14. bootstack-0.1.0a10/src/bootstack/_core/capabilities/place.py +113 -0
  15. bootstack-0.1.0a10/src/bootstack/_core/capabilities/selection.py +136 -0
  16. bootstack-0.1.0a10/src/bootstack/_core/capabilities/signals.py +244 -0
  17. bootstack-0.1.0a10/src/bootstack/_core/images.py +463 -0
  18. bootstack-0.1.0a10/src/bootstack/_core/mixins/widget.py +132 -0
  19. bootstack-0.1.0a10/src/bootstack/_core/paths.py +49 -0
  20. bootstack-0.1.0a10/src/bootstack/_core/publisher.py +149 -0
  21. bootstack-0.1.0a10/src/bootstack/_runtime/app.py +892 -0
  22. bootstack-0.1.0a10/src/bootstack/_runtime/base_window.py +925 -0
  23. bootstack-0.1.0a10/src/bootstack/_runtime/shortcuts.py +496 -0
  24. bootstack-0.1.0a10/src/bootstack/_runtime/tk_patch.py +43 -0
  25. bootstack-0.1.0a10/src/bootstack/_runtime/toplevel.py +256 -0
  26. bootstack-0.1.0a10/src/bootstack/_runtime/utility.py +370 -0
  27. bootstack-0.1.0a10/src/bootstack/_runtime/window_utilities.py +1050 -0
  28. bootstack-0.1.0a10/src/bootstack/assets/__init__.py +21 -0
  29. bootstack-0.1.0a10/src/bootstack/assets/bootstack.ico +0 -0
  30. bootstack-0.1.0a10/src/bootstack/assets/bootstack.png +0 -0
  31. bootstack-0.1.0a10/src/bootstack/assets/elements/badge-pill.png +0 -0
  32. bootstack-0.1.0a10/src/bootstack/assets/elements/badge-square.png +0 -0
  33. bootstack-0.1.0a10/src/bootstack/assets/elements/button-compact.png +0 -0
  34. bootstack-0.1.0a10/src/bootstack/assets/elements/button-default.png +0 -0
  35. bootstack-0.1.0a10/src/bootstack/assets/elements/buttongroup-after-h-compact.png +0 -0
  36. bootstack-0.1.0a10/src/bootstack/assets/elements/buttongroup-after-h-default.png +0 -0
  37. bootstack-0.1.0a10/src/bootstack/assets/elements/buttongroup-after-v-compact.png +0 -0
  38. bootstack-0.1.0a10/src/bootstack/assets/elements/buttongroup-after-v-default.png +0 -0
  39. bootstack-0.1.0a10/src/bootstack/assets/elements/buttongroup-before-h-compact.png +0 -0
  40. bootstack-0.1.0a10/src/bootstack/assets/elements/buttongroup-before-h-default.png +0 -0
  41. bootstack-0.1.0a10/src/bootstack/assets/elements/buttongroup-before-v-compact.png +0 -0
  42. bootstack-0.1.0a10/src/bootstack/assets/elements/buttongroup-before-v-default.png +0 -0
  43. bootstack-0.1.0a10/src/bootstack/assets/elements/buttongroup-center-h-compact.png +0 -0
  44. bootstack-0.1.0a10/src/bootstack/assets/elements/buttongroup-center-h-default.png +0 -0
  45. bootstack-0.1.0a10/src/bootstack/assets/elements/buttongroup-center-v-compact.png +0 -0
  46. bootstack-0.1.0a10/src/bootstack/assets/elements/buttongroup-center-v-default.png +0 -0
  47. bootstack-0.1.0a10/src/bootstack/assets/elements/card.png +0 -0
  48. bootstack-0.1.0a10/src/bootstack/assets/elements/checkbox-checked.png +0 -0
  49. bootstack-0.1.0a10/src/bootstack/assets/elements/checkbox-indeterminate.png +0 -0
  50. bootstack-0.1.0a10/src/bootstack/assets/elements/checkbox-unchecked.png +0 -0
  51. bootstack-0.1.0a10/src/bootstack/assets/elements/field.png +0 -0
  52. bootstack-0.1.0a10/src/bootstack/assets/elements/input-addon-compact.png +0 -0
  53. bootstack-0.1.0a10/src/bootstack/assets/elements/input-addon-default.png +0 -0
  54. bootstack-0.1.0a10/src/bootstack/assets/elements/input-compact.png +0 -0
  55. bootstack-0.1.0a10/src/bootstack/assets/elements/input-default.png +0 -0
  56. bootstack-0.1.0a10/src/bootstack/assets/elements/listrow-compact.png +0 -0
  57. bootstack-0.1.0a10/src/bootstack/assets/elements/listrow-default.png +0 -0
  58. bootstack-0.1.0a10/src/bootstack/assets/elements/manifest.toml +361 -0
  59. bootstack-0.1.0a10/src/bootstack/assets/elements/navitem-compact.png +0 -0
  60. bootstack-0.1.0a10/src/bootstack/assets/elements/navitem-default.png +0 -0
  61. bootstack-0.1.0a10/src/bootstack/assets/elements/progressbar-h-compact.png +0 -0
  62. bootstack-0.1.0a10/src/bootstack/assets/elements/progressbar-h-default.png +0 -0
  63. bootstack-0.1.0a10/src/bootstack/assets/elements/progressbar-v-compact.png +0 -0
  64. bootstack-0.1.0a10/src/bootstack/assets/elements/progressbar-v-default.png +0 -0
  65. bootstack-0.1.0a10/src/bootstack/assets/elements/radiobutton.png +0 -0
  66. bootstack-0.1.0a10/src/bootstack/assets/elements/scrollbar-horizontal.png +0 -0
  67. bootstack-0.1.0a10/src/bootstack/assets/elements/scrollbar-vertical.png +0 -0
  68. bootstack-0.1.0a10/src/bootstack/assets/elements/slider-handle.png +0 -0
  69. bootstack-0.1.0a10/src/bootstack/assets/elements/slider-track-h.png +0 -0
  70. bootstack-0.1.0a10/src/bootstack/assets/elements/slider-track-v.png +0 -0
  71. bootstack-0.1.0a10/src/bootstack/assets/elements/switch-off.png +0 -0
  72. bootstack-0.1.0a10/src/bootstack/assets/elements/switch-on.png +0 -0
  73. bootstack-0.1.0a10/src/bootstack/assets/elements/tab-h.png +0 -0
  74. bootstack-0.1.0a10/src/bootstack/assets/elements/tab-v.png +0 -0
  75. bootstack-0.1.0a10/src/bootstack/assets/icons/bootstrap.ttf +0 -0
  76. bootstack-0.1.0a10/src/bootstack/assets/icons/glyphmap.json +2080 -0
  77. bootstack-0.1.0a10/src/bootstack/assets/icons/icon_metrics.json +12470 -0
  78. bootstack-0.1.0a10/src/bootstack/assets/locales/ar/LC_MESSAGES/bootstack.mo +0 -0
  79. bootstack-0.1.0a10/src/bootstack/assets/locales/ar/LC_MESSAGES/bootstack.po +853 -0
  80. bootstack-0.1.0a10/src/bootstack/assets/locales/bg/LC_MESSAGES/bootstack.mo +0 -0
  81. bootstack-0.1.0a10/src/bootstack/assets/locales/bg/LC_MESSAGES/bootstack.po +875 -0
  82. bootstack-0.1.0a10/src/bootstack/assets/locales/cs/LC_MESSAGES/bootstack.mo +0 -0
  83. bootstack-0.1.0a10/src/bootstack/assets/locales/cs/LC_MESSAGES/bootstack.po +853 -0
  84. bootstack-0.1.0a10/src/bootstack/assets/locales/da/LC_MESSAGES/bootstack.mo +0 -0
  85. bootstack-0.1.0a10/src/bootstack/assets/locales/da/LC_MESSAGES/bootstack.po +853 -0
  86. bootstack-0.1.0a10/src/bootstack/assets/locales/de/LC_MESSAGES/bootstack.mo +0 -0
  87. bootstack-0.1.0a10/src/bootstack/assets/locales/de/LC_MESSAGES/bootstack.po +853 -0
  88. bootstack-0.1.0a10/src/bootstack/assets/locales/en/LC_MESSAGES/bootstack.mo +0 -0
  89. bootstack-0.1.0a10/src/bootstack/assets/locales/en/LC_MESSAGES/bootstack.po +875 -0
  90. bootstack-0.1.0a10/src/bootstack/assets/locales/es/LC_MESSAGES/bootstack.mo +0 -0
  91. bootstack-0.1.0a10/src/bootstack/assets/locales/es/LC_MESSAGES/bootstack.po +853 -0
  92. bootstack-0.1.0a10/src/bootstack/assets/locales/fr/LC_MESSAGES/bootstack.mo +0 -0
  93. bootstack-0.1.0a10/src/bootstack/assets/locales/fr/LC_MESSAGES/bootstack.po +853 -0
  94. bootstack-0.1.0a10/src/bootstack/assets/locales/he/LC_MESSAGES/bootstack.mo +0 -0
  95. bootstack-0.1.0a10/src/bootstack/assets/locales/he/LC_MESSAGES/bootstack.po +851 -0
  96. bootstack-0.1.0a10/src/bootstack/assets/locales/hi/LC_MESSAGES/bootstack.mo +0 -0
  97. bootstack-0.1.0a10/src/bootstack/assets/locales/hi/LC_MESSAGES/bootstack.po +842 -0
  98. bootstack-0.1.0a10/src/bootstack/assets/locales/it/LC_MESSAGES/bootstack.mo +0 -0
  99. bootstack-0.1.0a10/src/bootstack/assets/locales/it/LC_MESSAGES/bootstack.po +841 -0
  100. bootstack-0.1.0a10/src/bootstack/assets/locales/ja/LC_MESSAGES/bootstack.mo +0 -0
  101. bootstack-0.1.0a10/src/bootstack/assets/locales/ja/LC_MESSAGES/bootstack.po +914 -0
  102. bootstack-0.1.0a10/src/bootstack/assets/locales/ko/LC_MESSAGES/bootstack.mo +0 -0
  103. bootstack-0.1.0a10/src/bootstack/assets/locales/ko/LC_MESSAGES/bootstack.po +842 -0
  104. bootstack-0.1.0a10/src/bootstack/assets/locales/nb/LC_MESSAGES/bootstack.mo +0 -0
  105. bootstack-0.1.0a10/src/bootstack/assets/locales/nb/LC_MESSAGES/bootstack.po +841 -0
  106. bootstack-0.1.0a10/src/bootstack/assets/locales/nl/LC_MESSAGES/bootstack.mo +0 -0
  107. bootstack-0.1.0a10/src/bootstack/assets/locales/nl/LC_MESSAGES/bootstack.po +841 -0
  108. bootstack-0.1.0a10/src/bootstack/assets/locales/pl/LC_MESSAGES/bootstack.mo +0 -0
  109. bootstack-0.1.0a10/src/bootstack/assets/locales/pl/LC_MESSAGES/bootstack.po +842 -0
  110. bootstack-0.1.0a10/src/bootstack/assets/locales/pt/LC_MESSAGES/bootstack.mo +0 -0
  111. bootstack-0.1.0a10/src/bootstack/assets/locales/pt/LC_MESSAGES/bootstack.po +842 -0
  112. bootstack-0.1.0a10/src/bootstack/assets/locales/pt_BR/LC_MESSAGES/bootstack.mo +0 -0
  113. bootstack-0.1.0a10/src/bootstack/assets/locales/pt_BR/LC_MESSAGES/bootstack.po +842 -0
  114. bootstack-0.1.0a10/src/bootstack/assets/locales/sl/LC_MESSAGES/bootstack.mo +0 -0
  115. bootstack-0.1.0a10/src/bootstack/assets/locales/sl/LC_MESSAGES/bootstack.po +842 -0
  116. bootstack-0.1.0a10/src/bootstack/assets/locales/sv/LC_MESSAGES/bootstack.mo +0 -0
  117. bootstack-0.1.0a10/src/bootstack/assets/locales/sv/LC_MESSAGES/bootstack.po +842 -0
  118. bootstack-0.1.0a10/src/bootstack/assets/locales/tr/LC_MESSAGES/bootstack.mo +0 -0
  119. bootstack-0.1.0a10/src/bootstack/assets/locales/tr/LC_MESSAGES/bootstack.po +842 -0
  120. bootstack-0.1.0a10/src/bootstack/assets/locales/zh_CN/LC_MESSAGES/bootstack.mo +0 -0
  121. bootstack-0.1.0a10/src/bootstack/assets/locales/zh_CN/LC_MESSAGES/bootstack.po +842 -0
  122. bootstack-0.1.0a10/src/bootstack/assets/locales/zh_TW/LC_MESSAGES/bootstack.mo +0 -0
  123. bootstack-0.1.0a10/src/bootstack/assets/locales/zh_TW/LC_MESSAGES/bootstack.po +842 -0
  124. bootstack-0.1.0a10/src/bootstack/cli/__init__.py +130 -0
  125. bootstack-0.1.0a10/src/bootstack/cli/add.py +387 -0
  126. bootstack-0.1.0a10/src/bootstack/cli/appicon.py +284 -0
  127. bootstack-0.1.0a10/src/bootstack/cli/config.py +313 -0
  128. bootstack-0.1.0a10/src/bootstack/cli/demo.py +923 -0
  129. bootstack-0.1.0a10/src/bootstack/cli/icons.py +327 -0
  130. bootstack-0.1.0a10/src/bootstack/cli/pyinstaller.py +267 -0
  131. bootstack-0.1.0a10/src/bootstack/cli/run.py +95 -0
  132. bootstack-0.1.0a10/src/bootstack/cli/start.py +117 -0
  133. bootstack-0.1.0a10/src/bootstack/cli/templates/__init__.py +959 -0
  134. bootstack-0.1.0a10/src/bootstack/constants.py +319 -0
  135. bootstack-0.1.0a10/src/bootstack/data/README.md +615 -0
  136. bootstack-0.1.0a10/src/bootstack/data/__init__.py +78 -0
  137. bootstack-0.1.0a10/src/bootstack/data/_observable.py +276 -0
  138. bootstack-0.1.0a10/src/bootstack/data/base.py +780 -0
  139. bootstack-0.1.0a10/src/bootstack/data/file_source.py +367 -0
  140. bootstack-0.1.0a10/src/bootstack/data/memory_source.py +430 -0
  141. bootstack-0.1.0a10/src/bootstack/data/query.py +367 -0
  142. bootstack-0.1.0a10/src/bootstack/data/readers.py +289 -0
  143. bootstack-0.1.0a10/src/bootstack/data/sqlite_source.py +869 -0
  144. bootstack-0.1.0a10/src/bootstack/data/types.py +354 -0
  145. bootstack-0.1.0a10/src/bootstack/data/writers.py +232 -0
  146. bootstack-0.1.0a10/src/bootstack/dialogs/__init__.py +947 -0
  147. bootstack-0.1.0a10/src/bootstack/dialogs/_impl/__init__.py +51 -0
  148. bootstack-0.1.0a10/src/bootstack/dialogs/_impl/colorchooser.py +539 -0
  149. bootstack-0.1.0a10/src/bootstack/dialogs/_impl/colordropper.py +257 -0
  150. bootstack-0.1.0a10/src/bootstack/dialogs/_impl/datedialog.py +426 -0
  151. bootstack-0.1.0a10/src/bootstack/dialogs/_impl/dialog.py +524 -0
  152. bootstack-0.1.0a10/src/bootstack/dialogs/_impl/filterdialog.py +353 -0
  153. bootstack-0.1.0a10/src/bootstack/dialogs/_impl/fontdialog.py +377 -0
  154. bootstack-0.1.0a10/src/bootstack/dialogs/_impl/formdialog.py +545 -0
  155. bootstack-0.1.0a10/src/bootstack/dialogs/_impl/message.py +485 -0
  156. bootstack-0.1.0a10/src/bootstack/dialogs/_impl/query.py +569 -0
  157. bootstack-0.1.0a10/src/bootstack/errors.py +40 -0
  158. bootstack-0.1.0a10/src/bootstack/events/__init__.py +100 -0
  159. bootstack-0.1.0a10/src/bootstack/events/_event.py +135 -0
  160. bootstack-0.1.0a10/src/bootstack/events/_payloads.py +489 -0
  161. bootstack-0.1.0a10/src/bootstack/events/_subscription.py +38 -0
  162. bootstack-0.1.0a10/src/bootstack/i18n/README.md +77 -0
  163. bootstack-0.1.0a10/src/bootstack/i18n/__init__.py +23 -0
  164. bootstack-0.1.0a10/src/bootstack/i18n/catalog.py +121 -0
  165. bootstack-0.1.0a10/src/bootstack/i18n/intl_format.py +584 -0
  166. bootstack-0.1.0a10/src/bootstack/i18n/msgcat.py +425 -0
  167. bootstack-0.1.0a10/src/bootstack/i18n/specs.py +156 -0
  168. bootstack-0.1.0a10/src/bootstack/images.py +546 -0
  169. bootstack-0.1.0a10/src/bootstack/scheduling/__init__.py +11 -0
  170. bootstack-0.1.0a10/src/bootstack/scheduling/_schedule.py +218 -0
  171. bootstack-0.1.0a10/src/bootstack/shortcuts.py +21 -0
  172. bootstack-0.1.0a10/src/bootstack/signals/README.md +112 -0
  173. bootstack-0.1.0a10/src/bootstack/signals/__init__.py +10 -0
  174. bootstack-0.1.0a10/src/bootstack/signals/integration.py +100 -0
  175. bootstack-0.1.0a10/src/bootstack/signals/signal.py +323 -0
  176. bootstack-0.1.0a10/src/bootstack/signals/types.py +6 -0
  177. bootstack-0.1.0a10/src/bootstack/store.py +286 -0
  178. bootstack-0.1.0a10/src/bootstack/streams/__init__.py +12 -0
  179. bootstack-0.1.0a10/src/bootstack/streams/_stream.py +321 -0
  180. bootstack-0.1.0a10/src/bootstack/style/__init__.py +38 -0
  181. bootstack-0.1.0a10/src/bootstack/style/bootstyle.py +525 -0
  182. bootstack-0.1.0a10/src/bootstack/style/bootstyle_builder_base.py +693 -0
  183. bootstack-0.1.0a10/src/bootstack/style/bootstyle_builder_tk.py +109 -0
  184. bootstack-0.1.0a10/src/bootstack/style/bootstyle_builder_ttk.py +353 -0
  185. bootstack-0.1.0a10/src/bootstack/style/builders/__init__.py +51 -0
  186. bootstack-0.1.0a10/src/bootstack/style/builders/badge.py +46 -0
  187. bootstack-0.1.0a10/src/bootstack/style/builders/button.py +339 -0
  188. bootstack-0.1.0a10/src/bootstack/style/builders/buttongroup.py +311 -0
  189. bootstack-0.1.0a10/src/bootstack/style/builders/calendar.py +271 -0
  190. bootstack-0.1.0a10/src/bootstack/style/builders/checkbutton.py +110 -0
  191. bootstack-0.1.0a10/src/bootstack/style/builders/combobox.py +113 -0
  192. bootstack-0.1.0a10/src/bootstack/style/builders/contextmenu.py +268 -0
  193. bootstack-0.1.0a10/src/bootstack/style/builders/entry.py +82 -0
  194. bootstack-0.1.0a10/src/bootstack/style/builders/expander.py +148 -0
  195. bootstack-0.1.0a10/src/bootstack/style/builders/field.py +335 -0
  196. bootstack-0.1.0a10/src/bootstack/style/builders/frame.py +42 -0
  197. bootstack-0.1.0a10/src/bootstack/style/builders/labelframe.py +34 -0
  198. bootstack-0.1.0a10/src/bootstack/style/builders/listview.py +369 -0
  199. bootstack-0.1.0a10/src/bootstack/style/builders/menubar.py +74 -0
  200. bootstack-0.1.0a10/src/bootstack/style/builders/menubutton.py +357 -0
  201. bootstack-0.1.0a10/src/bootstack/style/builders/progressbar.py +67 -0
  202. bootstack-0.1.0a10/src/bootstack/style/builders/radiobutton.py +99 -0
  203. bootstack-0.1.0a10/src/bootstack/style/builders/scale.py +64 -0
  204. bootstack-0.1.0a10/src/bootstack/style/builders/scrollbar.py +225 -0
  205. bootstack-0.1.0a10/src/bootstack/style/builders/separator.py +49 -0
  206. bootstack-0.1.0a10/src/bootstack/style/builders/sidenav.py +643 -0
  207. bootstack-0.1.0a10/src/bootstack/style/builders/spinbox.py +119 -0
  208. bootstack-0.1.0a10/src/bootstack/style/builders/switch.py +70 -0
  209. bootstack-0.1.0a10/src/bootstack/style/builders/tabitem.py +204 -0
  210. bootstack-0.1.0a10/src/bootstack/style/builders/togglegroup.py +294 -0
  211. bootstack-0.1.0a10/src/bootstack/style/builders/toolbutton.py +275 -0
  212. bootstack-0.1.0a10/src/bootstack/style/builders/treeview.py +193 -0
  213. bootstack-0.1.0a10/src/bootstack/style/builders/utils.py +446 -0
  214. bootstack-0.1.0a10/src/bootstack/style/fonts.py +123 -0
  215. bootstack-0.1.0a10/src/bootstack/style/style.py +566 -0
  216. bootstack-0.1.0a10/src/bootstack/style/theme.py +184 -0
  217. bootstack-0.1.0a10/src/bootstack/style/theme_provider.py +471 -0
  218. bootstack-0.1.0a10/src/bootstack/style/themes/__init__.py +128 -0
  219. bootstack-0.1.0a10/src/bootstack/style/tk_patch.py +5 -0
  220. bootstack-0.1.0a10/src/bootstack/style/token_maps.py +41 -0
  221. bootstack-0.1.0a10/src/bootstack/style/types.py +32 -0
  222. bootstack-0.1.0a10/src/bootstack/style/typography.py +508 -0
  223. bootstack-0.1.0a10/src/bootstack/style/utility.py +746 -0
  224. bootstack-0.1.0a10/src/bootstack/types.py +37 -0
  225. bootstack-0.1.0a10/src/bootstack/validation/__init__.py +6 -0
  226. bootstack-0.1.0a10/src/bootstack/validation/types.py +15 -0
  227. bootstack-0.1.0a10/src/bootstack/validation/validation_rules.py +139 -0
  228. bootstack-0.1.0a10/src/bootstack/widgets/__init__.py +77 -0
  229. bootstack-0.1.0a10/src/bootstack/widgets/_core/__init__.py +31 -0
  230. bootstack-0.1.0a10/src/bootstack/widgets/_core/app_config.py +266 -0
  231. bootstack-0.1.0a10/src/bootstack/widgets/_core/base.py +399 -0
  232. bootstack-0.1.0a10/src/bootstack/widgets/_core/container.py +202 -0
  233. bootstack-0.1.0a10/src/bootstack/widgets/_core/context.py +35 -0
  234. bootstack-0.1.0a10/src/bootstack/widgets/_core/events.py +130 -0
  235. bootstack-0.1.0a10/src/bootstack/widgets/_core/field_mixin.py +281 -0
  236. bootstack-0.1.0a10/src/bootstack/widgets/_core/icon_image_props.py +72 -0
  237. bootstack-0.1.0a10/src/bootstack/widgets/_core/image_binding.py +93 -0
  238. bootstack-0.1.0a10/src/bootstack/widgets/_core/navmodel.py +341 -0
  239. bootstack-0.1.0a10/src/bootstack/widgets/_core/options.py +210 -0
  240. bootstack-0.1.0a10/src/bootstack/widgets/_core/selection_group.py +130 -0
  241. bootstack-0.1.0a10/src/bootstack/widgets/_core/window_controls.py +96 -0
  242. bootstack-0.1.0a10/src/bootstack/widgets/_core/window_menu.py +299 -0
  243. bootstack-0.1.0a10/src/bootstack/widgets/_impl/__init__.py +1 -0
  244. bootstack-0.1.0a10/src/bootstack/widgets/_impl/_internal/wrapper_base.py +309 -0
  245. bootstack-0.1.0a10/src/bootstack/widgets/_impl/_parts/__init__.py +11 -0
  246. bootstack-0.1.0a10/src/bootstack/widgets/_impl/_parts/numberentry_part.py +357 -0
  247. bootstack-0.1.0a10/src/bootstack/widgets/_impl/_parts/spinnerentry_part.py +385 -0
  248. bootstack-0.1.0a10/src/bootstack/widgets/_impl/_parts/textentry_part.py +382 -0
  249. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/__init__.py +33 -0
  250. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/_dateutils.py +33 -0
  251. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/_image_fit.py +105 -0
  252. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/accordion.py +381 -0
  253. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/avatar.py +192 -0
  254. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/buttongroup.py +371 -0
  255. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/calendar.py +957 -0
  256. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/carousel.py +549 -0
  257. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/compositeframe.py +298 -0
  258. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/contextmenu.py +1914 -0
  259. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/dateentry.py +404 -0
  260. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/dropdownbutton.py +325 -0
  261. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/expander.py +508 -0
  262. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/field.py +660 -0
  263. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/floodgauge.py +427 -0
  264. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/form.py +1030 -0
  265. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/gallery.py +493 -0
  266. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/list/__init__.py +15 -0
  267. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/list/listitem.py +802 -0
  268. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/list/listview.py +1441 -0
  269. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/menu/__init__.py +18 -0
  270. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/menu/model.py +358 -0
  271. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/menu/render_native.py +134 -0
  272. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/menu/render_themed.py +126 -0
  273. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/meter.py +851 -0
  274. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/numericentry.py +201 -0
  275. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/pagestack.py +337 -0
  276. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/passwordentry.py +131 -0
  277. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/pathentry.py +168 -0
  278. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/picture.py +290 -0
  279. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/radiogroup.py +510 -0
  280. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/scrolledtext.py +375 -0
  281. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/scrollview.py +698 -0
  282. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/selectbox.py +1026 -0
  283. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/shell/__init__.py +40 -0
  284. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/shell/content_host.py +46 -0
  285. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/shell/layout.py +339 -0
  286. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/shell/nav_panel.py +343 -0
  287. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/shell/providers.py +558 -0
  288. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/shell/rail.py +117 -0
  289. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/shell/shell.py +526 -0
  290. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/shell/workspace.py +260 -0
  291. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/sidenav/__init__.py +16 -0
  292. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/sidenav/header.py +81 -0
  293. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/sidenav/separator.py +44 -0
  294. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/slider/__init__.py +7 -0
  295. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/slider/_shared.py +161 -0
  296. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/slider/rangeslider.py +843 -0
  297. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/slider/slider.py +741 -0
  298. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/spinnerentry.py +177 -0
  299. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/tableview/tableview.py +3281 -0
  300. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/tabs/__init__.py +23 -0
  301. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/tabs/tabitem.py +389 -0
  302. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/tabs/tabs.py +565 -0
  303. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/tabs/tabview.py +630 -0
  304. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/textarea/__init__.py +26 -0
  305. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/textarea/change.py +46 -0
  306. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/textarea/codeeditor.py +382 -0
  307. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/textarea/core.py +464 -0
  308. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/textarea/decoration.py +42 -0
  309. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/textarea/diff.py +127 -0
  310. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/textarea/extensions/__init__.py +1 -0
  311. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/textarea/extensions/bracket_matcher.py +138 -0
  312. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/textarea/extensions/indent_guides.py +143 -0
  313. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/textarea/extensions/line_numbers.py +138 -0
  314. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/textarea/extensions/pygments_highlighter.py +312 -0
  315. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/textarea/extensions/smart_indent.py +87 -0
  316. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/textarea/filter.py +171 -0
  317. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/textarea/search_overlay.py +438 -0
  318. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/textarea/sidebar.py +88 -0
  319. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/textarea/style_registry.py +156 -0
  320. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/textarea/textarea.py +565 -0
  321. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/textarea/undo.py +217 -0
  322. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/textentry.py +57 -0
  323. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/timeentry.py +172 -0
  324. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/toast.py +390 -0
  325. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/toast_stack.py +151 -0
  326. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/togglegroup.py +417 -0
  327. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/toolbar.py +406 -0
  328. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/tooltip.py +404 -0
  329. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/tree/__init__.py +7 -0
  330. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/tree/source_binding.py +136 -0
  331. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/tree/treeitem.py +393 -0
  332. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/tree/treenode.py +174 -0
  333. bootstack-0.1.0a10/src/bootstack/widgets/_impl/composites/tree/treeview.py +841 -0
  334. bootstack-0.1.0a10/src/bootstack/widgets/_impl/mixins/__init__.py +24 -0
  335. bootstack-0.1.0a10/src/bootstack/widgets/_impl/mixins/configure_mixin.py +216 -0
  336. bootstack-0.1.0a10/src/bootstack/widgets/_impl/mixins/entry_mixin.py +134 -0
  337. bootstack-0.1.0a10/src/bootstack/widgets/_impl/mixins/font_mixin.py +368 -0
  338. bootstack-0.1.0a10/src/bootstack/widgets/_impl/mixins/icon_mixin.py +61 -0
  339. bootstack-0.1.0a10/src/bootstack/widgets/_impl/mixins/localization_mixin.py +253 -0
  340. bootstack-0.1.0a10/src/bootstack/widgets/_impl/mixins/signal_mixin.py +268 -0
  341. bootstack-0.1.0a10/src/bootstack/widgets/_impl/mixins/validation_mixin.py +212 -0
  342. bootstack-0.1.0a10/src/bootstack/widgets/_impl/primitives/__init__.py +49 -0
  343. bootstack-0.1.0a10/src/bootstack/widgets/_impl/primitives/_menubutton.py +107 -0
  344. bootstack-0.1.0a10/src/bootstack/widgets/_impl/primitives/badge.py +45 -0
  345. bootstack-0.1.0a10/src/bootstack/widgets/_impl/primitives/button.py +76 -0
  346. bootstack-0.1.0a10/src/bootstack/widgets/_impl/primitives/card.py +45 -0
  347. bootstack-0.1.0a10/src/bootstack/widgets/_impl/primitives/checkbutton.py +124 -0
  348. bootstack-0.1.0a10/src/bootstack/widgets/_impl/primitives/checktoggle.py +62 -0
  349. bootstack-0.1.0a10/src/bootstack/widgets/_impl/primitives/combobox.py +155 -0
  350. bootstack-0.1.0a10/src/bootstack/widgets/_impl/primitives/entry.py +87 -0
  351. bootstack-0.1.0a10/src/bootstack/widgets/_impl/primitives/frame.py +190 -0
  352. bootstack-0.1.0a10/src/bootstack/widgets/_impl/primitives/gridframe.py +527 -0
  353. bootstack-0.1.0a10/src/bootstack/widgets/_impl/primitives/label.py +84 -0
  354. bootstack-0.1.0a10/src/bootstack/widgets/_impl/primitives/labelframe.py +54 -0
  355. bootstack-0.1.0a10/src/bootstack/widgets/_impl/primitives/optionmenu.py +387 -0
  356. bootstack-0.1.0a10/src/bootstack/widgets/_impl/primitives/packframe.py +224 -0
  357. bootstack-0.1.0a10/src/bootstack/widgets/_impl/primitives/panedwindow.py +45 -0
  358. bootstack-0.1.0a10/src/bootstack/widgets/_impl/primitives/progressbar.py +83 -0
  359. bootstack-0.1.0a10/src/bootstack/widgets/_impl/primitives/radiobutton.py +115 -0
  360. bootstack-0.1.0a10/src/bootstack/widgets/_impl/primitives/radiotoggle.py +54 -0
  361. bootstack-0.1.0a10/src/bootstack/widgets/_impl/primitives/scrollbar.py +42 -0
  362. bootstack-0.1.0a10/src/bootstack/widgets/_impl/primitives/separator.py +43 -0
  363. bootstack-0.1.0a10/src/bootstack/widgets/_impl/primitives/sizegrip.py +33 -0
  364. bootstack-0.1.0a10/src/bootstack/widgets/_impl/primitives/spinbox.py +95 -0
  365. bootstack-0.1.0a10/src/bootstack/widgets/_impl/primitives/switch.py +44 -0
  366. bootstack-0.1.0a10/src/bootstack/widgets/_impl/primitives/treeview.py +69 -0
  367. bootstack-0.1.0a10/src/bootstack/widgets/app.py +254 -0
  368. bootstack-0.1.0a10/src/bootstack/widgets/appshell.py +815 -0
  369. bootstack-0.1.0a10/src/bootstack/widgets/avatar.py +140 -0
  370. bootstack-0.1.0a10/src/bootstack/widgets/boolean_controls.py +455 -0
  371. bootstack-0.1.0a10/src/bootstack/widgets/button.py +176 -0
  372. bootstack-0.1.0a10/src/bootstack/widgets/buttongroup.py +239 -0
  373. bootstack-0.1.0a10/src/bootstack/widgets/calendar.py +195 -0
  374. bootstack-0.1.0a10/src/bootstack/widgets/card.py +146 -0
  375. bootstack-0.1.0a10/src/bootstack/widgets/carousel.py +230 -0
  376. bootstack-0.1.0a10/src/bootstack/widgets/codeeditor.py +491 -0
  377. bootstack-0.1.0a10/src/bootstack/widgets/commandbar.py +177 -0
  378. bootstack-0.1.0a10/src/bootstack/widgets/contextmenu.py +368 -0
  379. bootstack-0.1.0a10/src/bootstack/widgets/datatable.py +674 -0
  380. bootstack-0.1.0a10/src/bootstack/widgets/datefield.py +401 -0
  381. bootstack-0.1.0a10/src/bootstack/widgets/expander.py +574 -0
  382. bootstack-0.1.0a10/src/bootstack/widgets/form.py +169 -0
  383. bootstack-0.1.0a10/src/bootstack/widgets/gallery.py +244 -0
  384. bootstack-0.1.0a10/src/bootstack/widgets/gauge.py +168 -0
  385. bootstack-0.1.0a10/src/bootstack/widgets/grid.py +105 -0
  386. bootstack-0.1.0a10/src/bootstack/widgets/groupbox.py +149 -0
  387. bootstack-0.1.0a10/src/bootstack/widgets/label.py +219 -0
  388. bootstack-0.1.0a10/src/bootstack/widgets/listview.py +354 -0
  389. bootstack-0.1.0a10/src/bootstack/widgets/menubutton.py +394 -0
  390. bootstack-0.1.0a10/src/bootstack/widgets/numberfield.py +429 -0
  391. bootstack-0.1.0a10/src/bootstack/widgets/pagestack.py +321 -0
  392. bootstack-0.1.0a10/src/bootstack/widgets/passwordfield.py +384 -0
  393. bootstack-0.1.0a10/src/bootstack/widgets/pathfield.py +399 -0
  394. bootstack-0.1.0a10/src/bootstack/widgets/picture.py +251 -0
  395. bootstack-0.1.0a10/src/bootstack/widgets/progressbar.py +106 -0
  396. bootstack-0.1.0a10/src/bootstack/widgets/radio_variants.py +271 -0
  397. bootstack-0.1.0a10/src/bootstack/widgets/radiogroup.py +228 -0
  398. bootstack-0.1.0a10/src/bootstack/widgets/scrollbar.py +64 -0
  399. bootstack-0.1.0a10/src/bootstack/widgets/scrollview.py +134 -0
  400. bootstack-0.1.0a10/src/bootstack/widgets/select.py +302 -0
  401. bootstack-0.1.0a10/src/bootstack/widgets/selectbutton.py +182 -0
  402. bootstack-0.1.0a10/src/bootstack/widgets/separator.py +59 -0
  403. bootstack-0.1.0a10/src/bootstack/widgets/sizegrip.py +42 -0
  404. bootstack-0.1.0a10/src/bootstack/widgets/slider.py +376 -0
  405. bootstack-0.1.0a10/src/bootstack/widgets/spinbox.py +147 -0
  406. bootstack-0.1.0a10/src/bootstack/widgets/spinnerfield.py +390 -0
  407. bootstack-0.1.0a10/src/bootstack/widgets/splitview.py +392 -0
  408. bootstack-0.1.0a10/src/bootstack/widgets/stacks.py +214 -0
  409. bootstack-0.1.0a10/src/bootstack/widgets/statusbar.py +157 -0
  410. bootstack-0.1.0a10/src/bootstack/widgets/tabs.py +385 -0
  411. bootstack-0.1.0a10/src/bootstack/widgets/textarea.py +427 -0
  412. bootstack-0.1.0a10/src/bootstack/widgets/textfield.py +405 -0
  413. bootstack-0.1.0a10/src/bootstack/widgets/timefield.py +346 -0
  414. bootstack-0.1.0a10/src/bootstack/widgets/toast.py +314 -0
  415. bootstack-0.1.0a10/src/bootstack/widgets/togglegroup.py +231 -0
  416. bootstack-0.1.0a10/src/bootstack/widgets/tooltip.py +71 -0
  417. bootstack-0.1.0a10/src/bootstack/widgets/tree.py +648 -0
  418. bootstack-0.1.0a10/src/bootstack/widgets/types.py +292 -0
  419. bootstack-0.1.0a10/src/bootstack/widgets/window.py +291 -0
  420. bootstack-0.1.0a10/src/bootstack.egg-info/PKG-INFO +264 -0
  421. bootstack-0.1.0a10/src/bootstack.egg-info/SOURCES.txt +469 -0
  422. bootstack-0.1.0a10/src/bootstack.egg-info/requires.txt +26 -0
  423. bootstack-0.1.0a10/tests/test_images.py +112 -0
  424. bootstack-0.1.0a10/tests/test_images_gui.py +72 -0
  425. bootstack-0.1.0a10/tests/test_intl_format.py +99 -0
  426. bootstack-0.1.0a10/tests/test_navmodel.py +326 -0
  427. bootstack-0.1.0a10/tests/test_public_surface.py +140 -0
  428. bootstack-0.1.0a10/tests/test_store.py +169 -0
  429. bootstack-0.1.0a10/tests/test_validation_rules.py +152 -0
  430. bootstack-0.1.0a9/LICENSE +0 -22
  431. bootstack-0.1.0a9/PKG-INFO +0 -214
  432. bootstack-0.1.0a9/README.md +0 -180
  433. bootstack-0.1.0a9/pyproject.toml +0 -111
  434. bootstack-0.1.0a9/src/bootstack/__init__.py +0 -254
  435. bootstack-0.1.0a9/src/bootstack/api/__init__.py +0 -128
  436. bootstack-0.1.0a9/src/bootstack/api/app.py +0 -30
  437. bootstack-0.1.0a9/src/bootstack/api/constants.py +0 -3
  438. bootstack-0.1.0a9/src/bootstack/api/data.py +0 -23
  439. bootstack-0.1.0a9/src/bootstack/api/dialogs.py +0 -44
  440. bootstack-0.1.0a9/src/bootstack/api/i18n.py +0 -17
  441. bootstack-0.1.0a9/src/bootstack/api/localization.py +0 -16
  442. bootstack-0.1.0a9/src/bootstack/api/menu.py +0 -7
  443. bootstack-0.1.0a9/src/bootstack/api/style.py +0 -26
  444. bootstack-0.1.0a9/src/bootstack/api/utils.py +0 -24
  445. bootstack-0.1.0a9/src/bootstack/api/widgets.py +0 -140
  446. bootstack-0.1.0a9/src/bootstack/assets/__init__.py +0 -24
  447. bootstack-0.1.0a9/src/bootstack/assets/bootstack-dark.ico +0 -0
  448. bootstack-0.1.0a9/src/bootstack/assets/bootstack-light.ico +0 -0
  449. bootstack-0.1.0a9/src/bootstack/assets/bootstack-transparent.png +0 -0
  450. bootstack-0.1.0a9/src/bootstack/assets/bootstack.ico +0 -0
  451. bootstack-0.1.0a9/src/bootstack/assets/bootstack.png +0 -0
  452. bootstack-0.1.0a9/src/bootstack/assets/elements/badge-pill.png +0 -0
  453. bootstack-0.1.0a9/src/bootstack/assets/elements/badge-square.png +0 -0
  454. bootstack-0.1.0a9/src/bootstack/assets/elements/border.png +0 -0
  455. bootstack-0.1.0a9/src/bootstack/assets/elements/button-compact.png +0 -0
  456. bootstack-0.1.0a9/src/bootstack/assets/elements/button-default.png +0 -0
  457. bootstack-0.1.0a9/src/bootstack/assets/elements/button-group-horizontal-after-compact.png +0 -0
  458. bootstack-0.1.0a9/src/bootstack/assets/elements/button-group-horizontal-after-default.png +0 -0
  459. bootstack-0.1.0a9/src/bootstack/assets/elements/button-group-horizontal-before-compact.png +0 -0
  460. bootstack-0.1.0a9/src/bootstack/assets/elements/button-group-horizontal-before-default.png +0 -0
  461. bootstack-0.1.0a9/src/bootstack/assets/elements/button-group-horizontal-center-compact.png +0 -0
  462. bootstack-0.1.0a9/src/bootstack/assets/elements/button-group-horizontal-center-default.png +0 -0
  463. bootstack-0.1.0a9/src/bootstack/assets/elements/button-group-vertical-after-compact.png +0 -0
  464. bootstack-0.1.0a9/src/bootstack/assets/elements/button-group-vertical-after-default.png +0 -0
  465. bootstack-0.1.0a9/src/bootstack/assets/elements/button-group-vertical-before-compact.png +0 -0
  466. bootstack-0.1.0a9/src/bootstack/assets/elements/button-group-vertical-before-default.png +0 -0
  467. bootstack-0.1.0a9/src/bootstack/assets/elements/button-group-vertical-center-compact.png +0 -0
  468. bootstack-0.1.0a9/src/bootstack/assets/elements/button-group-vertical-center-default.png +0 -0
  469. bootstack-0.1.0a9/src/bootstack/assets/elements/checkbox-checked.png +0 -0
  470. bootstack-0.1.0a9/src/bootstack/assets/elements/checkbox-indeterminate.png +0 -0
  471. bootstack-0.1.0a9/src/bootstack/assets/elements/checkbox-unchecked.png +0 -0
  472. bootstack-0.1.0a9/src/bootstack/assets/elements/field.png +0 -0
  473. bootstack-0.1.0a9/src/bootstack/assets/elements/input-after-compact.png +0 -0
  474. bootstack-0.1.0a9/src/bootstack/assets/elements/input-after-default.png +0 -0
  475. bootstack-0.1.0a9/src/bootstack/assets/elements/input-before-compact.png +0 -0
  476. bootstack-0.1.0a9/src/bootstack/assets/elements/input-before-default.png +0 -0
  477. bootstack-0.1.0a9/src/bootstack/assets/elements/input-compact.png +0 -0
  478. bootstack-0.1.0a9/src/bootstack/assets/elements/input-default.png +0 -0
  479. bootstack-0.1.0a9/src/bootstack/assets/elements/manifest.toml +0 -480
  480. bootstack-0.1.0a9/src/bootstack/assets/elements/nav-button-compact.png +0 -0
  481. bootstack-0.1.0a9/src/bootstack/assets/elements/nav-button-default.png +0 -0
  482. bootstack-0.1.0a9/src/bootstack/assets/elements/nav-icon-button-compact.png +0 -0
  483. bootstack-0.1.0a9/src/bootstack/assets/elements/nav-icon-button-default.png +0 -0
  484. bootstack-0.1.0a9/src/bootstack/assets/elements/notebook-client-border.png +0 -0
  485. bootstack-0.1.0a9/src/bootstack/assets/elements/notebook-tab-active.png +0 -0
  486. bootstack-0.1.0a9/src/bootstack/assets/elements/notebook-tab-bar.png +0 -0
  487. bootstack-0.1.0a9/src/bootstack/assets/elements/notebook-tab-normal.png +0 -0
  488. bootstack-0.1.0a9/src/bootstack/assets/elements/notebook-tab-pill.png +0 -0
  489. bootstack-0.1.0a9/src/bootstack/assets/elements/progress-bar-horizontal-striped.png +0 -0
  490. bootstack-0.1.0a9/src/bootstack/assets/elements/progress-bar-solid.png +0 -0
  491. bootstack-0.1.0a9/src/bootstack/assets/elements/progress-bar-thin.png +0 -0
  492. bootstack-0.1.0a9/src/bootstack/assets/elements/progress-bar-vertical-striped.png +0 -0
  493. bootstack-0.1.0a9/src/bootstack/assets/elements/radio-selected.png +0 -0
  494. bootstack-0.1.0a9/src/bootstack/assets/elements/radio-unselected.png +0 -0
  495. bootstack-0.1.0a9/src/bootstack/assets/elements/scrollbar-horizontal.png +0 -0
  496. bootstack-0.1.0a9/src/bootstack/assets/elements/scrollbar-vertical.png +0 -0
  497. bootstack-0.1.0a9/src/bootstack/assets/elements/slider-handle-focus.png +0 -0
  498. bootstack-0.1.0a9/src/bootstack/assets/elements/slider-handle.png +0 -0
  499. bootstack-0.1.0a9/src/bootstack/assets/elements/slider-track-horizontal.png +0 -0
  500. bootstack-0.1.0a9/src/bootstack/assets/elements/slider-track-vertical.png +0 -0
  501. bootstack-0.1.0a9/src/bootstack/assets/elements/switch-off.png +0 -0
  502. bootstack-0.1.0a9/src/bootstack/assets/elements/switch-on.png +0 -0
  503. bootstack-0.1.0a9/src/bootstack/assets/elements/tabs-bar-horizontal.png +0 -0
  504. bootstack-0.1.0a9/src/bootstack/assets/elements/tabs-bar-vertical.png +0 -0
  505. bootstack-0.1.0a9/src/bootstack/assets/elements/tabs-pill.png +0 -0
  506. bootstack-0.1.0a9/src/bootstack/assets/locales/ar/LC_MESSAGES/bootstack.mo +0 -0
  507. bootstack-0.1.0a9/src/bootstack/assets/locales/ar/LC_MESSAGES/bootstack.po +0 -853
  508. bootstack-0.1.0a9/src/bootstack/assets/locales/bg/LC_MESSAGES/bootstack.po +0 -875
  509. bootstack-0.1.0a9/src/bootstack/assets/locales/cs/LC_MESSAGES/bootstack.mo +0 -0
  510. bootstack-0.1.0a9/src/bootstack/assets/locales/cs/LC_MESSAGES/bootstack.po +0 -853
  511. bootstack-0.1.0a9/src/bootstack/assets/locales/da/LC_MESSAGES/bootstack.mo +0 -0
  512. bootstack-0.1.0a9/src/bootstack/assets/locales/da/LC_MESSAGES/bootstack.po +0 -853
  513. bootstack-0.1.0a9/src/bootstack/assets/locales/de/LC_MESSAGES/bootstack.mo +0 -0
  514. bootstack-0.1.0a9/src/bootstack/assets/locales/de/LC_MESSAGES/bootstack.po +0 -853
  515. bootstack-0.1.0a9/src/bootstack/assets/locales/en/LC_MESSAGES/bootstack.mo +0 -0
  516. bootstack-0.1.0a9/src/bootstack/assets/locales/en/LC_MESSAGES/bootstack.po +0 -875
  517. bootstack-0.1.0a9/src/bootstack/assets/locales/es/LC_MESSAGES/bootstack.mo +0 -0
  518. bootstack-0.1.0a9/src/bootstack/assets/locales/es/LC_MESSAGES/bootstack.po +0 -853
  519. bootstack-0.1.0a9/src/bootstack/assets/locales/fr/LC_MESSAGES/bootstack.mo +0 -0
  520. bootstack-0.1.0a9/src/bootstack/assets/locales/fr/LC_MESSAGES/bootstack.po +0 -853
  521. bootstack-0.1.0a9/src/bootstack/assets/locales/he/LC_MESSAGES/bootstack.mo +0 -0
  522. bootstack-0.1.0a9/src/bootstack/assets/locales/he/LC_MESSAGES/bootstack.po +0 -851
  523. bootstack-0.1.0a9/src/bootstack/assets/locales/hi/LC_MESSAGES/bootstack.mo +0 -0
  524. bootstack-0.1.0a9/src/bootstack/assets/locales/hi/LC_MESSAGES/bootstack.po +0 -842
  525. bootstack-0.1.0a9/src/bootstack/assets/locales/it/LC_MESSAGES/bootstack.mo +0 -0
  526. bootstack-0.1.0a9/src/bootstack/assets/locales/it/LC_MESSAGES/bootstack.po +0 -841
  527. bootstack-0.1.0a9/src/bootstack/assets/locales/ja/LC_MESSAGES/bootstack.mo +0 -0
  528. bootstack-0.1.0a9/src/bootstack/assets/locales/ja/LC_MESSAGES/bootstack.po +0 -914
  529. bootstack-0.1.0a9/src/bootstack/assets/locales/ko/LC_MESSAGES/bootstack.mo +0 -0
  530. bootstack-0.1.0a9/src/bootstack/assets/locales/ko/LC_MESSAGES/bootstack.po +0 -842
  531. bootstack-0.1.0a9/src/bootstack/assets/locales/nb/LC_MESSAGES/bootstack.mo +0 -0
  532. bootstack-0.1.0a9/src/bootstack/assets/locales/nb/LC_MESSAGES/bootstack.po +0 -841
  533. bootstack-0.1.0a9/src/bootstack/assets/locales/nl/LC_MESSAGES/bootstack.mo +0 -0
  534. bootstack-0.1.0a9/src/bootstack/assets/locales/nl/LC_MESSAGES/bootstack.po +0 -841
  535. bootstack-0.1.0a9/src/bootstack/assets/locales/pl/LC_MESSAGES/bootstack.mo +0 -0
  536. bootstack-0.1.0a9/src/bootstack/assets/locales/pl/LC_MESSAGES/bootstack.po +0 -842
  537. bootstack-0.1.0a9/src/bootstack/assets/locales/pt/LC_MESSAGES/bootstack.mo +0 -0
  538. bootstack-0.1.0a9/src/bootstack/assets/locales/pt/LC_MESSAGES/bootstack.po +0 -842
  539. bootstack-0.1.0a9/src/bootstack/assets/locales/pt_BR/LC_MESSAGES/bootstack.mo +0 -0
  540. bootstack-0.1.0a9/src/bootstack/assets/locales/pt_BR/LC_MESSAGES/bootstack.po +0 -842
  541. bootstack-0.1.0a9/src/bootstack/assets/locales/sl/LC_MESSAGES/bootstack.mo +0 -0
  542. bootstack-0.1.0a9/src/bootstack/assets/locales/sl/LC_MESSAGES/bootstack.po +0 -842
  543. bootstack-0.1.0a9/src/bootstack/assets/locales/sv/LC_MESSAGES/bootstack.mo +0 -0
  544. bootstack-0.1.0a9/src/bootstack/assets/locales/sv/LC_MESSAGES/bootstack.po +0 -842
  545. bootstack-0.1.0a9/src/bootstack/assets/locales/tr/LC_MESSAGES/bootstack.mo +0 -0
  546. bootstack-0.1.0a9/src/bootstack/assets/locales/tr/LC_MESSAGES/bootstack.po +0 -842
  547. bootstack-0.1.0a9/src/bootstack/assets/locales/zh_CN/LC_MESSAGES/bootstack.mo +0 -0
  548. bootstack-0.1.0a9/src/bootstack/assets/locales/zh_CN/LC_MESSAGES/bootstack.po +0 -842
  549. bootstack-0.1.0a9/src/bootstack/assets/locales/zh_TW/LC_MESSAGES/bootstack.mo +0 -0
  550. bootstack-0.1.0a9/src/bootstack/assets/locales/zh_TW/LC_MESSAGES/bootstack.po +0 -842
  551. bootstack-0.1.0a9/src/bootstack/assets/themes/amber-dark.json +0 -32
  552. bootstack-0.1.0a9/src/bootstack/assets/themes/amber-light.json +0 -32
  553. bootstack-0.1.0a9/src/bootstack/assets/themes/aurora-dark.json +0 -32
  554. bootstack-0.1.0a9/src/bootstack/assets/themes/aurora-light.json +0 -32
  555. bootstack-0.1.0a9/src/bootstack/assets/themes/bootstrap-dark.json +0 -32
  556. bootstack-0.1.0a9/src/bootstack/assets/themes/bootstrap-light.json +0 -32
  557. bootstack-0.1.0a9/src/bootstack/assets/themes/classic-dark.json +0 -32
  558. bootstack-0.1.0a9/src/bootstack/assets/themes/classic-light.json +0 -32
  559. bootstack-0.1.0a9/src/bootstack/assets/themes/docs-dark.json +0 -32
  560. bootstack-0.1.0a9/src/bootstack/assets/themes/docs-light.json +0 -32
  561. bootstack-0.1.0a9/src/bootstack/assets/themes/forest-dark.json +0 -32
  562. bootstack-0.1.0a9/src/bootstack/assets/themes/forest-light.json +0 -32
  563. bootstack-0.1.0a9/src/bootstack/assets/themes/ocean-dark.json +0 -32
  564. bootstack-0.1.0a9/src/bootstack/assets/themes/ocean-light.json +0 -32
  565. bootstack-0.1.0a9/src/bootstack/assets/themes/rose-dark.json +0 -32
  566. bootstack-0.1.0a9/src/bootstack/assets/themes/rose-light.json +0 -32
  567. bootstack-0.1.0a9/src/bootstack/assets/widgets/__init__.py +0 -0
  568. bootstack-0.1.0a9/src/bootstack/assets/widgets/badge-default.png +0 -0
  569. bootstack-0.1.0a9/src/bootstack/assets/widgets/badge-pill.png +0 -0
  570. bootstack-0.1.0a9/src/bootstack/assets/widgets/border.png +0 -0
  571. bootstack-0.1.0a9/src/bootstack/assets/widgets/button-group-horizontal-after.png +0 -0
  572. bootstack-0.1.0a9/src/bootstack/assets/widgets/button-group-horizontal-before.png +0 -0
  573. bootstack-0.1.0a9/src/bootstack/assets/widgets/button-group-horizontal-center.png +0 -0
  574. bootstack-0.1.0a9/src/bootstack/assets/widgets/button-group-vertical-after.png +0 -0
  575. bootstack-0.1.0a9/src/bootstack/assets/widgets/button-group-vertical-before.png +0 -0
  576. bootstack-0.1.0a9/src/bootstack/assets/widgets/button-group-vertical-center.png +0 -0
  577. bootstack-0.1.0a9/src/bootstack/assets/widgets/button.png +0 -0
  578. bootstack-0.1.0a9/src/bootstack/assets/widgets/checkbox-checked.png +0 -0
  579. bootstack-0.1.0a9/src/bootstack/assets/widgets/checkbox-indeterminate.png +0 -0
  580. bootstack-0.1.0a9/src/bootstack/assets/widgets/checkbox-unchecked.png +0 -0
  581. bootstack-0.1.0a9/src/bootstack/assets/widgets/field.png +0 -0
  582. bootstack-0.1.0a9/src/bootstack/assets/widgets/icon-button.png +0 -0
  583. bootstack-0.1.0a9/src/bootstack/assets/widgets/input-inner.png +0 -0
  584. bootstack-0.1.0a9/src/bootstack/assets/widgets/input-prefix.png +0 -0
  585. bootstack-0.1.0a9/src/bootstack/assets/widgets/input-suffix.png +0 -0
  586. bootstack-0.1.0a9/src/bootstack/assets/widgets/input.png +0 -0
  587. bootstack-0.1.0a9/src/bootstack/assets/widgets/list-item-focus.png +0 -0
  588. bootstack-0.1.0a9/src/bootstack/assets/widgets/list-item-separated.png +0 -0
  589. bootstack-0.1.0a9/src/bootstack/assets/widgets/menu-item-separated.png +0 -0
  590. bootstack-0.1.0a9/src/bootstack/assets/widgets/notebook-client-border.png +0 -0
  591. bootstack-0.1.0a9/src/bootstack/assets/widgets/notebook-pill-active.png +0 -0
  592. bootstack-0.1.0a9/src/bootstack/assets/widgets/notebook-pill-inactive.png +0 -0
  593. bootstack-0.1.0a9/src/bootstack/assets/widgets/notebook-tab-active.png +0 -0
  594. bootstack-0.1.0a9/src/bootstack/assets/widgets/notebook-tab-border.png +0 -0
  595. bootstack-0.1.0a9/src/bootstack/assets/widgets/notebook-tab-normal.png +0 -0
  596. bootstack-0.1.0a9/src/bootstack/assets/widgets/notebook-underline.png +0 -0
  597. bootstack-0.1.0a9/src/bootstack/assets/widgets/progress-bar-horizontal-default.png +0 -0
  598. bootstack-0.1.0a9/src/bootstack/assets/widgets/progress-bar-horizontal-striped.png +0 -0
  599. bootstack-0.1.0a9/src/bootstack/assets/widgets/progress-bar-vertical-default.png +0 -0
  600. bootstack-0.1.0a9/src/bootstack/assets/widgets/progress-bar-vertical-striped.png +0 -0
  601. bootstack-0.1.0a9/src/bootstack/assets/widgets/progress-trough-horizontal.png +0 -0
  602. bootstack-0.1.0a9/src/bootstack/assets/widgets/progress-trough-vertical.png +0 -0
  603. bootstack-0.1.0a9/src/bootstack/assets/widgets/radio-selected.png +0 -0
  604. bootstack-0.1.0a9/src/bootstack/assets/widgets/radio-unselected.png +0 -0
  605. bootstack-0.1.0a9/src/bootstack/assets/widgets/scrollbar-horizontal-rounded.png +0 -0
  606. bootstack-0.1.0a9/src/bootstack/assets/widgets/scrollbar-vertical-rounded.png +0 -0
  607. bootstack-0.1.0a9/src/bootstack/assets/widgets/separator-horizontal.png +0 -0
  608. bootstack-0.1.0a9/src/bootstack/assets/widgets/separator-vertical.png +0 -0
  609. bootstack-0.1.0a9/src/bootstack/assets/widgets/slider-handle-focus.png +0 -0
  610. bootstack-0.1.0a9/src/bootstack/assets/widgets/slider-handle.png +0 -0
  611. bootstack-0.1.0a9/src/bootstack/assets/widgets/slider-track-horizontal.png +0 -0
  612. bootstack-0.1.0a9/src/bootstack/assets/widgets/slider-track-vertical.png +0 -0
  613. bootstack-0.1.0a9/src/bootstack/assets/widgets/switch-off.png +0 -0
  614. bootstack-0.1.0a9/src/bootstack/assets/widgets/switch-on.png +0 -0
  615. bootstack-0.1.0a9/src/bootstack/assets/widgets/tabs-bar-horizontal.png +0 -0
  616. bootstack-0.1.0a9/src/bootstack/assets/widgets/tabs-bar-vertical.png +0 -0
  617. bootstack-0.1.0a9/src/bootstack/assets/widgets/tabs-pill.png +0 -0
  618. bootstack-0.1.0a9/src/bootstack/cli/__init__.py +0 -134
  619. bootstack-0.1.0a9/src/bootstack/cli/add.py +0 -439
  620. bootstack-0.1.0a9/src/bootstack/cli/config.py +0 -287
  621. bootstack-0.1.0a9/src/bootstack/cli/demo.py +0 -1267
  622. bootstack-0.1.0a9/src/bootstack/cli/icons.py +0 -28
  623. bootstack-0.1.0a9/src/bootstack/cli/list_cmd.py +0 -71
  624. bootstack-0.1.0a9/src/bootstack/cli/pyinstaller.py +0 -246
  625. bootstack-0.1.0a9/src/bootstack/cli/run.py +0 -99
  626. bootstack-0.1.0a9/src/bootstack/cli/start.py +0 -105
  627. bootstack-0.1.0a9/src/bootstack/cli/templates/__init__.py +0 -861
  628. bootstack-0.1.0a9/src/bootstack/constants.py +0 -325
  629. bootstack-0.1.0a9/src/bootstack/core/__init__.py +0 -34
  630. bootstack-0.1.0a9/src/bootstack/core/capabilities/__init__.py +0 -45
  631. bootstack-0.1.0a9/src/bootstack/core/capabilities/bind.py +0 -154
  632. bootstack-0.1.0a9/src/bootstack/core/capabilities/busy.py +0 -61
  633. bootstack-0.1.0a9/src/bootstack/core/capabilities/clipboard.py +0 -88
  634. bootstack-0.1.0a9/src/bootstack/core/capabilities/grid.py +0 -188
  635. bootstack-0.1.0a9/src/bootstack/core/capabilities/localization.py +0 -231
  636. bootstack-0.1.0a9/src/bootstack/core/capabilities/pack.py +0 -119
  637. bootstack-0.1.0a9/src/bootstack/core/capabilities/place.py +0 -92
  638. bootstack-0.1.0a9/src/bootstack/core/capabilities/selection.py +0 -136
  639. bootstack-0.1.0a9/src/bootstack/core/capabilities/signals.py +0 -242
  640. bootstack-0.1.0a9/src/bootstack/core/images.py +0 -283
  641. bootstack-0.1.0a9/src/bootstack/core/localization/README.md +0 -90
  642. bootstack-0.1.0a9/src/bootstack/core/localization/__init__.py +0 -13
  643. bootstack-0.1.0a9/src/bootstack/core/localization/intl_format.py +0 -580
  644. bootstack-0.1.0a9/src/bootstack/core/localization/msgcat.py +0 -425
  645. bootstack-0.1.0a9/src/bootstack/core/localization/specs.py +0 -143
  646. bootstack-0.1.0a9/src/bootstack/core/mixins/widget.py +0 -132
  647. bootstack-0.1.0a9/src/bootstack/core/publisher.py +0 -147
  648. bootstack-0.1.0a9/src/bootstack/core/signals/README.md +0 -112
  649. bootstack-0.1.0a9/src/bootstack/core/signals/__init__.py +0 -8
  650. bootstack-0.1.0a9/src/bootstack/core/signals/integration.py +0 -100
  651. bootstack-0.1.0a9/src/bootstack/core/signals/signal.py +0 -317
  652. bootstack-0.1.0a9/src/bootstack/core/signals/types.py +0 -4
  653. bootstack-0.1.0a9/src/bootstack/core/validation/__init__.py +0 -5
  654. bootstack-0.1.0a9/src/bootstack/core/validation/types.py +0 -13
  655. bootstack-0.1.0a9/src/bootstack/core/validation/validation_rules.py +0 -112
  656. bootstack-0.1.0a9/src/bootstack/datasource/README.md +0 -612
  657. bootstack-0.1.0a9/src/bootstack/datasource/__init__.py +0 -51
  658. bootstack-0.1.0a9/src/bootstack/datasource/base.py +0 -510
  659. bootstack-0.1.0a9/src/bootstack/datasource/file_source.py +0 -541
  660. bootstack-0.1.0a9/src/bootstack/datasource/memory_source.py +0 -524
  661. bootstack-0.1.0a9/src/bootstack/datasource/sqlite_source.py +0 -472
  662. bootstack-0.1.0a9/src/bootstack/datasource/types.py +0 -292
  663. bootstack-0.1.0a9/src/bootstack/dialogs/__init__.py +0 -56
  664. bootstack-0.1.0a9/src/bootstack/dialogs/colorchooser.py +0 -674
  665. bootstack-0.1.0a9/src/bootstack/dialogs/colordropper.py +0 -257
  666. bootstack-0.1.0a9/src/bootstack/dialogs/datedialog.py +0 -430
  667. bootstack-0.1.0a9/src/bootstack/dialogs/dialog.py +0 -514
  668. bootstack-0.1.0a9/src/bootstack/dialogs/filterdialog.py +0 -358
  669. bootstack-0.1.0a9/src/bootstack/dialogs/fontdialog.py +0 -339
  670. bootstack-0.1.0a9/src/bootstack/dialogs/formdialog.py +0 -541
  671. bootstack-0.1.0a9/src/bootstack/dialogs/message.py +0 -489
  672. bootstack-0.1.0a9/src/bootstack/dialogs/query.py +0 -561
  673. bootstack-0.1.0a9/src/bootstack/runtime/app.py +0 -889
  674. bootstack-0.1.0a9/src/bootstack/runtime/base_window.py +0 -811
  675. bootstack-0.1.0a9/src/bootstack/runtime/menu.py +0 -463
  676. bootstack-0.1.0a9/src/bootstack/runtime/shortcuts.py +0 -423
  677. bootstack-0.1.0a9/src/bootstack/runtime/tk_patch.py +0 -31
  678. bootstack-0.1.0a9/src/bootstack/runtime/toplevel.py +0 -131
  679. bootstack-0.1.0a9/src/bootstack/runtime/utility.py +0 -371
  680. bootstack-0.1.0a9/src/bootstack/runtime/window_utilities.py +0 -1050
  681. bootstack-0.1.0a9/src/bootstack/style/__init__.py +0 -5498
  682. bootstack-0.1.0a9/src/bootstack/style/bootstyle.py +0 -507
  683. bootstack-0.1.0a9/src/bootstack/style/bootstyle_builder_base.py +0 -752
  684. bootstack-0.1.0a9/src/bootstack/style/bootstyle_builder_tk.py +0 -109
  685. bootstack-0.1.0a9/src/bootstack/style/bootstyle_builder_ttk.py +0 -354
  686. bootstack-0.1.0a9/src/bootstack/style/builders/__init__.py +0 -51
  687. bootstack-0.1.0a9/src/bootstack/style/builders/badge.py +0 -44
  688. bootstack-0.1.0a9/src/bootstack/style/builders/button.py +0 -453
  689. bootstack-0.1.0a9/src/bootstack/style/builders/buttongroup.py +0 -344
  690. bootstack-0.1.0a9/src/bootstack/style/builders/calendar.py +0 -271
  691. bootstack-0.1.0a9/src/bootstack/style/builders/checkbutton.py +0 -125
  692. bootstack-0.1.0a9/src/bootstack/style/builders/combobox.py +0 -112
  693. bootstack-0.1.0a9/src/bootstack/style/builders/contextmenu.py +0 -268
  694. bootstack-0.1.0a9/src/bootstack/style/builders/entry.py +0 -83
  695. bootstack-0.1.0a9/src/bootstack/style/builders/expander.py +0 -171
  696. bootstack-0.1.0a9/src/bootstack/style/builders/field.py +0 -318
  697. bootstack-0.1.0a9/src/bootstack/style/builders/frame.py +0 -27
  698. bootstack-0.1.0a9/src/bootstack/style/builders/labelframe.py +0 -41
  699. bootstack-0.1.0a9/src/bootstack/style/builders/listview.py +0 -264
  700. bootstack-0.1.0a9/src/bootstack/style/builders/menubar.py +0 -74
  701. bootstack-0.1.0a9/src/bootstack/style/builders/menubutton.py +0 -408
  702. bootstack-0.1.0a9/src/bootstack/style/builders/notebook.py +0 -316
  703. bootstack-0.1.0a9/src/bootstack/style/builders/progressbar.py +0 -71
  704. bootstack-0.1.0a9/src/bootstack/style/builders/radiobutton.py +0 -97
  705. bootstack-0.1.0a9/src/bootstack/style/builders/scale.py +0 -66
  706. bootstack-0.1.0a9/src/bootstack/style/builders/scrollbar.py +0 -360
  707. bootstack-0.1.0a9/src/bootstack/style/builders/separator.py +0 -45
  708. bootstack-0.1.0a9/src/bootstack/style/builders/sidenav.py +0 -313
  709. bootstack-0.1.0a9/src/bootstack/style/builders/spinbox.py +0 -119
  710. bootstack-0.1.0a9/src/bootstack/style/builders/switch.py +0 -67
  711. bootstack-0.1.0a9/src/bootstack/style/builders/tabitem.py +0 -205
  712. bootstack-0.1.0a9/src/bootstack/style/builders/toolbutton.py +0 -260
  713. bootstack-0.1.0a9/src/bootstack/style/builders/treeview.py +0 -269
  714. bootstack-0.1.0a9/src/bootstack/style/builders/utils.py +0 -430
  715. bootstack-0.1.0a9/src/bootstack/style/style.py +0 -499
  716. bootstack-0.1.0a9/src/bootstack/style/theme_provider.py +0 -449
  717. bootstack-0.1.0a9/src/bootstack/style/tk_patch.py +0 -5
  718. bootstack-0.1.0a9/src/bootstack/style/token_maps.py +0 -42
  719. bootstack-0.1.0a9/src/bootstack/style/types.py +0 -32
  720. bootstack-0.1.0a9/src/bootstack/style/typography.py +0 -527
  721. bootstack-0.1.0a9/src/bootstack/style/utility.py +0 -696
  722. bootstack-0.1.0a9/src/bootstack/themes/__init__.py +0 -12
  723. bootstack-0.1.0a9/src/bootstack/themes/standard.py +0 -415
  724. bootstack-0.1.0a9/src/bootstack/themes/user.py +0 -45
  725. bootstack-0.1.0a9/src/bootstack/widgets/__init__.py +0 -53
  726. bootstack-0.1.0a9/src/bootstack/widgets/composites/__init__.py +0 -38
  727. bootstack-0.1.0a9/src/bootstack/widgets/composites/accordion.py +0 -385
  728. bootstack-0.1.0a9/src/bootstack/widgets/composites/appshell.py +0 -476
  729. bootstack-0.1.0a9/src/bootstack/widgets/composites/buttongroup.py +0 -391
  730. bootstack-0.1.0a9/src/bootstack/widgets/composites/calendar.py +0 -914
  731. bootstack-0.1.0a9/src/bootstack/widgets/composites/compositeframe.py +0 -282
  732. bootstack-0.1.0a9/src/bootstack/widgets/composites/contextmenu.py +0 -1754
  733. bootstack-0.1.0a9/src/bootstack/widgets/composites/dateentry.py +0 -434
  734. bootstack-0.1.0a9/src/bootstack/widgets/composites/dropdownbutton.py +0 -188
  735. bootstack-0.1.0a9/src/bootstack/widgets/composites/expander.py +0 -508
  736. bootstack-0.1.0a9/src/bootstack/widgets/composites/field.py +0 -474
  737. bootstack-0.1.0a9/src/bootstack/widgets/composites/floodgauge.py +0 -434
  738. bootstack-0.1.0a9/src/bootstack/widgets/composites/form.py +0 -982
  739. bootstack-0.1.0a9/src/bootstack/widgets/composites/labeledscale.py +0 -209
  740. bootstack-0.1.0a9/src/bootstack/widgets/composites/list/__init__.py +0 -15
  741. bootstack-0.1.0a9/src/bootstack/widgets/composites/list/listitem.py +0 -715
  742. bootstack-0.1.0a9/src/bootstack/widgets/composites/list/listview.py +0 -1212
  743. bootstack-0.1.0a9/src/bootstack/widgets/composites/menubar.py +0 -303
  744. bootstack-0.1.0a9/src/bootstack/widgets/composites/meter.py +0 -882
  745. bootstack-0.1.0a9/src/bootstack/widgets/composites/numericentry.py +0 -183
  746. bootstack-0.1.0a9/src/bootstack/widgets/composites/pagestack.py +0 -330
  747. bootstack-0.1.0a9/src/bootstack/widgets/composites/passwordentry.py +0 -149
  748. bootstack-0.1.0a9/src/bootstack/widgets/composites/pathentry.py +0 -223
  749. bootstack-0.1.0a9/src/bootstack/widgets/composites/radiogroup.py +0 -474
  750. bootstack-0.1.0a9/src/bootstack/widgets/composites/scrolledtext.py +0 -388
  751. bootstack-0.1.0a9/src/bootstack/widgets/composites/scrollview.py +0 -684
  752. bootstack-0.1.0a9/src/bootstack/widgets/composites/selectbox.py +0 -551
  753. bootstack-0.1.0a9/src/bootstack/widgets/composites/sidenav/__init__.py +0 -24
  754. bootstack-0.1.0a9/src/bootstack/widgets/composites/sidenav/group.py +0 -485
  755. bootstack-0.1.0a9/src/bootstack/widgets/composites/sidenav/header.py +0 -83
  756. bootstack-0.1.0a9/src/bootstack/widgets/composites/sidenav/item.py +0 -413
  757. bootstack-0.1.0a9/src/bootstack/widgets/composites/sidenav/separator.py +0 -51
  758. bootstack-0.1.0a9/src/bootstack/widgets/composites/sidenav/view.py +0 -910
  759. bootstack-0.1.0a9/src/bootstack/widgets/composites/spinnerentry.py +0 -232
  760. bootstack-0.1.0a9/src/bootstack/widgets/composites/tableview/tableview.py +0 -2254
  761. bootstack-0.1.0a9/src/bootstack/widgets/composites/tabs/__init__.py +0 -6
  762. bootstack-0.1.0a9/src/bootstack/widgets/composites/tabs/tabitem.py +0 -372
  763. bootstack-0.1.0a9/src/bootstack/widgets/composites/tabs/tabs.py +0 -478
  764. bootstack-0.1.0a9/src/bootstack/widgets/composites/tabs/tabview.py +0 -352
  765. bootstack-0.1.0a9/src/bootstack/widgets/composites/textentry.py +0 -87
  766. bootstack-0.1.0a9/src/bootstack/widgets/composites/timeentry.py +0 -196
  767. bootstack-0.1.0a9/src/bootstack/widgets/composites/toast.py +0 -371
  768. bootstack-0.1.0a9/src/bootstack/widgets/composites/togglegroup.py +0 -382
  769. bootstack-0.1.0a9/src/bootstack/widgets/composites/toolbar.py +0 -393
  770. bootstack-0.1.0a9/src/bootstack/widgets/composites/tooltip.py +0 -404
  771. bootstack-0.1.0a9/src/bootstack/widgets/internal/__init__.py +0 -0
  772. bootstack-0.1.0a9/src/bootstack/widgets/internal/wrapper_base.py +0 -304
  773. bootstack-0.1.0a9/src/bootstack/widgets/mixins/__init__.py +0 -25
  774. bootstack-0.1.0a9/src/bootstack/widgets/mixins/configure_mixin.py +0 -186
  775. bootstack-0.1.0a9/src/bootstack/widgets/mixins/entry_mixin.py +0 -70
  776. bootstack-0.1.0a9/src/bootstack/widgets/mixins/font_mixin.py +0 -346
  777. bootstack-0.1.0a9/src/bootstack/widgets/mixins/icon_mixin.py +0 -38
  778. bootstack-0.1.0a9/src/bootstack/widgets/mixins/localization_mixin.py +0 -255
  779. bootstack-0.1.0a9/src/bootstack/widgets/mixins/signal_mixin.py +0 -272
  780. bootstack-0.1.0a9/src/bootstack/widgets/mixins/validation_mixin.py +0 -204
  781. bootstack-0.1.0a9/src/bootstack/widgets/parts/__init__.py +0 -11
  782. bootstack-0.1.0a9/src/bootstack/widgets/parts/numberentry_part.py +0 -345
  783. bootstack-0.1.0a9/src/bootstack/widgets/parts/spinnerentry_part.py +0 -394
  784. bootstack-0.1.0a9/src/bootstack/widgets/parts/textentry_part.py +0 -346
  785. bootstack-0.1.0a9/src/bootstack/widgets/primitives/__init__.py +0 -55
  786. bootstack-0.1.0a9/src/bootstack/widgets/primitives/badge.py +0 -44
  787. bootstack-0.1.0a9/src/bootstack/widgets/primitives/button.py +0 -89
  788. bootstack-0.1.0a9/src/bootstack/widgets/primitives/card.py +0 -66
  789. bootstack-0.1.0a9/src/bootstack/widgets/primitives/checkbutton.py +0 -134
  790. bootstack-0.1.0a9/src/bootstack/widgets/primitives/checktoggle.py +0 -58
  791. bootstack-0.1.0a9/src/bootstack/widgets/primitives/combobox.py +0 -165
  792. bootstack-0.1.0a9/src/bootstack/widgets/primitives/entry.py +0 -98
  793. bootstack-0.1.0a9/src/bootstack/widgets/primitives/frame.py +0 -206
  794. bootstack-0.1.0a9/src/bootstack/widgets/primitives/gridframe.py +0 -479
  795. bootstack-0.1.0a9/src/bootstack/widgets/primitives/label.py +0 -95
  796. bootstack-0.1.0a9/src/bootstack/widgets/primitives/labelframe.py +0 -63
  797. bootstack-0.1.0a9/src/bootstack/widgets/primitives/menubutton.py +0 -118
  798. bootstack-0.1.0a9/src/bootstack/widgets/primitives/notebook.py +0 -551
  799. bootstack-0.1.0a9/src/bootstack/widgets/primitives/optionmenu.py +0 -248
  800. bootstack-0.1.0a9/src/bootstack/widgets/primitives/packframe.py +0 -228
  801. bootstack-0.1.0a9/src/bootstack/widgets/primitives/panedwindow.py +0 -58
  802. bootstack-0.1.0a9/src/bootstack/widgets/primitives/progressbar.py +0 -95
  803. bootstack-0.1.0a9/src/bootstack/widgets/primitives/radiobutton.py +0 -125
  804. bootstack-0.1.0a9/src/bootstack/widgets/primitives/radiotoggle.py +0 -50
  805. bootstack-0.1.0a9/src/bootstack/widgets/primitives/scale.py +0 -85
  806. bootstack-0.1.0a9/src/bootstack/widgets/primitives/scrollbar.py +0 -56
  807. bootstack-0.1.0a9/src/bootstack/widgets/primitives/separator.py +0 -56
  808. bootstack-0.1.0a9/src/bootstack/widgets/primitives/sizegrip.py +0 -47
  809. bootstack-0.1.0a9/src/bootstack/widgets/primitives/spinbox.py +0 -91
  810. bootstack-0.1.0a9/src/bootstack/widgets/primitives/switch.py +0 -41
  811. bootstack-0.1.0a9/src/bootstack/widgets/primitives/treeview.py +0 -77
  812. bootstack-0.1.0a9/src/bootstack/widgets/types.py +0 -20
  813. bootstack-0.1.0a9/src/bootstack.egg-info/PKG-INFO +0 -214
  814. bootstack-0.1.0a9/src/bootstack.egg-info/SOURCES.txt +0 -428
  815. bootstack-0.1.0a9/src/bootstack.egg-info/requires.txt +0 -11
  816. bootstack-0.1.0a9/tests/test_togglegroup.py +0 -147
  817. bootstack-0.1.0a9/tests/test_variables.py +0 -81
  818. {bootstack-0.1.0a9 → bootstack-0.1.0a10}/MANIFEST.in +0 -0
  819. {bootstack-0.1.0a9 → bootstack-0.1.0a10}/NOTICE +0 -0
  820. {bootstack-0.1.0a9 → bootstack-0.1.0a10}/setup.cfg +0 -0
  821. {bootstack-0.1.0a9 → bootstack-0.1.0a10}/src/bootstack/__main__.py +0 -0
  822. {bootstack-0.1.0a9/src/bootstack/core → bootstack-0.1.0a10/src/bootstack/_core}/capabilities/after.py +0 -0
  823. {bootstack-0.1.0a9/src/bootstack/core → bootstack-0.1.0a10/src/bootstack/_core}/capabilities/bindtags.py +0 -0
  824. {bootstack-0.1.0a9/src/bootstack/core → bootstack-0.1.0a10/src/bootstack/_core}/capabilities/focus.py +0 -0
  825. {bootstack-0.1.0a9/src/bootstack/core → bootstack-0.1.0a10/src/bootstack/_core}/capabilities/grab.py +0 -0
  826. {bootstack-0.1.0a9/src/bootstack/core → bootstack-0.1.0a10/src/bootstack/_core}/capabilities/winfo.py +0 -0
  827. {bootstack-0.1.0a9/src/bootstack/core → bootstack-0.1.0a10/src/bootstack/_core}/colorutils.py +0 -0
  828. {bootstack-0.1.0a9/src/bootstack/core → bootstack-0.1.0a10/src/bootstack/_core}/exceptions.py +0 -0
  829. {bootstack-0.1.0a9/src/bootstack/core → bootstack-0.1.0a10/src/bootstack/_core}/mixins/__init__.py +0 -0
  830. {bootstack-0.1.0a9/src/bootstack/core → bootstack-0.1.0a10/src/bootstack/_core}/mixins/ttk_state.py +0 -0
  831. {bootstack-0.1.0a9/src/bootstack/core → bootstack-0.1.0a10/src/bootstack/_core}/variables.py +0 -0
  832. {bootstack-0.1.0a9/src/bootstack/runtime → bootstack-0.1.0a10/src/bootstack/_runtime}/__init__.py +0 -0
  833. {bootstack-0.1.0a9/src/bootstack/runtime → bootstack-0.1.0a10/src/bootstack/_runtime}/events.py +0 -0
  834. {bootstack-0.1.0a9/src/bootstack/runtime → bootstack-0.1.0a10/src/bootstack/_runtime}/visual_focus.py +0 -0
  835. {bootstack-0.1.0a9 → bootstack-0.1.0a10}/src/bootstack/assets/elements/__init__.py +0 -0
  836. {bootstack-0.1.0a9 → bootstack-0.1.0a10}/src/bootstack/assets/elements/list-item-separated.png +0 -0
  837. {bootstack-0.1.0a9 → bootstack-0.1.0a10}/src/bootstack/assets/elements/list-item.png +0 -0
  838. {bootstack-0.1.0a9 → bootstack-0.1.0a10}/src/bootstack/assets/elements/menu-item.png +0 -0
  839. {bootstack-0.1.0a9 → bootstack-0.1.0a10}/src/bootstack/cli/__main__.py +0 -0
  840. {bootstack-0.1.0a9 → bootstack-0.1.0a10}/src/bootstack/cli/build.py +0 -0
  841. {bootstack-0.1.0a9 → bootstack-0.1.0a10}/src/bootstack/cli/doctor.py +0 -0
  842. {bootstack-0.1.0a9 → bootstack-0.1.0a10}/src/bootstack/cli/promote.py +0 -0
  843. {bootstack-0.1.0a9 → bootstack-0.1.0a10}/src/bootstack/py.typed +0 -0
  844. {bootstack-0.1.0a9 → bootstack-0.1.0a10}/src/bootstack/style/bootstyle_builder_mixed.py +0 -0
  845. {bootstack-0.1.0a9 → bootstack-0.1.0a10}/src/bootstack/style/builders/label.py +0 -0
  846. {bootstack-0.1.0a9 → bootstack-0.1.0a10}/src/bootstack/style/builders/panedwindow.py +0 -0
  847. {bootstack-0.1.0a9 → bootstack-0.1.0a10}/src/bootstack/style/builders/sizegrip.py +0 -0
  848. {bootstack-0.1.0a9 → bootstack-0.1.0a10}/src/bootstack/style/builders/tooltip.py +0 -0
  849. {bootstack-0.1.0a9 → bootstack-0.1.0a10}/src/bootstack/style/builders_tk/__init__.py +0 -0
  850. {bootstack-0.1.0a9 → bootstack-0.1.0a10}/src/bootstack/style/builders_tk/defaults.py +0 -0
  851. {bootstack-0.1.0a9 → bootstack-0.1.0a10}/src/bootstack/style/element.py +0 -0
  852. {bootstack-0.1.0a9/src/bootstack/core → bootstack-0.1.0a10/src/bootstack}/validation/validation_result.py +0 -0
  853. {bootstack-0.1.0a9/src/bootstack/assets/themes → bootstack-0.1.0a10/src/bootstack/widgets/_impl/_internal}/__init__.py +0 -0
  854. {bootstack-0.1.0a9/src/bootstack/widgets → bootstack-0.1.0a10/src/bootstack/widgets/_impl}/composites/scrolledtext.pyi +0 -0
  855. {bootstack-0.1.0a9/src/bootstack/widgets → bootstack-0.1.0a10/src/bootstack/widgets/_impl}/composites/tableview/__init__.py +0 -0
  856. {bootstack-0.1.0a9/src/bootstack/widgets → bootstack-0.1.0a10/src/bootstack/widgets/_impl}/composites/tableview/types.py +0 -0
  857. {bootstack-0.1.0a9 → bootstack-0.1.0a10}/src/bootstack.egg-info/dependency_links.txt +0 -0
  858. {bootstack-0.1.0a9 → bootstack-0.1.0a10}/src/bootstack.egg-info/entry_points.txt +0 -0
  859. {bootstack-0.1.0a9 → bootstack-0.1.0a10}/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.0a10
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 a command bar, sidebar, and 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, CommandBar |
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, CommandBar, 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 a command bar, sidebar, and 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, CommandBar |
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, CommandBar, 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.0a10"
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.0a10"
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"] }