xgui

XGui is a tool for nigui that imports xml files and turns them into nim at compile-time.

Pure Nim score 15/100 · tests present · no docs generated

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

nimble Build Status

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