GUI

Layout Components

The layout-oriented widget set includes panels, split views, windows, menus, common dialogs, and the simple line separator widget. Together they define how NAppGUI structures screens above the individual control level.

Relevant Source Files

Panel

Panel is the main scrollable/container surface for composed layouts. It comes in three creation forms: plain panel, scrollable panel, and custom panel with explicit scroll/border flags. Publicly, you set panel size, attach one or more layouts, switch the visible layout, update the panel, and query scrollbar thickness.

Internally, panels can host multiple layouts and swap which one is active. That makes them a reusable view-switching primitive, not just a passive parent for one child tree.

SplitView

SplitView composes two panes either horizontally or vertically. Each side can host a generic View, TextView, WebView, TableView, another SplitView, or a Panel. The public API then controls splitter mode/position, per-side visibility, and per-side minimum sizes.

This makes split views one of the main structural widgets for IDE-style or inspector-style interfaces in the repo.

Window

Window is the top-level container and interaction coordinator. It exposes panel attachment, close/move/resize listeners, show/hide, overlay and modal launch, modal stop value, hotkeys, tabstop cycling, focus management, maximize/minimize, origin and client size, default button behavior, and cursor changes.

Importantly, the window API is layout-first: attach a panel, and the internals wrap it in a root layout and keep the whole tree recomposed on resize or role changes.

Common Dialogs and Decoration

comwin.h exposes native directory selection, file open/save, and color picker dialogs. For lightweight visual separation inside layouts, line.h provides horizontal and vertical line widgets with explicit length.

The line widget matters in this checkout because the most recent commit message references support for decoration separators, which lines are the public API surface for.