bootstack 0.1.0a7__tar.gz → 0.1.0a8__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.
- {bootstack-0.1.0a7/src/bootstack.egg-info → bootstack-0.1.0a8}/PKG-INFO +1 -1
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/pyproject.toml +2 -2
- bootstack-0.1.0a8/src/bootstack/style/builders/checkbutton.py +125 -0
- bootstack-0.1.0a8/src/bootstack/style/builders/radiobutton.py +97 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/builders/utils.py +28 -2
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/radiogroup.py +8 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/primitives/checkbutton.py +12 -2
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/primitives/checktoggle.py +6 -1
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/primitives/radiobutton.py +12 -2
- {bootstack-0.1.0a7 → bootstack-0.1.0a8/src/bootstack.egg-info}/PKG-INFO +1 -1
- bootstack-0.1.0a7/src/bootstack/style/builders/checkbutton.py +0 -95
- bootstack-0.1.0a7/src/bootstack/style/builders/radiobutton.py +0 -68
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/LICENSE +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/MANIFEST.in +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/NOTICE +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/README.md +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/setup.cfg +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/__init__.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/__main__.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/api/__init__.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/api/app.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/api/constants.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/api/data.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/api/dialogs.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/api/i18n.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/api/localization.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/api/menu.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/api/style.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/api/utils.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/api/widgets.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/__init__.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/bootstack-dark.ico +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/bootstack-light.ico +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/bootstack-transparent.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/bootstack.ico +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/bootstack.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/__init__.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/badge-pill.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/badge-square.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/border.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/button-compact.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/button-default.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/button-group-horizontal-after-compact.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/button-group-horizontal-after-default.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/button-group-horizontal-before-compact.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/button-group-horizontal-before-default.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/button-group-horizontal-center-compact.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/button-group-horizontal-center-default.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/button-group-vertical-after-compact.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/button-group-vertical-after-default.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/button-group-vertical-before-compact.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/button-group-vertical-before-default.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/button-group-vertical-center-compact.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/button-group-vertical-center-default.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/checkbox-checked.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/checkbox-indeterminate.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/checkbox-unchecked.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/field.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/input-after-compact.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/input-after-default.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/input-before-compact.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/input-before-default.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/input-compact.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/input-default.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/list-item-separated.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/list-item.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/manifest.toml +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/menu-item.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/nav-button-compact.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/nav-button-default.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/nav-icon-button-compact.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/nav-icon-button-default.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/notebook-client-border.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/notebook-tab-active.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/notebook-tab-bar.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/notebook-tab-normal.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/notebook-tab-pill.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/progress-bar-horizontal-striped.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/progress-bar-solid.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/progress-bar-thin.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/progress-bar-vertical-striped.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/radio-selected.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/radio-unselected.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/scrollbar-horizontal.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/scrollbar-vertical.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/slider-handle-focus.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/slider-handle.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/slider-track-horizontal.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/slider-track-vertical.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/switch-off.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/switch-on.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/tabs-bar-horizontal.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/tabs-bar-vertical.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/elements/tabs-pill.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/ar/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/ar/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/bg/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/cs/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/cs/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/da/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/da/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/de/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/de/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/en/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/en/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/es/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/es/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/fr/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/fr/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/he/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/he/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/hi/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/hi/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/it/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/it/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/ja/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/ja/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/ko/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/ko/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/nb/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/nb/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/nl/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/nl/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/pl/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/pl/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/pt/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/pt/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/pt_BR/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/pt_BR/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/sl/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/sl/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/sv/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/sv/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/tr/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/tr/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/zh_CN/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/zh_CN/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/zh_TW/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/locales/zh_TW/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/themes/__init__.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/themes/amber-dark.json +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/themes/amber-light.json +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/themes/aurora-dark.json +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/themes/aurora-light.json +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/themes/bootstrap-dark.json +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/themes/bootstrap-light.json +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/themes/classic-dark.json +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/themes/classic-light.json +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/themes/docs-dark.json +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/themes/docs-light.json +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/themes/forest-dark.json +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/themes/forest-light.json +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/themes/ocean-dark.json +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/themes/ocean-light.json +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/themes/rose-dark.json +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/themes/rose-light.json +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/__init__.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/badge-default.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/badge-pill.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/border.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/button-group-horizontal-after.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/button-group-horizontal-before.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/button-group-horizontal-center.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/button-group-vertical-after.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/button-group-vertical-before.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/button-group-vertical-center.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/button.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/checkbox-checked.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/checkbox-indeterminate.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/checkbox-unchecked.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/field.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/icon-button.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/input-inner.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/input-prefix.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/input-suffix.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/input.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/list-item-focus.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/list-item-separated.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/menu-item-separated.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/notebook-client-border.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/notebook-pill-active.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/notebook-pill-inactive.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/notebook-tab-active.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/notebook-tab-border.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/notebook-tab-normal.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/notebook-underline.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/progress-bar-horizontal-default.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/progress-bar-horizontal-striped.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/progress-bar-vertical-default.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/progress-bar-vertical-striped.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/progress-trough-horizontal.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/progress-trough-vertical.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/radio-selected.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/radio-unselected.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/scrollbar-horizontal-rounded.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/scrollbar-vertical-rounded.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/separator-horizontal.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/separator-vertical.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/slider-handle-focus.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/slider-handle.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/slider-track-horizontal.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/slider-track-vertical.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/switch-off.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/switch-on.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/tabs-bar-horizontal.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/tabs-bar-vertical.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/assets/widgets/tabs-pill.png +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/cli/__init__.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/cli/__main__.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/cli/add.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/cli/build.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/cli/config.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/cli/demo.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/cli/doctor.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/cli/icons.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/cli/list_cmd.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/cli/promote.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/cli/pyinstaller.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/cli/run.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/cli/start.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/cli/templates/__init__.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/constants.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/core/__init__.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/core/capabilities/__init__.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/core/capabilities/after.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/core/capabilities/bind.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/core/capabilities/bindtags.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/core/capabilities/busy.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/core/capabilities/clipboard.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/core/capabilities/focus.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/core/capabilities/grab.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/core/capabilities/grid.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/core/capabilities/localization.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/core/capabilities/pack.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/core/capabilities/place.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/core/capabilities/selection.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/core/capabilities/signals.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/core/capabilities/winfo.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/core/colorutils.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/core/exceptions.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/core/images.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/core/localization/README.md +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/core/localization/__init__.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/core/localization/intl_format.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/core/localization/msgcat.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/core/localization/specs.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/core/mixins/__init__.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/core/mixins/ttk_state.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/core/mixins/widget.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/core/publisher.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/core/signals/README.md +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/core/signals/__init__.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/core/signals/integration.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/core/signals/signal.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/core/signals/types.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/core/validation/__init__.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/core/validation/types.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/core/validation/validation_result.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/core/validation/validation_rules.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/core/variables.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/datasource/README.md +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/datasource/__init__.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/datasource/base.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/datasource/file_source.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/datasource/memory_source.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/datasource/sqlite_source.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/datasource/types.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/dialogs/__init__.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/dialogs/colorchooser.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/dialogs/colordropper.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/dialogs/datedialog.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/dialogs/dialog.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/dialogs/filterdialog.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/dialogs/fontdialog.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/dialogs/formdialog.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/dialogs/message.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/dialogs/query.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/py.typed +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/runtime/__init__.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/runtime/app.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/runtime/base_window.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/runtime/events.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/runtime/menu.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/runtime/shortcuts.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/runtime/tk_patch.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/runtime/toplevel.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/runtime/utility.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/runtime/visual_focus.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/runtime/window_utilities.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/__init__.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/bootstyle.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/bootstyle_builder_base.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/bootstyle_builder_mixed.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/bootstyle_builder_tk.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/bootstyle_builder_ttk.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/builders/__init__.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/builders/badge.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/builders/button.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/builders/buttongroup.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/builders/calendar.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/builders/combobox.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/builders/contextmenu.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/builders/entry.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/builders/expander.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/builders/field.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/builders/frame.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/builders/label.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/builders/labelframe.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/builders/listview.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/builders/menubar.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/builders/menubutton.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/builders/notebook.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/builders/panedwindow.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/builders/progressbar.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/builders/scale.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/builders/scrollbar.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/builders/separator.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/builders/sidenav.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/builders/sizegrip.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/builders/spinbox.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/builders/switch.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/builders/tabitem.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/builders/toolbutton.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/builders/tooltip.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/builders/treeview.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/builders_tk/__init__.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/builders_tk/defaults.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/element.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/style.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/theme_provider.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/tk_patch.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/token_maps.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/types.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/typography.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/style/utility.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/themes/__init__.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/themes/standard.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/themes/user.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/__init__.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/__init__.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/accordion.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/appshell.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/buttongroup.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/calendar.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/compositeframe.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/contextmenu.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/dateentry.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/dropdownbutton.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/expander.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/field.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/floodgauge.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/form.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/labeledscale.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/list/__init__.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/list/listitem.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/list/listview.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/menubar.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/meter.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/numericentry.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/pagestack.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/passwordentry.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/pathentry.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/scrolledtext.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/scrolledtext.pyi +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/scrollview.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/selectbox.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/sidenav/__init__.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/sidenav/group.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/sidenav/header.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/sidenav/item.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/sidenav/separator.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/sidenav/view.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/spinnerentry.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/tableview/__init__.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/tableview/tableview.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/tableview/types.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/tabs/__init__.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/tabs/tabitem.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/tabs/tabs.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/tabs/tabview.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/textentry.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/timeentry.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/toast.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/togglegroup.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/toolbar.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/composites/tooltip.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/internal/__init__.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/internal/wrapper_base.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/mixins/__init__.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/mixins/configure_mixin.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/mixins/entry_mixin.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/mixins/font_mixin.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/mixins/icon_mixin.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/mixins/localization_mixin.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/mixins/signal_mixin.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/mixins/validation_mixin.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/parts/__init__.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/parts/numberentry_part.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/parts/spinnerentry_part.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/parts/textentry_part.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/primitives/__init__.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/primitives/badge.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/primitives/button.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/primitives/card.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/primitives/combobox.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/primitives/entry.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/primitives/frame.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/primitives/gridframe.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/primitives/label.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/primitives/labelframe.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/primitives/menubutton.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/primitives/notebook.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/primitives/optionmenu.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/primitives/packframe.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/primitives/panedwindow.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/primitives/progressbar.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/primitives/radiotoggle.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/primitives/scale.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/primitives/scrollbar.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/primitives/separator.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/primitives/sizegrip.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/primitives/spinbox.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/primitives/switch.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/primitives/treeview.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack/widgets/types.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack.egg-info/SOURCES.txt +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack.egg-info/dependency_links.txt +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack.egg-info/entry_points.txt +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack.egg-info/requires.txt +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/src/bootstack.egg-info/top_level.txt +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/tests/test_togglegroup.py +0 -0
- {bootstack-0.1.0a7 → bootstack-0.1.0a8}/tests/test_variables.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: bootstack
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.0a8
|
|
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
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "bootstack"
|
|
7
|
-
version = "0.1.
|
|
7
|
+
version = "0.1.0a8"
|
|
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.
|
|
85
|
+
current_version = "0.1.0a8"
|
|
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}",
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"""Checkbutton widget style builders.
|
|
2
|
+
|
|
3
|
+
This module contains style builders for ttk.Checkbutton widgets and variants.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
from __future__ import annotations
|
|
7
|
+
|
|
8
|
+
from bootstack.style.bootstyle_builder_ttk import BootstyleBuilderTTk
|
|
9
|
+
from bootstack.style.element import Element, ElementImage
|
|
10
|
+
from bootstack.style.utility import create_transparent_image, recolor_element_image
|
|
11
|
+
from bootstack.style.builders.utils import icon_size, resolve_icon_spec
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@BootstyleBuilderTTk.register_builder('default', 'TCheckbutton')
|
|
15
|
+
def build_checkbutton_style(b: BootstyleBuilderTTk, ttk_style: str, accent: str = 'primary', **options):
|
|
16
|
+
accent_token = accent or 'primary'
|
|
17
|
+
surface_token = options.get('surface', 'content')
|
|
18
|
+
|
|
19
|
+
background = b.color(surface_token)
|
|
20
|
+
background_hover = b.active(background)
|
|
21
|
+
foreground = b.on_color(background)
|
|
22
|
+
foreground_disabled = b.disabled('text', background)
|
|
23
|
+
|
|
24
|
+
normal = b.color(accent_token)
|
|
25
|
+
pressed = b.pressed(normal)
|
|
26
|
+
hovered = b.active(normal)
|
|
27
|
+
border = b.border(background)
|
|
28
|
+
focus = hovered
|
|
29
|
+
focus_ring = b.focus_ring(normal, background)
|
|
30
|
+
disabled = b.disabled()
|
|
31
|
+
|
|
32
|
+
show_indicator = options.get('show_indicator', True)
|
|
33
|
+
|
|
34
|
+
if show_indicator:
|
|
35
|
+
spacer_img = create_transparent_image(6, 1)
|
|
36
|
+
b.create_style_element_image(ElementImage(f'{ttk_style}.spacer', spacer_img, sticky="ew"))
|
|
37
|
+
|
|
38
|
+
normal_checked_img = recolor_element_image('checkbox_checked', background, normal, background)
|
|
39
|
+
normal_unchecked_img = recolor_element_image('checkbox_unchecked', background, border, background)
|
|
40
|
+
normal_indeterminate_img = recolor_element_image('checkbox_indeterminate', background, normal, background)
|
|
41
|
+
|
|
42
|
+
hovered_checked_img = recolor_element_image('checkbox_checked', background, hovered, background)
|
|
43
|
+
hovered_unchecked_img = recolor_element_image('checkbox_unchecked', background_hover, border, background)
|
|
44
|
+
hovered_indeterminate_img = recolor_element_image('checkbox_indeterminate', background, hovered, background)
|
|
45
|
+
|
|
46
|
+
pressed_checked_img = recolor_element_image('checkbox_checked', background, pressed, background)
|
|
47
|
+
pressed_unchecked_img = recolor_element_image('checkbox_unchecked', background_hover, pressed, background)
|
|
48
|
+
pressed_indeterminate_img = recolor_element_image('checkbox_indeterminate', background, pressed, background)
|
|
49
|
+
|
|
50
|
+
focus_checked_img = recolor_element_image('checkbox_checked', background, focus, focus_ring)
|
|
51
|
+
focus_unchecked_img = recolor_element_image('checkbox_unchecked', background_hover, focus, focus_ring)
|
|
52
|
+
focus_indeterminate_img = recolor_element_image('checkbox_indeterminate', background, focus, focus_ring)
|
|
53
|
+
|
|
54
|
+
disabled_checked_img = recolor_element_image('checkbox_checked', disabled, foreground_disabled, background)
|
|
55
|
+
disabled_unchecked_img = recolor_element_image(
|
|
56
|
+
'checkbox_unchecked', foreground_disabled, foreground_disabled, background)
|
|
57
|
+
disabled_indeterminate_img = recolor_element_image(
|
|
58
|
+
'checkbox_indeterminate', disabled, foreground_disabled, background)
|
|
59
|
+
|
|
60
|
+
b.create_style_element_image(
|
|
61
|
+
ElementImage(f'{ttk_style}.indicator', normal_unchecked_img.image, sticky="ns").state_specs(
|
|
62
|
+
[
|
|
63
|
+
# Disabled states
|
|
64
|
+
('disabled alternate !selected', disabled_indeterminate_img.image),
|
|
65
|
+
('disabled selected', disabled_checked_img.image),
|
|
66
|
+
('disabled !selected !alternate', disabled_unchecked_img.image),
|
|
67
|
+
|
|
68
|
+
# Focused states
|
|
69
|
+
('focus alternate !selected', focus_indeterminate_img.image),
|
|
70
|
+
('focus selected', focus_checked_img.image),
|
|
71
|
+
('focus !selected !alternate', focus_unchecked_img.image),
|
|
72
|
+
|
|
73
|
+
# Pressed states
|
|
74
|
+
('pressed alternate !selected', pressed_indeterminate_img.image),
|
|
75
|
+
('pressed selected', pressed_checked_img.image),
|
|
76
|
+
('pressed !selected !alternate', pressed_unchecked_img.image),
|
|
77
|
+
|
|
78
|
+
# Hover states
|
|
79
|
+
('hover alternate !selected', hovered_indeterminate_img.image),
|
|
80
|
+
('hover selected', hovered_checked_img.image),
|
|
81
|
+
('hover !selected !alternate', hovered_unchecked_img.image),
|
|
82
|
+
|
|
83
|
+
# Normal base states
|
|
84
|
+
('alternate !selected', normal_indeterminate_img.image),
|
|
85
|
+
('selected', normal_checked_img.image),
|
|
86
|
+
('!selected !alternate', normal_unchecked_img.image),
|
|
87
|
+
]
|
|
88
|
+
))
|
|
89
|
+
|
|
90
|
+
# Label-area icon: stateful, independent of show_indicator.
|
|
91
|
+
# Accent color when selected, foreground when unselected.
|
|
92
|
+
icon_images = []
|
|
93
|
+
icon_spec_raw = resolve_icon_spec(options)
|
|
94
|
+
if icon_spec_raw is not None:
|
|
95
|
+
icon_spec = b.normalize_icon_spec(icon_spec_raw, icon_size(False, 'default'))
|
|
96
|
+
fg_spec = [
|
|
97
|
+
('disabled', foreground_disabled),
|
|
98
|
+
('selected !disabled', normal),
|
|
99
|
+
('', foreground),
|
|
100
|
+
]
|
|
101
|
+
icon_images = b.map_stateful_icons(icon_spec, fg_spec)
|
|
102
|
+
|
|
103
|
+
layout_children = []
|
|
104
|
+
if show_indicator:
|
|
105
|
+
layout_children += [
|
|
106
|
+
Element(f'{ttk_style}.indicator', side="left", sticky=""),
|
|
107
|
+
Element(f'{ttk_style}.spacer', side="left"),
|
|
108
|
+
]
|
|
109
|
+
layout_children.append(Element('Checkbutton.label', side="left", sticky="nsew"))
|
|
110
|
+
|
|
111
|
+
b.create_style_layout(
|
|
112
|
+
ttk_style, Element('Checkbutton.padding', sticky="nsew").children(layout_children)
|
|
113
|
+
)
|
|
114
|
+
|
|
115
|
+
b.configure_style(ttk_style, background=background, foreground=foreground, font="body")
|
|
116
|
+
|
|
117
|
+
map_kwargs = {
|
|
118
|
+
'background': [],
|
|
119
|
+
'foreground': [('disabled', foreground_disabled), ('', foreground)],
|
|
120
|
+
}
|
|
121
|
+
if icon_images:
|
|
122
|
+
map_kwargs['image'] = icon_images
|
|
123
|
+
if not options.get('icon_only', False):
|
|
124
|
+
map_kwargs['compound'] = 'left'
|
|
125
|
+
b.map_style(ttk_style, **map_kwargs)
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"""Radio Button widget style builders.
|
|
2
|
+
|
|
3
|
+
This module contains style builders for ttk.Radiobutton widgets and variants.
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
from __future__ import annotations
|
|
7
|
+
|
|
8
|
+
from bootstack.style.bootstyle_builder_ttk import BootstyleBuilderTTk
|
|
9
|
+
from bootstack.style.element import Element, ElementImage
|
|
10
|
+
from bootstack.style.utility import create_transparent_image, recolor_element_image
|
|
11
|
+
from bootstack.style.builders.utils import icon_size, resolve_icon_spec
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@BootstyleBuilderTTk.register_builder('default', 'TRadiobutton')
|
|
15
|
+
def build_radiobutton_style(b: BootstyleBuilderTTk, ttk_style: str, accent: str = 'primary', **options):
|
|
16
|
+
accent_token = accent or 'primary'
|
|
17
|
+
surface_token = options.get('surface', 'content')
|
|
18
|
+
|
|
19
|
+
background = b.color(surface_token)
|
|
20
|
+
background_hover = b.active(background)
|
|
21
|
+
foreground = b.on_color(background)
|
|
22
|
+
foreground_disabled = b.disabled('text', background)
|
|
23
|
+
|
|
24
|
+
normal = b.color(accent_token)
|
|
25
|
+
hovered = b.active(normal)
|
|
26
|
+
border = b.border(background)
|
|
27
|
+
focus = hovered
|
|
28
|
+
focus_ring = b.focus_ring(normal, background)
|
|
29
|
+
|
|
30
|
+
show_indicator = options.get('show_indicator', True)
|
|
31
|
+
|
|
32
|
+
if show_indicator:
|
|
33
|
+
spacer_img = create_transparent_image(6, 1)
|
|
34
|
+
b.create_style_element_image(ElementImage(f'{ttk_style}.spacer', spacer_img, sticky="ew"))
|
|
35
|
+
|
|
36
|
+
normal_checked_img = recolor_element_image('radio_selected', background, normal, background)
|
|
37
|
+
normal_unchecked_img = recolor_element_image('radio_unselected', background, border, background)
|
|
38
|
+
|
|
39
|
+
focus_checked_img = recolor_element_image('radio_selected', background, focus, focus_ring)
|
|
40
|
+
focus_unchecked_img = recolor_element_image('radio_unselected', background_hover, focus, focus_ring)
|
|
41
|
+
|
|
42
|
+
disabled_checked_img = recolor_element_image('radio_selected', background, foreground_disabled, background)
|
|
43
|
+
disabled_unchecked_img = recolor_element_image('radio_unselected', background, foreground_disabled, background)
|
|
44
|
+
|
|
45
|
+
b.create_style_element_image(
|
|
46
|
+
ElementImage(f'{ttk_style}.indicator', normal_unchecked_img.image, sticky="ns", padding=b.scale(4)).state_specs(
|
|
47
|
+
[
|
|
48
|
+
# Disabled states
|
|
49
|
+
('disabled selected', disabled_checked_img.image),
|
|
50
|
+
('disabled !selected !alternate', disabled_unchecked_img.image),
|
|
51
|
+
|
|
52
|
+
# Focused states
|
|
53
|
+
('focus selected', focus_checked_img.image),
|
|
54
|
+
('focus !selected !alternate', focus_unchecked_img.image),
|
|
55
|
+
|
|
56
|
+
# Normal base states
|
|
57
|
+
('selected', normal_checked_img.image),
|
|
58
|
+
('!selected !alternate', normal_unchecked_img.image),
|
|
59
|
+
]
|
|
60
|
+
))
|
|
61
|
+
|
|
62
|
+
# Label-area icon: stateful, independent of show_indicator.
|
|
63
|
+
# Accent color when selected, foreground when unselected.
|
|
64
|
+
icon_images = []
|
|
65
|
+
icon_spec_raw = resolve_icon_spec(options)
|
|
66
|
+
if icon_spec_raw is not None:
|
|
67
|
+
icon_spec = b.normalize_icon_spec(icon_spec_raw, icon_size(False, 'default'))
|
|
68
|
+
fg_spec = [
|
|
69
|
+
('disabled', foreground_disabled),
|
|
70
|
+
('selected !disabled', normal),
|
|
71
|
+
('', foreground),
|
|
72
|
+
]
|
|
73
|
+
icon_images = b.map_stateful_icons(icon_spec, fg_spec)
|
|
74
|
+
|
|
75
|
+
layout_children = []
|
|
76
|
+
if show_indicator:
|
|
77
|
+
layout_children += [
|
|
78
|
+
Element(f'{ttk_style}.indicator', side="left", sticky=""),
|
|
79
|
+
Element(f'{ttk_style}.spacer', side="left"),
|
|
80
|
+
]
|
|
81
|
+
layout_children.append(Element('Radiobutton.label', side="left", sticky="nsew"))
|
|
82
|
+
|
|
83
|
+
b.create_style_layout(
|
|
84
|
+
ttk_style, Element('Radiobutton.padding', sticky="nsew").children(layout_children)
|
|
85
|
+
)
|
|
86
|
+
|
|
87
|
+
b.configure_style(ttk_style, background=background, foreground=foreground, font="body")
|
|
88
|
+
|
|
89
|
+
map_kwargs = {
|
|
90
|
+
'background': [],
|
|
91
|
+
'foreground': [('disabled', foreground_disabled), ('', foreground)],
|
|
92
|
+
}
|
|
93
|
+
if icon_images:
|
|
94
|
+
map_kwargs['image'] = icon_images
|
|
95
|
+
if not options.get('icon_only', False):
|
|
96
|
+
map_kwargs['compound'] = 'left'
|
|
97
|
+
b.map_style(ttk_style, **map_kwargs)
|
|
@@ -251,6 +251,31 @@ def button_padding(b: BootstyleBuilderTTk, icon_only: bool, density: Any) -> int
|
|
|
251
251
|
return b.scale((8, 0))
|
|
252
252
|
|
|
253
253
|
|
|
254
|
+
def resolve_icon_spec(options: dict) -> 'str | dict | None':
|
|
255
|
+
"""Resolve on_icon/off_icon/icon kwargs into a unified icon spec.
|
|
256
|
+
|
|
257
|
+
Handles the three icon kwargs accepted by toggle-style widgets:
|
|
258
|
+
- icon: base icon for all states (color changes with state)
|
|
259
|
+
- off_icon: icon for the unselected/off state
|
|
260
|
+
- on_icon: icon for the selected/on state
|
|
261
|
+
|
|
262
|
+
Returns an IconSpec dict (or plain name string) suitable for passing
|
|
263
|
+
to normalize_icon_spec, or None if no icon was provided.
|
|
264
|
+
"""
|
|
265
|
+
on_icon = options.get('on_icon')
|
|
266
|
+
off_icon = options.get('off_icon')
|
|
267
|
+
icon = options.get('icon')
|
|
268
|
+
|
|
269
|
+
if not on_icon and not off_icon:
|
|
270
|
+
return icon # None, str, or full IconSpec dict
|
|
271
|
+
|
|
272
|
+
base = off_icon or icon or on_icon
|
|
273
|
+
spec: dict = {'name': base}
|
|
274
|
+
if on_icon:
|
|
275
|
+
spec['state'] = [('selected', on_icon)]
|
|
276
|
+
return spec
|
|
277
|
+
|
|
278
|
+
|
|
254
279
|
def apply_icon_mapping(
|
|
255
280
|
b: BootstyleBuilderTTk,
|
|
256
281
|
options: dict,
|
|
@@ -261,14 +286,15 @@ def apply_icon_mapping(
|
|
|
261
286
|
|
|
262
287
|
Args:
|
|
263
288
|
b: The bootstyle builder instance.
|
|
264
|
-
options: Style options dictionary containing 'icon'
|
|
289
|
+
options: Style options dictionary containing 'icon', 'on_icon', 'off_icon',
|
|
290
|
+
and 'icon_only' keys.
|
|
265
291
|
state_spec: The state specification dictionary to update.
|
|
266
292
|
default_size: Default icon size, or None to use normalize_icon_spec defaults.
|
|
267
293
|
|
|
268
294
|
Returns:
|
|
269
295
|
Updated state_spec with icon mappings applied.
|
|
270
296
|
"""
|
|
271
|
-
icon = options
|
|
297
|
+
icon = resolve_icon_spec(options)
|
|
272
298
|
if icon is None:
|
|
273
299
|
return state_spec
|
|
274
300
|
|
|
@@ -25,6 +25,7 @@ class RadioGroupKwargs(TypedDict, total=False):
|
|
|
25
25
|
text: str
|
|
26
26
|
labelanchor: Literal['n', 's', 'e', 'w', 'ne', 'nw', 'se', 'sw']
|
|
27
27
|
state: Literal['normal', 'disabled']
|
|
28
|
+
show_indicator: bool
|
|
28
29
|
show_border: bool
|
|
29
30
|
surface: str
|
|
30
31
|
style_options: dict[str, Any]
|
|
@@ -64,6 +65,9 @@ class RadioGroup(Frame):
|
|
|
64
65
|
signal (Signal): Optional Signal instance for reactive programming.
|
|
65
66
|
value (str): Initial selected value.
|
|
66
67
|
state (str): Initial state for all buttons - 'normal' (default) or 'disabled'.
|
|
68
|
+
show_indicator (bool): Whether child buttons show the standard radio indicator.
|
|
69
|
+
Defaults to True. Set to False for icon-only or custom-styled groups.
|
|
70
|
+
Can be overridden per-button in ``add()``.
|
|
67
71
|
show_border (bool): If True, draws a border around the group.
|
|
68
72
|
surface (str): Optional surface token; otherwise inherited.
|
|
69
73
|
style_options (dict): Additional style options passed to child buttons.
|
|
@@ -78,6 +82,7 @@ class RadioGroup(Frame):
|
|
|
78
82
|
self._labeltext = kwargs.pop('text', None)
|
|
79
83
|
self._labelanchor = kwargs.pop('labelanchor', 'n')
|
|
80
84
|
self._state = kwargs.pop('state', 'normal')
|
|
85
|
+
self._show_indicator = kwargs.pop('show_indicator', True)
|
|
81
86
|
|
|
82
87
|
# Handle signal/variable/value
|
|
83
88
|
initial_value = kwargs.pop('value', None)
|
|
@@ -242,6 +247,9 @@ class RadioGroup(Frame):
|
|
|
242
247
|
# Apply current state if not explicitly provided
|
|
243
248
|
if 'state' not in btn_kwargs:
|
|
244
249
|
btn_kwargs['state'] = self._state
|
|
250
|
+
# Forward group-level show_indicator unless overridden per-button
|
|
251
|
+
if 'show_indicator' not in btn_kwargs:
|
|
252
|
+
btn_kwargs['show_indicator'] = self._show_indicator
|
|
245
253
|
|
|
246
254
|
button = RadioButton(
|
|
247
255
|
self._button_container,
|
|
@@ -22,7 +22,10 @@ class CheckButtonKwargs(TypedDict, total=False):
|
|
|
22
22
|
command: Optional[Callable[[], Any]]
|
|
23
23
|
image: Any
|
|
24
24
|
icon: Any
|
|
25
|
+
on_icon: Any
|
|
26
|
+
off_icon: Any
|
|
25
27
|
icon_only: bool
|
|
28
|
+
show_indicator: bool
|
|
26
29
|
compound: Literal['text', 'image', 'top', 'bottom', 'left', 'right', 'center', 'none'] | str
|
|
27
30
|
variable: Any
|
|
28
31
|
signal: Signal[Any]
|
|
@@ -68,8 +71,15 @@ class CheckButton(LocalizationMixin, SignalMixin, TextSignalMixin, IconMixin, TT
|
|
|
68
71
|
textsignal (Signal[str]): Reactive Signal linked to the text (auto-synced with textvariable).
|
|
69
72
|
command (Callable): Callable invoked when the value toggles.
|
|
70
73
|
image (PhotoImage): Image to display.
|
|
71
|
-
icon (str | dict):
|
|
74
|
+
icon (str | dict): Icon shown in the label area for all states. Color shifts
|
|
75
|
+
from foreground (unselected) to accent (selected) automatically.
|
|
76
|
+
on_icon (str | dict): Icon shown in the label area when the button is selected.
|
|
77
|
+
Shortcut for ``state=[("selected", name)]`` inside a full icon spec.
|
|
78
|
+
off_icon (str | dict): Icon shown in the label area when the button is unselected.
|
|
79
|
+
Used as the base icon when ``on_icon`` is also provided.
|
|
72
80
|
icon_only (bool): If True, removes the additional padding reserved for text.
|
|
81
|
+
show_indicator (bool): Whether to show the standard checkbox indicator. Defaults
|
|
82
|
+
to True. Set to False to hide the indicator (e.g. when using icons alone).
|
|
73
83
|
compound (str): Placement of the image relative to text.
|
|
74
84
|
variable (Variable): Linked variable controlling the on/off state.
|
|
75
85
|
localize (bool | Literal['auto']): Determines the widget's localization mode.
|
|
@@ -94,7 +104,7 @@ class CheckButton(LocalizationMixin, SignalMixin, TextSignalMixin, IconMixin, TT
|
|
|
94
104
|
signal_provided = 'signal' in kwargs
|
|
95
105
|
variable_provided = 'variable' in kwargs
|
|
96
106
|
initial_value = kwargs.pop('value', None)
|
|
97
|
-
kwargs.update(style_options=self._capture_style_options(['icon_only', 'icon', 'anchor'], kwargs))
|
|
107
|
+
kwargs.update(style_options=self._capture_style_options(['icon_only', 'icon', 'on_icon', 'off_icon', 'show_indicator', 'anchor'], kwargs))
|
|
98
108
|
super().__init__(master, **kwargs)
|
|
99
109
|
if initial_value is not None and not signal_provided and not variable_provided:
|
|
100
110
|
self.variable.set(initial_value)
|
|
@@ -19,7 +19,12 @@ class CheckToggle(CheckButton):
|
|
|
19
19
|
textsignal (Signal[str]): Reactive Signal linked to the text (auto-synced with textvariable).
|
|
20
20
|
command (Callable): Callable invoked when the toggle changes state.
|
|
21
21
|
image (PhotoImage): Image to display.
|
|
22
|
-
icon (str | dict):
|
|
22
|
+
icon (str | dict): Icon shown in the label area for all states. Color shifts
|
|
23
|
+
with the button's pressed/selected state automatically.
|
|
24
|
+
on_icon (str | dict): Icon shown when the toggle is selected (on). Shortcut
|
|
25
|
+
for ``state=[("selected", name)]`` inside a full icon spec.
|
|
26
|
+
off_icon (str | dict): Icon shown when the toggle is unselected (off). Used
|
|
27
|
+
as the base icon when ``on_icon`` is also provided.
|
|
23
28
|
icon_only (bool): If True, removes the additional padding reserved for text.
|
|
24
29
|
compound (str): Placement of the image relative to text.
|
|
25
30
|
variable (Variable): Linked variable controlling the on/off state.
|
|
@@ -22,7 +22,10 @@ class RadioButtonKwargs(TypedDict, total=False):
|
|
|
22
22
|
command: Optional[Callable[[], Any]]
|
|
23
23
|
image: Any
|
|
24
24
|
icon: Any
|
|
25
|
+
on_icon: Any
|
|
26
|
+
off_icon: Any
|
|
25
27
|
icon_only: bool
|
|
28
|
+
show_indicator: bool
|
|
26
29
|
compound: Literal['text', 'image', 'top', 'bottom', 'left', 'right', 'center', 'none'] | str
|
|
27
30
|
variable: Any
|
|
28
31
|
signal: Signal[Any]
|
|
@@ -66,8 +69,15 @@ class RadioButton(LocalizationMixin, SignalMixin, TextSignalMixin, IconMixin, TT
|
|
|
66
69
|
textsignal (Signal[str]): Reactive Signal linked to the text (auto-synced with textvariable).
|
|
67
70
|
command (Callable): Callable invoked when the value is selected.
|
|
68
71
|
image (PhotoImage): Image to display.
|
|
69
|
-
icon (str | dict):
|
|
72
|
+
icon (str | dict): Icon shown in the label area for all states. Color shifts
|
|
73
|
+
from foreground (unselected) to accent (selected) automatically.
|
|
74
|
+
on_icon (str | dict): Icon shown in the label area when the button is selected.
|
|
75
|
+
Shortcut for ``state=[("selected", name)]`` inside a full icon spec.
|
|
76
|
+
off_icon (str | dict): Icon shown in the label area when the button is unselected.
|
|
77
|
+
Used as the base icon when ``on_icon`` is also provided.
|
|
70
78
|
icon_only (bool): Removes the additional padding added for label.
|
|
79
|
+
show_indicator (bool): Whether to show the standard radio indicator. Defaults
|
|
80
|
+
to True. Set to False to hide the indicator (e.g. for icon-only radio groups).
|
|
71
81
|
compound (str): Placement of the image relative to text.
|
|
72
82
|
variable (Variable): Linked Tk variable that receives the selected value.
|
|
73
83
|
signal (Signal): Reactive Signal that receives the selected value (auto-synced with variable).
|
|
@@ -87,7 +97,7 @@ class RadioButton(LocalizationMixin, SignalMixin, TextSignalMixin, IconMixin, TT
|
|
|
87
97
|
style_options (dict): Optional dict forwarded to the style builder.
|
|
88
98
|
localize (bool | Literal['auto']): Determines the widget's localization mode.
|
|
89
99
|
"""
|
|
90
|
-
kwargs.update(style_options=self._capture_style_options(['icon_only', 'icon', 'anchor'], kwargs))
|
|
100
|
+
kwargs.update(style_options=self._capture_style_options(['icon_only', 'icon', 'on_icon', 'off_icon', 'show_indicator', 'anchor'], kwargs))
|
|
91
101
|
super().__init__(master, **kwargs)
|
|
92
102
|
|
|
93
103
|
def get(self) -> Any:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: bootstack
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.0a8
|
|
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
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
"""Checkbutton widget style builders.
|
|
2
|
-
|
|
3
|
-
This module contains style builders for ttk.Checkbutton widgets and variants.
|
|
4
|
-
"""
|
|
5
|
-
|
|
6
|
-
from __future__ import annotations
|
|
7
|
-
|
|
8
|
-
from bootstack.style.bootstyle_builder_ttk import BootstyleBuilderTTk
|
|
9
|
-
from bootstack.style.element import Element, ElementImage
|
|
10
|
-
from bootstack.style.utility import create_transparent_image, recolor_element_image
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
@BootstyleBuilderTTk.register_builder('default', 'TCheckbutton')
|
|
14
|
-
def build_checkbutton_style(b: BootstyleBuilderTTk, ttk_style: str, accent: str = 'primary', **options):
|
|
15
|
-
accent_token = accent or 'primary'
|
|
16
|
-
surface_token = options.get('surface', 'content')
|
|
17
|
-
|
|
18
|
-
background = b.color(surface_token)
|
|
19
|
-
background_hover = b.active(background)
|
|
20
|
-
foreground = b.on_color(background)
|
|
21
|
-
foreground_disabled = b.disabled('text', background)
|
|
22
|
-
|
|
23
|
-
normal = b.color(accent_token)
|
|
24
|
-
pressed = b.pressed(normal)
|
|
25
|
-
hovered = b.active(normal)
|
|
26
|
-
border = b.border(background)
|
|
27
|
-
focus = hovered
|
|
28
|
-
focus_ring = b.focus_ring(normal, background)
|
|
29
|
-
disabled = b.disabled()
|
|
30
|
-
|
|
31
|
-
normal_checked_img = recolor_element_image('checkbox_checked', background, normal, background)
|
|
32
|
-
normal_unchecked_img = recolor_element_image('checkbox_unchecked', background, border, background)
|
|
33
|
-
normal_indeterminate_img = recolor_element_image('checkbox_indeterminate', background, normal, background)
|
|
34
|
-
|
|
35
|
-
hovered_checked_img = recolor_element_image('checkbox_checked', background, hovered, background)
|
|
36
|
-
hovered_unchecked_img = recolor_element_image('checkbox_unchecked', background_hover, border, background)
|
|
37
|
-
hovered_indeterminate_img = recolor_element_image('checkbox_indeterminate', background, hovered, background)
|
|
38
|
-
|
|
39
|
-
pressed_checked_img = recolor_element_image('checkbox_checked', background, pressed, background)
|
|
40
|
-
pressed_unchecked_img = recolor_element_image('checkbox_unchecked', background_hover, pressed, background)
|
|
41
|
-
pressed_indeterminate_img = recolor_element_image('checkbox_indeterminate', background, pressed, background)
|
|
42
|
-
|
|
43
|
-
focus_checked_img = recolor_element_image('checkbox_checked', background, focus, focus_ring)
|
|
44
|
-
focus_unchecked_img = recolor_element_image('checkbox_unchecked', background_hover, focus, focus_ring)
|
|
45
|
-
focus_indeterminate_img = recolor_element_image('checkbox_indeterminate', background, focus, focus_ring)
|
|
46
|
-
|
|
47
|
-
disabled_checked_img = recolor_element_image('checkbox_checked', disabled, foreground_disabled, background)
|
|
48
|
-
disabled_unchecked_img = recolor_element_image(
|
|
49
|
-
'checkbox_unchecked', foreground_disabled, foreground_disabled, background)
|
|
50
|
-
disabled_indeterminate_img = recolor_element_image('checkbox_indeterminate', disabled, foreground_disabled, background)
|
|
51
|
-
|
|
52
|
-
spacer_img = create_transparent_image(6, 1)
|
|
53
|
-
b.create_style_element_image(ElementImage(f'{ttk_style}.spacer', spacer_img, sticky="ew"))
|
|
54
|
-
|
|
55
|
-
b.create_style_element_image(
|
|
56
|
-
ElementImage(f'{ttk_style}.indicator', normal_unchecked_img.image, sticky="ns").state_specs(
|
|
57
|
-
[
|
|
58
|
-
# Disabled states
|
|
59
|
-
('disabled alternate !selected', disabled_indeterminate_img.image),
|
|
60
|
-
('disabled selected', disabled_checked_img.image),
|
|
61
|
-
('disabled !selected !alternate', disabled_unchecked_img.image),
|
|
62
|
-
|
|
63
|
-
# Focused states
|
|
64
|
-
('focus alternate !selected', focus_indeterminate_img.image),
|
|
65
|
-
('focus selected', focus_checked_img.image),
|
|
66
|
-
('focus !selected !alternate', focus_unchecked_img.image),
|
|
67
|
-
|
|
68
|
-
# Pressed states
|
|
69
|
-
('pressed alternate !selected', pressed_indeterminate_img.image),
|
|
70
|
-
('pressed selected', pressed_checked_img.image),
|
|
71
|
-
('pressed !selected !alternate', pressed_unchecked_img.image),
|
|
72
|
-
|
|
73
|
-
# Hover states
|
|
74
|
-
('hover alternate !selected', hovered_indeterminate_img.image),
|
|
75
|
-
('hover selected', hovered_checked_img.image),
|
|
76
|
-
('hover !selected !alternate', hovered_unchecked_img.image),
|
|
77
|
-
|
|
78
|
-
# Normal base states
|
|
79
|
-
('alternate !selected', normal_indeterminate_img.image),
|
|
80
|
-
('selected', normal_checked_img.image),
|
|
81
|
-
('!selected !alternate', normal_unchecked_img.image),
|
|
82
|
-
]
|
|
83
|
-
))
|
|
84
|
-
|
|
85
|
-
b.create_style_layout(
|
|
86
|
-
ttk_style, Element('Checkbutton.padding', sticky="nsew").children(
|
|
87
|
-
[
|
|
88
|
-
Element(f'{ttk_style}.indicator', side="left", sticky=""),
|
|
89
|
-
Element(f'{ttk_style}.spacer', side="left"),
|
|
90
|
-
Element('Checkbutton.label', side="left", sticky="nsew")
|
|
91
|
-
])
|
|
92
|
-
)
|
|
93
|
-
|
|
94
|
-
b.configure_style(ttk_style, background=background, foreground=foreground, font="body")
|
|
95
|
-
b.map_style(ttk_style, background=[], foreground=[('disabled', foreground_disabled), ('', foreground)])
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
"""Radio Button widget style builders.
|
|
2
|
-
|
|
3
|
-
This module contains style builders for ttk.Radiobutton widgets and variants.
|
|
4
|
-
"""
|
|
5
|
-
|
|
6
|
-
from __future__ import annotations
|
|
7
|
-
|
|
8
|
-
from bootstack.style.bootstyle_builder_ttk import BootstyleBuilderTTk
|
|
9
|
-
from bootstack.style.element import Element, ElementImage
|
|
10
|
-
from bootstack.style.utility import create_transparent_image, recolor_element_image
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
@BootstyleBuilderTTk.register_builder('default', 'TRadiobutton')
|
|
14
|
-
def build_radiobutton_style(b: BootstyleBuilderTTk, ttk_style: str, accent: str = 'primary', **options):
|
|
15
|
-
accent_token = accent or 'primary'
|
|
16
|
-
surface_token = options.get('surface', 'content')
|
|
17
|
-
|
|
18
|
-
background = b.color(surface_token)
|
|
19
|
-
background_hover = b.active(background)
|
|
20
|
-
foreground = b.on_color(background)
|
|
21
|
-
foreground_disabled = b.disabled('text', background)
|
|
22
|
-
|
|
23
|
-
normal = b.color(accent_token)
|
|
24
|
-
hovered = b.active(normal)
|
|
25
|
-
border = b.border(background)
|
|
26
|
-
focus = hovered
|
|
27
|
-
focus_ring = b.focus_ring(normal, background)
|
|
28
|
-
|
|
29
|
-
normal_checked_img = recolor_element_image('radio_selected', background, normal, background)
|
|
30
|
-
normal_unchecked_img = recolor_element_image('radio_unselected', background, border, background)
|
|
31
|
-
|
|
32
|
-
focus_checked_img = recolor_element_image('radio_selected', background, focus, focus_ring)
|
|
33
|
-
focus_unchecked_img = recolor_element_image('radio_unselected', background_hover, focus, focus_ring)
|
|
34
|
-
|
|
35
|
-
disabled_checked_img = recolor_element_image('radio_selected', background, foreground_disabled, background)
|
|
36
|
-
disabled_unchecked_img = recolor_element_image('radio_unselected', background, foreground_disabled, background)
|
|
37
|
-
|
|
38
|
-
spacer_img = create_transparent_image(6, 1)
|
|
39
|
-
b.create_style_element_image(ElementImage(f'{ttk_style}.spacer', spacer_img, sticky="ew"))
|
|
40
|
-
|
|
41
|
-
b.create_style_element_image(
|
|
42
|
-
ElementImage(f'{ttk_style}.indicator', normal_unchecked_img.image, sticky="ns", padding=b.scale(4)).state_specs(
|
|
43
|
-
[
|
|
44
|
-
# Disabled states
|
|
45
|
-
('disabled selected', disabled_checked_img.image),
|
|
46
|
-
('disabled !selected !alternate', disabled_unchecked_img.image),
|
|
47
|
-
|
|
48
|
-
# Focused states
|
|
49
|
-
('focus selected', focus_checked_img.image),
|
|
50
|
-
('focus !selected !alternate', focus_unchecked_img.image),
|
|
51
|
-
|
|
52
|
-
# Normal base states
|
|
53
|
-
('selected', normal_checked_img.image),
|
|
54
|
-
('!selected !alternate', normal_unchecked_img.image),
|
|
55
|
-
]
|
|
56
|
-
))
|
|
57
|
-
|
|
58
|
-
b.create_style_layout(
|
|
59
|
-
ttk_style, Element('Radiobutton.padding', sticky="nsew").children(
|
|
60
|
-
[
|
|
61
|
-
Element(f'{ttk_style}.indicator', side="left", sticky=""),
|
|
62
|
-
Element(f'{ttk_style}.spacer', side="left"),
|
|
63
|
-
Element('Radiobutton.label', side="left", sticky="nsew")
|
|
64
|
-
])
|
|
65
|
-
)
|
|
66
|
-
|
|
67
|
-
b.configure_style(ttk_style, background=background, foreground=foreground, font="body")
|
|
68
|
-
b.map_style(ttk_style, background=[], foreground=[('disabled', foreground_disabled), ('', foreground)])
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|