Files
WizardMerge/README.md

48 lines
1.7 KiB
Markdown

# WizardMerge
PyQt6 + QML demo application that showcases a themed UI shell alongside simple
merge algorithm helpers. The project ships with a theming plugin system so you
can extend the UI palette without touching the core code.
## Features
- PyQt6 application bootstrapped from `wizardmerge.app`
- QML front-end that reads theme colors from the Python context
- Built-in light and dark themes plus an example warm plugin theme
- Simple merge algorithm utilities in `wizardmerge.algo`
- Helper scripts for environment setup and running the app
## Getting Started
1. Create a virtual environment and install dependencies:
```sh
./setup.sh
```
2. Launch the GUI (activates `.venv` automatically when present):
```sh
./run_app.sh
```
3. To install requirements into an existing environment instead of creating a
new one:
```sh
./install_all_python.sh
```
## Theming
Themes live under `wizardmerge/themes`. Built-ins follow the `<name>_theme.py`
pattern. Plugin themes can be placed in `wizardmerge/themes/plugins` or in any
folder passed to `ThemeManager(extra_plugin_paths=[Path("/path/to/themes")])`.
Each theme module must expose a `Theme` instance named `theme` (or the
`warm_theme` example) with a palette mapping of color keys used by the QML UI.
## QML
The UI entry point is `wizardmerge/qml/main.qml`. It binds to a `theme` context
property injected from Python so you can use colors consistently across QML
components. Maintain two-space indentation when updating QML files.
## Algorithms
`wizardmerge/algo/merge.py` offers a deterministic `merge_pairs` function for
interleaving two sequences of lines and reporting their origins. The GUI can be
extended to call these helpers when you add inputs to the placeholder area in
the QML layout.