Add GUI desktop application
- Add gui/ package: CustomTkinter app with dashboard, mods, tools, logs, and settings views; first-run SetupWizard for config.json generation - Add gui.py root entry point (calls gui.run_app()) - Add selection.json for GUI selection state persistence - Add customtkinter to requirements.txt - Fix link_mods.py minor issues surfaced during GUI integration - Add modlist_html/Test_Preset_A.html and Test_Preset_B.html as example inputs - Update README.md: add GUI prerequisites, gui.py script section, gui/ folder structure, customtkinter to prerequisites table - Update CLAUDE.md: add python gui.py to common commands, document GUI package architecture and views Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
41
README.md
41
README.md
@@ -21,6 +21,7 @@ Python toolchain for managing Arma 3 mod presets: parse launcher exports, compar
|
||||
- [update_mods.py](#update_modspy)
|
||||
- [check_names.py](#check_namespy)
|
||||
- [run.py](#runpy)
|
||||
- [gui.py](#guipy)
|
||||
6. [Migrating Existing Mods](#migrating-existing-mods)
|
||||
7. [Folder Structure](#folder-structure)
|
||||
8. [Moving to a New Device](#moving-to-a-new-device)
|
||||
@@ -35,6 +36,7 @@ Python toolchain for managing Arma 3 mod presets: parse launcher exports, compar
|
||||
| Python | >= 3.9 | `python --version` |
|
||||
| requests | any | `pip install requests` |
|
||||
| tqdm | any | `pip install tqdm` |
|
||||
| customtkinter | any | `pip install customtkinter` (GUI only) |
|
||||
| Windows or Linux | — | Windows uses junctions, Linux uses symlinks |
|
||||
|
||||
Run the dep checker to confirm everything is ready:
|
||||
@@ -472,6 +474,30 @@ Orchestrator that chains all four pipeline steps. Described in [Quick Start](#qu
|
||||
|
||||
---
|
||||
|
||||
### gui.py
|
||||
|
||||
Launch the graphical interface for the toolchain.
|
||||
|
||||
```bash
|
||||
python gui.py
|
||||
```
|
||||
|
||||
Opens a CustomTkinter desktop window with a sidebar navigation and the following views:
|
||||
|
||||
| View | Purpose |
|
||||
|------|---------|
|
||||
| Dashboard | Overview: status, quick stats, recent activity |
|
||||
| Mods | Browse and manage downloaded mods by group |
|
||||
| Tools | Link/unlink, rename, sync missing, check server |
|
||||
| Logs | Real-time log output from pipeline operations |
|
||||
| Settings | Edit `config.json` (server URL, paths, credentials) |
|
||||
|
||||
On first launch (no `config.json`), a setup wizard walks you through creating one.
|
||||
|
||||
**Requires:** `customtkinter` (`pip install customtkinter`).
|
||||
|
||||
---
|
||||
|
||||
## Migrating Existing Mods
|
||||
|
||||
If the Arma 3 Server already has mods installed and you want to bring them under this toolchain without re-downloading:
|
||||
@@ -520,6 +546,19 @@ arma-modlist-tools/
|
||||
| |- config.py # config.json loader
|
||||
| |- compat.py # OS detection + encoding fix
|
||||
|
|
||||
|- gui/ # GUI package (CustomTkinter desktop app)
|
||||
| |- __init__.py # Theme setup + run_app() entry point
|
||||
| |- app.py # Main window, view management, pipeline runner
|
||||
| |- wizard.py # First-run config setup wizard
|
||||
| |- _constants.py # Window size, color, path constants
|
||||
| |- _io.py # stdout/stderr → thread-safe queue for live logs
|
||||
| |- views/
|
||||
| |- dashboard.py # Overview view
|
||||
| |- mods.py # Mod browser view
|
||||
| |- tools.py # Tool actions view
|
||||
| |- logs.py # Real-time log view
|
||||
| |- settings.py # Config editor view
|
||||
|
|
||||
|- modlist_html/ # INPUT: put your .html preset exports here
|
||||
| |- MyPreset_A.html
|
||||
| |- MyPreset_B.html
|
||||
@@ -540,7 +579,9 @@ arma-modlist-tools/
|
||||
|- config.json # YOUR config (gitignored — contains credentials)
|
||||
|- config.template.json # Template to copy from
|
||||
|- requirements.txt
|
||||
|- selection.json # GUI selection state (persisted between sessions)
|
||||
|
|
||||
|- gui.py # GUI entry point
|
||||
|- run.py # Orchestrator (parse + compare + fetch + link)
|
||||
|- parse_modlist.py # Step 1 standalone
|
||||
|- compare_modlists.py # Step 2 standalone
|
||||
|
||||
Reference in New Issue
Block a user