# Welcome to qtstrap's documentation

qtstrap is a framework that helps you skip over the boring and tedious parts of developing applications with PySide2/PyQt. 

# Features

- `qtstrap` command line tool to bootstrap new projects
- crossplatform makefile with useful development commands
- preconfigured pyinstaller spec file
- preconfigured InnoSetup setup compiler script
- Pythonic layout system using ContextLayouts
- light/dark theme with application-level theme switching
- Some other stuff I haven't remembered yet

# Custom Widgets

- LabelEdit
- HLine and VLine
- LinkLabel
 
## Buttons:
  - StateButton
  - IconToggleButton
  - ConfirmToggleButton
  - MenuButton

## Persistent Widgets (for rapid prototyping of saved data)
- PersistentCheckableAction
- PersistentCheckBox
- PersistentComboBox
- PersistentLineEdit
- PersistentListWidget
- PersistentPlainTextEdit
- PersistentTabWidget
- PersistentTextEdit
- PersistentTreeWidget

# Utility Classes and Functions
- Adapter
- TimeStamp
- StringBuilder
- call_later()

## decorators:
- @accepts_file_drops
- @trace
- @singleton

## context managers:
- Defer
- SignalBlocker

# qtstrap.extras:
  - CommandPalette, like VSCode or SublimeText
  - Logging Subsystem: log to local database + log viewer widgets
  - CodeEditor: Custom QTextEditor subclass customized for code editing

# Roadmap

- Write documentation for ContextLayouts
- Create a sane menu bar constructor
- Create an application auto-updater
- Create an application crash reporter
- Set up CI/CD
- Add 'Qt principles' section