mirror of
https://github.com/johndoe6345789/WizardMerge.git
synced 2026-04-24 21:54:57 +00:00
48 lines
1.7 KiB
Markdown
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.
|