![]() |
CRM64Pro GDK v0.13.0
A free cross-platform game development kit built on top of SDL 3.0
|
GUI Manager for handling panels, consoles and debug windows [v25.12.0].
The GUI module provides a complete graphical user interface system through the GUI Manager. It handles three main object types: Panels (widget containers), Consoles (command-line interfaces) and Debug Windows (variable monitors). All GUI objects are attached to screens and support multi-screen configurations.
| Panel | Container for widgets. Supports time-to-live (TTL) for ephemeral panels. Sharing manager behavior |
|---|---|
| Console | Command-line interface with prompt, command history and custom command registration. Captures text input focus while allowing other interactions |
| DebugWindow | Variable watch window for monitoring integer and double values with configurable refresh interval |
| Console | Always rendered on top of DebugWindows and Panels |
|---|---|
| DebugWindow | Always rendered on top of Panels |
| Panel | Automatic rendering order by focus |
| Command registration | Register custom commands with help text and callback functions |
|---|---|
| Built-in commands | 'help', 'con' and 'dw' commands available by default |
| Command history | Navigate through previously entered commands |
| Input focus | Captures text input while allowing other GUI interactions |
| Variable watch | Monitor Sint32 (integer) and double variables in real-time |
|---|---|
| Refresh interval | Configurable update frequency for watched variables |
| Named watches | Each watched variable has a display name for easy identification |
| Panel | Sharing manager: returns shared ID for existing panels based on name |
|---|---|
| Console | Standard manager: objects must be unique by name |
| DebugWindow | Standard manager: objects must be unique by name |
Classes | |
| class | CRM64Pro::Panel |
| Panel Object class. More... | |
| class | CRM64Pro::Console |
| Console Object class. More... | |
| class | CRM64Pro::DebugWindow |
| DebugWindow Object class. More... | |
| class | CRM64Pro::GUIMgr |
| GUI Manager class. More... | |
Macros | |
| #define | GUI_PANEL 0x42000000 |
| #define | GUI_CONSOLE 0x44000000 |
| #define | GUI_DEBUGWINDOW 0x48000000 |
Enumerations | |
| enum | CRM64Pro::ePanelType { CRM64Pro::PT_RETRIEVE = -1 , CRM64Pro::PT_MODELESS = 0 , CRM64Pro::PT_MODAL = 1 , CRM64Pro::PT_EPHEMERAL = 2 } |
| Panel Type. More... | |
Functions | |
| Sint32 | CRM64Pro::GUIMgr::info (Sint32 iMode=0) |
| Request GUI Manager information. | |
| Sint32 | CRM64Pro::GUIMgr::create (const string &sName, Uint32 iType=GUI_PANEL) |
| Creates a new GUI object. | |
| Sint32 | CRM64Pro::GUIMgr::close (Sint32 idGUI) |
| Close and destroy a GUI object. | |
| Sint32 | CRM64Pro::GUIMgr::getNum () const |
| Get number of loaded objects. | |
| Sint32 | CRM64Pro::GUIMgr::setName (Sint32 idGUI, const string &sName) |
| Change the object name. | |
| Panel * | CRM64Pro::GUIMgr::getPanel (Sint32 idGUI=0) |
| Get a pointer to a Panel using its handler. | |
| Sint32 | CRM64Pro::GUIMgr::getPanelFocus () |
| Get the GUI Panel id with the focus. | |
| Sint32 | CRM64Pro::GUIMgr::setPanelFocus (Sint32 idGUI) |
| Set the focus on the given GUI Panel id. | |
| Console * | CRM64Pro::GUIMgr::getConsole (Sint32 idGUI=GUI_CONSOLE) |
| Get a pointer to a Console using its handler. | |
| DebugWindow * | CRM64Pro::GUIMgr::getDebugWindow (Sint32 idGUI=0) |
| Get a pointer to a DebugWindow using its handler. | |
| Sint32 | CRM64Pro::GUIMgr::load (const string &sFileCDC, 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::getFontWhiteAA () |
| Get the built-in white font. | |
| Sint32 | CRM64Pro::GUIMgr::getFontBlack () |
| Get the built-in black font. | |
| Sint32 | CRM64Pro::GUIMgr::getIconInfo () |
| Get the built-in info icon. | |
| Sint32 | CRM64Pro::GUIMgr::getIconWarning () |
| Get the built-in warning icon. | |
| Sint32 | CRM64Pro::GUIMgr::getIconError () |
| Get the built-in error icon. | |
| Sint32 | CRM64Pro::Console::info (Sint32 iMode=0) |
| Request Console information. | |
| Sint32 | CRM64Pro::Console::getName (string &sName) |
| Get the name. | |
| Uint32 | CRM64Pro::Console::getID () |
| 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::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(*cmdFunc)(vector< string > *, Console *pCon)) |
| Add a new command handler to the console. | |
| Sint32 | CRM64Pro::Console::executeCmd (const string &) |
| Execute a command on this console. | |
| Sint32 | CRM64Pro::DebugWindow::info (Sint32 iMode=0) |
| Request DebugWindow information. | |
| Sint32 | CRM64Pro::DebugWindow::getName (string &sName) |
| Get the name. | |
| Uint32 | CRM64Pro::DebugWindow::getID () |
| 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::removeWatch (const string &sName) |
| Remove a watch. | |
| Sint32 | CRM64Pro::DebugWindow::attachTo (Sint32 idScreen) |
| Attach this debugwindow to a screen. | |
| Sint32 | CRM64Pro::DebugWindow::setRefreshInterval (Sint32) |
| Set the refresh interval. | |
| Uint64 | CRM64Pro::DebugWindow::getRefreshInterval () |
| Get the refresh interval. | |
| Sint32 | CRM64Pro::Panel::info (Sint32 iMode=0) |
| Request Panel information. | |
| Sint32 | CRM64Pro::Panel::getName (string &sName) |
| Get the name. | |
| Uint32 | CRM64Pro::Panel::getID () |
| Get the ID. | |
| Widget & | CRM64Pro::Panel::baseWidget () |
| Get the reference to base Widget for this object. | |
| Sint32 | CRM64Pro::Panel::attachTo (Sint32 idScreen) |
| Attach this panel to a screen. | |
| Sint32 | CRM64Pro::Panel::getScreen () |
| Return the screen id where this panel is attached to. | |
| Sint32 | CRM64Pro::Panel::createWidget (const string &sName, eWidgetType eWT, Sint32 iWID) |
| Create a widget. | |
| Widget * | CRM64Pro::Panel::getWidget (Sint32 iWID) |
| Get a pointer to a Widget using its handler. | |
| Sint32 | CRM64Pro::Panel::closeWidget (Sint32 iWID) |
| Close and destroy a Widget. | |
| Sint32 | CRM64Pro::Panel::type (ePanelType ePT=PT_RETRIEVE, Sint32 iTime=0) |
| Set or get panel type. | |
| Sint32 | CRM64Pro::Panel::save (const string &sFileCDC) |
| 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. | |
| #define GUI_PANEL 0x42000000 |
GUI Object: Panel.
| #define GUI_CONSOLE 0x44000000 |
GUI Object: Console.
| #define GUI_DEBUGWINDOW 0x48000000 |
GUI Object: DebugWindow.
| enum CRM64Pro::ePanelType |
Panel Type.
| Sint32 CRM64Pro::GUIMgr::info | ( | Sint32 | iMode = 0 | ) |
Request GUI Manager information.
Writes information to the default log.
| iMode | -1 for Manager info only. 0 (default) for Manager and all Objects. A positive GUI id for Manager and that specific Object. |
| Sint32 CRM64Pro::GUIMgr::create | ( | const string & | sName, |
| Uint32 | iType = GUI_PANEL ) |
Creates a new GUI object.
| sName | The name for the GUI object (e.g. 'myPanel'). Must be unique and max 64 characters (truncated if longer). |
| iType | GUI Object type (GUI_PANEL, GUI_CONSOLE or GUI_DEBUGWINDOW) OR'ed with version (10 = v1.0, only version supported). Default is GUI_PANEL with v1.0. |
| Sint32 CRM64Pro::GUIMgr::close | ( | Sint32 | idGUI | ) |
Close and destroy a GUI object.
| idGUI | 0 for closing all GUI objects or a specific GUI id. The default console cannot be removed. Shared Panel ids are not removed until the last owner calls this method. |
| Sint32 CRM64Pro::GUIMgr::getNum | ( | ) | const |
Get number of loaded objects.
| Sint32 CRM64Pro::GUIMgr::setName | ( | Sint32 | idGUI, |
| const string & | sName ) |
Change the object name.
| idGUI | GUI id. Can be a Panel, Console or DebugWindow. |
| sName | The name to give to the object (e.g. 'myPanel'). Must be unique and max 64 characters (truncated if longer). |
| Panel * CRM64Pro::GUIMgr::getPanel | ( | Sint32 | idGUI = 0 | ) |
| Sint32 CRM64Pro::GUIMgr::getPanelFocus | ( | ) |
Get the GUI Panel id with the focus.
| Sint32 CRM64Pro::GUIMgr::setPanelFocus | ( | Sint32 | idGUI | ) |
| Console * CRM64Pro::GUIMgr::getConsole | ( | Sint32 | idGUI = GUI_CONSOLE | ) |
| DebugWindow * CRM64Pro::GUIMgr::getDebugWindow | ( | Sint32 | idGUI = 0 | ) |
Get a pointer to a DebugWindow using its handler.
| idGUI | DebugWindow GUI id. |
| Sint32 CRM64Pro::GUIMgr::load | ( | const string & | sFileCDC, |
| const string & | sName ) |
Load a panel and its widgets stored in a CDC file.
The GUI Manager can share Panel ids based on name, checking if already loaded before creating new ones.
| sFileCDC | string containing [directory]+filename. Directory separators '\' and '/' are supported. |
| sName | string with the panel name (max 64 characters). |
| Sint32 CRM64Pro::GUIMgr::load | ( | Sint32 | idCDC, |
| const string & | sName ) |
Load a panel and its widgets stored in a CDC file.
The GUI Manager has the ability of sharing Panel ids based on the name as the key, so before trying to load a new one, it checks if it is already loaded for sharing it.
| idCDC | CDC id. |
| sName | string with the panel name (maximum size of 64 characters). |
| Sint32 CRM64Pro::GUIMgr::remove | ( | Sint32 | idCDC, |
| const string & | sName ) |
Remove a panel and its widgets stored in a CDC file.
| idCDC | CDC id. |
| sName | string with the panel name (max 64 characters). |
| Sint32 CRM64Pro::GUIMgr::getFontWhiteAA | ( | ) |
Get the built-in white font.
Used by default for all GUI systems. Created from CourierNew 10 with antialiasing.
| Sint32 CRM64Pro::GUIMgr::getFontBlack | ( | ) |
Get the built-in black font.
It is created from an Arial 12 without antialising.
| Sint32 CRM64Pro::GUIMgr::getIconInfo | ( | ) |
Get the built-in info icon.
| Sint32 CRM64Pro::GUIMgr::getIconWarning | ( | ) |
Get the built-in warning icon.
| Sint32 CRM64Pro::GUIMgr::getIconError | ( | ) |
Get the built-in error icon.
| Sint32 CRM64Pro::Console::info | ( | Sint32 | iMode = 0 | ) |
Request Console information.
Writes information to the default log.
| iMode | unused for the time being. |
| Sint32 CRM64Pro::Console::getName | ( | string & | sName | ) |
Get the name.
| sName | a string containing the object name. |
| Uint32 CRM64Pro::Console::getID | ( | ) |
Get the ID.
| Widget & CRM64Pro::Console::baseWidget | ( | ) |
| Sint32 CRM64Pro::Console::attachTo | ( | Sint32 | idScreen | ) |
Attach this console to a screen.
| idScreen | a valid screen handle. Default is the default screen (0). |
| Sint32 CRM64Pro::Console::print | ( | const char * | format, |
| ... ) |
Print a formatted message to the console.
| format | format control, same as printf() function. |
| ... | optional arguments, same as printf() function. |
| Sint32 CRM64Pro::Console::vPrint | ( | const char * | format, |
| va_list | args ) |
Print a formatted message to the console.
| format | format control, same as printf() function. |
| args | pointer to list of arguments, same as vprintf() function. |
| Sint32 CRM64Pro::Console::addCmdHandler | ( | const string & | sCommandName, |
| const string & | sCommandHelp, | ||
| Sint32(* | cmdFunc )(vector< string > *, Console *pCon) ) |
Add a new command handler to the console.
| sCommandName | string with the command name (must be unique). Reserved commands: 'con' (Console control), 'dw' (Debug Window control), 'help' (List all commands). |
| sCommandHelp | string with a brief command description. |
| cmdFunc | pointer to the function handler. The vector<string*> parameter contains the tokenized command and Console* is the calling console. Must return 0 on success or negative on error. |
| Sint32 CRM64Pro::Console::executeCmd | ( | const string & | sCmd | ) |
Execute a command on this console.
| sCmd | string with the command plus arguments to be executed by this console. |
| Sint32 CRM64Pro::DebugWindow::info | ( | Sint32 | iMode = 0 | ) |
Request DebugWindow information.
Writes information to the default log.
| iMode | unused for the time being. |
| Sint32 CRM64Pro::DebugWindow::getName | ( | string & | sName | ) |
Get the name.
| sName | a string containing the object name. |
| Uint32 CRM64Pro::DebugWindow::getID | ( | ) |
Get the ID.
| Widget & CRM64Pro::DebugWindow::baseWidget | ( | ) |
| Sint32 CRM64Pro::DebugWindow::addWatch | ( | const string & | sName, |
| Sint32 * | iIntegerVar, | ||
| float * | fFloatVar = nullptr ) |
Add a watch.
| sName | watch name. Must be unique. |
| iIntegerVar | a pointer to an integer variable to be associated to this watch. nullptr for doing nothing. |
| fFloatVar | a pointer to a float variable to be associated to this watch. nullptr for doing nothing. |
| Sint32 CRM64Pro::DebugWindow::removeWatch | ( | const string & | sName | ) |
Remove a watch.
| sName | watch name. |
| Sint32 CRM64Pro::DebugWindow::attachTo | ( | Sint32 | idScreen | ) |
Attach this debugwindow to a screen.
| idScreen | a valid screen handle. Default is the default screen (0). |
| Sint32 CRM64Pro::DebugWindow::setRefreshInterval | ( | Sint32 | iRefresh | ) |
Set the refresh interval.
| iRefresh | time interval in milliseconds for refreshing the value of the watches. By default it is set to 500ms. |
| Uint64 CRM64Pro::DebugWindow::getRefreshInterval | ( | ) |
Get the refresh interval.
| Sint32 CRM64Pro::Panel::info | ( | Sint32 | iMode = 0 | ) |
Request Panel information.
Writes information to the default log.
| iMode | unused for the time being. |
| Sint32 CRM64Pro::Panel::getName | ( | string & | sName | ) |
Get the name.
| sName | a string containing the object name. |
| Uint32 CRM64Pro::Panel::getID | ( | ) |
Get the ID.
| Widget & CRM64Pro::Panel::baseWidget | ( | ) |
| Sint32 CRM64Pro::Panel::attachTo | ( | Sint32 | idScreen | ) |
Attach this panel to a screen.
| idScreen | a valid screen handle. Default is the default screen (0). |
| Sint32 CRM64Pro::Panel::getScreen | ( | ) |
Return the screen id where this panel is attached to.
| Sint32 CRM64Pro::Panel::createWidget | ( | const string & | sName, |
| eWidgetType | eWT, | ||
| Sint32 | iWID ) |
Create a widget.
| sName | The widget name. Must be unique and max 64 characters (truncated if longer). |
| eWT | Widget type. Check ::eWidgetType for further information. |
| iWID | unsigned integer with the unique Widget ID. |
| Widget * CRM64Pro::Panel::getWidget | ( | Sint32 | iWID | ) |
| Sint32 CRM64Pro::Panel::closeWidget | ( | Sint32 | iWID | ) |
| Sint32 CRM64Pro::Panel::type | ( | ePanelType | ePT = PT_RETRIEVE, |
| Sint32 | iTime = 0 ) |
Set or get panel type.
| ePT | Panel type. Check ::ePanelType for further information. |
| iTime | Time to live (in milliseconds) for PT_EPHEMERAL panels. Minimum is 1000ms. |
| Sint32 CRM64Pro::Panel::save | ( | const string & | sFileCDC | ) |
Save the panel and all its widgets to a CDC file.
Widgets images/sprites will also be saved to the same CDC file.
| sFileCDC | string containing [directory]+filename+[extension]. Directory separators '\' and '/' are supported. |
| Sint32 CRM64Pro::Panel::save | ( | Sint32 | idCDC | ) |
Save the panel and all its widgets to a CDC file.
Widgets images/sprites will also be saved in to the same CDC file.
| idCDC | CDC id. |