bootstack 0.1.0a2__tar.gz → 0.1.0a4__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 (429) hide show
  1. {bootstack-0.1.0a2/src/bootstack.egg-info → bootstack-0.1.0a4}/PKG-INFO +5 -3
  2. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/README.md +4 -2
  3. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/pyproject.toml +2 -2
  4. bootstack-0.1.0a4/src/bootstack/assets/bootstack-dark.ico +0 -0
  5. bootstack-0.1.0a4/src/bootstack/assets/bootstack-light.ico +0 -0
  6. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/runtime/app.py +10 -0
  7. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/runtime/base_window.py +37 -12
  8. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/runtime/window_utilities.py +12 -5
  9. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/toast.py +8 -1
  10. {bootstack-0.1.0a2 → bootstack-0.1.0a4/src/bootstack.egg-info}/PKG-INFO +5 -3
  11. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack.egg-info/SOURCES.txt +2 -0
  12. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/LICENSE +0 -0
  13. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/MANIFEST.in +0 -0
  14. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/NOTICE +0 -0
  15. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/setup.cfg +0 -0
  16. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/__init__.py +0 -0
  17. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/__main__.py +0 -0
  18. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/api/__init__.py +0 -0
  19. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/api/app.py +0 -0
  20. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/api/constants.py +0 -0
  21. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/api/data.py +0 -0
  22. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/api/dialogs.py +0 -0
  23. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/api/i18n.py +0 -0
  24. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/api/localization.py +0 -0
  25. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/api/menu.py +0 -0
  26. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/api/style.py +0 -0
  27. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/api/utils.py +0 -0
  28. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/api/widgets.py +0 -0
  29. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/__init__.py +0 -0
  30. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/bootstack-transparent.png +0 -0
  31. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/bootstack.ico +0 -0
  32. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/bootstack.png +0 -0
  33. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/__init__.py +0 -0
  34. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/badge-pill.png +0 -0
  35. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/badge-square.png +0 -0
  36. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/border.png +0 -0
  37. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/button-compact.png +0 -0
  38. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/button-default.png +0 -0
  39. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/button-group-horizontal-after-compact.png +0 -0
  40. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/button-group-horizontal-after-default.png +0 -0
  41. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/button-group-horizontal-before-compact.png +0 -0
  42. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/button-group-horizontal-before-default.png +0 -0
  43. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/button-group-horizontal-center-compact.png +0 -0
  44. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/button-group-horizontal-center-default.png +0 -0
  45. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/button-group-vertical-after-compact.png +0 -0
  46. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/button-group-vertical-after-default.png +0 -0
  47. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/button-group-vertical-before-compact.png +0 -0
  48. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/button-group-vertical-before-default.png +0 -0
  49. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/button-group-vertical-center-compact.png +0 -0
  50. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/button-group-vertical-center-default.png +0 -0
  51. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/checkbox-checked.png +0 -0
  52. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/checkbox-indeterminate.png +0 -0
  53. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/checkbox-unchecked.png +0 -0
  54. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/field.png +0 -0
  55. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/input-after-compact.png +0 -0
  56. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/input-after-default.png +0 -0
  57. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/input-before-compact.png +0 -0
  58. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/input-before-default.png +0 -0
  59. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/input-compact.png +0 -0
  60. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/input-default.png +0 -0
  61. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/list-item-separated.png +0 -0
  62. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/list-item.png +0 -0
  63. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/manifest.toml +0 -0
  64. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/menu-item.png +0 -0
  65. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/nav-button-compact.png +0 -0
  66. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/nav-button-default.png +0 -0
  67. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/nav-icon-button-compact.png +0 -0
  68. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/nav-icon-button-default.png +0 -0
  69. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/notebook-client-border.png +0 -0
  70. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/notebook-tab-active.png +0 -0
  71. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/notebook-tab-bar.png +0 -0
  72. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/notebook-tab-normal.png +0 -0
  73. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/notebook-tab-pill.png +0 -0
  74. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/progress-bar-horizontal-striped.png +0 -0
  75. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/progress-bar-solid.png +0 -0
  76. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/progress-bar-thin.png +0 -0
  77. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/progress-bar-vertical-striped.png +0 -0
  78. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/radio-selected.png +0 -0
  79. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/radio-unselected.png +0 -0
  80. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/scrollbar-horizontal.png +0 -0
  81. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/scrollbar-vertical.png +0 -0
  82. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/slider-handle-focus.png +0 -0
  83. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/slider-handle.png +0 -0
  84. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/slider-track-horizontal.png +0 -0
  85. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/slider-track-vertical.png +0 -0
  86. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/switch-off.png +0 -0
  87. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/switch-on.png +0 -0
  88. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/tabs-bar-horizontal.png +0 -0
  89. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/tabs-bar-vertical.png +0 -0
  90. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/elements/tabs-pill.png +0 -0
  91. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/ar/LC_MESSAGES/bootstack.mo +0 -0
  92. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/ar/LC_MESSAGES/bootstack.po +0 -0
  93. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/bg/LC_MESSAGES/bootstack.po +0 -0
  94. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/cs/LC_MESSAGES/bootstack.mo +0 -0
  95. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/cs/LC_MESSAGES/bootstack.po +0 -0
  96. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/da/LC_MESSAGES/bootstack.mo +0 -0
  97. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/da/LC_MESSAGES/bootstack.po +0 -0
  98. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/de/LC_MESSAGES/bootstack.mo +0 -0
  99. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/de/LC_MESSAGES/bootstack.po +0 -0
  100. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/en/LC_MESSAGES/bootstack.mo +0 -0
  101. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/en/LC_MESSAGES/bootstack.po +0 -0
  102. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/es/LC_MESSAGES/bootstack.mo +0 -0
  103. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/es/LC_MESSAGES/bootstack.po +0 -0
  104. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/fr/LC_MESSAGES/bootstack.mo +0 -0
  105. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/fr/LC_MESSAGES/bootstack.po +0 -0
  106. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/he/LC_MESSAGES/bootstack.mo +0 -0
  107. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/he/LC_MESSAGES/bootstack.po +0 -0
  108. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/hi/LC_MESSAGES/bootstack.mo +0 -0
  109. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/hi/LC_MESSAGES/bootstack.po +0 -0
  110. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/it/LC_MESSAGES/bootstack.mo +0 -0
  111. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/it/LC_MESSAGES/bootstack.po +0 -0
  112. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/ja/LC_MESSAGES/bootstack.mo +0 -0
  113. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/ja/LC_MESSAGES/bootstack.po +0 -0
  114. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/ko/LC_MESSAGES/bootstack.mo +0 -0
  115. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/ko/LC_MESSAGES/bootstack.po +0 -0
  116. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/nb/LC_MESSAGES/bootstack.mo +0 -0
  117. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/nb/LC_MESSAGES/bootstack.po +0 -0
  118. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/nl/LC_MESSAGES/bootstack.mo +0 -0
  119. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/nl/LC_MESSAGES/bootstack.po +0 -0
  120. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/pl/LC_MESSAGES/bootstack.mo +0 -0
  121. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/pl/LC_MESSAGES/bootstack.po +0 -0
  122. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/pt/LC_MESSAGES/bootstack.mo +0 -0
  123. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/pt/LC_MESSAGES/bootstack.po +0 -0
  124. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/pt_BR/LC_MESSAGES/bootstack.mo +0 -0
  125. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/pt_BR/LC_MESSAGES/bootstack.po +0 -0
  126. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/sl/LC_MESSAGES/bootstack.mo +0 -0
  127. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/sl/LC_MESSAGES/bootstack.po +0 -0
  128. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/sv/LC_MESSAGES/bootstack.mo +0 -0
  129. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/sv/LC_MESSAGES/bootstack.po +0 -0
  130. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/tr/LC_MESSAGES/bootstack.mo +0 -0
  131. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/tr/LC_MESSAGES/bootstack.po +0 -0
  132. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/zh_CN/LC_MESSAGES/bootstack.mo +0 -0
  133. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/zh_CN/LC_MESSAGES/bootstack.po +0 -0
  134. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/zh_TW/LC_MESSAGES/bootstack.mo +0 -0
  135. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/locales/zh_TW/LC_MESSAGES/bootstack.po +0 -0
  136. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/themes/__init__.py +0 -0
  137. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/themes/amber-dark.json +0 -0
  138. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/themes/amber-light.json +0 -0
  139. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/themes/aurora-dark.json +0 -0
  140. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/themes/aurora-light.json +0 -0
  141. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/themes/bootstrap-dark.json +0 -0
  142. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/themes/bootstrap-light.json +0 -0
  143. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/themes/classic-dark.json +0 -0
  144. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/themes/classic-light.json +0 -0
  145. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/themes/docs-dark.json +0 -0
  146. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/themes/docs-light.json +0 -0
  147. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/themes/forest-dark.json +0 -0
  148. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/themes/forest-light.json +0 -0
  149. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/themes/ocean-dark.json +0 -0
  150. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/themes/ocean-light.json +0 -0
  151. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/themes/rose-dark.json +0 -0
  152. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/themes/rose-light.json +0 -0
  153. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/__init__.py +0 -0
  154. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/badge-default.png +0 -0
  155. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/badge-pill.png +0 -0
  156. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/border.png +0 -0
  157. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/button-group-horizontal-after.png +0 -0
  158. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/button-group-horizontal-before.png +0 -0
  159. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/button-group-horizontal-center.png +0 -0
  160. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/button-group-vertical-after.png +0 -0
  161. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/button-group-vertical-before.png +0 -0
  162. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/button-group-vertical-center.png +0 -0
  163. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/button.png +0 -0
  164. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/checkbox-checked.png +0 -0
  165. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/checkbox-indeterminate.png +0 -0
  166. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/checkbox-unchecked.png +0 -0
  167. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/field.png +0 -0
  168. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/icon-button.png +0 -0
  169. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/input-inner.png +0 -0
  170. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/input-prefix.png +0 -0
  171. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/input-suffix.png +0 -0
  172. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/input.png +0 -0
  173. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/list-item-focus.png +0 -0
  174. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/list-item-separated.png +0 -0
  175. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/menu-item-separated.png +0 -0
  176. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/notebook-client-border.png +0 -0
  177. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/notebook-pill-active.png +0 -0
  178. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/notebook-pill-inactive.png +0 -0
  179. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/notebook-tab-active.png +0 -0
  180. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/notebook-tab-border.png +0 -0
  181. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/notebook-tab-normal.png +0 -0
  182. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/notebook-underline.png +0 -0
  183. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/progress-bar-horizontal-default.png +0 -0
  184. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/progress-bar-horizontal-striped.png +0 -0
  185. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/progress-bar-vertical-default.png +0 -0
  186. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/progress-bar-vertical-striped.png +0 -0
  187. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/progress-trough-horizontal.png +0 -0
  188. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/progress-trough-vertical.png +0 -0
  189. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/radio-selected.png +0 -0
  190. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/radio-unselected.png +0 -0
  191. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/scrollbar-horizontal-rounded.png +0 -0
  192. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/scrollbar-vertical-rounded.png +0 -0
  193. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/separator-horizontal.png +0 -0
  194. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/separator-vertical.png +0 -0
  195. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/slider-handle-focus.png +0 -0
  196. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/slider-handle.png +0 -0
  197. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/slider-track-horizontal.png +0 -0
  198. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/slider-track-vertical.png +0 -0
  199. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/switch-off.png +0 -0
  200. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/switch-on.png +0 -0
  201. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/tabs-bar-horizontal.png +0 -0
  202. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/tabs-bar-vertical.png +0 -0
  203. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/assets/widgets/tabs-pill.png +0 -0
  204. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/cli/__init__.py +0 -0
  205. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/cli/__main__.py +0 -0
  206. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/cli/add.py +0 -0
  207. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/cli/build.py +0 -0
  208. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/cli/config.py +0 -0
  209. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/cli/demo.py +0 -0
  210. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/cli/doctor.py +0 -0
  211. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/cli/list_cmd.py +0 -0
  212. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/cli/promote.py +0 -0
  213. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/cli/pyinstaller.py +0 -0
  214. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/cli/run.py +0 -0
  215. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/cli/start.py +0 -0
  216. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/cli/templates/__init__.py +0 -0
  217. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/constants.py +0 -0
  218. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/core/__init__.py +0 -0
  219. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/core/capabilities/__init__.py +0 -0
  220. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/core/capabilities/after.py +0 -0
  221. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/core/capabilities/bind.py +0 -0
  222. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/core/capabilities/bindtags.py +0 -0
  223. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/core/capabilities/busy.py +0 -0
  224. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/core/capabilities/clipboard.py +0 -0
  225. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/core/capabilities/focus.py +0 -0
  226. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/core/capabilities/grab.py +0 -0
  227. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/core/capabilities/grid.py +0 -0
  228. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/core/capabilities/localization.py +0 -0
  229. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/core/capabilities/pack.py +0 -0
  230. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/core/capabilities/place.py +0 -0
  231. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/core/capabilities/selection.py +0 -0
  232. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/core/capabilities/signals.py +0 -0
  233. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/core/capabilities/winfo.py +0 -0
  234. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/core/colorutils.py +0 -0
  235. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/core/exceptions.py +0 -0
  236. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/core/images.py +0 -0
  237. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/core/localization/README.md +0 -0
  238. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/core/localization/__init__.py +0 -0
  239. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/core/localization/intl_format.py +0 -0
  240. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/core/localization/msgcat.py +0 -0
  241. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/core/localization/specs.py +0 -0
  242. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/core/mixins/__init__.py +0 -0
  243. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/core/mixins/ttk_state.py +0 -0
  244. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/core/mixins/widget.py +0 -0
  245. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/core/publisher.py +0 -0
  246. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/core/signals/README.md +0 -0
  247. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/core/signals/__init__.py +0 -0
  248. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/core/signals/integration.py +0 -0
  249. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/core/signals/signal.py +0 -0
  250. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/core/signals/types.py +0 -0
  251. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/core/validation/__init__.py +0 -0
  252. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/core/validation/types.py +0 -0
  253. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/core/validation/validation_result.py +0 -0
  254. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/core/validation/validation_rules.py +0 -0
  255. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/core/variables.py +0 -0
  256. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/datasource/README.md +0 -0
  257. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/datasource/__init__.py +0 -0
  258. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/datasource/base.py +0 -0
  259. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/datasource/file_source.py +0 -0
  260. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/datasource/memory_source.py +0 -0
  261. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/datasource/sqlite_source.py +0 -0
  262. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/datasource/types.py +0 -0
  263. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/dialogs/__init__.py +0 -0
  264. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/dialogs/colorchooser.py +0 -0
  265. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/dialogs/colordropper.py +0 -0
  266. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/dialogs/datedialog.py +0 -0
  267. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/dialogs/dialog.py +0 -0
  268. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/dialogs/filterdialog.py +0 -0
  269. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/dialogs/fontdialog.py +0 -0
  270. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/dialogs/formdialog.py +0 -0
  271. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/dialogs/message.py +0 -0
  272. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/dialogs/query.py +0 -0
  273. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/py.typed +0 -0
  274. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/runtime/__init__.py +0 -0
  275. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/runtime/events.py +0 -0
  276. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/runtime/menu.py +0 -0
  277. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/runtime/shortcuts.py +0 -0
  278. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/runtime/tk_patch.py +0 -0
  279. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/runtime/toplevel.py +0 -0
  280. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/runtime/utility.py +0 -0
  281. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/runtime/visual_focus.py +0 -0
  282. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/__init__.py +0 -0
  283. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/bootstyle.py +0 -0
  284. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/bootstyle_builder_base.py +0 -0
  285. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/bootstyle_builder_mixed.py +0 -0
  286. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/bootstyle_builder_tk.py +0 -0
  287. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/bootstyle_builder_ttk.py +0 -0
  288. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/builders/__init__.py +0 -0
  289. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/builders/badge.py +0 -0
  290. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/builders/button.py +0 -0
  291. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/builders/buttongroup.py +0 -0
  292. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/builders/calendar.py +0 -0
  293. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/builders/checkbutton.py +0 -0
  294. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/builders/combobox.py +0 -0
  295. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/builders/contextmenu.py +0 -0
  296. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/builders/entry.py +0 -0
  297. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/builders/expander.py +0 -0
  298. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/builders/field.py +0 -0
  299. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/builders/frame.py +0 -0
  300. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/builders/label.py +0 -0
  301. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/builders/labelframe.py +0 -0
  302. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/builders/listview.py +0 -0
  303. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/builders/menubar.py +0 -0
  304. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/builders/menubutton.py +0 -0
  305. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/builders/notebook.py +0 -0
  306. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/builders/panedwindow.py +0 -0
  307. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/builders/progressbar.py +0 -0
  308. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/builders/radiobutton.py +0 -0
  309. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/builders/scale.py +0 -0
  310. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/builders/scrollbar.py +0 -0
  311. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/builders/separator.py +0 -0
  312. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/builders/sidenav.py +0 -0
  313. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/builders/sizegrip.py +0 -0
  314. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/builders/spinbox.py +0 -0
  315. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/builders/switch.py +0 -0
  316. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/builders/tabitem.py +0 -0
  317. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/builders/toolbutton.py +0 -0
  318. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/builders/tooltip.py +0 -0
  319. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/builders/treeview.py +0 -0
  320. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/builders/utils.py +0 -0
  321. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/builders_tk/__init__.py +0 -0
  322. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/builders_tk/defaults.py +0 -0
  323. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/element.py +0 -0
  324. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/style.py +0 -0
  325. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/theme_provider.py +0 -0
  326. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/tk_patch.py +0 -0
  327. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/token_maps.py +0 -0
  328. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/types.py +0 -0
  329. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/typography.py +0 -0
  330. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/style/utility.py +0 -0
  331. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/themes/__init__.py +0 -0
  332. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/themes/standard.py +0 -0
  333. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/themes/user.py +0 -0
  334. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/__init__.py +0 -0
  335. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/__init__.py +0 -0
  336. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/accordion.py +0 -0
  337. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/appshell.py +0 -0
  338. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/buttongroup.py +0 -0
  339. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/calendar.py +0 -0
  340. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/compositeframe.py +0 -0
  341. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/contextmenu.py +0 -0
  342. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/dateentry.py +0 -0
  343. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/dropdownbutton.py +0 -0
  344. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/expander.py +0 -0
  345. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/field.py +0 -0
  346. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/floodgauge.py +0 -0
  347. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/form.py +0 -0
  348. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/labeledscale.py +0 -0
  349. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/list/__init__.py +0 -0
  350. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/list/listitem.py +0 -0
  351. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/list/listview.py +0 -0
  352. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/menubar.py +0 -0
  353. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/meter.py +0 -0
  354. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/numericentry.py +0 -0
  355. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/pagestack.py +0 -0
  356. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/passwordentry.py +0 -0
  357. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/pathentry.py +0 -0
  358. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/radiogroup.py +0 -0
  359. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/scrolledtext.py +0 -0
  360. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/scrolledtext.pyi +0 -0
  361. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/scrollview.py +0 -0
  362. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/selectbox.py +0 -0
  363. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/sidenav/__init__.py +0 -0
  364. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/sidenav/group.py +0 -0
  365. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/sidenav/header.py +0 -0
  366. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/sidenav/item.py +0 -0
  367. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/sidenav/separator.py +0 -0
  368. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/sidenav/view.py +0 -0
  369. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/spinnerentry.py +0 -0
  370. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/tableview/__init__.py +0 -0
  371. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/tableview/tableview.py +0 -0
  372. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/tableview/types.py +0 -0
  373. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/tabs/__init__.py +0 -0
  374. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/tabs/tabitem.py +0 -0
  375. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/tabs/tabs.py +0 -0
  376. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/tabs/tabview.py +0 -0
  377. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/textentry.py +0 -0
  378. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/timeentry.py +0 -0
  379. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/togglegroup.py +0 -0
  380. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/toolbar.py +0 -0
  381. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/composites/tooltip.py +0 -0
  382. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/internal/__init__.py +0 -0
  383. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/internal/wrapper_base.py +0 -0
  384. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/mixins/__init__.py +0 -0
  385. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/mixins/configure_mixin.py +0 -0
  386. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/mixins/entry_mixin.py +0 -0
  387. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/mixins/font_mixin.py +0 -0
  388. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/mixins/icon_mixin.py +0 -0
  389. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/mixins/localization_mixin.py +0 -0
  390. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/mixins/signal_mixin.py +0 -0
  391. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/mixins/validation_mixin.py +0 -0
  392. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/parts/__init__.py +0 -0
  393. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/parts/numberentry_part.py +0 -0
  394. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/parts/spinnerentry_part.py +0 -0
  395. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/parts/textentry_part.py +0 -0
  396. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/primitives/__init__.py +0 -0
  397. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/primitives/badge.py +0 -0
  398. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/primitives/button.py +0 -0
  399. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/primitives/card.py +0 -0
  400. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/primitives/checkbutton.py +0 -0
  401. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/primitives/checktoggle.py +0 -0
  402. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/primitives/combobox.py +0 -0
  403. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/primitives/entry.py +0 -0
  404. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/primitives/frame.py +0 -0
  405. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/primitives/gridframe.py +0 -0
  406. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/primitives/label.py +0 -0
  407. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/primitives/labelframe.py +0 -0
  408. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/primitives/menubutton.py +0 -0
  409. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/primitives/notebook.py +0 -0
  410. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/primitives/optionmenu.py +0 -0
  411. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/primitives/packframe.py +0 -0
  412. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/primitives/panedwindow.py +0 -0
  413. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/primitives/progressbar.py +0 -0
  414. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/primitives/radiobutton.py +0 -0
  415. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/primitives/radiotoggle.py +0 -0
  416. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/primitives/scale.py +0 -0
  417. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/primitives/scrollbar.py +0 -0
  418. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/primitives/separator.py +0 -0
  419. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/primitives/sizegrip.py +0 -0
  420. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/primitives/spinbox.py +0 -0
  421. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/primitives/switch.py +0 -0
  422. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/primitives/treeview.py +0 -0
  423. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack/widgets/types.py +0 -0
  424. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack.egg-info/dependency_links.txt +0 -0
  425. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack.egg-info/entry_points.txt +0 -0
  426. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack.egg-info/requires.txt +0 -0
  427. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/src/bootstack.egg-info/top_level.txt +0 -0
  428. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/tests/test_togglegroup.py +0 -0
  429. {bootstack-0.1.0a2 → bootstack-0.1.0a4}/tests/test_variables.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bootstack
3
- Version: 0.1.0a2
3
+ Version: 0.1.0a4
4
4
  Summary: A full UI framework for Python desktop apps built on tkinter — rich widgets, theming, and application structure out of the box.
5
5
  Author-email: Israel Dryer <israel.dryer@gmail.com>
6
6
  License-Expression: MIT
@@ -32,7 +32,7 @@ Requires-Dist: pywinstyles>=1.8; sys_platform == "win32"
32
32
  Requires-Dist: screeninfo>=0.8
33
33
  Dynamic: license-file
34
34
 
35
- ![bootstack](assets/banner-readme.png)
35
+ ![bootstack](https://raw.githubusercontent.com/israel-dryer/bootstack/main/assets/banner-readme.png)
36
36
 
37
37
  ![](https://img.shields.io/github/release/israel-dryer/bootstack.svg)
38
38
  [![Downloads](https://pepy.tech/badge/bootstack)](https://pepy.tech/project/bootstack)
@@ -55,8 +55,10 @@ The aim is to take you from `pip install` to a working, themed application witho
55
55
 
56
56
  Requires Python 3.12+.
57
57
 
58
+ bootstack is currently in **active alpha**, so the `--pre` flag is required to opt in to pre-release versions:
59
+
58
60
  ```bash
59
- pip install bootstack
61
+ pip install --pre bootstack
60
62
  ```
61
63
 
62
64
  ## Quick Start
@@ -1,4 +1,4 @@
1
- ![bootstack](assets/banner-readme.png)
1
+ ![bootstack](https://raw.githubusercontent.com/israel-dryer/bootstack/main/assets/banner-readme.png)
2
2
 
3
3
  ![](https://img.shields.io/github/release/israel-dryer/bootstack.svg)
4
4
  [![Downloads](https://pepy.tech/badge/bootstack)](https://pepy.tech/project/bootstack)
@@ -21,8 +21,10 @@ The aim is to take you from `pip install` to a working, themed application witho
21
21
 
22
22
  Requires Python 3.12+.
23
23
 
24
+ bootstack is currently in **active alpha**, so the `--pre` flag is required to opt in to pre-release versions:
25
+
24
26
  ```bash
25
- pip install bootstack
27
+ pip install --pre bootstack
26
28
  ```
27
29
 
28
30
  ## Quick Start
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "bootstack"
7
- version = "0.1.0a2"
7
+ version = "0.1.0a4"
8
8
  description = "A full UI framework for Python desktop apps built on tkinter — rich widgets, theming, and application structure out of the box."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.12"
@@ -82,7 +82,7 @@ where = ["src"]
82
82
  ]
83
83
 
84
84
  [tool.bumpversion]
85
- current_version = "0.1.0a2"
85
+ current_version = "0.1.0a4"
86
86
  parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)((?P<pre>a|b|rc)(?P<pre_n>\\d+))?"
87
87
  serialize = [
88
88
  "{major}.{minor}.{patch}{pre}{pre_n}",
@@ -540,6 +540,16 @@ class App(BaseWindow, WidgetCapabilitiesMixin, tkinter.Tk):
540
540
  if self._hdpi:
541
541
  enable_high_dpi_awareness()
542
542
 
543
+ # Tell Windows this is a distinct app so the taskbar uses our icon
544
+ # instead of the generic python.exe icon.
545
+ if sys.platform == 'win32':
546
+ try:
547
+ import ctypes
548
+ app_id = f"bootstack.{(self.settings.app_name or 'app').lower().replace(' ', '.')}"
549
+ ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(app_id)
550
+ except Exception:
551
+ pass
552
+
543
553
  # Initialize Tk
544
554
  tkinter.Tk.__init__(self, **kwargs)
545
555
  self.withdraw() # hide immediately until ready to show.
@@ -18,6 +18,7 @@ The BaseWindow mixin provides:
18
18
 
19
19
  from __future__ import annotations
20
20
 
21
+ import sys
21
22
  import tkinter
22
23
  from typing import Literal, Optional, Tuple, Callable, Any
23
24
 
@@ -185,9 +186,25 @@ class BaseWindow:
185
186
  import pywinstyles
186
187
  pywinstyles.apply_style(self, window_style)
187
188
  self._window_style_applied = True
189
+ self.after(0, self._update_chrome_color)
190
+ self.bind('<<ThemeChanged>>', lambda e: self.after(0, self._update_chrome_color), add='+')
188
191
  except Exception:
189
192
  pass
190
193
 
194
+ def _update_chrome_color(self) -> None:
195
+ if getattr(self, '_updating_chrome', False):
196
+ return
197
+ self._updating_chrome = True
198
+ try:
199
+ import pywinstyles
200
+ from bootstack.style.style import get_theme_provider
201
+ color = get_theme_provider().colors['chrome']
202
+ pywinstyles.change_header_color(self, color)
203
+ except Exception:
204
+ pass
205
+ finally:
206
+ self._updating_chrome = False
207
+
191
208
  def _setup_alpha(self, alpha: float) -> None:
192
209
  """Configure window alpha transparency in a platform-aware manner.
193
210
 
@@ -229,40 +246,48 @@ class BaseWindow:
229
246
  On failure to load custom icon, falls back to default icon if enabled.
230
247
  """
231
248
  if iconphoto is None:
232
- # No custom icon provided - use default if enabled
233
249
  if default_icon_enabled:
234
250
  try:
235
251
  from pathlib import Path
236
252
  import bootstack
237
- icon_path = Path(bootstack.__file__).parent / 'assets' / 'bootstack.png'
238
- self._icon = tkinter.PhotoImage(file=str(icon_path), master=self)
239
- self.iconphoto(True, self._icon)
253
+ assets = Path(bootstack.__file__).parent / 'assets'
254
+ if sys.platform == 'win32':
255
+ ico = assets / 'bootstack-light.ico'
256
+ if not ico.exists():
257
+ ico = assets / 'bootstack.ico'
258
+ self.wm_iconbitmap(str(ico))
259
+ else:
260
+ self._icon = tkinter.PhotoImage(file=str(assets / 'bootstack.png'), master=self)
261
+ self.iconphoto(True, self._icon)
240
262
  except (ImportError, FileNotFoundError, tkinter.TclError, Exception):
241
- # Icon file not available or failed to load - silently continue
242
263
  pass
243
264
  return
244
265
 
245
266
  # User provided a custom icon
246
267
  try:
247
- # Check if it's already a PhotoImage object
248
268
  if isinstance(iconphoto, tkinter.PhotoImage):
249
269
  self._icon = iconphoto
250
270
  self.iconphoto(True, self._icon)
271
+ elif str(iconphoto).lower().endswith('.ico'):
272
+ self.wm_iconbitmap(str(iconphoto))
251
273
  else:
252
- # Assume it's a file path
253
274
  self._icon = tkinter.PhotoImage(file=iconphoto, master=self)
254
275
  self.iconphoto(True, self._icon)
255
276
  except (tkinter.TclError, Exception) as e:
256
- # Failed to load user icon
257
277
  print(f'Failed to load icon: {iconphoto} - {e}')
258
278
  if default_icon_enabled:
259
- # Fall back to default bootstack.png
260
279
  try:
261
280
  from pathlib import Path
262
281
  import bootstack
263
- icon_path = Path(bootstack.__file__).parent / 'assets' / 'bootstack.png'
264
- self._icon = tkinter.PhotoImage(file=str(icon_path), master=self)
265
- self.iconphoto(True, self._icon)
282
+ assets = Path(bootstack.__file__).parent / 'assets'
283
+ if sys.platform == 'win32':
284
+ ico = assets / 'bootstack-light.ico'
285
+ if not ico.exists():
286
+ ico = assets / 'bootstack.ico'
287
+ self.wm_iconbitmap(str(ico))
288
+ else:
289
+ self._icon = tkinter.PhotoImage(file=str(assets / 'bootstack.png'), master=self)
290
+ self.iconphoto(True, self._icon)
266
291
  except (ImportError, FileNotFoundError, tkinter.TclError, Exception):
267
292
  pass
268
293
 
@@ -224,11 +224,18 @@ import bootstack.runtime.toplevel >>> parent = tkinter.Tk()
224
224
  w_width = window.winfo_reqwidth()
225
225
  w_height = window.winfo_reqheight()
226
226
 
227
- # Use virtual root for multi-monitor support
228
- screen_x0 = window.winfo_vrootx()
229
- screen_y0 = window.winfo_vrooty()
230
- screen_width = window.winfo_vrootwidth()
231
- screen_height = window.winfo_vrootheight()
227
+ # Use the monitor containing the proposed position when screeninfo is
228
+ # available — on Windows, winfo_vroot* only covers the primary monitor,
229
+ # so clamping with it moves windows that legitimately belong on a
230
+ # secondary monitor back onto the primary.
231
+ monitor = WindowPositioning._get_monitor_at_point(x, y)
232
+ if monitor:
233
+ screen_x0, screen_y0, screen_width, screen_height = monitor
234
+ else:
235
+ screen_x0 = window.winfo_vrootx()
236
+ screen_y0 = window.winfo_vrooty()
237
+ screen_width = window.winfo_vrootwidth()
238
+ screen_height = window.winfo_vrootheight()
232
239
 
233
240
  # Calculate screen boundaries
234
241
  screen_x1 = screen_x0 + screen_width
@@ -311,7 +311,14 @@ class Toast:
311
311
 
312
312
  # ------ Positioning -------
313
313
 
314
- # Update layout to get final window size
314
+ # Deiconify off-screen first so the geometry manager runs a full
315
+ # layout pass on a mapped window. winfo_height() returns 1 on a
316
+ # withdrawn window, causing the toast to be placed with ~0 height
317
+ # and therefore positioned flush against the screen edge.
318
+ top.deiconify()
319
+ top.geometry(
320
+ f"+{top.winfo_screenwidth() * 2}+{top.winfo_screenheight() * 2}"
321
+ )
315
322
  top.update_idletasks()
316
323
 
317
324
  # Apply positioning using WindowPositioning utilities
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bootstack
3
- Version: 0.1.0a2
3
+ Version: 0.1.0a4
4
4
  Summary: A full UI framework for Python desktop apps built on tkinter — rich widgets, theming, and application structure out of the box.
5
5
  Author-email: Israel Dryer <israel.dryer@gmail.com>
6
6
  License-Expression: MIT
@@ -32,7 +32,7 @@ Requires-Dist: pywinstyles>=1.8; sys_platform == "win32"
32
32
  Requires-Dist: screeninfo>=0.8
33
33
  Dynamic: license-file
34
34
 
35
- ![bootstack](assets/banner-readme.png)
35
+ ![bootstack](https://raw.githubusercontent.com/israel-dryer/bootstack/main/assets/banner-readme.png)
36
36
 
37
37
  ![](https://img.shields.io/github/release/israel-dryer/bootstack.svg)
38
38
  [![Downloads](https://pepy.tech/badge/bootstack)](https://pepy.tech/project/bootstack)
@@ -55,8 +55,10 @@ The aim is to take you from `pip install` to a working, themed application witho
55
55
 
56
56
  Requires Python 3.12+.
57
57
 
58
+ bootstack is currently in **active alpha**, so the `--pre` flag is required to opt in to pre-release versions:
59
+
58
60
  ```bash
59
- pip install bootstack
61
+ pip install --pre bootstack
60
62
  ```
61
63
 
62
64
  ## Quick Start
@@ -25,6 +25,8 @@ src/bootstack/api/style.py
25
25
  src/bootstack/api/utils.py
26
26
  src/bootstack/api/widgets.py
27
27
  src/bootstack/assets/__init__.py
28
+ src/bootstack/assets/bootstack-dark.ico
29
+ src/bootstack/assets/bootstack-light.ico
28
30
  src/bootstack/assets/bootstack-transparent.png
29
31
  src/bootstack/assets/bootstack.ico
30
32
  src/bootstack/assets/bootstack.png
File without changes
File without changes
File without changes
File without changes