GUI Manager for panels, consoles and debug windows [v26.08.00].
Overview
The GUI module provides the engine-managed runtime GUI layer through the GUI Manager. It handles three object families: Panels (widget containers), Consoles (interactive command-line overlays) and Debug Windows (runtime variable monitors). Panels can optionally arrange their child widgets using horizontal or vertical flow layout while preserving their behavioral type (modeless, modal or ephemeral). GUI objects are attached to screens, support multi-screen configurations, and can be saved and loaded through the CDC GUI format. Widget lifecycle is split into visibility (show() / hide()) and interactivity (enable() / disable()), so controls can remain visible while disabled.
See Widget module for skin properties, feature flags, callbacks, state machine and update protocol.
Key features
-
Panel system: Widget containers with modeless, modal and ephemeral (TTL) behavior
-
Panel flow layouts: Optional horizontal and vertical flow layout with configurable spacing, padding, justify and alignment
-
Console: In-game command-line interface with history, built-in commands and TAB auto-complete
-
Debug window: Runtime watch windows for Sint32 and float variables with configurable refresh interval
-
Widget set: Label, Image, Frame, Button, CheckBox, Progress, Slider, TextEdit, NumberEdit, List, ComboBox
-
Content-text alignment: Left, center and right alignment for TextEdit, NumberEdit, List and ComboBox; left is the default
-
Theming: Built-in Default, Dark and Flat themes; custom themes created at runtime via createTheme()
-
Tooltips: Delayed hover tooltips with fade-in, per-widget TTL, cursor-follow and themed visuals
-
Multi-screen routing: GUI objects attach to specific screens; events are filtered by windowID
-
Separated widget lifecycle: Visibility and enabled state are managed independently
-
Inspection and persistence: Enumerate widgets, inspect metadata, save and load GUI state through CDC
GUI object types
| Panel | Container for widgets. Supports modeless, modal and time-to-live (TTL) ephemeral behavior. Panels are ref-counted: loading a panel whose name already exists returns the existing panel and increments its reference count. Optional flow layout for automatic child arrangement. |
| Console | Command-line interface with prompt, UTF-8 cursor navigation, command history, TAB auto-complete and custom command registration. Captures SDL text input focus while allowing other GUI interactions. Read-only mode available. |
| DebugWindow | Variable watch window for monitoring Sint32* and float* pointers in real-time. Configurable refresh interval. add/removeWatch fail gracefully when the window is disabled. |
Widget content-text alignment
TextEdit, NumberEdit, List and ComboBox support persisted horizontal content-text alignment through setTextAlign() and getTextAlign(). The default is WTA_LEFT, matching standard GUI behavior.
| WTA_LEFT | Align text to the left content edge. Default. |
| WTA_CENTER | Center text inside the available content area. |
| WTA_RIGHT | Align text to the right content edge. |
TextEdit and NumberEdit horizontally scroll focused text as needed to keep the caret visible, then restore the selected alignment after focus is lost. List items are clipped to the content area without horizontal scrolling. ComboBox preserves its normal wrapping behavior and aligns every wrapped line independently in both the selected value and popup list. Single-line TextEdit and NumberEdit content and the complete selected ComboBox text block are vertically centered when they fit; multiline edit content, lists and popup rows remain top-aligned.
Render order
Render pass order, from bottom to top:
| 1. Panels | Rendered back-to-front by focus vector (vPanelID). Open ComboBox popups are rendered in a second panel pass above normal panel widgets. |
| 2. Tooltip | Manager-owned overlay drawn above panels but below DebugWindows and Consoles. Uses the active theme shared tooltip style, optionally overridden per widget. |
| 3. DebugWindows | Rendered on top of panels and tooltips. Drag-drop capable. |
| 4. Consoles | Always on top of panels, tooltips and debug windows. |
Update priority
Input/update priority is processed from topmost interactive overlays down to panels:
| 1. DebugWindows | Checked first so overlay activity can block drag/drop and lower GUI layers. |
| 2. Consoles | Checked before panels so text input focus and overlay activity can prevent panel interaction underneath. |
| 3. Panels | Front panel receives events first. Modal panels can block lower panels. |
| 4. Tooltip State | Resolved after object updates so tooltip ownership uses the final hover/focus state for the frame. |
Panel flow layout
Panels can automatically arrange their child widgets using a one-dimensional flow layout. The layout is selected via setLayout() and configured with setLayoutSpacing(), setLayoutPadding(), setLayoutJustify() and setLayoutAlign(). The layout re-runs (reflow()) whenever the internal dirty flag is raised: on widget creation, widget removal, widget resize, widget show/hide, panel show, and explicit invalidateLayout() calls. Widget positions under a flow layout are set by calling Widget::setPosition() with absolute pixel coordinates computed by the reflow pass.
| PL_NONE | No layout. Widgets are positioned manually. Default. |
| PL_HFLOW | Horizontal flow. Widgets are placed left-to-right. Main axis is X, cross axis is Y. |
| PL_VFLOW | Vertical flow. Widgets are placed top-to-bottom. Main axis is Y, cross axis is X. |
Layout justify options (eLayoutJustify) - main axis distribution
| LJ_START | Widgets packed to the start of the main axis (after padding). Default. |
| LJ_CENTER | Widgets centered along the main axis. If total widget size exceeds the inner dimension the cursor may go negative; widgets are silently clamped by WF_ENCLOSE. |
| LJ_END | Widgets packed to the end of the main axis. Same overflow clamp caveat as LJ_CENTER. |
| LJ_SPACE | Spacing is distributed evenly between widgets. With a single visible widget, spacing is the configured iLayoutSpacing value. |
Layout align options (eLayoutAlign) - cross axis positioning
| LA_START | Widgets aligned to the start of the cross axis (after cross padding). |
| LA_CENTER | Widgets centered along the cross axis. Default. |
| LA_END | Widgets aligned to the end of the cross axis. |
| LA_STRETCH | Widget cross-axis size is expanded to fill the available inner cross dimension. setSize() is called on each widget during reflow. |
- Note
- Showing or hiding a widget automatically invalidates the parent panel layout. Use Panel::invalidateLayout() only for caller-controlled edge cases where no widget creation, removal, resize or visibility change occurs.
| Command registration | addCmdHandler() registers user commands with a name, help text and callback. The command name must be unique and cannot be "help". |
| Built-in commands | 'help', 'con', 'dw' and 'cur' are always available. Parameters for auto-complete are registered internally via setCmdParams(). |
| Command history | Up/Down arrow keys recall and cycle previously executed commands. |
| TAB auto-complete | Single match: completes immediately. Multiple matches: prints list and expands to the common prefix. Repeated TAB cycles through matches. |
| Input focus | Captures SDL_EVENT_TEXT_INPUT, blocking it from reaching panels below. Read-only mode disables text input and command execution while keeping the console visible. |
| Clipboard | Ctrl+C copies the current prompt line. Ctrl+V pastes at the current cursor position. |
| Variable watch | addWatch() accepts a display name and either numeric pointers or a const string* pointer. At least one pointer must be non-null. Watch names must be unique. |
| Refresh interval | setRefreshInterval() configures the update period in milliseconds. Default is 500 ms. The timer is driven by an explicit init flag (bRefreshTimerInit) rather than a zero-sentinel to avoid edge cases at startup. |
| Named watches | Each watch has a display name shown before its value. Format: "name integer float", "name integer", "name float" or "name string" depending on the overload and pointers used. |
| Disabled guard | addWatch() and removeWatch() return -1 immediately when the DebugWindow base widget is in GS_DISABLED state. |
Manager types
| Panel | Shared-name management: loading a CDC block whose panel name already exists returns the existing panel and increments its reference count. close() decrements the count and destroys the panel only when it reaches zero. |
| Console | Standard manager: names must be unique. The first console created (GUICONSOLE_SIGNATURE) is the default console and cannot be closed or disabled. |
| DebugWindow | Standard manager: names must be unique. |
Tooltip behavior
Tooltips are driven by widget text assigned through Widget::setTooltip(). The GUI manager shows them after GUI_TOOLTIP_DELAY_MS (1000 ms) of stable hover, with a fade-in over GUI_TOOLTIP_FADEIN_MS (500 ms). Tooltip visuals use the active theme's shared tooltip style, unless the hovered widget overrides tooltip background, border or font locally. The tooltip is positioned near the cursor with GUI_TOOLTIP_OFFSET_X / GUI_TOOLTIP_OFFSET_Y and clamped to the screen bounds. Per-widget TTL is read from Widget::getTooltipTTL(); the widget default is WIDGET_TOOLTIP_DEFAULT_TTL_MS = 0, meaning the tooltip stays visible while the hover is valid. GUI_TOOLTIP_TTL_MS is only the manager's bootstrap/fallback value used before a concrete widget owner is latched. After a tooltip expires, it will not show again for the same widget until the pointer leaves and re-hovers. Tooltip display is dismissed early by keyboard input, text input events, mouse button press or mouse wheel while a tooltip is visible. Mouse button release is intentionally ignored because the press already represents the user intent to dismiss.
Themes
GUI themes define procedural widget styling per widget type and widget state. Built-in themes are available immediately through GUIMgr::getThemeDefault(), GUIMgr::getThemeDark() and GUIMgr::getThemeFlat(). Theme resolution order for any skin property: widget override, then panel theme override, then global theme, then built-in Default theme. A typical workflow is:
Sint32 setGlobalTheme(Sint32 idTheme)
Set the active global theme.
Definition GUI.cpp:1690
GUIMgr & guiMgr()
Get reference to GUI Manager.
Definition CoreMain.cpp:1026
static Main & instance()
Access the Main singleton.
Definition CoreMain.cpp:464
To customize a theme:
Sint32 idTheme = gui.createTheme("MyTheme");
GUITheme* pTheme = gui.getTheme(idTheme);
if(pTheme)
{
}
Custom themes created via createTheme() are pre-filled from the Default theme. Theme entries are inspected through GUITheme::getSkin() and modified through the explicit GUITheme::setSkin...() methods. Built-in fonts should use the full "@c64/font/..." name in GUIThemeSkin::sFontName to avoid name collisions with user-loaded fonts. Theme font resolution first checks FontMgr::getBuiltin(), then FontMgr::get() by name.
Best practices
-
Use GUI objects from the main thread only, there is no internal synchronization. See Threading conventions.
-
Set a global theme through GUIMgr::setGlobalTheme(), then override individual panels or widgets only when needed. This minimizes per-widget skin data in CDC files
-
Widget show()/hide(), creation, removal and resize automatically invalidate parent flow layouts; use Panel::invalidateLayout() only for caller-controlled edge cases
-
Use widget tooltips for hover help text and panel TTL (ephemeral panels) for temporary HUD notifications
-
Register custom console commands during initialization for in-game debugging; use addCmdHandler() with setCmdParams() to enable TAB auto-complete for your command parameters
-
Use DebugWindow during development to monitor critical game variables; remove or hide it in release builds
-
Attach GUI objects to the correct screen in multi-screen configurations; events are filtered by windowID and objects on a hidden screen receive the crafted focus-lost event
-
Access the manager exclusively through Main::guiMgr()
- Note
- The GUI Manager is a singleton, automatically created once Main is instantiated. You can get a reference to it using Main::guiMgr().
The GUI Manager is automatically released when Main::terminate() is called. Any resource still loaded at that point is released, avoiding leaks.
|
| bool | CRM64Pro::GUIMgr::info (Sint32 iMode=0) override |
| | Request GUI Manager information.
|
| Sint32 | CRM64Pro::GUIMgr::create (const string &sName, Uint32 iType=CRM64PRO_GUI_PANEL) override |
| | Creates a new GUI object.
|
| Sint32 | CRM64Pro::GUIMgr::close (Sint32 idGUI) override |
| | Close and destroy a GUI object.
|
| Sint32 | CRM64Pro::GUIMgr::getCount () const override |
| | Get number of loaded objects.
|
| Sint32 | CRM64Pro::GUIMgr::setName (Sint32 idGUI, const string &sName) override |
| | Change the object name.
|
| Panel * | CRM64Pro::GUIMgr::getPanel (Sint32 idGUI) |
| | Get a pointer to a Panel using its handle.
|
| Sint32 | CRM64Pro::GUIMgr::getPanelFocus () const |
| | Get the focused GUI panel id.
|
| Sint32 | CRM64Pro::GUIMgr::setPanelFocus (Sint32 idGUI) |
| | Set the focus on the given GUI panel id.
|
| Console * | CRM64Pro::GUIMgr::getConsole (Sint32 idGUI=CRM64PRO_GUI_CONSOLE) |
| | Get a pointer to a Console using its handle.
|
| DebugWindow * | CRM64Pro::GUIMgr::getDebugWindow (Sint32 idGUI) |
| | Get a pointer to a DebugWindow using its handle.
|
| Sint32 | CRM64Pro::GUIMgr::load (const string &sCDCFile, const string &sName) |
| | Load a panel and its widgets stored in a CDC file.
|
| Sint32 | CRM64Pro::GUIMgr::load (Sint32 idCDC, const string &sName) |
| | Load a panel and its widgets stored in a CDC file.
|
| Sint32 | CRM64Pro::GUIMgr::remove (Sint32 idCDC, const string &sName) |
| | Remove a panel and its widgets stored in a CDC file.
|
| Sint32 | CRM64Pro::GUIMgr::getIconInfo () const |
| | Get the built-in info icon.
|
| Sint32 | CRM64Pro::GUIMgr::getIconWarning () const |
| | Get the built-in warning icon.
|
| Sint32 | CRM64Pro::GUIMgr::getIconQuestion () const |
| | Get the built-in question icon.
|
| Sint32 | CRM64Pro::GUIMgr::getIconError () const |
| | Get the built-in error icon.
|
| Sint32 | CRM64Pro::GUIMgr::createTheme (const string &sName) |
| | Create a new custom theme initialized from the built-in Default theme.
|
| GUITheme * | CRM64Pro::GUIMgr::getTheme (Sint32 idTheme) |
| | Get a theme by id.
|
| Sint32 | CRM64Pro::GUIMgr::setGlobalTheme (Sint32 idTheme) |
| | Set the active global theme.
|
| Sint32 | CRM64Pro::GUIMgr::getGlobalTheme () const |
| | Get the active global theme id.
|
| bool | CRM64Pro::GUIMgr::closeTheme (Sint32 idTheme) |
| | Close and destroy a custom theme.
|
| Sint32 | CRM64Pro::GUIMgr::getThemeDefault () const |
| | Get the built-in Default theme id.
|
| Sint32 | CRM64Pro::GUIMgr::getThemeDark () const |
| | Get the built-in Dark theme id.
|
| Sint32 | CRM64Pro::GUIMgr::getThemeFlat () const |
| | Get the built-in Flat theme id.
|
| bool | CRM64Pro::Console::info (Sint32 iMode=0) override |
| | Request Console information.
|
| const string & | CRM64Pro::Console::getName () const override |
| | Get the name.
|
| Sint32 | CRM64Pro::Console::getID () const override |
| | Get the ID.
|
| Widget & | CRM64Pro::Console::baseWidget () |
| | Get the reference to base Widget for this object.
|
| Sint32 | CRM64Pro::Console::attachTo (Sint32 idScreen) |
| | Attach this console to a screen.
|
| Sint32 | CRM64Pro::Console::getScreen () const |
| | Return the screen id where this console is attached to.
|
| Sint32 | CRM64Pro::Console::print (const char *format,...) |
| | Print a formatted message to the console.
|
| Sint32 | CRM64Pro::Console::vPrint (const char *format, va_list args) |
| | Print a formatted message to the console.
|
| Sint32 | CRM64Pro::Console::addCmdHandler (const string &sCommandName, const string &sCommandHelp, Sint32(*fnCmdHandler)(vector< string > *, Console *pCon)) |
| | Add a new command handler to the console.
|
| Sint32 | CRM64Pro::Console::executeCmd (const string &sCmd) |
| | Execute a command on this console.
|
| Sint32 | CRM64Pro::Console::setReadOnly (bool bEnable=true) |
| | Enable or disable read-only mode for the console prompt.
|
| bool | CRM64Pro::Console::isReadOnly () const |
| | Check whether the console prompt is in read-only mode.
|
| bool | CRM64Pro::DebugWindow::info (Sint32 iMode=0) override |
| | Request DebugWindow information.
|
| const string & | CRM64Pro::DebugWindow::getName () const override |
| | Get the name.
|
| Sint32 | CRM64Pro::DebugWindow::getID () const override |
| | Get the ID.
|
| Widget & | CRM64Pro::DebugWindow::baseWidget () |
| | Get the reference to base Widget for this object.
|
| Sint32 | CRM64Pro::DebugWindow::addWatch (const string &sName, Sint32 *iIntegerVar, float *fFloatVar=nullptr) |
| | Add a watch.
|
| Sint32 | CRM64Pro::DebugWindow::addWatch (const string &sName, const string *pStringVar) |
| | Add a string watch.
|
| Sint32 | CRM64Pro::DebugWindow::removeWatch (const string &sName) |
| | Remove a watch.
|
| Sint32 | CRM64Pro::DebugWindow::attachTo (Sint32 idScreen) |
| | Attach this debugwindow to a screen.
|
| Sint32 | CRM64Pro::DebugWindow::getScreen () const |
| | Return the screen id where this debugwindow is attached to.
|
| Sint32 | CRM64Pro::DebugWindow::setRefreshInterval (Sint32 iRefresh) |
| | Set the refresh interval.
|
| Sint32 | CRM64Pro::DebugWindow::getRefreshInterval () const |
| | Get the refresh interval.
|
| bool | CRM64Pro::Panel::info (Sint32 iMode=0) override |
| | Request Panel information.
|
| const string & | CRM64Pro::Panel::getName () const override |
| | Get the name.
|
| Sint32 | CRM64Pro::Panel::getID () const override |
| | Get the ID.
|
| Widget & | CRM64Pro::Panel::baseWidget () |
| | Get the reference to base Widget for this object.
|
| Sint32 | CRM64Pro::Panel::setTitle (const string &sText, const Position &rPosX=Position(PH_CENTER), const Position &rPosY=Position(PH_CENTER)) |
| | Set the panel title text.
|
| Sint32 | CRM64Pro::Panel::getTitle (string &sText) const |
| | Get the panel title text.
|
| Sint32 | CRM64Pro::Panel::attachTo (Sint32 idScreen) |
| | Attach this panel to a screen.
|
| Sint32 | CRM64Pro::Panel::setScreenDesired (Sint32 iScreenDesired) |
| | Set the desired screen index persisted for this panel.
|
| Sint32 | CRM64Pro::Panel::getScreen () const |
| | Return the screen id this panel is attached to.
|
| Sint32 | CRM64Pro::Panel::getScreenDesired () const |
| | Return the desired screen index persisted for this panel.
|
| Sint32 | CRM64Pro::Panel::setTheme (Sint32 idTheme) |
| | Set the panel theme.
|
| Sint32 | CRM64Pro::Panel::getTheme () const |
| | Get the panel theme.
|
| Widget * | CRM64Pro::Panel::createWidgetByType (const string &sName, eWidgetType eWT, Sint32 idWidget) |
| | Create a widget by runtime type.
|
| eWidgetType | CRM64Pro::Panel::getWidgetType (Sint32 idWidget) const |
| | Return the type of a widget using its ID.
|
| Widget * | CRM64Pro::Panel::getWidgetByID (Sint32 idWidget) |
| | Get a pointer to a Widget using its ID.
|
| Sint32 | CRM64Pro::Panel::setWidgetName (Sint32 idWidget, const string &sName) |
| | Rename an owned widget.
|
| WidgetLabel * | CRM64Pro::Panel::createLabel (const string &sName, Sint32 idWidget) |
| | Create a Label widget and return its typed pointer.
|
| WidgetImage * | CRM64Pro::Panel::createImage (const string &sName, Sint32 idWidget) |
| | Create an Image widget and return its typed pointer.
|
| WidgetFrame * | CRM64Pro::Panel::createFrame (const string &sName, Sint32 idWidget) |
| | Create a Frame widget and return its typed pointer.
|
| WidgetButton * | CRM64Pro::Panel::createButton (const string &sName, Sint32 idWidget) |
| | Create a Button widget and return its typed pointer.
|
| WidgetCheckBox * | CRM64Pro::Panel::createCheckBox (const string &sName, Sint32 idWidget) |
| | Create a CheckBox widget and return its typed pointer.
|
| WidgetProgress * | CRM64Pro::Panel::createProgress (const string &sName, Sint32 idWidget) |
| | Create a Progress widget and return its typed pointer.
|
| WidgetSlider * | CRM64Pro::Panel::createSlider (const string &sName, Sint32 idWidget, eSliderAxis eAxis=SA_HORIZONTAL) |
| | Create a Slider widget and return its typed pointer.
|
| WidgetTextEdit * | CRM64Pro::Panel::createTextEdit (const string &sName, Sint32 idWidget) |
| | Create a TextEdit widget and return its typed pointer.
|
| WidgetList * | CRM64Pro::Panel::createList (const string &sName, Sint32 idWidget) |
| | Create a List widget and return its typed pointer.
|
| WidgetComboBox * | CRM64Pro::Panel::createComboBox (const string &sName, Sint32 idWidget) |
| | Create a ComboBox widget and return its typed pointer.
|
| WidgetNumberEdit * | CRM64Pro::Panel::createNumberEdit (const string &sName, Sint32 idWidget) |
| | Create a NumberEdit widget and return its typed pointer.
|
| WidgetLabel * | CRM64Pro::Panel::getLabel (Sint32 idWidget) |
| | Get a typed Label widget using its ID.
|
| WidgetImage * | CRM64Pro::Panel::getImage (Sint32 idWidget) |
| | Get a typed Image widget using its ID.
|
| WidgetFrame * | CRM64Pro::Panel::getFrame (Sint32 idWidget) |
| | Get a typed Frame widget using its ID.
|
| WidgetButton * | CRM64Pro::Panel::getButton (Sint32 idWidget) |
| | Get a typed Button widget using its ID.
|
| WidgetCheckBox * | CRM64Pro::Panel::getCheckBox (Sint32 idWidget) |
| | Get a typed CheckBox widget using its ID.
|
| WidgetProgress * | CRM64Pro::Panel::getProgress (Sint32 idWidget) |
| | Get a typed Progress widget using its ID.
|
| WidgetSlider * | CRM64Pro::Panel::getSlider (Sint32 idWidget) |
| | Get a typed Slider widget using its ID.
|
| WidgetTextEdit * | CRM64Pro::Panel::getTextEdit (Sint32 idWidget) |
| | Get a typed TextEdit widget using its ID.
|
| WidgetList * | CRM64Pro::Panel::getList (Sint32 idWidget) |
| | Get a typed List widget using its ID.
|
| WidgetComboBox * | CRM64Pro::Panel::getComboBox (Sint32 idWidget) |
| | Get a typed ComboBox widget using its ID.
|
| WidgetNumberEdit * | CRM64Pro::Panel::getNumberEdit (Sint32 idWidget) |
| | Get a typed NumberEdit widget using its ID.
|
| void | CRM64Pro::Panel::getWidgetInfoList (vector< WidgetInfo > &vOut) const |
| | Fill widget metadata of this panel.
|
| Sint32 | CRM64Pro::Panel::closeWidget (Sint32 idWidget) |
| | Close and destroy a Widget.
|
| Sint32 | CRM64Pro::Panel::setPanelType (ePanelType ePT, Sint32 iTime=0) |
| | Set the panel type.
|
| ePanelType | CRM64Pro::Panel::getPanelType () const |
| | Get the panel type.
|
| Sint32 | CRM64Pro::Panel::getPanelTTL () const |
| | Get the panel time to live.
|
| Sint32 | CRM64Pro::Panel::setSizeMode (ePanelSizeMode ePSM) |
| | Set the panel size mode.
|
| ePanelSizeMode | CRM64Pro::Panel::getSizeMode () const |
| | Get the panel size mode.
|
| Sint32 | CRM64Pro::Panel::setLayout (ePanelLayout ePL) |
| | Set the panel child layout mode.
|
| ePanelLayout | CRM64Pro::Panel::getLayout () const |
| | Get the panel child layout mode.
|
| Sint32 | CRM64Pro::Panel::setLayoutSpacing (Sint32 iSpacing) |
| | Set spacing between child widgets in flow layouts.
|
| Sint32 | CRM64Pro::Panel::getLayoutSpacing () const |
| | Get spacing between child widgets in flow layouts.
|
| Sint32 | CRM64Pro::Panel::setLayoutPadding (Sint32 iTop, Sint32 iRight, Sint32 iBottom, Sint32 iLeft) |
| | Set padding inside the panel base widget for flow layouts.
|
| Sint32 | CRM64Pro::Panel::getLayoutPadding (Sint32 *iTop, Sint32 *iRight, Sint32 *iBottom, Sint32 *iLeft) const |
| | Get padding inside the panel base widget for flow layouts.
|
| Sint32 | CRM64Pro::Panel::setLayoutJustify (eLayoutJustify eJustify) |
| | Set flow-layout distribution along the main axis.
|
| eLayoutJustify | CRM64Pro::Panel::getLayoutJustify () const |
| | Get flow-layout distribution along the main axis.
|
| Sint32 | CRM64Pro::Panel::setLayoutAlign (eLayoutAlign eAlign) |
| | Set flow-layout alignment along the cross axis.
|
| eLayoutAlign | CRM64Pro::Panel::getLayoutAlign () const |
| | Get flow-layout alignment along the cross axis.
|
| void | CRM64Pro::Panel::invalidateLayout () |
| | Mark the flow layout dirty so child positions are recomputed on the next update/render pass.
|
| Sint32 | CRM64Pro::Panel::save (const string &sCDCFile) |
| | Save the panel and all its widgets to a CDC file.
|
| Sint32 | CRM64Pro::Panel::save (Sint32 idCDC) |
| | Save the panel and all its widgets to a CDC file.
|