wNim is Nim's Windows GUI Framework, based on winim. Layout DSL is powered by Yuriy Glukhov's Kiwi constraint solving library.
Basic code structure:
import wNim
let app = App()
let frame = Frame(title="Hello World", size=(400, 300))
frame.center()
frame.show()
app.mainLoop()
Event handler:
button.wEvent_Button do ():
frame.delete()
frame.wIdExit do ():
frame.delete()
frame.wEvent_Size do ():
layout()
Layout DSL:
panel.layout:
staticText:
top = panel.top + 10
left = panel.left + 10
button:
right + 10 = panel.right
bottom + 10 = panel.bottom
Getter and Setter:
let frame = Frame()
# wxWidgets/wxPython style
frame.setLabel("Hello World")
echo frame.getLabel()
# nim style
frame.label = "Hello World"
echo frame.label
With git on windows:
nimble install wNim
Without git:
1. Download and unzip this moudle (by click "Clone or download" button).
2. Start a console, change current dir to the folder which include "wNim.nimble" file.
(for example: C:\wNim-master\wNim-master>)
3. Run "nimble install"
To compile the examples, try following command:
nim c -d:release --opt:size --passL:-s --app:gui demo.nim
For Windows XP compatibility, add:
-d:useWinXP
To compile by Tiny C Compiler, or want to add some resource files, take a look at https://github.com/khchen/winim/tree/master/tcclib
In the first, I just wanted to write some code to test and prove my winim library. I wrote some event handler, some GUI control class, more and more...Finally, it become a whole GUI framework now.
English is not my mother tongue, I often have no idea how to name an object or a function. So I borrow wxWidgets' names to develop my own framework.
I start from winim. It is just a Windows API module.
They are all good GUI librarys. I think wNim is easier to use and produce smaller exe file. However, it only support Windows system.
Read license.txt for more details.
Copyright (c) 2017-2018 Kai-Hung Chen, Ward. All rights reserved.