bootstack 0.1.0a1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (419) hide show
  1. bootstack/__init__.py +249 -0
  2. bootstack/__main__.py +5 -0
  3. bootstack/api/__init__.py +127 -0
  4. bootstack/api/app.py +30 -0
  5. bootstack/api/constants.py +3 -0
  6. bootstack/api/data.py +23 -0
  7. bootstack/api/dialogs.py +44 -0
  8. bootstack/api/i18n.py +17 -0
  9. bootstack/api/localization.py +16 -0
  10. bootstack/api/menu.py +7 -0
  11. bootstack/api/style.py +23 -0
  12. bootstack/api/utils.py +24 -0
  13. bootstack/api/widgets.py +137 -0
  14. bootstack/assets/__init__.py +24 -0
  15. bootstack/assets/bootstack-transparent.png +0 -0
  16. bootstack/assets/bootstack.ico +0 -0
  17. bootstack/assets/bootstack.png +0 -0
  18. bootstack/assets/elements/__init__.py +0 -0
  19. bootstack/assets/elements/badge-pill.png +0 -0
  20. bootstack/assets/elements/badge-square.png +0 -0
  21. bootstack/assets/elements/border.png +0 -0
  22. bootstack/assets/elements/button-compact.png +0 -0
  23. bootstack/assets/elements/button-default.png +0 -0
  24. bootstack/assets/elements/button-group-horizontal-after-compact.png +0 -0
  25. bootstack/assets/elements/button-group-horizontal-after-default.png +0 -0
  26. bootstack/assets/elements/button-group-horizontal-before-compact.png +0 -0
  27. bootstack/assets/elements/button-group-horizontal-before-default.png +0 -0
  28. bootstack/assets/elements/button-group-horizontal-center-compact.png +0 -0
  29. bootstack/assets/elements/button-group-horizontal-center-default.png +0 -0
  30. bootstack/assets/elements/button-group-vertical-after-compact.png +0 -0
  31. bootstack/assets/elements/button-group-vertical-after-default.png +0 -0
  32. bootstack/assets/elements/button-group-vertical-before-compact.png +0 -0
  33. bootstack/assets/elements/button-group-vertical-before-default.png +0 -0
  34. bootstack/assets/elements/button-group-vertical-center-compact.png +0 -0
  35. bootstack/assets/elements/button-group-vertical-center-default.png +0 -0
  36. bootstack/assets/elements/checkbox-checked.png +0 -0
  37. bootstack/assets/elements/checkbox-indeterminate.png +0 -0
  38. bootstack/assets/elements/checkbox-unchecked.png +0 -0
  39. bootstack/assets/elements/field.png +0 -0
  40. bootstack/assets/elements/input-after-compact.png +0 -0
  41. bootstack/assets/elements/input-after-default.png +0 -0
  42. bootstack/assets/elements/input-before-compact.png +0 -0
  43. bootstack/assets/elements/input-before-default.png +0 -0
  44. bootstack/assets/elements/input-compact.png +0 -0
  45. bootstack/assets/elements/input-default.png +0 -0
  46. bootstack/assets/elements/list-item-separated.png +0 -0
  47. bootstack/assets/elements/list-item.png +0 -0
  48. bootstack/assets/elements/manifest.toml +480 -0
  49. bootstack/assets/elements/menu-item.png +0 -0
  50. bootstack/assets/elements/nav-button-compact.png +0 -0
  51. bootstack/assets/elements/nav-button-default.png +0 -0
  52. bootstack/assets/elements/nav-icon-button-compact.png +0 -0
  53. bootstack/assets/elements/nav-icon-button-default.png +0 -0
  54. bootstack/assets/elements/notebook-client-border.png +0 -0
  55. bootstack/assets/elements/notebook-tab-active.png +0 -0
  56. bootstack/assets/elements/notebook-tab-bar.png +0 -0
  57. bootstack/assets/elements/notebook-tab-normal.png +0 -0
  58. bootstack/assets/elements/notebook-tab-pill.png +0 -0
  59. bootstack/assets/elements/progress-bar-horizontal-striped.png +0 -0
  60. bootstack/assets/elements/progress-bar-solid.png +0 -0
  61. bootstack/assets/elements/progress-bar-thin.png +0 -0
  62. bootstack/assets/elements/progress-bar-vertical-striped.png +0 -0
  63. bootstack/assets/elements/radio-selected.png +0 -0
  64. bootstack/assets/elements/radio-unselected.png +0 -0
  65. bootstack/assets/elements/scrollbar-horizontal.png +0 -0
  66. bootstack/assets/elements/scrollbar-vertical.png +0 -0
  67. bootstack/assets/elements/slider-handle-focus.png +0 -0
  68. bootstack/assets/elements/slider-handle.png +0 -0
  69. bootstack/assets/elements/slider-track-horizontal.png +0 -0
  70. bootstack/assets/elements/slider-track-vertical.png +0 -0
  71. bootstack/assets/elements/switch-off.png +0 -0
  72. bootstack/assets/elements/switch-on.png +0 -0
  73. bootstack/assets/elements/tabs-bar-horizontal.png +0 -0
  74. bootstack/assets/elements/tabs-bar-vertical.png +0 -0
  75. bootstack/assets/elements/tabs-pill.png +0 -0
  76. bootstack/assets/locales/ar/LC_MESSAGES/bootstack.mo +0 -0
  77. bootstack/assets/locales/ar/LC_MESSAGES/bootstack.po +853 -0
  78. bootstack/assets/locales/bg/LC_MESSAGES/bootstack.po +875 -0
  79. bootstack/assets/locales/cs/LC_MESSAGES/bootstack.mo +0 -0
  80. bootstack/assets/locales/cs/LC_MESSAGES/bootstack.po +853 -0
  81. bootstack/assets/locales/da/LC_MESSAGES/bootstack.mo +0 -0
  82. bootstack/assets/locales/da/LC_MESSAGES/bootstack.po +853 -0
  83. bootstack/assets/locales/de/LC_MESSAGES/bootstack.mo +0 -0
  84. bootstack/assets/locales/de/LC_MESSAGES/bootstack.po +853 -0
  85. bootstack/assets/locales/en/LC_MESSAGES/bootstack.mo +0 -0
  86. bootstack/assets/locales/en/LC_MESSAGES/bootstack.po +875 -0
  87. bootstack/assets/locales/es/LC_MESSAGES/bootstack.mo +0 -0
  88. bootstack/assets/locales/es/LC_MESSAGES/bootstack.po +853 -0
  89. bootstack/assets/locales/fr/LC_MESSAGES/bootstack.mo +0 -0
  90. bootstack/assets/locales/fr/LC_MESSAGES/bootstack.po +853 -0
  91. bootstack/assets/locales/he/LC_MESSAGES/bootstack.mo +0 -0
  92. bootstack/assets/locales/he/LC_MESSAGES/bootstack.po +851 -0
  93. bootstack/assets/locales/hi/LC_MESSAGES/bootstack.mo +0 -0
  94. bootstack/assets/locales/hi/LC_MESSAGES/bootstack.po +842 -0
  95. bootstack/assets/locales/it/LC_MESSAGES/bootstack.mo +0 -0
  96. bootstack/assets/locales/it/LC_MESSAGES/bootstack.po +841 -0
  97. bootstack/assets/locales/ja/LC_MESSAGES/bootstack.mo +0 -0
  98. bootstack/assets/locales/ja/LC_MESSAGES/bootstack.po +914 -0
  99. bootstack/assets/locales/ko/LC_MESSAGES/bootstack.mo +0 -0
  100. bootstack/assets/locales/ko/LC_MESSAGES/bootstack.po +842 -0
  101. bootstack/assets/locales/nb/LC_MESSAGES/bootstack.mo +0 -0
  102. bootstack/assets/locales/nb/LC_MESSAGES/bootstack.po +841 -0
  103. bootstack/assets/locales/nl/LC_MESSAGES/bootstack.mo +0 -0
  104. bootstack/assets/locales/nl/LC_MESSAGES/bootstack.po +841 -0
  105. bootstack/assets/locales/pl/LC_MESSAGES/bootstack.mo +0 -0
  106. bootstack/assets/locales/pl/LC_MESSAGES/bootstack.po +842 -0
  107. bootstack/assets/locales/pt/LC_MESSAGES/bootstack.mo +0 -0
  108. bootstack/assets/locales/pt/LC_MESSAGES/bootstack.po +842 -0
  109. bootstack/assets/locales/pt_BR/LC_MESSAGES/bootstack.mo +0 -0
  110. bootstack/assets/locales/pt_BR/LC_MESSAGES/bootstack.po +842 -0
  111. bootstack/assets/locales/sl/LC_MESSAGES/bootstack.mo +0 -0
  112. bootstack/assets/locales/sl/LC_MESSAGES/bootstack.po +842 -0
  113. bootstack/assets/locales/sv/LC_MESSAGES/bootstack.mo +0 -0
  114. bootstack/assets/locales/sv/LC_MESSAGES/bootstack.po +842 -0
  115. bootstack/assets/locales/tr/LC_MESSAGES/bootstack.mo +0 -0
  116. bootstack/assets/locales/tr/LC_MESSAGES/bootstack.po +842 -0
  117. bootstack/assets/locales/zh_CN/LC_MESSAGES/bootstack.mo +0 -0
  118. bootstack/assets/locales/zh_CN/LC_MESSAGES/bootstack.po +842 -0
  119. bootstack/assets/locales/zh_TW/LC_MESSAGES/bootstack.mo +0 -0
  120. bootstack/assets/locales/zh_TW/LC_MESSAGES/bootstack.po +842 -0
  121. bootstack/assets/themes/__init__.py +0 -0
  122. bootstack/assets/themes/amber-dark.json +32 -0
  123. bootstack/assets/themes/amber-light.json +32 -0
  124. bootstack/assets/themes/aurora-dark.json +32 -0
  125. bootstack/assets/themes/aurora-light.json +32 -0
  126. bootstack/assets/themes/bootstrap-dark.json +32 -0
  127. bootstack/assets/themes/bootstrap-light.json +32 -0
  128. bootstack/assets/themes/classic-dark.json +32 -0
  129. bootstack/assets/themes/classic-light.json +32 -0
  130. bootstack/assets/themes/docs-dark.json +32 -0
  131. bootstack/assets/themes/docs-light.json +32 -0
  132. bootstack/assets/themes/forest-dark.json +32 -0
  133. bootstack/assets/themes/forest-light.json +32 -0
  134. bootstack/assets/themes/ocean-dark.json +32 -0
  135. bootstack/assets/themes/ocean-light.json +32 -0
  136. bootstack/assets/themes/rose-dark.json +32 -0
  137. bootstack/assets/themes/rose-light.json +32 -0
  138. bootstack/assets/widgets/__init__.py +0 -0
  139. bootstack/assets/widgets/badge-default.png +0 -0
  140. bootstack/assets/widgets/badge-pill.png +0 -0
  141. bootstack/assets/widgets/border.png +0 -0
  142. bootstack/assets/widgets/button-group-horizontal-after.png +0 -0
  143. bootstack/assets/widgets/button-group-horizontal-before.png +0 -0
  144. bootstack/assets/widgets/button-group-horizontal-center.png +0 -0
  145. bootstack/assets/widgets/button-group-vertical-after.png +0 -0
  146. bootstack/assets/widgets/button-group-vertical-before.png +0 -0
  147. bootstack/assets/widgets/button-group-vertical-center.png +0 -0
  148. bootstack/assets/widgets/button.png +0 -0
  149. bootstack/assets/widgets/checkbox-checked.png +0 -0
  150. bootstack/assets/widgets/checkbox-indeterminate.png +0 -0
  151. bootstack/assets/widgets/checkbox-unchecked.png +0 -0
  152. bootstack/assets/widgets/field.png +0 -0
  153. bootstack/assets/widgets/icon-button.png +0 -0
  154. bootstack/assets/widgets/input-inner.png +0 -0
  155. bootstack/assets/widgets/input-prefix.png +0 -0
  156. bootstack/assets/widgets/input-suffix.png +0 -0
  157. bootstack/assets/widgets/input.png +0 -0
  158. bootstack/assets/widgets/list-item-focus.png +0 -0
  159. bootstack/assets/widgets/list-item-separated.png +0 -0
  160. bootstack/assets/widgets/menu-item-separated.png +0 -0
  161. bootstack/assets/widgets/notebook-client-border.png +0 -0
  162. bootstack/assets/widgets/notebook-pill-active.png +0 -0
  163. bootstack/assets/widgets/notebook-pill-inactive.png +0 -0
  164. bootstack/assets/widgets/notebook-tab-active.png +0 -0
  165. bootstack/assets/widgets/notebook-tab-border.png +0 -0
  166. bootstack/assets/widgets/notebook-tab-normal.png +0 -0
  167. bootstack/assets/widgets/notebook-underline.png +0 -0
  168. bootstack/assets/widgets/progress-bar-horizontal-default.png +0 -0
  169. bootstack/assets/widgets/progress-bar-horizontal-striped.png +0 -0
  170. bootstack/assets/widgets/progress-bar-vertical-default.png +0 -0
  171. bootstack/assets/widgets/progress-bar-vertical-striped.png +0 -0
  172. bootstack/assets/widgets/progress-trough-horizontal.png +0 -0
  173. bootstack/assets/widgets/progress-trough-vertical.png +0 -0
  174. bootstack/assets/widgets/radio-selected.png +0 -0
  175. bootstack/assets/widgets/radio-unselected.png +0 -0
  176. bootstack/assets/widgets/scrollbar-horizontal-rounded.png +0 -0
  177. bootstack/assets/widgets/scrollbar-vertical-rounded.png +0 -0
  178. bootstack/assets/widgets/separator-horizontal.png +0 -0
  179. bootstack/assets/widgets/separator-vertical.png +0 -0
  180. bootstack/assets/widgets/slider-handle-focus.png +0 -0
  181. bootstack/assets/widgets/slider-handle.png +0 -0
  182. bootstack/assets/widgets/slider-track-horizontal.png +0 -0
  183. bootstack/assets/widgets/slider-track-vertical.png +0 -0
  184. bootstack/assets/widgets/switch-off.png +0 -0
  185. bootstack/assets/widgets/switch-on.png +0 -0
  186. bootstack/assets/widgets/tabs-bar-horizontal.png +0 -0
  187. bootstack/assets/widgets/tabs-bar-vertical.png +0 -0
  188. bootstack/assets/widgets/tabs-pill.png +0 -0
  189. bootstack/cli/__init__.py +124 -0
  190. bootstack/cli/__main__.py +6 -0
  191. bootstack/cli/add.py +439 -0
  192. bootstack/cli/build.py +115 -0
  193. bootstack/cli/config.py +287 -0
  194. bootstack/cli/demo.py +1267 -0
  195. bootstack/cli/doctor.py +195 -0
  196. bootstack/cli/list_cmd.py +71 -0
  197. bootstack/cli/promote.py +120 -0
  198. bootstack/cli/pyinstaller.py +246 -0
  199. bootstack/cli/run.py +99 -0
  200. bootstack/cli/start.py +105 -0
  201. bootstack/cli/templates/__init__.py +861 -0
  202. bootstack/constants.py +325 -0
  203. bootstack/core/__init__.py +34 -0
  204. bootstack/core/capabilities/__init__.py +45 -0
  205. bootstack/core/capabilities/after.py +103 -0
  206. bootstack/core/capabilities/bind.py +154 -0
  207. bootstack/core/capabilities/bindtags.py +112 -0
  208. bootstack/core/capabilities/busy.py +61 -0
  209. bootstack/core/capabilities/clipboard.py +88 -0
  210. bootstack/core/capabilities/focus.py +118 -0
  211. bootstack/core/capabilities/grab.py +65 -0
  212. bootstack/core/capabilities/grid.py +188 -0
  213. bootstack/core/capabilities/localization.py +231 -0
  214. bootstack/core/capabilities/pack.py +119 -0
  215. bootstack/core/capabilities/place.py +92 -0
  216. bootstack/core/capabilities/selection.py +136 -0
  217. bootstack/core/capabilities/signals.py +242 -0
  218. bootstack/core/capabilities/winfo.py +315 -0
  219. bootstack/core/colorutils.py +234 -0
  220. bootstack/core/exceptions.py +95 -0
  221. bootstack/core/images.py +283 -0
  222. bootstack/core/localization/README.md +90 -0
  223. bootstack/core/localization/__init__.py +13 -0
  224. bootstack/core/localization/intl_format.py +580 -0
  225. bootstack/core/localization/msgcat.py +425 -0
  226. bootstack/core/localization/specs.py +143 -0
  227. bootstack/core/mixins/__init__.py +1 -0
  228. bootstack/core/mixins/ttk_state.py +35 -0
  229. bootstack/core/mixins/widget.py +132 -0
  230. bootstack/core/publisher.py +147 -0
  231. bootstack/core/signals/README.md +112 -0
  232. bootstack/core/signals/__init__.py +8 -0
  233. bootstack/core/signals/integration.py +100 -0
  234. bootstack/core/signals/signal.py +317 -0
  235. bootstack/core/signals/types.py +4 -0
  236. bootstack/core/validation/__init__.py +5 -0
  237. bootstack/core/validation/types.py +13 -0
  238. bootstack/core/validation/validation_result.py +17 -0
  239. bootstack/core/validation/validation_rules.py +112 -0
  240. bootstack/core/variables.py +62 -0
  241. bootstack/datasource/README.md +607 -0
  242. bootstack/datasource/__init__.py +51 -0
  243. bootstack/datasource/base.py +474 -0
  244. bootstack/datasource/file_source.py +541 -0
  245. bootstack/datasource/memory_source.py +482 -0
  246. bootstack/datasource/sqlite_source.py +453 -0
  247. bootstack/datasource/types.py +259 -0
  248. bootstack/dialogs/__init__.py +56 -0
  249. bootstack/dialogs/colorchooser.py +674 -0
  250. bootstack/dialogs/colordropper.py +257 -0
  251. bootstack/dialogs/datedialog.py +404 -0
  252. bootstack/dialogs/dialog.py +514 -0
  253. bootstack/dialogs/filterdialog.py +358 -0
  254. bootstack/dialogs/fontdialog.py +339 -0
  255. bootstack/dialogs/formdialog.py +541 -0
  256. bootstack/dialogs/message.py +489 -0
  257. bootstack/dialogs/query.py +561 -0
  258. bootstack/py.typed +1 -0
  259. bootstack/runtime/__init__.py +3 -0
  260. bootstack/runtime/app.py +879 -0
  261. bootstack/runtime/base_window.py +786 -0
  262. bootstack/runtime/events.py +399 -0
  263. bootstack/runtime/menu.py +510 -0
  264. bootstack/runtime/shortcuts.py +423 -0
  265. bootstack/runtime/tk_patch.py +31 -0
  266. bootstack/runtime/toplevel.py +131 -0
  267. bootstack/runtime/utility.py +371 -0
  268. bootstack/runtime/visual_focus.py +228 -0
  269. bootstack/runtime/window_utilities.py +1043 -0
  270. bootstack/style/__init__.py +5498 -0
  271. bootstack/style/bootstyle.py +507 -0
  272. bootstack/style/bootstyle_builder_base.py +752 -0
  273. bootstack/style/bootstyle_builder_mixed.py +93 -0
  274. bootstack/style/bootstyle_builder_tk.py +109 -0
  275. bootstack/style/bootstyle_builder_ttk.py +354 -0
  276. bootstack/style/builders/__init__.py +51 -0
  277. bootstack/style/builders/badge.py +44 -0
  278. bootstack/style/builders/button.py +453 -0
  279. bootstack/style/builders/buttongroup.py +344 -0
  280. bootstack/style/builders/calendar.py +271 -0
  281. bootstack/style/builders/checkbutton.py +95 -0
  282. bootstack/style/builders/combobox.py +112 -0
  283. bootstack/style/builders/contextmenu.py +268 -0
  284. bootstack/style/builders/entry.py +83 -0
  285. bootstack/style/builders/expander.py +171 -0
  286. bootstack/style/builders/field.py +312 -0
  287. bootstack/style/builders/frame.py +27 -0
  288. bootstack/style/builders/label.py +28 -0
  289. bootstack/style/builders/labelframe.py +41 -0
  290. bootstack/style/builders/listview.py +267 -0
  291. bootstack/style/builders/menubar.py +74 -0
  292. bootstack/style/builders/menubutton.py +408 -0
  293. bootstack/style/builders/notebook.py +316 -0
  294. bootstack/style/builders/panedwindow.py +25 -0
  295. bootstack/style/builders/progressbar.py +71 -0
  296. bootstack/style/builders/radiobutton.py +68 -0
  297. bootstack/style/builders/scale.py +66 -0
  298. bootstack/style/builders/scrollbar.py +360 -0
  299. bootstack/style/builders/separator.py +45 -0
  300. bootstack/style/builders/sidenav.py +313 -0
  301. bootstack/style/builders/sizegrip.py +15 -0
  302. bootstack/style/builders/spinbox.py +119 -0
  303. bootstack/style/builders/switch.py +67 -0
  304. bootstack/style/builders/tabitem.py +205 -0
  305. bootstack/style/builders/toolbutton.py +260 -0
  306. bootstack/style/builders/tooltip.py +26 -0
  307. bootstack/style/builders/treeview.py +269 -0
  308. bootstack/style/builders/utils.py +404 -0
  309. bootstack/style/builders_tk/__init__.py +16 -0
  310. bootstack/style/builders_tk/defaults.py +229 -0
  311. bootstack/style/element.py +173 -0
  312. bootstack/style/style.py +499 -0
  313. bootstack/style/theme_provider.py +449 -0
  314. bootstack/style/tk_patch.py +5 -0
  315. bootstack/style/token_maps.py +42 -0
  316. bootstack/style/types.py +32 -0
  317. bootstack/style/typography.py +527 -0
  318. bootstack/style/utility.py +696 -0
  319. bootstack/themes/__init__.py +12 -0
  320. bootstack/themes/standard.py +415 -0
  321. bootstack/themes/user.py +45 -0
  322. bootstack/widgets/__init__.py +53 -0
  323. bootstack/widgets/composites/__init__.py +38 -0
  324. bootstack/widgets/composites/accordion.py +385 -0
  325. bootstack/widgets/composites/appshell.py +445 -0
  326. bootstack/widgets/composites/buttongroup.py +391 -0
  327. bootstack/widgets/composites/calendar.py +914 -0
  328. bootstack/widgets/composites/compositeframe.py +282 -0
  329. bootstack/widgets/composites/contextmenu.py +1754 -0
  330. bootstack/widgets/composites/dateentry.py +261 -0
  331. bootstack/widgets/composites/dropdownbutton.py +190 -0
  332. bootstack/widgets/composites/expander.py +508 -0
  333. bootstack/widgets/composites/field.py +448 -0
  334. bootstack/widgets/composites/floodgauge.py +434 -0
  335. bootstack/widgets/composites/form.py +983 -0
  336. bootstack/widgets/composites/labeledscale.py +209 -0
  337. bootstack/widgets/composites/list/__init__.py +15 -0
  338. bootstack/widgets/composites/list/listitem.py +733 -0
  339. bootstack/widgets/composites/list/listview.py +1507 -0
  340. bootstack/widgets/composites/menubar.py +303 -0
  341. bootstack/widgets/composites/meter.py +882 -0
  342. bootstack/widgets/composites/numericentry.py +183 -0
  343. bootstack/widgets/composites/pagestack.py +330 -0
  344. bootstack/widgets/composites/passwordentry.py +149 -0
  345. bootstack/widgets/composites/pathentry.py +223 -0
  346. bootstack/widgets/composites/radiogroup.py +466 -0
  347. bootstack/widgets/composites/scrolledtext.py +388 -0
  348. bootstack/widgets/composites/scrolledtext.pyi +186 -0
  349. bootstack/widgets/composites/scrollview.py +675 -0
  350. bootstack/widgets/composites/selectbox.py +544 -0
  351. bootstack/widgets/composites/sidenav/__init__.py +24 -0
  352. bootstack/widgets/composites/sidenav/group.py +485 -0
  353. bootstack/widgets/composites/sidenav/header.py +83 -0
  354. bootstack/widgets/composites/sidenav/item.py +413 -0
  355. bootstack/widgets/composites/sidenav/separator.py +51 -0
  356. bootstack/widgets/composites/sidenav/view.py +919 -0
  357. bootstack/widgets/composites/spinnerentry.py +232 -0
  358. bootstack/widgets/composites/tableview/__init__.py +5 -0
  359. bootstack/widgets/composites/tableview/tableview.py +2254 -0
  360. bootstack/widgets/composites/tableview/types.py +169 -0
  361. bootstack/widgets/composites/tabs/__init__.py +6 -0
  362. bootstack/widgets/composites/tabs/tabitem.py +372 -0
  363. bootstack/widgets/composites/tabs/tabs.py +478 -0
  364. bootstack/widgets/composites/tabs/tabview.py +352 -0
  365. bootstack/widgets/composites/textentry.py +90 -0
  366. bootstack/widgets/composites/timeentry.py +189 -0
  367. bootstack/widgets/composites/toast.py +364 -0
  368. bootstack/widgets/composites/togglegroup.py +382 -0
  369. bootstack/widgets/composites/toolbar.py +393 -0
  370. bootstack/widgets/composites/tooltip.py +404 -0
  371. bootstack/widgets/internal/__init__.py +0 -0
  372. bootstack/widgets/internal/wrapper_base.py +304 -0
  373. bootstack/widgets/mixins/__init__.py +25 -0
  374. bootstack/widgets/mixins/configure_mixin.py +186 -0
  375. bootstack/widgets/mixins/entry_mixin.py +70 -0
  376. bootstack/widgets/mixins/font_mixin.py +346 -0
  377. bootstack/widgets/mixins/icon_mixin.py +38 -0
  378. bootstack/widgets/mixins/localization_mixin.py +255 -0
  379. bootstack/widgets/mixins/signal_mixin.py +272 -0
  380. bootstack/widgets/mixins/validation_mixin.py +204 -0
  381. bootstack/widgets/parts/__init__.py +11 -0
  382. bootstack/widgets/parts/numberentry_part.py +345 -0
  383. bootstack/widgets/parts/spinnerentry_part.py +394 -0
  384. bootstack/widgets/parts/textentry_part.py +344 -0
  385. bootstack/widgets/primitives/__init__.py +55 -0
  386. bootstack/widgets/primitives/badge.py +44 -0
  387. bootstack/widgets/primitives/button.py +89 -0
  388. bootstack/widgets/primitives/card.py +66 -0
  389. bootstack/widgets/primitives/checkbutton.py +124 -0
  390. bootstack/widgets/primitives/checktoggle.py +53 -0
  391. bootstack/widgets/primitives/combobox.py +165 -0
  392. bootstack/widgets/primitives/entry.py +98 -0
  393. bootstack/widgets/primitives/frame.py +206 -0
  394. bootstack/widgets/primitives/gridframe.py +479 -0
  395. bootstack/widgets/primitives/label.py +95 -0
  396. bootstack/widgets/primitives/labelframe.py +63 -0
  397. bootstack/widgets/primitives/menubutton.py +118 -0
  398. bootstack/widgets/primitives/notebook.py +551 -0
  399. bootstack/widgets/primitives/optionmenu.py +248 -0
  400. bootstack/widgets/primitives/packframe.py +228 -0
  401. bootstack/widgets/primitives/panedwindow.py +58 -0
  402. bootstack/widgets/primitives/progressbar.py +95 -0
  403. bootstack/widgets/primitives/radiobutton.py +115 -0
  404. bootstack/widgets/primitives/radiotoggle.py +50 -0
  405. bootstack/widgets/primitives/scale.py +85 -0
  406. bootstack/widgets/primitives/scrollbar.py +56 -0
  407. bootstack/widgets/primitives/separator.py +56 -0
  408. bootstack/widgets/primitives/sizegrip.py +47 -0
  409. bootstack/widgets/primitives/spinbox.py +91 -0
  410. bootstack/widgets/primitives/switch.py +41 -0
  411. bootstack/widgets/primitives/treeview.py +77 -0
  412. bootstack/widgets/types.py +20 -0
  413. bootstack-0.1.0a1.dist-info/METADATA +196 -0
  414. bootstack-0.1.0a1.dist-info/RECORD +419 -0
  415. bootstack-0.1.0a1.dist-info/WHEEL +5 -0
  416. bootstack-0.1.0a1.dist-info/entry_points.txt +2 -0
  417. bootstack-0.1.0a1.dist-info/licenses/LICENSE +22 -0
  418. bootstack-0.1.0a1.dist-info/licenses/NOTICE +10 -0
  419. bootstack-0.1.0a1.dist-info/top_level.txt +1 -0
bootstack/__init__.py ADDED
@@ -0,0 +1,249 @@
1
+ """bootstack — a full UI framework for Python desktop apps built on Tkinter.
2
+
3
+ All widgets, dialogs, style utilities, and application primitives are
4
+ accessible directly from this namespace via lazy imports.
5
+
6
+ Examples:
7
+ ```python
8
+ import bootstack as bs
9
+
10
+ app = bs.App(title="My App", themename="bootstrap-light")
11
+ bs.Label(app, text="Hello, world!").pack(padx=20, pady=20)
12
+ app.mainloop()
13
+ ```
14
+ """
15
+ import importlib as _importlib
16
+ from importlib.metadata import version as _pkg_version
17
+ from typing import TYPE_CHECKING
18
+
19
+ __version__ = _pkg_version("bootstack")
20
+
21
+ from tkinter import (
22
+ BooleanVar,
23
+ Canvas as _tkCanvas,
24
+ DoubleVar,
25
+ Frame as _tkFrame,
26
+ IntVar,
27
+ Menu as _tkMenu,
28
+ PhotoImage,
29
+ StringVar,
30
+ Text as _tkText,
31
+ Tk as _tkTk,
32
+ Variable,
33
+ )
34
+
35
+ # Re-export tk widgets with original names before importing submodules
36
+ Tk = _tkTk
37
+ Menu = _tkMenu
38
+ Text = _tkText
39
+ Canvas = _tkCanvas
40
+ TkFrame = _tkFrame # Exported as TkFrame to avoid conflict with bs.Frame
41
+ # Eagerly import BootstrapIcon to prevent circular import during style bootstrapping
42
+ from ttkbootstrap_icons_bs import BootstrapIcon # noqa: E402
43
+
44
+ # Constants are available via bootstack.constants module
45
+ # (see constants.py which re-exports from core.constants)
46
+
47
+ if TYPE_CHECKING:
48
+ from bootstack.api.menu import MenuManager, create_menu
49
+ from bootstack.api.app import App, AppShell, App as Window, Toplevel, AppSettings, get_app_settings, get_current_app, Shortcuts, Shortcut, get_shortcuts
50
+ from bootstack.api.style import (
51
+ Font,
52
+ Style,
53
+ get_style,
54
+ get_style_builder,
55
+ get_theme,
56
+ get_theme_provider,
57
+ set_theme,
58
+ toggle_theme,
59
+ get_theme_color,
60
+ get_themes,
61
+ )
62
+ from bootstack.api.widgets import (
63
+ Button,
64
+ ButtonGroup,
65
+ Card,
66
+ CheckButton,
67
+ Combobox,
68
+ ContextMenu,
69
+ ContextMenuItem,
70
+ DateEntry,
71
+ Calendar,
72
+ DropdownButton,
73
+ Entry,
74
+ Field,
75
+ FieldOptions,
76
+ FloodGauge,
77
+ Form,
78
+ Frame,
79
+ GridFrame,
80
+ Label,
81
+ LabelFrame,
82
+ LabeledScale,
83
+ MenuBar,
84
+ MenuButton,
85
+ Meter,
86
+ SideNav,
87
+ SideNavItem,
88
+ SideNavGroup,
89
+ SideNavHeader,
90
+ SideNavSeparator,
91
+ Notebook,
92
+ NumericEntry,
93
+ OptionMenu,
94
+ PackFrame,
95
+ PageStack,
96
+ PanedWindow,
97
+ PasswordEntry,
98
+ PathEntry,
99
+ Progressbar,
100
+ RadioButton,
101
+ RadioGroup,
102
+ Scale,
103
+ Scrollbar,
104
+ ScrolledText,
105
+ ScrollView,
106
+ SelectBox,
107
+ Separator,
108
+ SideNav,
109
+ SpinnerEntry,
110
+ SizeGrip,
111
+ Spinbox,
112
+ Switch,
113
+ TableView,
114
+ TextEntry,
115
+ TimeEntry,
116
+ Toast,
117
+ Toolbar,
118
+ ToggleGroup,
119
+ ToolTip,
120
+ TreeView,
121
+ TK_WIDGETS,
122
+ TTK_WIDGETS,
123
+ )
124
+ from bootstack.api.localization import MessageCatalog, L, LV, IntlFormatter
125
+ from bootstack.api.utils import Image
126
+ from ttkbootstrap_icons_bs import BootstrapIcon
127
+
128
+
129
+ _TK_EXPORTS = [
130
+ "Tk",
131
+ "Menu",
132
+ "Text",
133
+ "Canvas",
134
+ "TkFrame",
135
+ "Variable",
136
+ "StringVar",
137
+ "IntVar",
138
+ "BooleanVar",
139
+ "DoubleVar",
140
+ "PhotoImage",
141
+ ]
142
+
143
+ # Single source of truth: module-to-exports mapping
144
+ # Organized by category for clarity
145
+ _TTK_PRIMITIVES = [
146
+ "Button", "CheckButton", "Combobox", "Entry", "Frame", "Label",
147
+ "LabelFrame", "MenuButton", "Notebook", "OptionMenu", "PanedWindow",
148
+ "Progressbar", "RadioButton", "Scale", "Scrollbar", "Separator",
149
+ "SizeGrip", "Spinbox", "TreeView",
150
+ ]
151
+
152
+ _MODULE_EXPORTS = {
153
+ # Application & Windows (includes menu and shortcuts)
154
+ "bootstack.api.app": [
155
+ "App", "AppShell", "Toplevel", "Window", "AppSettings", "get_app_settings", "get_current_app",
156
+ "MenuManager", "create_menu",
157
+ "Shortcuts", "Shortcut", "get_shortcuts",
158
+ ],
159
+ # Style & Theming
160
+ "bootstack.api.style": [
161
+ "BootstrapIcon", "Font", "Style",
162
+ "get_style", "get_style_builder", "get_theme",
163
+ "get_theme_provider", "set_theme", "get_theme_color",
164
+ "toggle_theme", "get_themes",
165
+ ],
166
+ # Widgets
167
+ "bootstack.api.widgets": [
168
+ *_TTK_PRIMITIVES,
169
+ "Badge",
170
+ "ButtonGroup",
171
+ "Card",
172
+ "CheckToggle",
173
+ "RadioToggle",
174
+ "Calendar", "ContextMenu", "ContextMenuItem", "DateEntry",
175
+ "Accordion", "DropdownButton", "Expander", "Field", "FieldOptions", "FloodGauge", "Form",
176
+ "GridFrame", "LabeledScale", "MenuBar", "Meter",
177
+ "SideNav", "SideNavItem", "SideNavGroup",
178
+ "SideNavHeader", "SideNavSeparator",
179
+ "NumericEntry", "PackFrame", "PageStack",
180
+ "PasswordEntry", "PathEntry", "RadioGroup", "ScrolledText", "ScrollView", "SpinnerEntry",
181
+ "SelectBox", "TableView", "TextEntry", "TimeEntry", "Toast", "Toolbar", "ToggleGroup", "Switch",
182
+ "ToolTip", "TK_WIDGETS", "TTK_WIDGETS",
183
+ ],
184
+ # Dialogs
185
+ "bootstack.api.dialogs": [
186
+ "Dialog", "DialogButton", "FilterDialog", "FormDialog",
187
+ "MessageDialog", "MessageBox", "QueryDialog", "QueryBox",
188
+ "DateDialog", "FontDialog",
189
+ "ColorChooser", "ColorChooserDialog", "ColorDropperDialog",
190
+ ],
191
+ # Data Sources
192
+ "bootstack.api.data": [
193
+ "BaseDataSource", "MemoryDataSource", "SqliteDataSource",
194
+ "FileDataSource", "FileSourceConfig",
195
+ "DataSourceProtocol", "Record", "Primitive",
196
+ ],
197
+ # Internationalization
198
+ "bootstack.api.i18n": [
199
+ "MessageCatalog", "L", "LV", "IntlFormatter"
200
+ ],
201
+ # Utilities
202
+ "bootstack.api.utils": [
203
+ "Image",
204
+ "Signal", "TraceOperation",
205
+ "ValidationRule", "ValidationResult",
206
+ "SetVar",
207
+ ],
208
+ }
209
+
210
+ # Auto-generate lazy exports and categorized export lists
211
+ _LAZY_EXPORTS = {}
212
+ _TTK_EXPORTS = _TTK_PRIMITIVES.copy()
213
+ _BOOTSTACK_EXPORTS = []
214
+
215
+ for module, exports in _MODULE_EXPORTS.items():
216
+ for name in exports:
217
+ _LAZY_EXPORTS[name] = module
218
+ if name not in _TTK_EXPORTS:
219
+ _BOOTSTACK_EXPORTS.append(name)
220
+
221
+ __all__ = [*_TK_EXPORTS, *_TTK_EXPORTS, *_BOOTSTACK_EXPORTS]
222
+
223
+ def __getattr__(name):
224
+ """Lazily import top-level attributes to avoid circular imports and speed import."""
225
+ if name in _LAZY_EXPORTS:
226
+ module = _importlib.import_module(_LAZY_EXPORTS[name])
227
+ value = getattr(module, name)
228
+ globals()[name] = value
229
+ return value
230
+
231
+ raise AttributeError(f"module 'bootstack' has no attribute '{name}'")
232
+
233
+
234
+ def __dir__():
235
+ return sorted(set(__all__ + list(globals().keys())))
236
+
237
+
238
+ # Patch Tk widgets for autostyle
239
+ from bootstack.runtime.tk_patch import install_tk_autostyle
240
+
241
+ # Install enhanced events on import
242
+ from bootstack.runtime.events import install_enhanced_events
243
+
244
+ # Install visual focus
245
+ from bootstack.runtime.visual_focus import install_visual_focus
246
+
247
+ install_tk_autostyle()
248
+ install_enhanced_events()
249
+ install_visual_focus()
bootstack/__main__.py ADDED
@@ -0,0 +1,5 @@
1
+ """CLI entry point — invoked as `python -m bootstack` to launch the bootstack CLI."""
2
+ from bootstack.cli import main
3
+
4
+ if __name__ == "__main__":
5
+ main()
@@ -0,0 +1,127 @@
1
+ """Public API surface for bootstack v2.
2
+
3
+ This module centralizes re-exports so top-level imports can stay slim and
4
+ import direction stays clear. Implementation lives in lower-layer packages.
5
+ """
6
+
7
+ from __future__ import annotations
8
+
9
+ from bootstack.api.style import (
10
+ BootstrapIcon,
11
+ Style,
12
+ get_style,
13
+ get_style_builder,
14
+ get_theme_provider,
15
+ get_theme,
16
+ get_theme_color,
17
+ set_theme,
18
+ toggle_theme,
19
+ )
20
+ from bootstack.api.widgets import (
21
+ Button,
22
+ CheckButton,
23
+ Combobox,
24
+ ContextMenu,
25
+ ContextMenuItem,
26
+ DateEntry,
27
+ Calendar,
28
+ DropdownButton,
29
+ Entry,
30
+ Field,
31
+ FieldOptions,
32
+ FloodGauge,
33
+ Form,
34
+ Frame,
35
+ Label,
36
+ LabelFrame,
37
+ LabeledScale,
38
+ MenuButton,
39
+ Meter,
40
+ Notebook,
41
+ NumericEntry,
42
+ OptionMenu,
43
+ PanedWindow,
44
+ PasswordEntry,
45
+ PathEntry,
46
+ Progressbar,
47
+ RadioButton,
48
+ Scale,
49
+ Scrollbar,
50
+ ScrollView,
51
+ ScrolledText,
52
+ SelectBox,
53
+ Separator,
54
+ SizeGrip,
55
+ Spinbox,
56
+ TableView,
57
+ TextEntry,
58
+ TimeEntry,
59
+ Toast,
60
+ ToolTip,
61
+ TreeView,
62
+ TK_WIDGETS,
63
+ TTK_WIDGETS,
64
+ )
65
+ from bootstack.runtime.app import App, App as Window
66
+ from bootstack.runtime.toplevel import Toplevel
67
+ from bootstack.runtime.menu import MenuManager, create_menu
68
+
69
+ __all__ = [
70
+ "BootstrapIcon",
71
+ "Style",
72
+ "Button",
73
+ "CheckButton",
74
+ "Combobox",
75
+ "ContextMenu",
76
+ "ContextMenuItem",
77
+ "DateEntry",
78
+ "Calendar",
79
+ "DropdownButton",
80
+ "Entry",
81
+ "Field",
82
+ "FieldOptions",
83
+ "FloodGauge",
84
+ "Form",
85
+ "Frame",
86
+ "Label",
87
+ "LabelFrame",
88
+ "LabeledScale",
89
+ "MenuButton",
90
+ "Meter",
91
+ "Notebook",
92
+ "NumericEntry",
93
+ "OptionMenu",
94
+ "PanedWindow",
95
+ "PasswordEntry",
96
+ "PathEntry",
97
+ "Progressbar",
98
+ "RadioButton",
99
+ "Scale",
100
+ "Scrollbar",
101
+ "ScrollView",
102
+ "ScrolledText",
103
+ "SelectBox",
104
+ "Separator",
105
+ "SizeGrip",
106
+ "Spinbox",
107
+ "TableView",
108
+ "TextEntry",
109
+ "TimeEntry",
110
+ "Toast",
111
+ "ToolTip",
112
+ "TreeView",
113
+ "Toplevel",
114
+ "App",
115
+ "Window",
116
+ "MenuManager",
117
+ "get_style",
118
+ "get_style_builder",
119
+ "get_theme",
120
+ "set_theme",
121
+ "toggle_theme",
122
+ "get_theme_provider",
123
+ "get_theme_color",
124
+ "create_menu",
125
+ "TK_WIDGETS",
126
+ "TTK_WIDGETS",
127
+ ]
bootstack/api/app.py ADDED
@@ -0,0 +1,30 @@
1
+ """Public application and window API surface.
2
+
3
+ Application, window management, menu, and shortcuts functionality.
4
+ """
5
+
6
+ from __future__ import annotations
7
+
8
+ from bootstack.runtime.app import App, AppSettings, Window, get_app_settings, get_current_app
9
+ from bootstack.runtime.toplevel import Toplevel
10
+ from bootstack.runtime.menu import MenuManager, create_menu
11
+ from bootstack.runtime.shortcuts import Shortcuts, Shortcut, get_shortcuts
12
+ from bootstack.widgets.composites.appshell import AppShell
13
+
14
+ __all__ = [
15
+ # Application
16
+ "App",
17
+ "AppShell",
18
+ "Window",
19
+ "Toplevel",
20
+ "AppSettings",
21
+ "get_current_app",
22
+ "get_app_settings",
23
+ # Menu
24
+ "MenuManager",
25
+ "create_menu",
26
+ # Shortcuts
27
+ "Shortcuts",
28
+ "Shortcut",
29
+ "get_shortcuts",
30
+ ]
@@ -0,0 +1,3 @@
1
+ """Re-export of bootstack constants for the public API surface."""
2
+
3
+ from bootstack.constants import * # noqa: F401,F403
bootstack/api/data.py ADDED
@@ -0,0 +1,23 @@
1
+ """Public data source API surface.
2
+
3
+ Provides unified interface for data management with multiple backend implementations.
4
+ """
5
+
6
+ from __future__ import annotations
7
+
8
+ from bootstack.datasource.base import BaseDataSource
9
+ from bootstack.datasource.memory_source import MemoryDataSource
10
+ from bootstack.datasource.sqlite_source import SqliteDataSource
11
+ from bootstack.datasource.file_source import FileDataSource, FileSourceConfig
12
+ from bootstack.datasource.types import DataSourceProtocol, Primitive, Record
13
+
14
+ __all__ = [
15
+ "BaseDataSource",
16
+ "MemoryDataSource",
17
+ "SqliteDataSource",
18
+ "FileDataSource",
19
+ "FileSourceConfig",
20
+ "DataSourceProtocol",
21
+ "Primitive",
22
+ "Record",
23
+ ]
@@ -0,0 +1,44 @@
1
+ """Public dialogs API surface.
2
+
3
+ Bootstrap-styled dialogs for common interactions.
4
+ """
5
+
6
+ from __future__ import annotations
7
+
8
+ from bootstack.dialogs import (
9
+ # Base / core dialogs
10
+ Dialog,
11
+ DialogButton,
12
+ FilterDialog,
13
+ FormDialog,
14
+ MessageDialog,
15
+ QueryDialog,
16
+ DateDialog,
17
+ FontDialog,
18
+ # Facades
19
+ MessageBox,
20
+ QueryBox,
21
+ # Color tools
22
+ ColorChooser,
23
+ ColorChooserDialog,
24
+ ColorDropperDialog,
25
+ )
26
+
27
+ __all__ = [
28
+ # Base / core dialogs
29
+ "Dialog",
30
+ "DialogButton",
31
+ "FilterDialog",
32
+ "FormDialog",
33
+ "MessageDialog",
34
+ "QueryDialog",
35
+ "DateDialog",
36
+ "FontDialog",
37
+ # Facades
38
+ "MessageBox",
39
+ "QueryBox",
40
+ # Color tools
41
+ "ColorChooser",
42
+ "ColorChooserDialog",
43
+ "ColorDropperDialog",
44
+ ]
bootstack/api/i18n.py ADDED
@@ -0,0 +1,17 @@
1
+ """Public internationalization API surface.
2
+
3
+ Message translation and locale-aware value formatting.
4
+ """
5
+
6
+ from __future__ import annotations
7
+
8
+ from bootstack.core.localization.msgcat import MessageCatalog
9
+ from bootstack.core.localization.specs import L, LV
10
+ from bootstack.core.localization.intl_format import IntlFormatter
11
+
12
+ __all__ = [
13
+ "MessageCatalog",
14
+ "L",
15
+ "LV",
16
+ "IntlFormatter",
17
+ ]
@@ -0,0 +1,16 @@
1
+ """Localization API for bootstack.
2
+
3
+ This module provides the public API for internationalization and localization,
4
+ including message translation and locale-aware value formatting.
5
+ """
6
+
7
+ from bootstack.core.localization.msgcat import MessageCatalog
8
+ from bootstack.core.localization.specs import L, LV
9
+ from bootstack.core.localization.intl_format import IntlFormatter
10
+
11
+ __all__ = [
12
+ "MessageCatalog",
13
+ "L",
14
+ "LV",
15
+ "IntlFormatter"
16
+ ]
bootstack/api/menu.py ADDED
@@ -0,0 +1,7 @@
1
+ """Public menu-related API surface."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from bootstack.runtime.menu import MenuManager, create_menu
6
+
7
+ __all__ = ["MenuManager", "create_menu"]
bootstack/api/style.py ADDED
@@ -0,0 +1,23 @@
1
+ """Public style-related API surface."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from ttkbootstrap_icons_bs import BootstrapIcon
6
+
7
+ from bootstack.style.style import (Style, get_style, get_style_builder, get_theme, get_theme_color,
8
+ get_theme_provider, set_theme, toggle_theme, get_themes)
9
+ from bootstack.style.typography import Font
10
+
11
+ __all__ = [
12
+ "BootstrapIcon",
13
+ "Font",
14
+ "Style",
15
+ "get_style",
16
+ "get_style_builder",
17
+ "get_theme",
18
+ "set_theme",
19
+ "toggle_theme",
20
+ "get_theme_provider",
21
+ "get_theme_color",
22
+ "get_themes",
23
+ ]
bootstack/api/utils.py ADDED
@@ -0,0 +1,24 @@
1
+ """Public utilities API surface.
2
+
3
+ Core utilities for reactive programming, validation, and extended variables.
4
+ """
5
+
6
+ from __future__ import annotations
7
+
8
+ from bootstack.core.images import Image
9
+ from bootstack.core.signals import Signal, TraceOperation
10
+ from bootstack.core.validation import ValidationRule, ValidationResult
11
+ from bootstack.core.variables import SetVar
12
+
13
+ __all__ = [
14
+ # Images
15
+ "Image",
16
+ # Signals (reactive state)
17
+ "Signal",
18
+ "TraceOperation",
19
+ # Validation
20
+ "ValidationRule",
21
+ "ValidationResult",
22
+ # Extended variables
23
+ "SetVar",
24
+ ]