Development - ShadobaDev/Platemaker-qt GitHub Wiki
Development
Building Platemaker from source and contributing to it.
Scope. These pages cover the Qt GUI.
libplatemakerappears only where the GUI needs it โ for the library's own build instructions, data models and CLI, see the PlateMaker repository.
Repository layout
Platemaker/
โโโ CMakeLists.txt
โโโ Platemaker.iss Inno Setup installer script
โโโ app/ main.cpp
โโโ mainwindow/ application shell, split by concern
โโโ widgets/ one folder per widget or dialog
โโโ icons/
โโโ docs/ SPECIFICATION.md, CHANGELOG.md, TODO.md
Prerequisites at a glance
| Module | Description |
|---|---|
| Qt | 6.8+ |
| CMake | 3.21+ |
| Compiler | MSVC 2022 or MinGW via MSYS2 (Windows), GCC/Clang (Linux) |
| libplatemaker | 0.6.0+ |
Full setup: Environment.
Pages in this section
| Page | Covers |
|---|---|
| Environment | Toolchain install, Qt Creator kits |
| Building | Configuring, linking libplatemaker, running |
| Architecture | How the code is organised and why |
| Main window | The shell, the project view, application state, thumbnails, threads |
| Workflows | Open, create, render, cancel, templates, canvas profiles, step by step |
| Releasing | Versioning, installer, publishing a release |
| Contributing | Branching, style, pull requests |
| Windows hardening | The DLL search path, and what is deferred |
Strip editor and the tool framework
A separate group of pages specifies the strip editor's tool framework โ how tools, objects and property groups relate, and which panel is allowed to talk about which.
| Page | Covers |
|---|---|
| Tool framework | Vocabulary, layers, the regions |
| Code map | Which folder holds which region, what may include what |
| Shell | The dock, rail, columns, cursor, colour pair, rendering, the grade |
| Objects | Bubbles, tails, placement, presets, imported artwork |
| Property groups | The structs, ownership, roles, the write contract, the tests |
| Object state and tool options | What each panel contains, presets and their badge |
| History and undo | One undo history per project, and how a step shows itself |
| Advisories and badges | Status-bar advisories, widgets/badge/ โ application-wide |
| Inputs and anchoring | Replacing a page, unanchored objects, the render gate |
Workspace folder ownership
| Page | Covers |
|---|---|
| Workspace folder ownership | One workspace per folder, the lock and takeover, Save As collecting files, the sweep at open, missing-font healing, the workspace's own fonts, the export/open package |
Where the library documentation lives
These pages cover the GUI. For the library itself, the PlateMaker repository has:
| Document | Covers |
|---|---|
| its wiki | The domain model, the pipeline, profile matching and its error semantics |
docs/CHEATSHEET.md |
Copy-paste build commands for every preset |
docs/CODING_STYLE.md |
Naming, Doxygen format and file layout โ shared by both projects |
docs/TODO.md |
Planned library work, including anything the GUI is waiting on |
Keeping this wiki in sync
The Development pages (this one, the strip-editor series, Advisories, Anchoring, Workspace folder ownership) are synced against the application's source, not against the public GUI release โ they describe unreleased work in progress. When you next need to bring them up to date, diff from the commit named in the footer of every page (also below) rather than from the last tagged release.
Last synced to Platemaker GUI commit 1296c1c, 2026-10-01.
Status of this project
There is no build/test CI โ nothing compiles or exercises your change on push. The GUI has a
small unit-test target covering the property model (tests/gui-unit-tests/, off by default โ see
Property groups); everything involving a window is verified
manually. The project is also not currently seeking
contributors, which is not a rule against contributions โ see Contributing
before starting work you would like merged, and
Extending the strip editor before
extending the strip editor.
See also: About ยท Architecture ยท Contributing