bootstack 0.1.3__tar.gz → 0.1.5__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.3/src/bootstack.egg-info → bootstack-0.1.5}/PKG-INFO +7 -6
- {bootstack-0.1.3 → bootstack-0.1.5}/README.md +5 -4
- {bootstack-0.1.3 → bootstack-0.1.5}/pyproject.toml +3 -3
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/primitives/checkbutton.py +14 -2
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/boolean_controls.py +52 -25
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/select.py +27 -0
- {bootstack-0.1.3 → bootstack-0.1.5/src/bootstack.egg-info}/PKG-INFO +7 -6
- {bootstack-0.1.3 → bootstack-0.1.5}/LICENSE +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/MANIFEST.in +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/NOTICE +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/setup.cfg +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/__init__.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/__main__.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/_core/__init__.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/_core/capabilities/__init__.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/_core/capabilities/after.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/_core/capabilities/bind.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/_core/capabilities/bindtags.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/_core/capabilities/busy.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/_core/capabilities/clipboard.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/_core/capabilities/focus.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/_core/capabilities/grab.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/_core/capabilities/grid.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/_core/capabilities/localization.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/_core/capabilities/pack.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/_core/capabilities/place.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/_core/capabilities/selection.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/_core/capabilities/signals.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/_core/capabilities/winfo.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/_core/colorutils.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/_core/exceptions.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/_core/images.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/_core/mixins/__init__.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/_core/mixins/ttk_state.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/_core/mixins/widget.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/_core/paths.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/_core/publisher.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/_core/variables.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/_runtime/__init__.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/_runtime/app.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/_runtime/base_window.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/_runtime/events.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/_runtime/shortcuts.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/_runtime/tk_patch.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/_runtime/toplevel.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/_runtime/utility.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/_runtime/visual_focus.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/_runtime/window_utilities.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/__init__.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/bootstack.ico +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/bootstack.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/__init__.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/badge-pill.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/badge-square.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/button-compact.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/button-default.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/buttongroup-after-h-compact.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/buttongroup-after-h-default.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/buttongroup-after-v-compact.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/buttongroup-after-v-default.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/buttongroup-before-h-compact.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/buttongroup-before-h-default.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/buttongroup-before-v-compact.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/buttongroup-before-v-default.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/buttongroup-center-h-compact.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/buttongroup-center-h-default.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/buttongroup-center-v-compact.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/buttongroup-center-v-default.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/card.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/checkbox-checked.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/checkbox-indeterminate.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/checkbox-unchecked.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/field.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/input-addon-compact.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/input-addon-default.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/input-compact.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/input-default.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/list-item-separated.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/list-item.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/listrow-compact.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/listrow-default.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/manifest.toml +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/menu-item.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/navitem-compact.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/navitem-default.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/progressbar-h-compact.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/progressbar-h-default.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/progressbar-v-compact.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/progressbar-v-default.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/radiobutton.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/scrollbar-horizontal.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/scrollbar-vertical.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/slider-handle.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/slider-track-h.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/slider-track-v.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/switch-off.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/switch-on.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/tab-h.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/tab-v.png +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/icons/bootstrap.ttf +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/icons/glyphmap.json +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/icons/icon_metrics.json +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/ar/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/ar/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/bg/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/bg/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/cs/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/cs/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/da/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/da/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/de/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/de/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/en/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/en/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/es/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/es/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/fr/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/fr/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/he/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/he/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/hi/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/hi/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/it/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/it/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/ja/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/ja/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/ko/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/ko/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/nb/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/nb/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/nl/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/nl/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/pl/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/pl/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/pt/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/pt/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/pt_BR/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/pt_BR/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/sl/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/sl/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/sv/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/sv/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/tr/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/tr/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/zh_CN/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/zh_CN/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/zh_TW/LC_MESSAGES/bootstack.mo +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/zh_TW/LC_MESSAGES/bootstack.po +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/cli/__init__.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/cli/__main__.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/cli/add.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/cli/appicon.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/cli/build.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/cli/config.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/cli/demo.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/cli/dev.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/cli/doctor.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/cli/icons.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/cli/promote.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/cli/pyinstaller.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/cli/run.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/cli/start.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/cli/templates/__init__.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/clipboard.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/constants.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/data/README.md +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/data/__init__.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/data/_observable.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/data/base.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/data/file_source.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/data/memory_source.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/data/query.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/data/readers.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/data/sqlite_source.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/data/types.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/data/writers.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/dev/__init__.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/dev/_capture.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/dev/_env.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/dev/_registry.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/dev/_reloader.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/dev/_reset.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/dev/_watcher.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/dialogs/__init__.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/dialogs/_impl/__init__.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/dialogs/_impl/colorchooser.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/dialogs/_impl/datedialog.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/dialogs/_impl/dialog.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/dialogs/_impl/filterdialog.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/dialogs/_impl/fontdialog.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/dialogs/_impl/formdialog.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/dialogs/_impl/message.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/dialogs/_impl/query.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/errors.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/events/__init__.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/events/_event.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/events/_payloads.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/events/_subscription.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/i18n/README.md +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/i18n/__init__.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/i18n/catalog.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/i18n/intl_format.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/i18n/msgcat.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/i18n/specs.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/images.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/py.typed +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/scheduling/__init__.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/scheduling/_schedule.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/shortcuts.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/signals/README.md +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/signals/__init__.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/signals/integration.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/signals/signal.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/signals/types.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/store.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/streams/__init__.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/streams/_stream.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/__init__.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/builders/__init__.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/builders/badge.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/builders/button.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/builders/buttongroup.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/builders/calendar.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/builders/checkbutton.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/builders/combobox.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/builders/contextmenu.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/builders/entry.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/builders/expander.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/builders/field.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/builders/frame.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/builders/label.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/builders/labelframe.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/builders/listview.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/builders/menubar.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/builders/menubutton.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/builders/panedwindow.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/builders/progressbar.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/builders/radiobutton.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/builders/scale.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/builders/scrollbar.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/builders/separator.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/builders/sidenav.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/builders/sizegrip.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/builders/spinbox.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/builders/switch.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/builders/tabitem.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/builders/togglegroup.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/builders/toolbutton.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/builders/tooltip.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/builders/treeview.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/builders/utils.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/builders_tk/__init__.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/builders_tk/defaults.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/element.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/fonts.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/style.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/style_builder_base.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/style_builder_mixed.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/style_builder_tk.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/style_builder_ttk.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/style_resolver.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/theme.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/theme_provider.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/themes/__init__.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/tk_patch.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/token_maps.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/types.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/typography.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/style/utility.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/types.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/validation/__init__.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/validation/types.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/validation/validation_result.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/validation/validation_rules.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/__init__.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_core/__init__.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_core/app_config.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_core/base.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_core/container.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_core/context.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_core/events.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_core/field_mixin.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_core/icon_image_props.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_core/image_binding.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_core/navmodel.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_core/options.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_core/selection_group.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_core/window_controls.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_core/window_menu.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/__init__.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/_internal/__init__.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/_internal/wrapper_base.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/_parts/__init__.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/_parts/numberentry_part.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/_parts/spinnerentry_part.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/_parts/textentry_part.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/__init__.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/_dateutils.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/_image_fit.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/accordion.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/avatar.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/buttongroup.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/calendar.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/carousel.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/chart.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/compositeframe.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/contextmenu.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/dateentry.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/dropdownbutton.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/expander.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/field.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/form.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/gallery.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/list/__init__.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/list/listitem.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/list/listview.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/menu/__init__.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/menu/model.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/menu/render_native.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/menu/render_themed.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/meter.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/numericentry.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/pagestack.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/passwordentry.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/pathentry.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/picture.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/radiogroup.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/scrolledtext.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/scrolledtext.pyi +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/scrollview.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/selectbox.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/shell/__init__.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/shell/content_host.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/shell/layout.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/shell/nav_panel.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/shell/providers.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/shell/rail.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/shell/shell.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/shell/workspace.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/sidenav/__init__.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/sidenav/header.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/sidenav/separator.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/slider/__init__.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/slider/_shared.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/slider/rangeslider.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/slider/slider.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/spinnerentry.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/tableview/__init__.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/tableview/tableview.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/tableview/types.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/tabs/__init__.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/tabs/tabitem.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/tabs/tabs.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/tabs/tabview.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/textarea/__init__.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/textarea/change.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/textarea/codeeditor.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/textarea/core.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/textarea/decoration.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/textarea/diff.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/textarea/extensions/__init__.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/textarea/extensions/bracket_matcher.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/textarea/extensions/indent_guides.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/textarea/extensions/line_numbers.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/textarea/extensions/pygments_highlighter.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/textarea/extensions/smart_indent.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/textarea/filter.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/textarea/search_overlay.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/textarea/sidebar.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/textarea/style_registry.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/textarea/textarea.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/textarea/undo.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/textentry.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/timeentry.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/toast.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/toast_stack.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/togglegroup.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/toolbar.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/tooltip.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/tree/__init__.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/tree/source_binding.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/tree/treeitem.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/tree/treenode.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/composites/tree/treeview.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/mixins/__init__.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/mixins/configure_mixin.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/mixins/entry_mixin.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/mixins/font_mixin.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/mixins/icon_mixin.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/mixins/localization_mixin.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/mixins/signal_mixin.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/mixins/validation_mixin.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/primitives/__init__.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/primitives/_menubutton.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/primitives/badge.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/primitives/button.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/primitives/card.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/primitives/checktoggle.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/primitives/combobox.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/primitives/entry.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/primitives/flexframe.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/primitives/frame.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/primitives/gridframe.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/primitives/label.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/primitives/labelframe.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/primitives/optionmenu.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/primitives/packframe.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/primitives/panedwindow.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/primitives/progressbar.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/primitives/radiobutton.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/primitives/radiotoggle.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/primitives/scrollbar.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/primitives/separator.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/primitives/sizegrip.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/primitives/spinbox.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/primitives/switch.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/_impl/primitives/treeview.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/app.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/appshell.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/avatar.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/button.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/buttongroup.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/calendar.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/card.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/carousel.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/chart.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/codeeditor.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/contextmenu.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/datatable.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/datefield.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/divider.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/expander.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/form.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/gallery.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/gauge.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/grid.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/groupbox.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/label.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/listview.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/menubutton.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/numberfield.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/pagestack.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/passwordfield.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/pathfield.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/picture.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/progressbar.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/radio_variants.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/radiogroup.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/scrollbar.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/scrollview.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/selectbutton.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/sidebar_toggle.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/sizegrip.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/slider.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/spinbox.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/spinnerfield.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/splash.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/splitview.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/stacks.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/statusbar.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/tabs.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/textarea.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/textfield.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/theme_toggle.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/timefield.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/toast.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/togglegroup.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/toolbar.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/tooltip.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/tree.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/types.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/widgets/window.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack.egg-info/SOURCES.txt +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack.egg-info/dependency_links.txt +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack.egg-info/entry_points.txt +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack.egg-info/requires.txt +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack.egg-info/top_level.txt +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/tests/test_dialog_anchor.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/tests/test_events_doc_coverage.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/tests/test_hot_reload.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/tests/test_images.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/tests/test_images_gui.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/tests/test_intl_format.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/tests/test_navmodel.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/tests/test_on_color_contrast.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/tests/test_public_surface.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/tests/test_store.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/tests/test_theme_from_existing.py +0 -0
- {bootstack-0.1.3 → bootstack-0.1.5}/tests/test_validation_rules.py +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: bootstack
|
|
3
|
-
Version: 0.1.
|
|
4
|
-
Summary:
|
|
3
|
+
Version: 0.1.5
|
|
4
|
+
Summary: Build desktop GUI apps in pure Python and ship them as a standalone executable — built on Tk, no Tkinter boilerplate.
|
|
5
5
|
Author-email: Israel Dryer <israel.dryer@gmail.com>
|
|
6
6
|
License-Expression: MIT
|
|
7
7
|
Project-URL: Homepage, https://github.com/israel-dryer/bootstack
|
|
@@ -64,11 +64,12 @@ Dynamic: license-file
|
|
|
64
64
|
|
|
65
65
|
> Full documentation is at **[bootstack.org](https://bootstack.org)**.
|
|
66
66
|
|
|
67
|
-
###
|
|
67
|
+
### Desktop apps in pure Python — Tk underneath, none of the boilerplate.
|
|
68
68
|
|
|
69
|
-
bootstack
|
|
70
|
-
|
|
71
|
-
|
|
69
|
+
bootstack is built on Tk, so the install is light, there's no Qt license, and
|
|
70
|
+
your app ships as a small standalone executable. But you'll never write a
|
|
71
|
+
`StringVar` or call `.pack()` — the API is its own. 60+ widgets, reactive state,
|
|
72
|
+
and a CLI that scaffolds and packages the whole thing.
|
|
72
73
|
|
|
73
74
|
<p align="center">
|
|
74
75
|
<picture>
|
|
@@ -11,11 +11,12 @@
|
|
|
11
11
|
|
|
12
12
|
> Full documentation is at **[bootstack.org](https://bootstack.org)**.
|
|
13
13
|
|
|
14
|
-
###
|
|
14
|
+
### Desktop apps in pure Python — Tk underneath, none of the boilerplate.
|
|
15
15
|
|
|
16
|
-
bootstack
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
bootstack is built on Tk, so the install is light, there's no Qt license, and
|
|
17
|
+
your app ships as a small standalone executable. But you'll never write a
|
|
18
|
+
`StringVar` or call `.pack()` — the API is its own. 60+ widgets, reactive state,
|
|
19
|
+
and a CLI that scaffolds and packages the whole thing.
|
|
19
20
|
|
|
20
21
|
<p align="center">
|
|
21
22
|
<picture>
|
|
@@ -4,8 +4,8 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "bootstack"
|
|
7
|
-
version = "0.1.
|
|
8
|
-
description = "
|
|
7
|
+
version = "0.1.5"
|
|
8
|
+
description = "Build desktop GUI apps in pure Python and ship them as a standalone executable — built on Tk, no Tkinter boilerplate."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.12"
|
|
11
11
|
license = "MIT"
|
|
@@ -114,7 +114,7 @@ where = ["src"]
|
|
|
114
114
|
]
|
|
115
115
|
|
|
116
116
|
[tool.bumpversion]
|
|
117
|
-
current_version = "0.1.
|
|
117
|
+
current_version = "0.1.5"
|
|
118
118
|
parse = "(?P<major>\\d+)\\.(?P<minor>\\d+)\\.(?P<patch>\\d+)((?P<pre>a|b|rc)(?P<pre_n>\\d+))?"
|
|
119
119
|
serialize = [
|
|
120
120
|
"{major}.{minor}.{patch}{pre}{pre_n}",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from tkinter import ttk
|
|
3
|
+
from tkinter import StringVar, ttk
|
|
4
4
|
from typing import Any, Callable, Literal, TYPE_CHECKING
|
|
5
5
|
|
|
6
6
|
from typing_extensions import Unpack
|
|
@@ -94,9 +94,21 @@ class CheckButton(LocalizationMixin, SignalMixin, TextSignalMixin, IconMixin, TT
|
|
|
94
94
|
signal_provided = 'signal' in kwargs
|
|
95
95
|
variable_provided = 'variable' in kwargs
|
|
96
96
|
initial_value = kwargs.pop('value', None)
|
|
97
|
+
# Only non-bool on/off values need a StringVar. A BooleanVar (the type
|
|
98
|
+
# inferred from the ttk class) coerces the value to True/False, which
|
|
99
|
+
# loses a string or other custom `onvalue`/`offvalue`; a StringVar holds
|
|
100
|
+
# it verbatim (mirrors RadioGroup / ToggleGroup, which track with a
|
|
101
|
+
# StringVar). For the default bool control we keep the BooleanVar so its
|
|
102
|
+
# reactive `signal` stays boolean — the common case is unchanged.
|
|
103
|
+
custom_values = any(
|
|
104
|
+
not isinstance(kwargs.get(k, True), bool) for k in ('onvalue', 'offvalue')
|
|
105
|
+
)
|
|
106
|
+
injected_variable = not signal_provided and not variable_provided and custom_values
|
|
107
|
+
if injected_variable:
|
|
108
|
+
kwargs['variable'] = StringVar(master=master)
|
|
97
109
|
kwargs.update(style_options=self._capture_style_options(['icon_only', 'icon', 'on_icon', 'off_icon', 'show_indicator', 'anchor'], kwargs))
|
|
98
110
|
super().__init__(master, **kwargs)
|
|
99
|
-
if initial_value is not None and not signal_provided and
|
|
111
|
+
if initial_value is not None and not signal_provided and injected_variable:
|
|
100
112
|
self.variable.set(initial_value)
|
|
101
113
|
|
|
102
114
|
def get(self) -> Any:
|
|
@@ -81,29 +81,14 @@ class _BooleanControlBase(PublicWidgetBase):
|
|
|
81
81
|
|
|
82
82
|
self._internal = self._internal_class(tk_master, **internal_kwargs)
|
|
83
83
|
|
|
84
|
-
# Seed initial value when no signal was passed.
|
|
85
|
-
# tristate=False: default to unchecked_value so the box never shows the
|
|
86
|
-
# indeterminate dash unexpectedly. tristate=True: leave unseeded so the
|
|
87
|
-
# initial state is None (indeterminate) unless value= was explicitly given.
|
|
88
|
-
if signal is None:
|
|
89
|
-
if value is not None:
|
|
90
|
-
self._internal.set(value)
|
|
91
|
-
elif not _tristate:
|
|
92
|
-
self._internal.set(unchecked_value)
|
|
93
|
-
|
|
94
|
-
# Track the previous value so on_change can report it. The control may be
|
|
95
|
-
# tristate (checked / unchecked / indeterminate), so prev cannot be derived
|
|
96
|
-
# from the new value alone — and the command fires after Tk updates the var.
|
|
97
|
-
self._prev_value = self._internal.get()
|
|
98
|
-
|
|
99
84
|
# Wire command → virtual events so on_change() / on_check() subscriptions work.
|
|
100
85
|
def _command():
|
|
101
|
-
v = self.
|
|
86
|
+
v = self.value
|
|
102
87
|
prev, self._prev_value = self._prev_value, v
|
|
103
88
|
self._internal.event_generate(
|
|
104
89
|
"<<Change>>", data=ChangeEvent(value=v, prev_value=prev)
|
|
105
90
|
)
|
|
106
|
-
if
|
|
91
|
+
if self._internal.instate(("selected",)):
|
|
107
92
|
self._internal.event_generate("<<ToggleOn>>")
|
|
108
93
|
else:
|
|
109
94
|
self._internal.event_generate("<<ToggleOff>>")
|
|
@@ -111,8 +96,51 @@ class _BooleanControlBase(PublicWidgetBase):
|
|
|
111
96
|
_ctor_callback()
|
|
112
97
|
|
|
113
98
|
self._internal.configure(command=_command)
|
|
99
|
+
|
|
100
|
+
# Seed the initial state when no signal was passed. tristate + no value
|
|
101
|
+
# starts indeterminate (the documented behavior); otherwise start from
|
|
102
|
+
# the given value, defaulting to unchecked. This must run AFTER
|
|
103
|
+
# configure(command=...), which resets the ttk state (clearing an
|
|
104
|
+
# indeterminate `alternate` flag set earlier).
|
|
105
|
+
if signal is None:
|
|
106
|
+
if value is not None:
|
|
107
|
+
self._apply_value(value)
|
|
108
|
+
elif _tristate:
|
|
109
|
+
self._apply_value(None)
|
|
110
|
+
else:
|
|
111
|
+
self._apply_value(unchecked_value)
|
|
112
|
+
|
|
113
|
+
# Track the previous value so on_change can report it. The control may be
|
|
114
|
+
# tristate (checked / unchecked / indeterminate), so prev cannot be derived
|
|
115
|
+
# from the new value alone — and the command fires after Tk updates state.
|
|
116
|
+
self._prev_value = self.value
|
|
117
|
+
|
|
114
118
|
self._attach_to_parent(layout_kw)
|
|
115
119
|
|
|
120
|
+
def _apply_value(self, v: Any) -> None:
|
|
121
|
+
"""Drive the internal control to represent `v`.
|
|
122
|
+
|
|
123
|
+
Maps the public value onto the ttk widget's on/off values and the
|
|
124
|
+
indeterminate (`alternate`) state. A variable write clears `alternate`,
|
|
125
|
+
so indeterminate is set by writing the off value first and then flagging
|
|
126
|
+
the state.
|
|
127
|
+
"""
|
|
128
|
+
on = self._internal.cget("onvalue")
|
|
129
|
+
off = self._internal.cget("offvalue")
|
|
130
|
+
if v is None and self._tristate:
|
|
131
|
+
# Writing the var clears `alternate`, so set the off value first and
|
|
132
|
+
# then flag the indeterminate state.
|
|
133
|
+
self._internal.set(off)
|
|
134
|
+
self._internal.state(("alternate",))
|
|
135
|
+
elif v == self._checked_value:
|
|
136
|
+
self._internal.set(on)
|
|
137
|
+
elif v == self._unchecked_value or v is None:
|
|
138
|
+
self._internal.set(off)
|
|
139
|
+
else:
|
|
140
|
+
# A value that matches neither on nor off — pass it through so the
|
|
141
|
+
# widget reflects it (best effort for custom values).
|
|
142
|
+
self._internal.set(v)
|
|
143
|
+
|
|
116
144
|
# ----- Properties -----
|
|
117
145
|
|
|
118
146
|
@property
|
|
@@ -123,25 +151,24 @@ class _BooleanControlBase(PublicWidgetBase):
|
|
|
123
151
|
unchecked, or `None` when in the indeterminate state (only possible
|
|
124
152
|
when `tristate=True`).
|
|
125
153
|
"""
|
|
126
|
-
|
|
127
|
-
|
|
154
|
+
if self._tristate and self._internal.instate(("alternate",)):
|
|
155
|
+
return None
|
|
156
|
+
if self._internal.instate(("selected",)):
|
|
128
157
|
return self._checked_value
|
|
129
|
-
|
|
130
|
-
return self._unchecked_value
|
|
131
|
-
return None
|
|
158
|
+
return self._unchecked_value
|
|
132
159
|
|
|
133
160
|
@value.setter
|
|
134
161
|
def value(self, v: Any) -> None:
|
|
135
|
-
self.
|
|
162
|
+
self._apply_value(v)
|
|
136
163
|
|
|
137
164
|
@property
|
|
138
165
|
def checked(self) -> bool:
|
|
139
166
|
"""Whether the control is in the checked/on state."""
|
|
140
|
-
return self._internal.
|
|
167
|
+
return bool(self._internal.instate(("selected",)))
|
|
141
168
|
|
|
142
169
|
@checked.setter
|
|
143
170
|
def checked(self, v: bool) -> None:
|
|
144
|
-
self.
|
|
171
|
+
self._apply_value(self._checked_value if v else self._unchecked_value)
|
|
145
172
|
|
|
146
173
|
@property
|
|
147
174
|
def signal(self) -> "Signal | None":
|
|
@@ -9,6 +9,7 @@ from bootstack.widgets._core.events import resolve_event, register_widget_events
|
|
|
9
9
|
from bootstack.widgets._core.options import record_to_dict
|
|
10
10
|
from bootstack.events import ChangeEvent, Subscription
|
|
11
11
|
from bootstack.streams import Stream
|
|
12
|
+
from bootstack.validation import RuleType
|
|
12
13
|
from bootstack.widgets.textfield import _INNER_ENTRY_SEQUENCES
|
|
13
14
|
from bootstack.widgets.types import AccentToken, Event, Option, OptionDict, WidgetDensity
|
|
14
15
|
|
|
@@ -140,6 +141,32 @@ class Select(PublicWidgetBase):
|
|
|
140
141
|
self._internal = _InternalSelectBox(tk_master, **internal_kwargs)
|
|
141
142
|
self._attach_to_parent(layout_kw)
|
|
142
143
|
|
|
144
|
+
# ----- Validation -----
|
|
145
|
+
|
|
146
|
+
def add_validation_rule(self, rule_type: RuleType, **kwargs: Any) -> None:
|
|
147
|
+
"""Add a validation rule to the field.
|
|
148
|
+
|
|
149
|
+
Rules run automatically on blur or key events depending on the rule
|
|
150
|
+
type, or manually via `validate()`. Multiple rules can be added;
|
|
151
|
+
they are evaluated in order and stop at the first failure.
|
|
152
|
+
|
|
153
|
+
Args:
|
|
154
|
+
rule_type: The kind of validation rule to apply — `'required'`,
|
|
155
|
+
`'stringLength'`, `'pattern'`, `'email'`, `'compare'`, or
|
|
156
|
+
`'custom'`.
|
|
157
|
+
**kwargs: Rule-specific options:
|
|
158
|
+
|
|
159
|
+
- `message` *(all rules)* — override the default error message.
|
|
160
|
+
- `trigger` *(all rules)* — when to run: `'always'` (key and
|
|
161
|
+
blur), `'key'`, `'blur'`, or `'manual'`. Each rule type has
|
|
162
|
+
its own sensible default.
|
|
163
|
+
- `min`, `max` *(stringLength)* — minimum/maximum character count.
|
|
164
|
+
- `pattern` *(pattern)* — regex string the value must match.
|
|
165
|
+
- `other_field` *(compare)* — field whose value must match.
|
|
166
|
+
- `func` *(custom)* — callable `(value) -> bool`.
|
|
167
|
+
"""
|
|
168
|
+
self._internal.add_validation_rule(rule_type, **kwargs)
|
|
169
|
+
|
|
143
170
|
# ----- Event routing -----
|
|
144
171
|
|
|
145
172
|
def _entry_widget(self) -> tkinter.Misc:
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: bootstack
|
|
3
|
-
Version: 0.1.
|
|
4
|
-
Summary:
|
|
3
|
+
Version: 0.1.5
|
|
4
|
+
Summary: Build desktop GUI apps in pure Python and ship them as a standalone executable — built on Tk, no Tkinter boilerplate.
|
|
5
5
|
Author-email: Israel Dryer <israel.dryer@gmail.com>
|
|
6
6
|
License-Expression: MIT
|
|
7
7
|
Project-URL: Homepage, https://github.com/israel-dryer/bootstack
|
|
@@ -64,11 +64,12 @@ Dynamic: license-file
|
|
|
64
64
|
|
|
65
65
|
> Full documentation is at **[bootstack.org](https://bootstack.org)**.
|
|
66
66
|
|
|
67
|
-
###
|
|
67
|
+
### Desktop apps in pure Python — Tk underneath, none of the boilerplate.
|
|
68
68
|
|
|
69
|
-
bootstack
|
|
70
|
-
|
|
71
|
-
|
|
69
|
+
bootstack is built on Tk, so the install is light, there's no Qt license, and
|
|
70
|
+
your app ships as a small standalone executable. But you'll never write a
|
|
71
|
+
`StringVar` or call `.pack()` — the API is its own. 60+ widgets, reactive state,
|
|
72
|
+
and a CLI that scaffolds and packages the whole thing.
|
|
72
73
|
|
|
73
74
|
<p align="center">
|
|
74
75
|
<picture>
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/buttongroup-after-h-compact.png
RENAMED
|
File without changes
|
{bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/buttongroup-after-h-default.png
RENAMED
|
File without changes
|
{bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/buttongroup-after-v-compact.png
RENAMED
|
File without changes
|
{bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/buttongroup-after-v-default.png
RENAMED
|
File without changes
|
{bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/buttongroup-before-h-compact.png
RENAMED
|
File without changes
|
{bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/buttongroup-before-h-default.png
RENAMED
|
File without changes
|
{bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/buttongroup-before-v-compact.png
RENAMED
|
File without changes
|
{bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/buttongroup-before-v-default.png
RENAMED
|
File without changes
|
{bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/buttongroup-center-h-compact.png
RENAMED
|
File without changes
|
{bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/buttongroup-center-h-default.png
RENAMED
|
File without changes
|
{bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/buttongroup-center-v-compact.png
RENAMED
|
File without changes
|
{bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/buttongroup-center-v-default.png
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/elements/checkbox-indeterminate.png
RENAMED
|
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
|
|
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
|
{bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/ar/LC_MESSAGES/bootstack.mo
RENAMED
|
File without changes
|
{bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/ar/LC_MESSAGES/bootstack.po
RENAMED
|
File without changes
|
{bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/bg/LC_MESSAGES/bootstack.mo
RENAMED
|
File without changes
|
{bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/bg/LC_MESSAGES/bootstack.po
RENAMED
|
File without changes
|
{bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/cs/LC_MESSAGES/bootstack.mo
RENAMED
|
File without changes
|
{bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/cs/LC_MESSAGES/bootstack.po
RENAMED
|
File without changes
|
{bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/da/LC_MESSAGES/bootstack.mo
RENAMED
|
File without changes
|
{bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/da/LC_MESSAGES/bootstack.po
RENAMED
|
File without changes
|
{bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/de/LC_MESSAGES/bootstack.mo
RENAMED
|
File without changes
|
{bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/de/LC_MESSAGES/bootstack.po
RENAMED
|
File without changes
|
{bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/en/LC_MESSAGES/bootstack.mo
RENAMED
|
File without changes
|
{bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/en/LC_MESSAGES/bootstack.po
RENAMED
|
File without changes
|
{bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/es/LC_MESSAGES/bootstack.mo
RENAMED
|
File without changes
|
{bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/es/LC_MESSAGES/bootstack.po
RENAMED
|
File without changes
|
{bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/fr/LC_MESSAGES/bootstack.mo
RENAMED
|
File without changes
|
{bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/fr/LC_MESSAGES/bootstack.po
RENAMED
|
File without changes
|
{bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/he/LC_MESSAGES/bootstack.mo
RENAMED
|
File without changes
|
{bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/he/LC_MESSAGES/bootstack.po
RENAMED
|
File without changes
|
{bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/hi/LC_MESSAGES/bootstack.mo
RENAMED
|
File without changes
|
{bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/hi/LC_MESSAGES/bootstack.po
RENAMED
|
File without changes
|
{bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/it/LC_MESSAGES/bootstack.mo
RENAMED
|
File without changes
|
{bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/it/LC_MESSAGES/bootstack.po
RENAMED
|
File without changes
|
{bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/ja/LC_MESSAGES/bootstack.mo
RENAMED
|
File without changes
|
{bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/ja/LC_MESSAGES/bootstack.po
RENAMED
|
File without changes
|
{bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/ko/LC_MESSAGES/bootstack.mo
RENAMED
|
File without changes
|
{bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/ko/LC_MESSAGES/bootstack.po
RENAMED
|
File without changes
|
{bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/nb/LC_MESSAGES/bootstack.mo
RENAMED
|
File without changes
|
{bootstack-0.1.3 → bootstack-0.1.5}/src/bootstack/assets/locales/nb/LC_MESSAGES/bootstack.po
RENAMED
|
File without changes
|