xgui
XGui is a tool for nigui that imports xml files and turns them into nim at compile-time.
Summary
| Latest Version | Unknown |
|---|---|
| License | MIT |
| CI Status | Failing |
| Downloads | 0 |
| Last Indexed | 2026-07-21 05:25 |
Tags
Installation
nimble install xgui
choosenim install xgui
git clone https://github.com/thatrandomperson5/xgui-nim
OS Compatibility
| Platform | Linux | macOS | Windows | FreeBSD | OpenBSD | NetBSD | Android | iOS | WASM | Embedded |
|---|---|---|---|---|---|---|---|---|---|---|
| xgui | ✓ | ✓ | ✓ | - | - | - | - | - | - | - |
Source
| Repository | https://github.com/thatrandomperson5/xgui-nim |
|---|---|
| Homepage | https://github.com/thatrandomperson5/xgui-nim |
| Registry Source | nimble_official |
README
xgui-nim
XGui is a tool for nigui that imports xml files and turns them into nim at compile-time.
You can install it using the command below:
nimble install https://github.com/thatrandomperson5/xgui-nim.git
Examples
These examples are all the equivalent from nigui exmaples * basic app (1) | xml * controls (2) | xml
Running tests
Run the comannds below
git clone https://github.com/thatrandomperson5/xgui-nim.git
cd xgui-nim
nimble test
Docs
The docs are here: thatrandomperson5.github.io/xgui-nim
XGui-specific features
- Parent pointer, points to the parent of the script tag
- Tags, allow flagging and finding of elements
- Border-crossing with the link tag
Tracing
I know becuase of compile time and remote code and other factors, the tracbacks can be really confusing, so i made a tool.
Just run nimble install terminaltables and compile with -d:xguiTrace, the expanded code will be dumped along with a trace table. (Expanded code is not easy on the eyes)
The trace table looks something like this:
Printing trace:
+--------------------------+-----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Tag | Tag-Flags | Attrs |
+--------------------------+-----------+---------------------------------------------------------------------------------------------------------------------------------------------------------------+
| <Window /> | | width: 100, title: "xgui w/ nigui" |
| <LayoutContainer /> | | layout: Layout_Horizontal |
| <l /> | | |
| <Container /> | | |
| <TextArea /> | txt | |
| <Button /> | thebutton | |
| <LayoutContainer /> | | |
| <LayoutContainer /> | | frame: newFrame("Row 1: Auto-sized"), layout: Layout_Horizontal |
| <Button /> | | |
| <Button /> | | |
| <Button /> | | |
| <LayoutContainer /> | | frame: newFrame("Row 2: Auto-sized, more padding"), layout: Layout_Horizontal, padding: 10 |
| <Button /> | | |
| <Button /> | | |
| <Button /> | | |
| <LayoutContainer /> | | frame: newFrame("Row 3: Auto-sized, more spacing"), spacing: 15, layout: Layout_Horizontal |
| <Button /> | | |
| <Button /> | | |
| <Button /> | | |
| <LayoutContainer /> | | frame: newFrame("Row 4: Controls expanded"), layout: Layout_Horizontal |
| <Button /> | | widthMode: WidthMode_Expand |
| <Button /> | | widthMode: WidthMode_Expand |
| <Button /> | | widthMode: WidthMode_Expand |
| <LayoutContainer /> | | frame: newFrame("Row 5: Controls centered"), widthMode: WidthMode_Expand, xAlign: XAlign_Center, layout: Layout_Horizontal, yAlign: YAlign_Center, height: 80 |
| <Button /> | | |
| <Button /> | | |
| <Button /> | | |
---------------------------+-----------+----------------------------------------------------------------------------------------------------------------------------------------------------------------
Future
Add more exmaples
