This manual explains how to create, configure, apply, read, and change Nikerva UI.
All names refer to the current Nikerva namespace and headers.
Retained UI keeps controls alive between frames. Use handles, setters, and property bindings. Every-frame declarative UI describes the desired controls each frame. Keep application state and the builder alive; repeat declarations with stable IDs. These are separate APIs with different widgets and setters.
| Task | Guide |
|---|---|
| Install/link the library and open an example | Basic usage, runnable examples |
| Create controls, change values, bind properties, and retain callbacks | Set, apply, and change |
| Find every persistent widget and its configuration | Retained widget reference |
| Find every builder element, fluent property, and direct widget | Declarative widget reference |
| Set sizes, positions, padding, colors, fonts, themes, and stylesheets | Layout and styling |
| Build lists, grids, trees, tables, property forms, and docking | Collections and data sources |
| Deliver input, draw custom content, load fonts/images, and submit frames | Input, painting, and host integration |
| Draw retained lines, polylines, and point markers | Retained drawing API and example |
| Look up exact signatures, overloads, fields, defaults, and enum members | All 41 public headers and type index |
| Read longer foundation and diagnostic examples | Additional implementation notes |
| Understand dependency direction and ownership | Architecture |
- Create identifies the constructor or parent factory.
- Configure lists initial values and constructor options.
- Change/read identifies actual setters and accessors. Options are copied during construction; editing your old options variable does not update the control.
- Events identifies what the widget reports and who owns the subscription.
- Reference provides exact overloads and associated public types.
Inherited methods are documented once and apply to every derived widget. A constructor option without a setter is a creation option, not a live property. A field returned as a value is a snapshot: edit the copy, then pass it through a setter to apply the change.
Examples use C++20. Snippets marked “inside your frame” borrow a running host;
they do not create a window. Complete native applications are in the examples
guide. Private fields, Detail internals, and internal builder records are not
supported public APIs.
The declaration reference covers every current public header under
include/Nikerva: retained controls/options, declarative widgets and builder
capabilities, layout/style types, properties/connections, collection sources,
input/paint records, renderer interfaces, Vulkan backends, and diagnostics.
Declarations retain defaults and constraints. The task guides explain behavior,
application patterns, and limitations that a signature alone cannot explain.
When changing a public API, update its guide and declaration page together. Source remains authoritative. The examples guide includes real result images and the current sample-host limitations.