Development - ShadobaDev/Platemaker-qt GitHub Wiki

Development

Building Platemaker from source and contributing to it.

Scope. These pages cover the Qt GUI. libplatemaker appears 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