From 5f1cbac382bcff0c29fe4a5da83cf932d0c5564d Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Thu, 4 Jul 2024 16:02:17 +0000
Subject: [PATCH] Deploy to GitHub pages
---
CNAME | 1 +
dochack.js | 1609 ++++++++++
index.html | 6790 +++++++++++++++++++++++++++++++++++++++
nimdoc.out.css | 1026 ++++++
theindex.html | 2954 +++++++++++++++++
uing.html | 6790 +++++++++++++++++++++++++++++++++++++++
uing.idx | 443 +++
uing/genui.html | 176 +
uing/nimdoc.out.css | 1026 ++++++
uing/rawui.html | 7462 +++++++++++++++++++++++++++++++++++++++++++
uing/rawui.idx | 402 +++
uing/uing.html | 6 +
12 files changed, 28685 insertions(+)
create mode 100644 CNAME
create mode 100644 dochack.js
create mode 100644 index.html
create mode 100644 nimdoc.out.css
create mode 100644 theindex.html
create mode 100644 uing.html
create mode 100644 uing.idx
create mode 100644 uing/genui.html
create mode 100644 uing/nimdoc.out.css
create mode 100644 uing/rawui.html
create mode 100644 uing/rawui.idx
create mode 100644 uing/uing.html
diff --git a/CNAME b/CNAME
new file mode 100644
index 0000000..817bf98
--- /dev/null
+++ b/CNAME
@@ -0,0 +1 @@
+uing.nim.town
diff --git a/dochack.js b/dochack.js
new file mode 100644
index 0000000..fc79c1e
--- /dev/null
+++ b/dochack.js
@@ -0,0 +1,1609 @@
+/* Generated by the Nim Compiler v2.0.8 */
+var framePtr = null;
+var excHandler = 0;
+var lastJSError = null;
+var NTI33554466 = {size: 0,kind: 1,base: null,node: null,finalizer: null};
+var NTI721420302 = {size: 0, kind: 18, base: null, node: null, finalizer: null};
+var NTI33554435 = {size: 0,kind: 31,base: null,node: null,finalizer: null};
+var NTI973078607 = {size: 0,kind: 31,base: null,node: null,finalizer: null};
+var NTI973078613 = {size: 0, kind: 18, base: null, node: null, finalizer: null};
+var NTI134217745 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
+var NTI134217749 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
+var NTI134217751 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
+var NTI33555173 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
+var NTI33555181 = {size: 0, kind: 22, base: null, node: null, finalizer: null};
+var NTI33554449 = {size: 0,kind: 28,base: null,node: null,finalizer: null};
+var NTI33554450 = {size: 0,kind: 29,base: null,node: null,finalizer: null};
+var NTI33555180 = {size: 0, kind: 22, base: null, node: null, finalizer: null};
+var NTI33555177 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
+var NTI33555178 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
+var NTI134217741 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
+var NTI134217743 = {size: 0, kind: 17, base: null, node: null, finalizer: null};
+var NNI134217743 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
+NTI134217743.node = NNI134217743;
+var NNI134217741 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
+NTI134217741.node = NNI134217741;
+var NNI33555178 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
+NTI33555178.node = NNI33555178;
+NTI33555180.base = NTI33555177;
+NTI33555181.base = NTI33555177;
+var NNI33555177 = {kind: 2, len: 5, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "parent", len: 0, typ: NTI33555180, name: "parent", sons: null},
+{kind: 1, offset: "name", len: 0, typ: NTI33554450, name: "name", sons: null},
+{kind: 1, offset: "message", len: 0, typ: NTI33554449, name: "msg", sons: null},
+{kind: 1, offset: "trace", len: 0, typ: NTI33554449, name: "trace", sons: null},
+{kind: 1, offset: "up", len: 0, typ: NTI33555181, name: "up", sons: null}]};
+NTI33555177.node = NNI33555177;
+var NNI33555173 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
+NTI33555173.node = NNI33555173;
+NTI33555177.base = NTI33555173;
+NTI33555178.base = NTI33555177;
+NTI134217741.base = NTI33555178;
+NTI134217743.base = NTI134217741;
+var NNI134217751 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
+NTI134217751.node = NNI134217751;
+NTI134217751.base = NTI33555178;
+var NNI134217749 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
+NTI134217749.node = NNI134217749;
+NTI134217749.base = NTI33555178;
+var NNI134217745 = {kind: 2, len: 0, offset: 0, typ: null, name: null, sons: []};
+NTI134217745.node = NNI134217745;
+NTI134217745.base = NTI33555178;
+var NNI973078613 = {kind: 2, len: 2, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "a", len: 0, typ: NTI973078607, name: "a", sons: null},
+{kind: 1, offset: "b", len: 0, typ: NTI33554435, name: "b", sons: null}]};
+NTI973078613.node = NNI973078613;
+var NNI721420302 = {kind: 2, len: 2, offset: 0, typ: null, name: null, sons: [{kind: 1, offset: "Field0", len: 0, typ: NTI33554435, name: "Field0", sons: null},
+{kind: 1, offset: "Field1", len: 0, typ: NTI33554466, name: "Field1", sons: null}]};
+NTI721420302.node = NNI721420302;
+
+function mnewString(len_33557003) {
+ var result = new Array(len_33557003);
+ for (var i = 0; i < len_33557003; i++) {result[i] = 0;}
+ return result;
+
+
+
+}
+
+function toJSStr(s_33556901) {
+ var result_33556902 = null;
+
+ var res_33556943 = newSeq_33556919((s_33556901).length);
+ var i_33556944 = 0;
+ var j_33556945 = 0;
+ Label1: {
+ Label2: while (true) {
+ if (!(i_33556944 < (s_33556901).length)) break Label2;
+ var c_33556946 = s_33556901[i_33556944];
+ if ((c_33556946 < 128)) {
+ res_33556943[j_33556945] = String.fromCharCode(c_33556946);
+ i_33556944 += 1;
+ }
+ else {
+ var helper_33556959 = newSeq_33556919(0);
+ Label3: {
+ Label4: while (true) {
+ if (!true) break Label4;
+ var code_33556960 = c_33556946.toString(16);
+ if ((((code_33556960) == null ? 0 : (code_33556960).length) == 1)) {
+ helper_33556959.push("%0");;
+ }
+ else {
+ helper_33556959.push("%");;
+ }
+
+ helper_33556959.push(code_33556960);;
+ i_33556944 += 1;
+ if ((((s_33556901).length <= i_33556944) || (s_33556901[i_33556944] < 128))) {
+ break Label3;
+ }
+
+ c_33556946 = s_33556901[i_33556944];
+ }
+ };
+++excHandler;
+ try {
+ res_33556943[j_33556945] = decodeURIComponent(helper_33556959.join(""));
+--excHandler;
+} catch (EXCEPTION) {
+ var prevJSError = lastJSError;
+ lastJSError = EXCEPTION;
+ --excHandler;
+ res_33556943[j_33556945] = helper_33556959.join("");
+ lastJSError = prevJSError;
+ } finally {
+ }
+ }
+
+ j_33556945 += 1;
+ }
+ };
+ if (res_33556943.length < j_33556945) { for (var i = res_33556943.length ; i < j_33556945 ; ++i) res_33556943.push(null); }
+ else { res_33556943.length = j_33556945; };
+ result_33556902 = res_33556943.join("");
+
+ return result_33556902;
+
+}
+
+function raiseException(e_33556653, ename_33556654) {
+ e_33556653.name = ename_33556654;
+ if ((excHandler == 0)) {
+ unhandledException(e_33556653);
+ }
+
+ throw e_33556653;
+
+
+}
+
+function addInt(a_33557050, b_33557051) {
+ var result = a_33557050 + b_33557051;
+ checkOverflowInt(result);
+ return result;
+
+
+
+}
+
+function chckRange(i_33557324, a_33557325, b_33557326) {
+ var result_33557327 = 0;
+
+ BeforeRet: {
+ if (((a_33557325 <= i_33557324) && (i_33557324 <= b_33557326))) {
+ result_33557327 = i_33557324;
+ break BeforeRet;
+ }
+ else {
+ raiseRangeError();
+ }
+
+ };
+
+ return result_33557327;
+
+}
+
+function setConstr() {
+ var result = {};
+ for (var i = 0; i < arguments.length; ++i) {
+ var x = arguments[i];
+ if (typeof(x) == "object") {
+ for (var j = x[0]; j <= x[1]; ++j) {
+ result[j] = true;
+ }
+ } else {
+ result[x] = true;
+ }
+ }
+ return result;
+
+
+
+}
+var ConstSet1 = setConstr(17, 16, 4, 18, 27, 19, 23, 22, 21);
+
+function nimCopy(dest_33557268, src_33557269, ti_33557270) {
+ var result_33557279 = null;
+
+ switch (ti_33557270.kind) {
+ case 21:
+ case 22:
+ case 23:
+ case 5:
+ if (!(isFatPointer_33557259(ti_33557270))) {
+ result_33557279 = src_33557269;
+ }
+ else {
+ result_33557279 = [src_33557269[0], src_33557269[1]];
+ }
+
+ break;
+ case 19:
+ if (dest_33557268 === null || dest_33557268 === undefined) {
+ dest_33557268 = {};
+ }
+ else {
+ for (var key in dest_33557268) { delete dest_33557268[key]; }
+ }
+ for (var key in src_33557269) { dest_33557268[key] = src_33557269[key]; }
+ result_33557279 = dest_33557268;
+
+ break;
+ case 18:
+ case 17:
+ if (!((ti_33557270.base == null))) {
+ result_33557279 = nimCopy(dest_33557268, src_33557269, ti_33557270.base);
+ }
+ else {
+ if ((ti_33557270.kind == 17)) {
+ result_33557279 = (dest_33557268 === null || dest_33557268 === undefined) ? {m_type: ti_33557270} : dest_33557268;
+ }
+ else {
+ result_33557279 = (dest_33557268 === null || dest_33557268 === undefined) ? {} : dest_33557268;
+ }
+ }
+ nimCopyAux(result_33557279, src_33557269, ti_33557270.node);
+ break;
+ case 4:
+ case 16:
+ if(ArrayBuffer.isView(src_33557269)) {
+ if(dest_33557268 === null || dest_33557268 === undefined || dest_33557268.length != src_33557269.length) {
+ dest_33557268 = new src_33557269.constructor(src_33557269);
+ } else {
+ dest_33557268.set(src_33557269, 0);
+ }
+ result_33557279 = dest_33557268;
+ } else {
+ if (src_33557269 === null) {
+ result_33557279 = null;
+ }
+ else {
+ if (dest_33557268 === null || dest_33557268 === undefined || dest_33557268.length != src_33557269.length) {
+ dest_33557268 = new Array(src_33557269.length);
+ }
+ result_33557279 = dest_33557268;
+ for (var i = 0; i < src_33557269.length; ++i) {
+ result_33557279[i] = nimCopy(result_33557279[i], src_33557269[i], ti_33557270.base);
+ }
+ }
+ }
+
+ break;
+ case 24:
+ case 27:
+ if (src_33557269 === null) {
+ result_33557279 = null;
+ }
+ else {
+ if (dest_33557268 === null || dest_33557268 === undefined || dest_33557268.length != src_33557269.length) {
+ dest_33557268 = new Array(src_33557269.length);
+ }
+ result_33557279 = dest_33557268;
+ for (var i = 0; i < src_33557269.length; ++i) {
+ result_33557279[i] = nimCopy(result_33557279[i], src_33557269[i], ti_33557270.base);
+ }
+ }
+
+ break;
+ case 28:
+ if (src_33557269 !== null) {
+ result_33557279 = src_33557269.slice(0);
+ }
+
+ break;
+ default:
+ result_33557279 = src_33557269;
+ break;
+ }
+
+ return result_33557279;
+
+}
+
+function chckIndx(i_33557319, a_33557320, b_33557321) {
+ var result_33557322 = 0;
+
+ BeforeRet: {
+ if (((a_33557320 <= i_33557319) && (i_33557319 <= b_33557321))) {
+ result_33557322 = i_33557319;
+ break BeforeRet;
+ }
+ else {
+ raiseIndexError(i_33557319, a_33557320, b_33557321);
+ }
+
+ };
+
+ return result_33557322;
+
+}
+
+function makeNimstrLit(c_33556895) {
+ var result = [];
+ for (var i = 0; i < c_33556895.length; ++i) {
+ result[i] = c_33556895.charCodeAt(i);
+ }
+ return result;
+
+
+
+}
+
+function subInt(a_33557054, b_33557055) {
+ var result = a_33557054 - b_33557055;
+ checkOverflowInt(result);
+ return result;
+
+
+
+}
+
+function cstrToNimstr(c_33556898) {
+ var ln = c_33556898.length;
+ var result = new Array(ln);
+ var r = 0;
+ for (var i = 0; i < ln; ++i) {
+ var ch = c_33556898.charCodeAt(i);
+
+ if (ch < 128) {
+ result[r] = ch;
+ }
+ else {
+ if (ch < 2048) {
+ result[r] = (ch >> 6) | 192;
+ }
+ else {
+ if (ch < 55296 || ch >= 57344) {
+ result[r] = (ch >> 12) | 224;
+ }
+ else {
+ ++i;
+ ch = 65536 + (((ch & 1023) << 10) | (c_33556898.charCodeAt(i) & 1023));
+ result[r] = (ch >> 18) | 240;
+ ++r;
+ result[r] = ((ch >> 12) & 63) | 128;
+ }
+ ++r;
+ result[r] = ((ch >> 6) & 63) | 128;
+ }
+ ++r;
+ result[r] = (ch & 63) | 128;
+ }
+ ++r;
+ }
+ return result;
+
+
+
+}
+var ConstSet2 = setConstr([65, 90]);
+var ConstSet3 = setConstr(95, 32, 46);
+var ConstSet4 = setConstr(95, 32, 46);
+
+function mulInt(a_33557058, b_33557059) {
+ var result = a_33557058 * b_33557059;
+ checkOverflowInt(result);
+ return result;
+
+
+
+}
+var ConstSet5 = setConstr([97, 122]);
+var ConstSet6 = setConstr([65, 90], [97, 122]);
+var ConstSet7 = setConstr([97, 122]);
+var ConstSet8 = setConstr([65, 90]);
+var ConstSet9 = setConstr([65, 90], [97, 122]);
+
+function nimMax(a_33557108, b_33557109) {
+ var Temporary1;
+
+ var result_33557110 = 0;
+
+ BeforeRet: {
+ if ((b_33557109 <= a_33557108)) {
+ Temporary1 = a_33557108;
+ }
+ else {
+ Temporary1 = b_33557109;
+ }
+
+ result_33557110 = Temporary1;
+ break BeforeRet;
+ };
+
+ return result_33557110;
+
+}
+
+function nimMin(a_33557104, b_33557105) {
+ var Temporary1;
+
+ var result_33557106 = 0;
+
+ BeforeRet: {
+ if ((a_33557104 <= b_33557105)) {
+ Temporary1 = a_33557104;
+ }
+ else {
+ Temporary1 = b_33557105;
+ }
+
+ result_33557106 = Temporary1;
+ break BeforeRet;
+ };
+
+ return result_33557106;
+
+}
+
+function addChar(x_33557415, c_33557416) {
+ x_33557415.push(c_33557416);
+
+
+}
+var objectID_1207959729 = [0];
+
+function setTheme(theme_570425350) {
+ document.documentElement.setAttribute("data-theme", theme_570425350);
+ window.localStorage.setItem("theme", theme_570425350);
+
+
+}
+
+function add_33556373(x_33556374, x_33556374_Idx, y_33556375) {
+ if (x_33556374[x_33556374_Idx] === null) { x_33556374[x_33556374_Idx] = []; }
+ var off = x_33556374[x_33556374_Idx].length;
+ x_33556374[x_33556374_Idx].length += y_33556375.length;
+ for (var i = 0; i < y_33556375.length; ++i) {
+ x_33556374[x_33556374_Idx][off+i] = y_33556375.charCodeAt(i);
+ }
+
+
+
+}
+
+function newSeq_33556919(len_33556921) {
+ var result_33556922 = [];
+
+ result_33556922 = new Array(len_33556921); for (var i = 0 ; i < len_33556921 ; ++i) { result_33556922[i] = null; }
+ return result_33556922;
+
+}
+
+function unhandledException(e_33556649) {
+ var buf_33556650 = [[]];
+ if (!(((e_33556649.message).length == 0))) {
+ buf_33556650[0].push.apply(buf_33556650[0], [69,114,114,111,114,58,32,117,110,104,97,110,100,108,101,100,32,101,120,99,101,112,116,105,111,110,58,32]);;
+ buf_33556650[0].push.apply(buf_33556650[0], e_33556649.message);;
+ }
+ else {
+ buf_33556650[0].push.apply(buf_33556650[0], [69,114,114,111,114,58,32,117,110,104,97,110,100,108,101,100,32,101,120,99,101,112,116,105,111,110]);;
+ }
+
+ buf_33556650[0].push.apply(buf_33556650[0], [32,91]);;
+ add_33556373(buf_33556650, 0, e_33556649.name);
+ buf_33556650[0].push.apply(buf_33556650[0], [93,10]);;
+ var cbuf_33556651 = toJSStr(buf_33556650[0]);
+ if (typeof(Error) !== "undefined") {
+ throw new Error(cbuf_33556651);
+ }
+ else {
+ throw cbuf_33556651;
+ }
+
+
+
+}
+
+function raiseOverflow() {
+ raiseException({message: [111,118,101,114,45,32,111,114,32,117,110,100,101,114,102,108,111,119], parent: null, m_type: NTI134217743, name: null, trace: [], up: null}, "OverflowDefect");
+
+
+}
+
+function checkOverflowInt(a_33557048) {
+ if (a_33557048 > 2147483647 || a_33557048 < -2147483648) raiseOverflow();
+
+
+
+}
+
+function raiseRangeError() {
+ raiseException({message: [118,97,108,117,101,32,111,117,116,32,111,102,32,114,97,110,103,101], parent: null, m_type: NTI134217751, name: null, trace: [], up: null}, "RangeDefect");
+
+
+}
+
+function addChars_301990090(result_301990092, result_301990092_Idx, x_301990093, start_301990094, n_301990095) {
+ var Temporary1;
+
+ var old_301990096 = (result_301990092[result_301990092_Idx]).length;
+ if (result_301990092[result_301990092_Idx].length < (Temporary1 = chckRange(addInt(old_301990096, n_301990095), 0, 2147483647), Temporary1)) { for (var i = result_301990092[result_301990092_Idx].length; i < Temporary1; ++i) result_301990092[result_301990092_Idx].push(0); }
+ else {result_301990092[result_301990092_Idx].length = Temporary1; };
+ Label2: {
+ var iHEX60gensym4_301990110 = 0;
+ var i_570426545 = 0;
+ Label3: {
+ Label4: while (true) {
+ if (!(i_570426545 < n_301990095)) break Label4;
+ iHEX60gensym4_301990110 = i_570426545;
+ result_301990092[result_301990092_Idx][chckIndx(addInt(old_301990096, iHEX60gensym4_301990110), 0, (result_301990092[result_301990092_Idx]).length - 1)] = x_301990093.charCodeAt(chckIndx(addInt(start_301990094, iHEX60gensym4_301990110), 0, (x_301990093).length - 1));
+ i_570426545 = addInt(i_570426545, 1);
+ }
+ };
+ };
+
+
+}
+
+function addChars_301990086(result_301990088, result_301990088_Idx, x_301990089) {
+ addChars_301990090(result_301990088, result_301990088_Idx, x_301990089, 0, ((x_301990089) == null ? 0 : (x_301990089).length));
+
+
+}
+
+function addInt_301990111(result_301990112, result_301990112_Idx, x_301990113) {
+ addChars_301990086(result_301990112, result_301990112_Idx, ((x_301990113) + ""));
+
+
+}
+
+function addInt_301990129(result_301990130, result_301990130_Idx, x_301990131) {
+ addInt_301990111(result_301990130, result_301990130_Idx, BigInt(x_301990131));
+
+
+}
+
+function HEX24_385875976(x_385875977) {
+ var result_385875978 = [[]];
+
+ addInt_301990129(result_385875978, 0, x_385875977);
+
+ return result_385875978[0];
+
+}
+
+function isFatPointer_33557259(ti_33557260) {
+ var result_33557261 = false;
+
+ BeforeRet: {
+ result_33557261 = !((ConstSet1[ti_33557260.base.kind] != undefined));
+ break BeforeRet;
+ };
+
+ return result_33557261;
+
+}
+
+function nimCopyAux(dest_33557272, src_33557273, n_33557274) {
+ switch (n_33557274.kind) {
+ case 0:
+ break;
+ case 1:
+ dest_33557272[n_33557274.offset] = nimCopy(dest_33557272[n_33557274.offset], src_33557273[n_33557274.offset], n_33557274.typ);
+
+ break;
+ case 2:
+ for (var i = 0; i < n_33557274.sons.length; i++) {
+ nimCopyAux(dest_33557272, src_33557273, n_33557274.sons[i]);
+ }
+
+ break;
+ case 3:
+ dest_33557272[n_33557274.offset] = nimCopy(dest_33557272[n_33557274.offset], src_33557273[n_33557274.offset], n_33557274.typ);
+ for (var i = 0; i < n_33557274.sons.length; ++i) {
+ nimCopyAux(dest_33557272, src_33557273, n_33557274.sons[i][1]);
+ }
+
+ break;
+ }
+
+
+}
+
+function raiseIndexError(i_33556812, a_33556813, b_33556814) {
+ var Temporary1;
+
+ if ((b_33556814 < a_33556813)) {
+ Temporary1 = [105,110,100,101,120,32,111,117,116,32,111,102,32,98,111,117,110,100,115,44,32,116,104,101,32,99,111,110,116,97,105,110,101,114,32,105,115,32,101,109,112,116,121];
+ }
+ else {
+ Temporary1 = ([105,110,100,101,120,32] || []).concat(HEX24_385875976(i_33556812) || [],[32,110,111,116,32,105,110,32] || [],HEX24_385875976(a_33556813) || [],[32,46,46,32] || [],HEX24_385875976(b_33556814) || []);
+ }
+
+ raiseException({message: nimCopy(null, Temporary1, NTI33554449), parent: null, m_type: NTI134217749, name: null, trace: [], up: null}, "IndexDefect");
+
+
+}
+
+function sysFatal_268435501(message_268435504) {
+ raiseException({message: nimCopy(null, message_268435504, NTI33554449), m_type: NTI134217745, parent: null, name: null, trace: [], up: null}, "AssertionDefect");
+
+
+}
+
+function raiseAssert_268435499(msg_268435500) {
+ sysFatal_268435501(msg_268435500);
+
+
+}
+
+function failedAssertImpl_268435541(msg_268435542) {
+ raiseAssert_268435499(msg_268435542);
+
+
+}
+
+function onDOMLoaded(e_570425385) {
+
+function HEX3Aanonymous_570425409(event_570425410) {
+ event_570425410.target.parentNode.style.display = "none";
+ event_570425410.target.parentNode.nextSibling.style.display = "inline";
+
+
+ }
+
+ document.getElementById("theme-select").value = window.localStorage.getItem("theme");
+ Label1: {
+ var pragmaDots_570425408 = null;
+ var colontmp__570426536 = [];
+ colontmp__570426536 = document.getElementsByClassName("pragmadots");
+ var i_570426538 = 0;
+ var L_570426539 = (colontmp__570426536).length;
+ Label2: {
+ Label3: while (true) {
+ if (!(i_570426538 < L_570426539)) break Label3;
+ pragmaDots_570425408 = colontmp__570426536[chckIndx(i_570426538, 0, (colontmp__570426536).length - 1)];
+ pragmaDots_570425408.onclick = HEX3Aanonymous_570425409;
+ i_570426538 += 1;
+ if (!(((colontmp__570426536).length == L_570426539))) {
+ failedAssertImpl_268435541(makeNimstrLit("iterators.nim(254, 11) `len(a) == L` the length of the seq changed while iterating over it"));
+ }
+
+ }
+ };
+ };
+
+
+}
+
+function isWhitespace_570425752(x_570425753) {
+ var result_570425754 = false;
+
+ result_570425754 = (((x_570425753.nodeName == "#text") && !/\S/.test(x_570425753.textContent)) || (x_570425753.nodeName == "#comment"));
+
+ return result_570425754;
+
+}
+
+function toToc_570425755(x_570425756, father_570425757) {
+ var Temporary5;
+ var Temporary6;
+ var Temporary7;
+ var Temporary8;
+ var Temporary15;
+
+ if ((x_570425756.nodeName == "UL")) {
+ var f_570425765 = {heading: null, kids: [], sortId: (father_570425757.kids).length, doSort: false};
+ var i_570425766 = 0;
+ Label1: {
+ Label2: while (true) {
+ if (!(i_570425766 < x_570425756.childNodes.length)) break Label2;
+ var nxt_570425767 = addInt(i_570425766, 1);
+ Label3: {
+ Label4: while (true) {
+ if (!(nxt_570425767 < x_570425756.childNodes.length)) Temporary5 = false; else { Temporary5 = isWhitespace_570425752(x_570425756.childNodes[nxt_570425767]); } if (!Temporary5) break Label4;
+ nxt_570425767 = addInt(nxt_570425767, 1);
+ }
+ };
+ if (!(nxt_570425767 < x_570425756.childNodes.length)) Temporary8 = false; else { Temporary8 = (x_570425756.childNodes[i_570425766].nodeName == "LI"); } if (!Temporary8) Temporary7 = false; else { Temporary7 = (x_570425756.childNodes[i_570425766].childNodes.length == 1); } if (!Temporary7) Temporary6 = false; else { Temporary6 = (x_570425756.childNodes[nxt_570425767].nodeName == "UL"); } if (Temporary6) {
+ var e_570425780 = {heading: x_570425756.childNodes[i_570425766].childNodes[0], kids: [], sortId: (f_570425765.kids).length, doSort: false};
+ var it_570425781 = x_570425756.childNodes[nxt_570425767];
+ Label9: {
+ var j_570425786 = 0;
+ var colontmp__570426552 = 0;
+ colontmp__570426552 = it_570425781.childNodes.length;
+ var i_570426553 = 0;
+ Label10: {
+ Label11: while (true) {
+ if (!(i_570426553 < colontmp__570426552)) break Label11;
+ j_570425786 = i_570426553;
+ toToc_570425755(it_570425781.childNodes[j_570425786], e_570425780);
+ i_570426553 = addInt(i_570426553, 1);
+ }
+ };
+ };
+ f_570425765.kids.push(e_570425780);;
+ i_570425766 = addInt(nxt_570425767, 1);
+ }
+ else {
+ toToc_570425755(x_570425756.childNodes[i_570425766], f_570425765);
+ i_570425766 = addInt(i_570425766, 1);
+ }
+
+ }
+ };
+ father_570425757.kids.push(f_570425765);;
+ }
+ else {
+ if (isWhitespace_570425752(x_570425756)) {
+ }
+ else {
+ if ((x_570425756.nodeName == "LI")) {
+ var idx_570425804 = [];
+ Label12: {
+ var i_570425809 = 0;
+ var colontmp__570426556 = 0;
+ colontmp__570426556 = x_570425756.childNodes.length;
+ var i_570426557 = 0;
+ Label13: {
+ Label14: while (true) {
+ if (!(i_570426557 < colontmp__570426556)) break Label14;
+ i_570425809 = i_570426557;
+ if (!(isWhitespace_570425752(x_570425756.childNodes[i_570425809]))) {
+ idx_570425804.push(i_570425809);;
+ }
+
+ i_570426557 = addInt(i_570426557, 1);
+ }
+ };
+ };
+ if (!((idx_570425804).length == 2)) Temporary15 = false; else { Temporary15 = (x_570425756.childNodes[idx_570425804[chckIndx(1, 0, (idx_570425804).length - 1)]].nodeName == "UL"); } if (Temporary15) {
+ var e_570425825 = {heading: x_570425756.childNodes[idx_570425804[chckIndx(0, 0, (idx_570425804).length - 1)]], kids: [], sortId: (father_570425757.kids).length, doSort: false};
+ var it_570425826 = x_570425756.childNodes[idx_570425804[chckIndx(1, 0, (idx_570425804).length - 1)]];
+ Label16: {
+ var j_570425831 = 0;
+ var colontmp__570426560 = 0;
+ colontmp__570426560 = it_570425826.childNodes.length;
+ var i_570426561 = 0;
+ Label17: {
+ Label18: while (true) {
+ if (!(i_570426561 < colontmp__570426560)) break Label18;
+ j_570425831 = i_570426561;
+ toToc_570425755(it_570425826.childNodes[j_570425831], e_570425825);
+ i_570426561 = addInt(i_570426561, 1);
+ }
+ };
+ };
+ father_570425757.kids.push(e_570425825);;
+ }
+ else {
+ Label19: {
+ var i_570425840 = 0;
+ var colontmp__570426564 = 0;
+ colontmp__570426564 = x_570425756.childNodes.length;
+ var i_570426565 = 0;
+ Label20: {
+ Label21: while (true) {
+ if (!(i_570426565 < colontmp__570426564)) break Label21;
+ i_570425840 = i_570426565;
+ toToc_570425755(x_570425756.childNodes[i_570425840], father_570425757);
+ i_570426565 = addInt(i_570426565, 1);
+ }
+ };
+ };
+ }
+
+ }
+ else {
+ father_570425757.kids.push({heading: x_570425756, kids: [], sortId: (father_570425757.kids).length, doSort: false});;
+ }
+ }}
+
+
+}
+
+function extractItems_570425543(x_570425544, heading_570425545, items_570425546, items_570425546_Idx) {
+ BeforeRet: {
+ if ((x_570425544 == null)) {
+ break BeforeRet;
+ }
+
+ if ((!((x_570425544.heading == null)) && (x_570425544.heading.textContent == heading_570425545))) {
+ Label1: {
+ var i_570425563 = 0;
+ var colontmp__570426568 = 0;
+ colontmp__570426568 = (x_570425544.kids).length;
+ var i_570426569 = 0;
+ Label2: {
+ Label3: while (true) {
+ if (!(i_570426569 < colontmp__570426568)) break Label3;
+ i_570425563 = i_570426569;
+ items_570425546[items_570425546_Idx].push(x_570425544.kids[chckIndx(i_570425563, 0, (x_570425544.kids).length - 1)].heading);;
+ i_570426569 = addInt(i_570426569, 1);
+ }
+ };
+ };
+ }
+ else {
+ Label4: {
+ var k_570425589 = null;
+ var i_570426573 = 0;
+ var L_570426574 = (x_570425544.kids).length;
+ Label5: {
+ Label6: while (true) {
+ if (!(i_570426573 < L_570426574)) break Label6;
+ k_570425589 = x_570425544.kids[chckIndx(i_570426573, 0, (x_570425544.kids).length - 1)];
+ extractItems_570425543(k_570425589, heading_570425545, items_570425546, items_570425546_Idx);
+ i_570426573 += 1;
+ if (!(((x_570425544.kids).length == L_570426574))) {
+ failedAssertImpl_268435541(makeNimstrLit("iterators.nim(254, 11) `len(a) == L` the length of the seq changed while iterating over it"));
+ }
+
+ }
+ };
+ };
+ }
+
+ };
+
+
+}
+
+function tree_570425474(tag_570425475, kids_570425476) {
+ var result_570425477 = null;
+
+ result_570425477 = document.createElement(tag_570425475);
+ Label1: {
+ var k_570425491 = null;
+ var i_570426586 = 0;
+ Label2: {
+ Label3: while (true) {
+ if (!(i_570426586 < (kids_570425476).length)) break Label3;
+ k_570425491 = kids_570425476[chckIndx(i_570426586, 0, (kids_570425476).length - 1)];
+ result_570425477.appendChild(k_570425491);
+ i_570426586 += 1;
+ }
+ };
+ };
+
+ return result_570425477;
+
+}
+
+function text_570425499(s_570425500) {
+ var result_570425501 = null;
+
+ result_570425501 = document.createTextNode(s_570425500);
+
+ return result_570425501;
+
+}
+
+function uncovered_570425944(x_570425945) {
+ var Temporary1;
+
+ var result_570425946 = null;
+
+ BeforeRet: {
+ if ((((x_570425945.kids).length == 0) && !((x_570425945.heading == null)))) {
+ if (!(x_570425945.heading.hasOwnProperty('__karaxMarker__'))) {
+ Temporary1 = x_570425945;
+ }
+ else {
+ Temporary1 = null;
+ }
+
+ result_570425946 = Temporary1;
+ break BeforeRet;
+ }
+
+ result_570425946 = {heading: x_570425945.heading, kids: [], sortId: x_570425945.sortId, doSort: x_570425945.doSort};
+ Label2: {
+ var k_570425961 = null;
+ var i_570426593 = 0;
+ var L_570426594 = (x_570425945.kids).length;
+ Label3: {
+ Label4: while (true) {
+ if (!(i_570426593 < L_570426594)) break Label4;
+ k_570425961 = x_570425945.kids[chckIndx(i_570426593, 0, (x_570425945.kids).length - 1)];
+ var y_570425962 = uncovered_570425944(k_570425961);
+ if (!((y_570425962 == null))) {
+ result_570425946.kids.push(y_570425962);;
+ }
+
+ i_570426593 += 1;
+ if (!(((x_570425945.kids).length == L_570426594))) {
+ failedAssertImpl_268435541(makeNimstrLit("iterators.nim(254, 11) `len(a) == L` the length of the seq changed while iterating over it"));
+ }
+
+ }
+ };
+ };
+ if (((result_570425946.kids).length == 0)) {
+ result_570425946 = null;
+ }
+
+ };
+
+ return result_570425946;
+
+}
+
+function mergeTocs_570425974(orig_570425975, news_570425976) {
+ var result_570425977 = null;
+
+ result_570425977 = uncovered_570425944(orig_570425975);
+ if ((result_570425977 == null)) {
+ result_570425977 = news_570425976;
+ }
+ else {
+ Label1: {
+ var i_570425989 = 0;
+ var colontmp__570426589 = 0;
+ colontmp__570426589 = (news_570425976.kids).length;
+ var i_570426590 = 0;
+ Label2: {
+ Label3: while (true) {
+ if (!(i_570426590 < colontmp__570426589)) break Label3;
+ i_570425989 = i_570426590;
+ result_570425977.kids.push(news_570425976.kids[chckIndx(i_570425989, 0, (news_570425976.kids).length - 1)]);;
+ i_570426590 = addInt(i_570426590, 1);
+ }
+ };
+ };
+ }
+
+
+ return result_570425977;
+
+}
+
+function buildToc_570425994(orig_570425995, types_570425996, procs_570425997) {
+ var result_570425998 = null;
+
+ var newStuff_570426003 = {heading: null, kids: [], doSort: true, sortId: 0};
+ Label1: {
+ var t_570426007 = null;
+ var i_570426581 = 0;
+ var L_570426582 = (types_570425996).length;
+ Label2: {
+ Label3: while (true) {
+ if (!(i_570426581 < L_570426582)) break Label3;
+ t_570426007 = types_570425996[chckIndx(i_570426581, 0, (types_570425996).length - 1)];
+ var c_570426012 = {heading: t_570426007.cloneNode(true), kids: [], doSort: true, sortId: 0};
+ t_570426007.__karaxMarker__ = true;
+ Label4: {
+ var p_570426016 = null;
+ var i_570426578 = 0;
+ var L_570426579 = (procs_570425997).length;
+ Label5: {
+ Label6: while (true) {
+ if (!(i_570426578 < L_570426579)) break Label6;
+ p_570426016 = procs_570425997[chckIndx(i_570426578, 0, (procs_570425997).length - 1)];
+ if (!(p_570426016.hasOwnProperty('__karaxMarker__'))) {
+ var xx_570426017 = p_570426016.parentNode.getElementsByClassName("attachedType");
+ if ((((xx_570426017).length == 1) && (xx_570426017[chckIndx(0, 0, (xx_570426017).length - 1)].textContent == t_570426007.textContent))) {
+ var q_570426022 = tree_570425474("A", [text_570425499(p_570426016.title)]);
+ q_570426022.setAttribute("href", p_570426016.getAttribute("href"));
+ c_570426012.kids.push({heading: q_570426022, kids: [], sortId: 0, doSort: false});;
+ p_570426016.__karaxMarker__ = true;
+ }
+
+ }
+
+ i_570426578 += 1;
+ if (!(((procs_570425997).length == L_570426579))) {
+ failedAssertImpl_268435541(makeNimstrLit("iterators.nim(254, 11) `len(a) == L` the length of the seq changed while iterating over it"));
+ }
+
+ }
+ };
+ };
+ newStuff_570426003.kids.push(c_570426012);;
+ i_570426581 += 1;
+ if (!(((types_570425996).length == L_570426582))) {
+ failedAssertImpl_268435541(makeNimstrLit("iterators.nim(254, 11) `len(a) == L` the length of the seq changed while iterating over it"));
+ }
+
+ }
+ };
+ };
+ result_570425998 = mergeTocs_570425974(orig_570425995, newStuff_570426003);
+
+ return result_570425998;
+
+}
+
+function add_570425492(parent_570425493, kid_570425494) {
+ if (((parent_570425493.nodeName == "TR") && ((kid_570425494.nodeName == "TD") || (kid_570425494.nodeName == "TH")))) {
+ var k_570425495 = document.createElement("TD");
+ k_570425495.appendChild(kid_570425494);
+ parent_570425493.appendChild(k_570425495);
+ }
+ else {
+ parent_570425493.appendChild(kid_570425494);
+ }
+
+
+
+}
+
+function setClass_570425496(e_570425497, value_570425498) {
+ e_570425497.setAttribute("class", value_570425498);
+
+
+}
+
+function toHtml_570425622(x_570425623, isRoot_570425624) {
+
+function HEX3Aanonymous_570425642(a_570425643, b_570425644) {
+ var result_570425645 = 0;
+
+ BeforeRet: {
+ if ((!((a_570425643.heading == null)) && !((b_570425644.heading == null)))) {
+ var x_570425654 = a_570425643.heading.textContent;
+ var y_570425655 = b_570425644.heading.textContent;
+ if ((x_570425654 < y_570425655)) {
+ result_570425645 = (-1);
+ break BeforeRet;
+ }
+
+ if ((y_570425655 < x_570425654)) {
+ result_570425645 = 1;
+ break BeforeRet;
+ }
+
+ result_570425645 = 0;
+ break BeforeRet;
+ }
+ else {
+ result_570425645 = subInt(a_570425643.sortId, b_570425644.sortId);
+ break BeforeRet;
+ }
+
+ };
+
+ return result_570425645;
+
+ }
+
+ var result_570425625 = null;
+
+ BeforeRet: {
+ if ((x_570425623 == null)) {
+ result_570425625 = null;
+ break BeforeRet;
+ }
+
+ if (((x_570425623.kids).length == 0)) {
+ if ((x_570425623.heading == null)) {
+ result_570425625 = null;
+ break BeforeRet;
+ }
+
+ result_570425625 = x_570425623.heading.cloneNode(true);
+ break BeforeRet;
+ }
+
+ result_570425625 = tree_570425474("DIV", []);
+ if ((!((x_570425623.heading == null)) && !(x_570425623.heading.hasOwnProperty('__karaxMarker__')))) {
+ add_570425492(result_570425625, x_570425623.heading.cloneNode(true));
+ }
+
+ var ul_570425641 = tree_570425474("UL", []);
+ if (isRoot_570425624) {
+ setClass_570425496(ul_570425641, "simple simple-toc");
+ }
+ else {
+ setClass_570425496(ul_570425641, "simple");
+ }
+
+ if (x_570425623.doSort) {
+ x_570425623.kids.sort(HEX3Aanonymous_570425642);
+ }
+
+ Label1: {
+ var k_570425667 = null;
+ var i_570426597 = 0;
+ var L_570426598 = (x_570425623.kids).length;
+ Label2: {
+ Label3: while (true) {
+ if (!(i_570426597 < L_570426598)) break Label3;
+ k_570425667 = x_570425623.kids[chckIndx(i_570426597, 0, (x_570425623.kids).length - 1)];
+ var y_570425668 = toHtml_570425622(k_570425667, false);
+ if (!((y_570425668 == null))) {
+ add_570425492(ul_570425641, tree_570425474("LI", [y_570425668]));
+ }
+
+ i_570426597 += 1;
+ if (!(((x_570425623.kids).length == L_570426598))) {
+ failedAssertImpl_268435541(makeNimstrLit("iterators.nim(254, 11) `len(a) == L` the length of the seq changed while iterating over it"));
+ }
+
+ }
+ };
+ };
+ if (!((ul_570425641.childNodes.length == 0))) {
+ add_570425492(result_570425625, ul_570425641);
+ }
+
+ if ((result_570425625.childNodes.length == 0)) {
+ result_570425625 = null;
+ }
+
+ };
+
+ return result_570425625;
+
+}
+
+function replaceById_570425502(id_570425503, newTree_570425504) {
+ var x_570425505 = document.getElementById(id_570425503);
+ x_570425505.parentNode.replaceChild(newTree_570425504, x_570425505);
+ newTree_570425504.id = id_570425503;
+
+
+}
+
+function togglevis_570426052(d_570426053) {
+ if ((d_570426053.style.display == "none")) {
+ d_570426053.style.display = "inline";
+ }
+ else {
+ d_570426053.style.display = "none";
+ }
+
+
+
+}
+
+function groupBy(value_570426055) {
+ var toc_570426056 = document.getElementById("toc-list");
+ if ((alternative_570426051[0] == null)) {
+ var tt_570426064 = {heading: null, kids: [], sortId: 0, doSort: false};
+ toToc_570425755(toc_570426056, tt_570426064);
+ tt_570426064 = tt_570426064.kids[chckIndx(0, 0, (tt_570426064.kids).length - 1)];
+ var types_570426069 = [[]];
+ var procs_570426074 = [[]];
+ extractItems_570425543(tt_570426064, "Types", types_570426069, 0);
+ extractItems_570425543(tt_570426064, "Procs", procs_570426074, 0);
+ extractItems_570425543(tt_570426064, "Converters", procs_570426074, 0);
+ extractItems_570425543(tt_570426064, "Methods", procs_570426074, 0);
+ extractItems_570425543(tt_570426064, "Templates", procs_570426074, 0);
+ extractItems_570425543(tt_570426064, "Macros", procs_570426074, 0);
+ extractItems_570425543(tt_570426064, "Iterators", procs_570426074, 0);
+ var ntoc_570426075 = buildToc_570425994(tt_570426064, types_570426069[0], procs_570426074[0]);
+ var x_570426076 = toHtml_570425622(ntoc_570426075, true);
+ alternative_570426051[0] = tree_570425474("DIV", [x_570426076]);
+ }
+
+ if ((value_570426055 == "type")) {
+ replaceById_570425502("tocRoot", alternative_570426051[0]);
+ }
+ else {
+ replaceById_570425502("tocRoot", tree_570425474("DIV", []));
+ }
+
+ togglevis_570426052(document.getElementById("toc-list"));
+
+
+}
+
+function HEX5BHEX5D_738198811(s_738198814, x_738198815) {
+ var result_738198816 = [];
+
+ var a_738198818 = x_738198815.a;
+ var L_738198820 = addInt(subInt(subInt((s_738198814).length, x_738198815.b), a_738198818), 1);
+ result_738198816 = nimCopy(null, mnewString(chckRange(L_738198820, 0, 2147483647)), NTI33554449);
+ Label1: {
+ var i_738198825 = 0;
+ var i_570426607 = 0;
+ Label2: {
+ Label3: while (true) {
+ if (!(i_570426607 < L_738198820)) break Label3;
+ i_738198825 = i_570426607;
+ result_738198816[chckIndx(i_738198825, 0, (result_738198816).length - 1)] = s_738198814[chckIndx(addInt(i_738198825, a_738198818), 0, (s_738198814).length - 1)];
+ i_570426607 = addInt(i_570426607, 1);
+ }
+ };
+ };
+
+ return result_738198816;
+
+}
+
+function HEX2EHEX2E_973078633(a_973078636, b_973078637) {
+ var result_973078640 = ({a: 0, b: 0});
+
+ result_973078640 = nimCopy(result_973078640, {a: a_973078636, b: b_973078637}, NTI973078613);
+
+ return result_973078640;
+
+}
+async function loadIndex_570426272() {
+ var result_570426274 = null;
+
+ BeforeRet: {
+ var indexURL_570426280 = document.getElementById("indexLink").getAttribute("href");
+ var rootURL_570426306 = HEX5BHEX5D_738198811(cstrToNimstr(indexURL_570426280), HEX2EHEX2E_973078633(0, 14));
+ var resp_570426318 = (await (await fetch(indexURL_570426280)).text());
+ var indexElem_570426319 = document.createElement("div");
+ indexElem_570426319.innerHTML = resp_570426318;
+ Label1: {
+ var href_570426341 = null;
+ var colontmp__570426601 = [];
+ colontmp__570426601 = indexElem_570426319.getElementsByClassName("reference");
+ var i_570426603 = 0;
+ var L_570426604 = (colontmp__570426601).length;
+ Label2: {
+ Label3: while (true) {
+ if (!(i_570426603 < L_570426604)) break Label3;
+ href_570426341 = colontmp__570426601[chckIndx(i_570426603, 0, (colontmp__570426601).length - 1)];
+ href_570426341.setAttribute("href", toJSStr((rootURL_570426306 || []).concat(cstrToNimstr(href_570426341.getAttribute("href")) || [])));
+ db_570426093[0].push(href_570426341);;
+ contents_570426094[0].push(href_570426341.getAttribute("data-doc-search-tag"));;
+ i_570426603 += 1;
+ if (!(((colontmp__570426601).length == L_570426604))) {
+ failedAssertImpl_268435541(makeNimstrLit("iterators.nim(254, 11) `len(a) == L` the length of the seq changed while iterating over it"));
+ }
+
+ }
+ };
+ };
+ result_570426274 = undefined;
+ break BeforeRet;
+ };
+
+ return result_570426274;
+
+}
+
+function then_570426450(future_570426453, onSuccess_570426454, onReject_570426455) {
+ var result_570426456 = null;
+
+ BeforeRet: {
+ var ret_570426466 = null;
+ ret_570426466 = future_570426453.then(onSuccess_570426454, onReject_570426455)
+ result_570426456 = ret_570426466;
+ break BeforeRet;
+ };
+
+ return result_570426456;
+
+}
+
+function nsuToLowerAsciiChar(c_738197589) {
+ var result_738197590 = 0;
+
+ if ((ConstSet2[c_738197589] != undefined)) {
+ result_738197590 = (c_738197589 ^ 32);
+ }
+ else {
+ result_738197590 = c_738197589;
+ }
+
+
+ return result_738197590;
+
+}
+
+function fuzzyMatch_721420304(pattern_721420305, str_721420306) {
+ var Temporary4;
+ var Temporary5;
+ var Temporary6;
+ var Temporary7;
+ var Temporary8;
+
+ var result_721420309 = {Field0: 0, Field1: false};
+
+ var scoreState_721420310 = (-100);
+ var headerMatched_721420311 = false;
+ var unmatchedLeadingCharCount_721420312 = 0;
+ var consecutiveMatchCount_721420313 = 0;
+ var strIndex_721420314 = 0;
+ var patIndex_721420315 = 0;
+ var score_721420316 = 0;
+ Label1: {
+ Label2: while (true) {
+ if (!((strIndex_721420314 < ((str_721420306) == null ? 0 : (str_721420306).length)) && (patIndex_721420315 < ((pattern_721420305) == null ? 0 : (pattern_721420305).length)))) break Label2;
+ Label3: {
+ var patternChar_721420319 = nsuToLowerAsciiChar(pattern_721420305.charCodeAt(chckIndx(patIndex_721420315, 0, (pattern_721420305).length - 1)));
+ var strChar_721420320 = nsuToLowerAsciiChar(str_721420306.charCodeAt(chckIndx(strIndex_721420314, 0, (str_721420306).length - 1)));
+ if ((ConstSet3[patternChar_721420319] != undefined)) {
+ patIndex_721420315 = addInt(patIndex_721420315, 1);
+ break Label3;
+ }
+
+ if ((ConstSet4[strChar_721420320] != undefined)) {
+ strIndex_721420314 = addInt(strIndex_721420314, 1);
+ break Label3;
+ }
+
+ if ((!(headerMatched_721420311) && (strChar_721420320 == 58))) {
+ headerMatched_721420311 = true;
+ scoreState_721420310 = (-100);
+ score_721420316 = ((Math.floor((0.5 * score_721420316))) | 0);
+ patIndex_721420315 = 0;
+ strIndex_721420314 = addInt(strIndex_721420314, 1);
+ break Label3;
+ }
+
+ if ((strChar_721420320 == patternChar_721420319)) {
+ switch (scoreState_721420310) {
+ case (-100):
+ case 20:
+ scoreState_721420310 = 10;
+ break;
+ case 0:
+ scoreState_721420310 = 5;
+ score_721420316 = addInt(score_721420316, scoreState_721420310);
+ break;
+ case 10:
+ case 5:
+ consecutiveMatchCount_721420313 = addInt(consecutiveMatchCount_721420313, 1);
+ scoreState_721420310 = 5;
+ score_721420316 = addInt(score_721420316, mulInt(5, consecutiveMatchCount_721420313));
+ if ((scoreState_721420310 == 10)) {
+ score_721420316 = addInt(score_721420316, 10);
+ }
+
+ var onBoundary_721420372 = (patIndex_721420315 == ((pattern_721420305) == null ? -1 : (pattern_721420305).length - 1));
+ if ((!(onBoundary_721420372) && (strIndex_721420314 < ((str_721420306) == null ? -1 : (str_721420306).length - 1)))) {
+ var nextPatternChar_721420373 = nsuToLowerAsciiChar(pattern_721420305.charCodeAt(chckIndx(addInt(patIndex_721420315, 1), 0, (pattern_721420305).length - 1)));
+ var nextStrChar_721420374 = nsuToLowerAsciiChar(str_721420306.charCodeAt(chckIndx(addInt(strIndex_721420314, 1), 0, (str_721420306).length - 1)));
+ if (!!((ConstSet5[nextStrChar_721420374] != undefined))) Temporary4 = false; else { Temporary4 = !((nextStrChar_721420374 == nextPatternChar_721420373)); } onBoundary_721420372 = Temporary4;
+ }
+
+ if (onBoundary_721420372) {
+ scoreState_721420310 = 20;
+ score_721420316 = addInt(score_721420316, scoreState_721420310);
+ }
+
+ break;
+ case (-1):
+ case (-3):
+ if (!((ConstSet6[str_721420306.charCodeAt(chckIndx(subInt(strIndex_721420314, 1), 0, (str_721420306).length - 1))] != undefined))) Temporary5 = true; else { if (!(ConstSet7[str_721420306.charCodeAt(chckIndx(subInt(strIndex_721420314, 1), 0, (str_721420306).length - 1))] != undefined)) Temporary6 = false; else { Temporary6 = (ConstSet8[str_721420306.charCodeAt(chckIndx(strIndex_721420314, 0, (str_721420306).length - 1))] != undefined); } Temporary5 = Temporary6; } var isLeadingChar_721420398 = Temporary5;
+ if (isLeadingChar_721420398) {
+ scoreState_721420310 = 10;
+ }
+ else {
+ scoreState_721420310 = 0;
+ score_721420316 = addInt(score_721420316, scoreState_721420310);
+ }
+
+ break;
+ }
+ patIndex_721420315 = addInt(patIndex_721420315, 1);
+ }
+ else {
+ switch (scoreState_721420310) {
+ case (-100):
+ scoreState_721420310 = (-3);
+ score_721420316 = addInt(score_721420316, scoreState_721420310);
+ break;
+ case 5:
+ scoreState_721420310 = (-1);
+ score_721420316 = addInt(score_721420316, scoreState_721420310);
+ consecutiveMatchCount_721420313 = 0;
+ break;
+ case (-3):
+ if ((unmatchedLeadingCharCount_721420312 < 3)) {
+ scoreState_721420310 = (-3);
+ score_721420316 = addInt(score_721420316, scoreState_721420310);
+ }
+
+ unmatchedLeadingCharCount_721420312 = addInt(unmatchedLeadingCharCount_721420312, 1);
+ break;
+ default:
+ scoreState_721420310 = (-1);
+ score_721420316 = addInt(score_721420316, scoreState_721420310);
+ break;
+ }
+ }
+
+ strIndex_721420314 = addInt(strIndex_721420314, 1);
+ };
+ }
+ };
+ if (!(patIndex_721420315 == ((pattern_721420305) == null ? 0 : (pattern_721420305).length))) Temporary7 = false; else { if ((strIndex_721420314 == ((str_721420306) == null ? 0 : (str_721420306).length))) Temporary8 = true; else { Temporary8 = !((ConstSet9[str_721420306.charCodeAt(chckIndx(strIndex_721420314, 0, (str_721420306).length - 1))] != undefined)); } Temporary7 = Temporary8; } if (Temporary7) {
+ score_721420316 = addInt(score_721420316, 10);
+ }
+
+ var colontmp__570426620 = nimMax(0, score_721420316);
+ var colontmp__570426621 = (0 < score_721420316);
+ result_721420309 = nimCopy(result_721420309, {Field0: colontmp__570426620, Field1: colontmp__570426621}, NTI721420302);
+
+ return result_721420309;
+
+}
+
+function escapeCString_570426095(x_570426096, x_570426096_Idx) {
+ var s_570426097 = [];
+ Label1: {
+ var c_570426098 = 0;
+ var iHEX60gensym13_570426624 = 0;
+ var nHEX60gensym13_570426625 = ((x_570426096[x_570426096_Idx]) == null ? 0 : (x_570426096[x_570426096_Idx]).length);
+ Label2: {
+ Label3: while (true) {
+ if (!(iHEX60gensym13_570426624 < nHEX60gensym13_570426625)) break Label3;
+ c_570426098 = x_570426096[x_570426096_Idx].charCodeAt(chckIndx(iHEX60gensym13_570426624, 0, (x_570426096[x_570426096_Idx]).length - 1));
+ switch (c_570426098) {
+ case 60:
+ s_570426097.push.apply(s_570426097, [38,108,116,59]);;
+ break;
+ case 62:
+ s_570426097.push.apply(s_570426097, [38,103,116,59]);;
+ break;
+ default:
+ addChar(s_570426097, c_570426098);;
+ break;
+ }
+ iHEX60gensym13_570426624 += 1;
+ }
+ };
+ };
+ x_570426096[x_570426096_Idx] = toJSStr(s_570426097);
+
+
+}
+
+function dosearch_570426099(value_570426100) {
+
+function HEX3Aanonymous_570426127(a_570426132, b_570426133) {
+ var result_570426140 = 0;
+
+ result_570426140 = subInt(b_570426133["Field1"], a_570426132["Field1"]);
+
+ return result_570426140;
+
+ }
+
+ var result_570426101 = null;
+
+ BeforeRet: {
+ if (((db_570426093[0]).length == 0)) {
+ break BeforeRet;
+ }
+
+ var ul_570426105 = tree_570425474("UL", []);
+ result_570426101 = tree_570425474("DIV", []);
+ setClass_570425496(result_570426101, "search_results");
+ var matches_570426110 = [];
+ Label1: {
+ var i_570426118 = 0;
+ var colontmp__570426611 = 0;
+ colontmp__570426611 = (db_570426093[0]).length;
+ var i_570426612 = 0;
+ Label2: {
+ Label3: while (true) {
+ if (!(i_570426612 < colontmp__570426611)) break Label3;
+ i_570426118 = i_570426612;
+ Label4: {
+ var c_570426119 = contents_570426094[0][chckIndx(i_570426118, 0, (contents_570426094[0]).length - 1)];
+ if (((c_570426119 == "Examples") || (c_570426119 == "PEG construction"))) {
+ break Label4;
+ }
+
+ var tmpTuple_570426120 = fuzzyMatch_721420304(value_570426100, c_570426119);
+ var score_570426121 = tmpTuple_570426120["Field0"];
+ var matched_570426122 = tmpTuple_570426120["Field1"];
+ if (matched_570426122) {
+ matches_570426110.push({Field0: db_570426093[0][chckIndx(i_570426118, 0, (db_570426093[0]).length - 1)], Field1: score_570426121});;
+ }
+
+ };
+ i_570426612 = addInt(i_570426612, 1);
+ }
+ };
+ };
+ matches_570426110.sort(HEX3Aanonymous_570426127);
+ Label5: {
+ var i_570426157 = 0;
+ var colontmp__570426615 = 0;
+ colontmp__570426615 = nimMin((matches_570426110).length, 29);
+ var i_570426616 = 0;
+ Label6: {
+ Label7: while (true) {
+ if (!(i_570426616 < colontmp__570426615)) break Label7;
+ i_570426157 = i_570426616;
+ matches_570426110[chckIndx(i_570426157, 0, (matches_570426110).length - 1)]["Field0"].innerHTML = matches_570426110[chckIndx(i_570426157, 0, (matches_570426110).length - 1)]["Field0"].getAttribute("data-doc-search-tag");
+ escapeCString_570426095(matches_570426110[chckIndx(i_570426157, 0, (matches_570426110).length - 1)]["Field0"], "innerHTML");
+ add_570425492(ul_570426105, tree_570425474("LI", [matches_570426110[chckIndx(i_570426157, 0, (matches_570426110).length - 1)]["Field0"]]));
+ i_570426616 = addInt(i_570426616, 1);
+ }
+ };
+ };
+ if ((ul_570426105.childNodes.length == 0)) {
+ add_570425492(result_570426101, tree_570425474("B", [text_570425499("no search results")]));
+ }
+ else {
+ add_570425492(result_570426101, tree_570425474("B", [text_570425499("search results")]));
+ add_570425492(result_570426101, ul_570426105);
+ }
+
+ };
+
+ return result_570426101;
+
+}
+
+function search() {
+
+function wrapper_570426435() {
+ var elem_570426436 = document.getElementById("searchInput");
+ var value_570426437 = elem_570426436.value;
+ if (!((((value_570426437) == null ? 0 : (value_570426437).length) == 0))) {
+ if ((oldtoc_570426430[0] == null)) {
+ oldtoc_570426430[0] = document.getElementById("tocRoot");
+ }
+
+ var results_570426441 = dosearch_570426099(value_570426437);
+ replaceById_570425502("tocRoot", results_570426441);
+ }
+ else {
+ if (!((oldtoc_570426430[0] == null))) {
+ replaceById_570425502("tocRoot", oldtoc_570426430[0]);
+ }
+ }
+
+
+ }
+
+ if ((loadIndexFut_570426433[0] == null)) {
+ loadIndexFut_570426433[0] = loadIndex_570426272();
+ var _ = then_570426450(loadIndexFut_570426433[0], wrapper_570426435, null);
+ }
+
+ if (!((timer_570426431[0] == null))) {
+ clearTimeout(timer_570426431[0]);
+ }
+
+ timer_570426431[0] = setTimeout(wrapper_570426435, 400);
+
+
+}
+
+function copyToClipboard() {
+
+ function updatePreTags() {
+
+ const allPreTags = document.querySelectorAll("pre")
+
+ allPreTags.forEach((e) => {
+
+ const div = document.createElement("div")
+ div.classList.add("copyToClipBoard")
+
+ const preTag = document.createElement("pre")
+ preTag.innerHTML = e.innerHTML
+
+ const button = document.createElement("button")
+ button.value = e.textContent.replace('...', '')
+ button.classList.add("copyToClipBoardBtn")
+ button.style.cursor = "pointer"
+
+ div.appendChild(preTag)
+ div.appendChild(button)
+
+ e.outerHTML = div.outerHTML
+
+ })
+ }
+
+
+ function copyTextToClipboard(e) {
+ const clipBoardContent = e.target.value
+ navigator.clipboard.writeText(clipBoardContent).then(function() {
+ e.target.style.setProperty("--clipboard-image", "var(--clipboard-image-selected)")
+ }, function(err) {
+ console.error("Could not copy text: ", err);
+ });
+ }
+
+ window.addEventListener("click", (e) => {
+ if (e.target.classList.contains("copyToClipBoardBtn")) {
+ copyTextToClipboard(e)
+ }
+ })
+
+ window.addEventListener("mouseover", (e) => {
+ if (e.target.nodeName === "PRE") {
+ e.target.nextElementSibling.style.setProperty("--clipboard-image", "var(--clipboard-image-normal)")
+ }
+ })
+
+ window.addEventListener("DOMContentLoaded", updatePreTags)
+
+
+
+
+}
+var Temporary1;
+var t_570425383 = window.localStorage.getItem("theme");
+if ((t_570425383 == null)) {
+Temporary1 = "auto";
+}
+else {
+Temporary1 = t_570425383;
+}
+
+setTheme(Temporary1);
+var alternative_570426051 = [null];
+var db_570426093 = [[]];
+var contents_570426094 = [[]];
+var oldtoc_570426430 = [null];
+var timer_570426431 = [null];
+var loadIndexFut_570426433 = [null];
+copyToClipboard();
+window.addEventListener("DOMContentLoaded", onDOMLoaded, false);
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..02e37fc
--- /dev/null
+++ b/index.html
@@ -0,0 +1,6790 @@
+
+
+
+
+
+
+
+uing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
uing
+
+
+
+ Theme:
+
+ 🌗 Match OS
+ 🌑 Dark
+ 🌕 Light
+
+
+
+
+ Search:
+
+
+ Group by:
+
+ Section
+ Type
+
+
+
+ See also
+
+ Imports
+
+
+
+ Types
+
+
+
+
+
+ Procs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Exports
+
+
+
+
+
+
+
Source
+
Edit
+
+
+
+
High level wrapper for libui-ng.
+
Documentation mainly from ui.h
+
+
+
+
+
+
+
+
+
+
Attribute = ref object
+
+
+ Attribute stores information about an attribute in a AttributedString .
+You do not create Attribute s directly; instead, you create a Attribute of a given type using the specialized constructor functions. For every Unicode codepoint in the AttributedString , at most one value of each attribute type can be applied.
+Attributes are immutable.
+
+ Source
+Edit
+
+
+
+
+
AttributedString = ref object
+
+
+ AttributedString represents a string of UTF-8 text that can optionally be embellished with formatting attributes. libui-ng provides the list of formatting attributes, which cover common formatting traits like boldface and color as well as advanced typographical features provided by OpenType like superscripts and small caps. These attributes can be combined in a variety of ways.
+Attributes are applied to runs of Unicode codepoints in the string. Zero-length runs are elided. Consecutive runs that have the same attribute type and value are merged. Each attribute is independent of each other attribute; overlapping attributes of different types do not split each other apart, but different values of the same attribute type do.
+The empty string can also be represented by AttributedString , but because of the no-zero-length-attribute rule, it will not have attributes.
+A AttributedString takes ownership of all attributes given to it, as it may need to duplicate or delete Attribute objects at any time. By extension, when you free a AttributedString , all Attributes within will also be freed. Each method will describe its own rules in more details.
+In addition, AttributedString provides facilities for moving between grapheme clusters, which represent a character from the point of view of the end user. The cursor of a text editor is always placed on a grapheme boundary, so you can use these features to move the cursor left or right by one "character".
+AttributedString does not provide enough information to be able to draw itself onto a DrawContext or respond to user actions. In order to do that, you'll need to use a DrawTextLayout , which is built from the combination of a AttributedString and a set of layout-specific properties.
+
+ Source
+Edit
+
+
+
+
+
Box = ref object of Widget
+ children * : seq [ Widget ]
+
+
+ A boxlike container that holds a group of widgets.
+The contained widgets are arranged to be displayed either horizontally or vertically next to each other.
+
+ Source
+Edit
+
+
+
+
+
+
Checkbox = ref object of Widget
+ ontoggled * : proc ( sender : Checkbox )
+
+
+ A widget with a user checkable box accompanied by a text label.
+ Source
+Edit
+
+
+
+
+
+
Combobox = ref object of Widget
+ items * : seq [ string ]
+ onselected * : proc ( sender : Combobox )
+
+
+ A widget to select one item from a predefined list of items via a drop down menu.
+ Source
+Edit
+
+
+
+
+
DateTimePicker = ref object of Widget
+ onchanged * : proc ( sender : DateTimePicker )
+
+
+ A widget to enter a date and/or time.
+All functions assume local time and do NOT perform any time zone conversions.
+
+ Source
+Edit
+
+
+
+
+
+
DrawTextLayout = ref object
+
+
+ DrawTextLayout is a concrete representation of a AttributedString that can be displayed in a DrawContext . It includes information important for the drawing of a block of text, including the bounding box to wrap the text within, the alignment of lines of text within that box, areas to mark as being selected, and other things.
+Unlike AttributedString , the content of a DrawTextLayout is immutable once it has been created.
+Note:
+There are OS-specific differences with text drawing that libui-ng can't account for
+
+ Source
+Edit
+
+
+
+
+
EditableCombobox = ref object of Widget
+ items * : seq [ string ]
+ onchanged * : proc ( sender : EditableCombobox )
+
+
+ A widget to select one item from a predefined list of items or enter ones own.
+Predefined items can be selected from a drop down menu.
+A customary item can be entered by the user via an editable text field.
+
+ Source
+Edit
+
+
+
+
+
Entry = ref object of Widget
+ onchanged * : proc ( sender : Entry )
+
+
+ A widget with a single line text entry field.
+ Source
+Edit
+
+
+
+
+
+
+
Grid = ref object of Widget
+ children * : seq [ Widget ]
+
+
+ A widget container to arrange containing widgets in a grid.
+Contained widgets are arranged on an imaginary grid of rows and columns. Widgets can be placed anywhere on this grid, spanning multiple rows and/or columns.
+Additionally placed widgets can be programmed to expand horizontally and/or vertically, sharing the remaining space among other expanded widgets.
+Alignment options are available via Align attributes to determine the widgets placement within the reserved area, should the area be bigger than the widget itself.
+Widgets can also be placed in relation to other widget using At attributes.
+
+ Source
+Edit
+
+
+
+
+
Group = ref object of Widget
+
+
+ A widget container that adds a label to the contained child widget.
+This widget is a great way of grouping related widgets in combination with Box .
+A visual box will or will not be drawn around the child widget dependent on the underlying OS implementation.
+
+ Source
+Edit
+
+
+
+
+
Image = ref object of Widget
+
+
+ A container for an image to be displayed on screen.
+The container can hold multiple representations of the same image with the same aspect ratio but in different resolutions to support high-density displays.
+Common image dimension scale factors are 1 x and 2 x . Providing higher density representations is entirely optional.
+The system will automatically determine the correct image to render depending on the screen's pixel density.
+Image only supports premultiplied 32-bit RGBA images.
+No image file loading or image format conversion utilities are provided.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
MultilineEntry = ref object of Widget
+ onchanged * : proc ( sender : MultilineEntry )
+
+
+ A widget with a multi line text entry field.
+ Source
+Edit
+
+
+
+
+
OpenTypeFeatures = ref object
+
+
+ OpenTypeFeatures represents a set of OpenType feature tag-value pairs, for applying OpenType features to text. OpenType feature tags are four-character codes defined by OpenType that cover things from design features like small caps and swashes to language-specific glyph shapes and beyond. Each tag may only appear once in any given OpenTypeFeatures instance. Each value is a 32-bit integer, often used as a Boolean flag, but sometimes as an index to choose a glyph shape to use.
+If a font does not support a certain feature, that feature will be ignored.
+See the OpenType specification at https://www.microsoft.com/typography/otspec/featuretags.htm for the complete list of available features, information on specific features, and how to use them.
+
+ Source
+Edit
+
+
+
+
+
ProgressBar = ref object of Widget
+
+
+ A widget that visualizes the progress of a task via the fill level of a horizontal bar.
+Indeterminate values are supported via an animated bar.
+
+ Source
+Edit
+
+
+
+
+
+
Separator = ref object of Widget
+
+
+ A widget to visually separate widget, horizontally or vertically.
+ Source
+Edit
+
+
+
+
+
Slider = ref object of Widget
+ onchanged * : proc ( sender : Slider )
+ onreleased * : proc ( sender : Slider )
+
+
+ A widget to display and modify integer values via a user draggable slider.
+Values are guaranteed to be within the specified range.
+Sliders by default display a tool tip showing the current value when being dragged.
+Sliders are horizontal only.
+
+ Source
+Edit
+
+
+
+
+
Spinbox = ref object of Widget
+ onchanged * : proc ( sender : Spinbox )
+
+
+ A widget to display and modify integer values via a text field or +/- buttons.
+This is a convenient widget for having the user enter integer values. Values are guaranteed to be within the specified range.
+The + button increases the held value by 1.
+The - button decreased the held value by 1.
+Entering a value out of range will clamp to the nearest value in range.
+
+ Source
+Edit
+
+
+
+
+
Tab = ref object of Widget
+ tabs * : seq [ tuple [ name : string , widget : Widget ] ]
+
+
+ A multi page widget interface that displays one page at a time.
+Each page/tab has an associated label that can be selected to switch between pages/tabs.
+
+ Source
+Edit
+
+
+
+
+
Table = ref object of Widget
+ onRowClicked * : proc ( sender : Table ; row : int )
+ onRowDoubleClicked * : proc ( sender : Table ; row : int )
+ onHeaderClicked * : proc ( sender : Table ; column : int )
+ onSelectionChanged * : proc ( sender : Table )
+
+
+ A widget to display data in a tabular fashion.
+The view of the architecture.
+Data is retrieved from a TableModel via methods that you need to define in a TableModelHandler .
+Make sure the TableModel columns return the right type, as specified in the addColumn ( ) parameters.
+The EditableModelColumn parameters typically point to a TableModel column index, that specifies the property on a per row basis.
+They can however also be passed two special values defining the property for all rows: TableModelColumnNeverEditable and TableModelColumnAlwaysEditable .
+
+ Source
+Edit
+
+
+
+
+
TableModel = ref object
+
+
+ Table model delegate to retrieve data and inform about model changes.
+This is a wrapper around TableModelHandler where the actual data is held.
+The main purpose it to provide methods to the developer to signal that underlying data has changed.
+Row indexes match both the row indexes in Table and TableModelHandler .
+A TableModel can be used as the backing store for multiple Table views.
+Once created, the number of columns and their data types are not allowed to change.
+Error:
+Not informing the TableModel about out-of-band data changes is an error. User edits via Table do not fall in this category.
+
+ Source
+Edit
+
+
+
+
+
TableValue = ref object
+
+
+ Container to store values used in container related methods.
+TableValue objects are immutable.
+
+ Source
+Edit
+
+
+
+
+
+
Window = ref object of Widget
+ onclosing * : proc ( sender : Window ) : bool
+ onfocuschanged * : proc ( sender : Window )
+ onContentSizeChanged * : proc ( sender : Window )
+ onPositionChanged * : proc ( sender : Window )
+
+
+ A Widget that represents a top-level window.
+A window contains exactly one child widget that occupies the entire window.
+Note:
+Many of the Window methods should be regarded as mere hints. The underlying system may override these or even choose to ignore them completely. This is especially true for many Unix systems.
+Warning:
+A Window can NOT be a child of another Widget.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
proc `$` ( s : AttributedString ) : string {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the textual content of s as a string.
+ Source
+Edit
+
+
+
+
+
proc `$` ( v : TableValue ) : string {.... raises : [ ValueError ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the string value held internally.
+To be used only on TableValue objects of type TableValueTypeString .
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc add ( c : Combobox ; items : varargs [ string , ` $ ` ] ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Appends an item to the combo box.c: Combobox instance.
+items: Item text(s).
+
+ Source
+Edit
+
+
+
+
+
proc add ( c : EditableCombobox ; items : varargs [ string , ` $ ` ] ) {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+ Appends an item to the editable combo box.c: Combobox instance.
+items: Item text(s).
+
+ Source
+Edit
+
+
+
+
+
proc add ( e : MultilineEntry ; text : string ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Appends text to the multi line entry's text.e: MultilineEntry instance
+text: Text to append.
+
+ Source
+Edit
+
+
+
+
+
+
+
proc add ( i : Image ; pixels : pointer ; pixelWidth : int ; pixelHeight : int ;
+ byteStride : int ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Appends a new image representation.i: Image instance.
+pixels: Pointer to byte array of premultiplied pixels in R G B A order. pixels [ 0 ] equals the R of the first pixel, [ 3 ] the A of the first pixel. pixels must be at least byteStride * pixelHeight bytes long.
+pixelWidth: Width in pixels.
+pixelHeight: Height in pixels.
+byteStride: Number of bytes per row of the pixel array.
+
+ Source
+Edit
+
+
+
+
+
proc add ( otf : OpenTypeFeatures ; a , b , c , d : char ; value : uint32 ) {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+ Adds the given feature tag and value to otf. The feature tag is specified by a, b, c, and d. If there is already a value associated with the specified tag in otf, the old value is removed.
+ Source
+Edit
+
+
+
+
+
proc add ( otf : OpenTypeFeatures ; abcd : string ; value : uint32 | bool )
+
+
+ Alias of add . a , b , c , and d are instead a string of 4 characters, each character representing a , b , c , and d respectively.
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
proc addCheckboxColumn ( table : Table ; title : string ; index , editableMode : int ) {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Appends a column to the table containing a checkbox.t: Table instance.
+title: Column title text.
+index: Column that holds the data to be displayed.
+editableMode: Column that defines whether or not the checkbox is editable. TableModelColumnNeverEditable to make all rows never editable. TableModelColumnAlwaysEditable to make all rows always editable.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc addCheckboxTextColumn ( t : Table ; name : string ; checkboxModelColumn ,
+ checkboxEditableModelColumn , textModelColumn , textEditableModelColumn : int ;
+ textParams : ptr TableTextColumnOptionalParams = nil ) {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Appends a column to the table containing a checkbox and text.t: Table instance.
+name: Column title text.
+checkboxModelColumn: Column that holds the data to be displayed. true for a checked checkbox, false otherwise.
+checkboxEditableModelColumn: Column that defines whether or not the checkbox is editable. TableModelColumnNeverEditable to make all rows never editable. TableModelColumnAlwaysEditable to make all rows always editable.
+textModelColumn: Column that holds the text to be displayed.
+textEditableModelColumn: Column that defines whether or not the text is editable. TableModelColumnNeverEditable to make all rows never editable. TableModelColumnAlwaysEditable to make all rows always editable.
+textParams: Text display settings, nil to use defaults.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
proc addImageColumn ( table : Table ; title : string ; index : int ) {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+ Appends an image column to the table.
+Images are drawn at icon size, using the representation that best fits the pixel density of the screen.
+table: Table instance.
+title: Column title text.
+index: Column that holds the images to be displayed.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc addImageTextColumn ( t : Table ; name : string ;
+ imageIndex , textIndex , editableMode : int ;
+ textParams : ptr TableTextColumnOptionalParams ) {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Appends a column to the table that displays both an image and text.
+Images are drawn at icon size, using the representation that best fits the pixel density of the screen.
+t: Table instance.
+name: Column title text.
+imageIndex: Column that holds the images to be displayed.
+textIndex: Column that holds the text to be displayed.
+editableMode: Column that defines whether or not the text is editable. TableModelColumnNeverEditable to make all rows never editable. TableModelColumnAlwaysEditable to make all rows always editable.
+textParams: Text display settings, NULL to use defaults.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
proc addProgressBarColumn ( table : Table ; title : string ; index : int ) {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+ Appends a column to the table containing a progress bar.
+The workings and valid range are exactly the same as that of uiProgressBar.
+table: Table instance.
+title: Column title text.
+index: Column that holds the data to be displayed. Integer in range of [ - 1 , 100 ] , see ProgressBar for details.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
proc addTextColumn ( t : Table ; name : string ;
+ textModelColumn , textEditableModelColumn : int ;
+ textParams : ptr TableTextColumnOptionalParams = nil ) {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Appends a text column to the table.t: Table instance.
+name: Column title text.
+textModelColumn: Column that holds the text to be displayed.
+textEditableModelColumn: Column that defines whether or not the text is editable. TableModelColumnNeverEditable to make all rows never editable. TableModelColumnAlwaysEditable to make all rows always editable.
+textParams: Text display settings, nil to use defaults.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc arcTo ( p : DrawPath ; xCenter , yCenter , radius , startAngle , sweep : float ;
+ negative : int ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc bezierTo ( p : DrawPath ; c1x , c1y , c2x , c2y , endX , endY : float ) {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc borderless ( w : Window ) : bool {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns whether or not the window is borderless.
+ Source
+Edit
+
+
+
+
+
+
+
+
proc borderless= ( w : Window ; borderless : bool ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Returns whether or not the window is full screen.Note:
+This method is merely a hint and may be ignored by the system.
+w: Window instance.
+borderless: true to make window borderless, false otherwise.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc checked ( c : Checkbox ) : bool {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns whether or the checkbox is checked.
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc checked= ( c : Checkbox ; checked : bool ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets whether or not the checkbox is checked.c: Checkbox instance.
+checked: true to check box, false otherwise.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc child ( g : Group ) : Widget {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the group's child widget.
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc clear ( c : Combobox ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Deletes all items from the combo box.
+ Source
+Edit
+
+
+
+
+
+
proc clear ( e : Entry ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Clears the entry's text
+ Source
+Edit
+
+
+
+
+
proc clear ( e : MultilineEntry ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Clears the multi line entry's texte: MultilineEntry instance.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
proc color ( a : Attribute ) : tuple [ r , g , b , alpha : float ] {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Returns the text color stored in a .Error:
+It is an error to call this on a Attribute that does not hold a text color.
+
+ Source
+Edit
+
+
+
+
+
+
proc color ( v : TableValue ) : tuple [ r , g , b , a : float ] {.... raises : [ ValueError ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+ Returns the color value held internally.
+To be used only on TableValue objects of type TableValueTypeColor .
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc columnWidth ( table : Table ; column : int ) : int {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Returns the table column width in pixels.table: Table instance.
+column: Column index.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc contentSize ( window : Window ) : tuple [ width , height : int ] {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+ Gets the window content size.Note:
+The content size does NOT include window decorations like menus or title bars.
+window: Window instance.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc contentSize= ( window : Window ; size : tuple [ width , height : int ] ) {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+ Gets the window content size.Note:
+The content size does NOT include window decorations like menus or title bars.
+Note:
+This method is merely a hint and may be ignored by the system.
+window: Window instance.
+size.width: Window content width to set.
+size.height: Window content height to set.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc delete ( b : Box ; index : int ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Removes the widget at index from the box.Note:
+The widget is neither destroyed nor freed.
+b: Box instance.
+index: Index of widget to be removed.
+
+ Source
+Edit
+
+
+
+
+
proc delete ( c : Combobox ; index : int ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Deletes an item at index from the combo box.Note:
+Deleting the index of the item currently selected will move the selection to the next item in the combo box or - 1 if no such item exists.
+c: Combobox instance.
+index: Index of the item to be deleted.
+
+ Source
+Edit
+
+
+
+
+
+
proc delete ( s : AttributedString ; start , end : int ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Deletes the characters and attributes of s in the byte range [start , end ).
+ Source
+Edit
+
+
+
+
+
proc delete ( t : Tab ; index : int ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Removes the widget at index.Note:
+The widget is neither destroyed nor freed.
+t: Tab instance.
+index: Index at which to insert the widget.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc drawText ( c : ptr DrawContext ; tl : DrawTextLayout ; point : tuple [ x , y : float ] ) {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Draws tl in c with the top-left point of tl at (point . x , point . y ).
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
proc extents ( tl : DrawTextLayout ) : tuple [ width , height : float ] {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+ Returns the width and height of tl . The returned width may be smaller than the width passed into newDrawTextLayout() depending on how the text in tl is wrapped. Therefore, you can use this function to get the actual size of the text layout.
+ Source
+Edit
+
+
+
+
+
+
+
+
proc family ( a : Attribute ) : string {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the font family stored in a .Error:
+It is an error to call this on a Attribute that does not hold a font family.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc features ( a : Attribute ) : OpenTypeFeatures {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Returns the OpenType features stored in a .Error:
+It is an error to call this on a Attribute that does not hold OpenType features.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc focused ( w : Window ) : bool {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns whether or not the window is focused.
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc forEach ( otf : OpenTypeFeatures ;
+ f : proc ( otf : OpenTypeFeatures ; abcd : string ; value : int ) : ForEach ) {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Executes f for every tag-value pair in otf . The enumeration order is unspecified.Error:
+You cannot modify otf while this function is running.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc free ( a : Attribute ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Frees a Attribute . You generally do not need to call this yourself, as AttributedString does this for you.Error:
+It is an error to call this function on a Attribute that has been given to a AttributedString .
+You can call this, however, if you created a Attribute that you aren't going to use later.
+
+ Source
+Edit
+
+
+
+
+
proc free ( a : AttributedString ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Destroys the AttributedString a . It will also free all Attributes within.
+ Source
+Edit
+
+
+
+
+
+
proc free ( i : Image ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Frees the image container and all associated resources.
+ Source
+Edit
+
+
+
+
+
+
+
proc free ( str : cstring ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Free the memory of a returned string.
+Every time a string is returned from libui, this method should be called.
+
+ Source
+Edit
+
+
+
+
+
proc free ( t : ptr TableSelection ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Frees the given TableSelection and all its resources.s: TableSelection instance.
+
+ Source
+Edit
+
+
+
+
+
proc free ( t : TableModel ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Frees the table model.Error:
+It is an error to free table models currently associated with a Table .
+
+ Source
+Edit
+
+
+
+
+
proc free ( t : TableValue ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Frees the TableValue.Warning:
+
This function is to be used only on TableValue objects that have NOT been passed to Table or TableModel - as these take ownership of the object.
+
Use this for freeing erroneously created values or when directly calling TableModelHandler without transferring ownership to Table or TableModel .
+
+
+ Source
+Edit
+
+
+
+
+
proc free ( tl : DrawTextLayout ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Frees tl . The underlying AttributedString is not freed.
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc freeFont ( desc : ptr FontDescriptor ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Frees a FontDescriptor previously filled by font() .
+After calling this function the contents of desc should be assumed undefined, however you can safely reuse desc .
+Calling this function on a FontDescriptor not previously filled by font() results in undefined behavior.
+desc: Font descriptor to free.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc fullscreen ( w : Window ) : bool {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns whether or not the window is full screen.
+ Source
+Edit
+
+
+
+
+
+
+
+
proc fullscreen= ( w : Window ; fullscreen : bool ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Returns whether or not the window is full screen.Note:
+This method is merely a hint and may be ignored by the system.
+w: Window instance.
+fullscreen: true to make window full screen, false otherwise.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc get ( otf : OpenTypeFeatures ; a , b , c , d : char ; value : var int ) : bool {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Determines whether the given feature tag is present in otf . If it is, value is set to the tag's value and true is returned. Otherwise, false is returned.
+Note that if this function returns false , value isn't changed. This is important: if a feature is not present in a OpenTypeFeatures , the feature is NOT treated as if its value was zero anyway. Script-specific font shaping rules and font-specific feature settings may use a different default value for a feature. You should likewise not treat a missing feature as having a value of zero either. Instead, a missing feature should be treated as having some unspecified default value.
+
+ Source
+Edit
+
+
+
+
+
proc get ( otf : OpenTypeFeatures ; abcd : string ; value : var int ) : bool {.
+ ... raises : [ ValueError ] , tags : [ ] , forbids : [ ] .}
+
+
+ Alias of get . a , b , c , and d are instead a string of 4 characters, each character representing a , b , c , and d respectively.
+ Source
+Edit
+
+
+
+
+
+
+
+
proc getInt ( v : TableValue ) : int {.... raises : [ ValueError ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the integer value held internally.
+To be used only on TableValue objects of type TableValueTypeInt .
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
proc image ( v : TableValue ) : Image {.... raises : [ ValueError ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the image contained.
+To be used only on TableValue objects of kind TableValueTypeImage .
+Warning:
+The image returned is not owned by the object v , hence no lifetime guarantees can be made.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
func impl ( b : Area ) : RawArea {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl ( b : Attribute ) : RawAttribute {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl ( b : AttributedString ) : RawAttributedString {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl ( b : Box ) : RawBox {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
+
func impl ( b : Checkbox ) : RawCheckbox {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
+
func impl ( b : Combobox ) : RawCombobox {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl ( b : DateTimePicker ) : RawDateTimePicker {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl ( b : DrawPath ) : RawDrawPath {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl ( b : DrawTextLayout ) : RawDrawTextLayout {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl ( b : EditableCombobox ) : RawEditableCombobox {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl ( b : Entry ) : RawEntry {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
+
+
func impl ( b : Grid ) : RawGrid {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl ( b : Group ) : RawGroup {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl ( b : Image ) : RawImage {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl ( b : Label ) : RawLabel {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
+
+
func impl ( b : MultilineEntry ) : RawMultilineEntry {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl ( b : OpenTypeFeatures ) : RawOpenTypeFeatures {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl ( b : ProgressBar ) : RawProgressBar {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
+
func impl ( b : Separator ) : RawSeparator {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl ( b : Slider ) : RawSlider {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl ( b : Spinbox ) : RawSpinbox {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl ( b : Tab ) : RawTab {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl ( b : Table ) : RawTable {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl ( b : TableModel ) : RawTableModel {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl ( b : TableValue ) : RawTableValue {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl ( b : Window ) : RawWindow {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
+
+
+
+
func impl= ( b : Area ; r : RawArea ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl= ( b : Attribute ; r : RawAttribute ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl= ( b : AttributedString ; r : RawAttributedString ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl= ( b : Box ; r : RawBox ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
+
func impl= ( b : Checkbox ; r : RawCheckbox ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
+
func impl= ( b : Combobox ; r : RawCombobox ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl= ( b : DateTimePicker ; r : RawDateTimePicker ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl= ( b : DrawPath ; r : RawDrawPath ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl= ( b : DrawTextLayout ; r : RawDrawTextLayout ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl= ( b : EditableCombobox ; r : RawEditableCombobox ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl= ( b : Entry ; r : RawEntry ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
+
+
func impl= ( b : Grid ; r : RawGrid ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl= ( b : Group ; r : RawGroup ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl= ( b : Image ; r : RawImage ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl= ( b : Label ; r : RawLabel ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
+
+
func impl= ( b : MultilineEntry ; r : RawMultilineEntry ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl= ( b : OpenTypeFeatures ; r : RawOpenTypeFeatures ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl= ( b : ProgressBar ; r : RawProgressBar ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
+
func impl= ( b : Separator ; r : RawSeparator ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl= ( b : Slider ; r : RawSlider ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl= ( b : Spinbox ; r : RawSpinbox ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl= ( b : Tab ; r : RawTab ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl= ( b : Table ; r : RawTable ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl= ( b : TableModel ; r : RawTableModel ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl= ( b : TableValue ; r : RawTableValue ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl= ( b : Window ; r : RawWindow ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
+
+
+
proc init ( ) {.... raises : [ ValueError ] , tags : [ ] , forbids : [ ] .}
+
+
+ Initialize the application
+ Source
+Edit
+
+
+
+
+
+
+
+
proc insertAt ( c : Combobox ; index : int ; text : string ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Inserts an item at index to the combo box.c: Combobox instance.
+index: Index at which to insert the item.
+text: Item text.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc insertAtUnattributed ( s : AttributedString ; str : string ; at : int ) {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Adds the string str to s at the byte position specified by at . The new substring will be unattributed; existing attributes will be moved along with their text.
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc italic ( a : Attribute ) : TextItalic {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the font italic mode stored in a .Error:
+It is an error to call this on a Attribute that does not hold a font italic mode.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc len ( s : AttributedString ) : int {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the number of UTF-8 bytes in the textual content of s
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc mainLoop ( ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc mainStep ( wait : int ) : bool {.discardable , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc mainSteps ( ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc margined ( g : Group ) : bool {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns whether or not the group has a margin.
+ Source
+Edit
+
+
+
+
+
proc margined ( t : Tab ; index : int ) : bool {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns whether or not the page/tab at index has a margin.t: Tab instance.
+index: Index to check if it has a margin.
+
+ Source
+Edit
+
+
+
+
+
proc margined ( w : Window ) : bool {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns whether or not the window has a margin.
+ Source
+Edit
+
+
+
+
+
+
+
+
proc margined= ( g : Group ; margined : bool ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets whether or not the group has a margin.
+The margin size is determined by the OS defaults.
+g: Group instance.
+margined: true to set a margin, false otherwise.
+
+ Source
+Edit
+
+
+
+
+
proc margined= ( w : Window ; margined : bool ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets whether or not the window has a margin. The margin size is determined by the OS defaults.w: Window instance.
+margined: true to set a window margin, false otherwise.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc msgBox ( parent : Window ; title , desc : string ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Message box dialog window.
+A message box displayed in a new window indicating a common message.
+parent: Parent window.
+title: Dialog window title text.
+description: Dialog message text.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc msgBoxError ( parent : Window ; title , desc : string ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Error message box dialog window.
+A message box displayed in a new window indicating an error. On some systems this may invoke an accompanying sound.
+parent: Parent window.
+title: Dialog window title text.
+description: Dialog message text.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc newAttributedString ( initialString : string ) : AttributedString {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new AttributedString from initialString . The returned string will be entirely unattributed.
+ Source
+Edit
+
+
+
+
+
+
+
+
proc newBackgroundColorAttribute ( color : Color ; a : float = 1.0 ) : Attribute {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new Attribute that changes the background color of the text it is applied to.Error:
+It is an error to specify an invalid color.
+
+ Source
+Edit
+
+
+
+
+
proc newBackgroundColorAttribute ( r , g , b : float ; a : float = 1.0 ) : Attribute {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new Attribute that changes the background color of the text it is applied to.Error:
+It is an error to specify an invalid color.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc newCheckbox ( text : string ; ontoggled : proc ( sender : Checkbox ) = nil ) : Checkbox {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates and returns a new checkbox.text: Checkbox label text
+ontoggled: Callback for when the checkbox is toggled by the user.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc newColorAttribute ( color : Color ; a : float = 1.0 ) : Attribute {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new Attribute that changes the color of the text it is applied to.Error:
+It is an error to specify an invalid color.
+
+ Source
+Edit
+
+
+
+
+
proc newColorAttribute ( r , g , b : float ; a = 1.0 ) : Attribute {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new Attribute that changes the color of the text it is applied to.Error:
+It is an error to specify an invalid color.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc newCombobox ( items : openArray [ string ] = [ ] ;
+ onselected : proc ( sender : Combobox ) = nil ) : Combobox {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new combo box.items: List of strings to add to the combobox
+onselected: Callback for when a combo box item is selected.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc newDatePicker ( date : DateTime ;
+ onchanged : proc ( sender : DateTimePicker ) = nil ) : DateTimePicker {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new date pickerdate: Date and/or time as local time.
+onchanged: Callback for when the date time picker value is changed by the user.
+
+ Source
+Edit
+
+
+
+
+
proc newDatePicker ( onchanged : proc ( sender : DateTimePicker ) = nil ) : DateTimePicker {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new date pickeronchanged: Callback for when the date time picker value is changed by the user.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc newDateTimePicker ( dateTime : DateTime ;
+ onchanged : proc ( sender : DateTimePicker ) = nil ) : DateTimePicker {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new date and time picker.dateTime: Date and/or time as local time.
+onchanged: Callback for when the date time picker value is changed by the user.
+
+ Source
+Edit
+
+
+
+
+
proc newDateTimePicker ( onchanged : proc ( sender : DateTimePicker ) = nil ) : DateTimePicker {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new date and time picker.onchanged: Callback for when the date time picker value is changed by the user.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc newDrawTextLayout ( params : ptr DrawTextLayoutParams ) : DrawTextLayout {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new DrawTextLayout from the given parameters params .
+ Source
+Edit
+
+
+
+
+
+
+
+
proc newEditableCombobox ( items : openArray [ string ] = [ ] ;
+ onchanged : proc ( sender : EditableCombobox ) = nil ) : EditableCombobox {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new editable combo box.onchanged: Callback for when an editable combo box item is selected or user text changed.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc newEntry ( text : string = "" ; onchanged : proc ( sender : Entry ) = nil ) : Entry {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new entry.text: Entry text
+onchanged: Callback for when the user changes the entry's text.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc newFamilyAttribute ( family : string ) : Attribute {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Creates a new Attribute that changes the font family of the text it is applied to. Font family names are case-insensitive.
+ Source
+Edit
+
+
+
+
+
+
+
+
proc newFeaturesAttribute ( otf : OpenTypeFeatures ) : Attribute {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+ Creates a and returns new Attribute that changes the font family of the text it is applied to. otf is copied; you may free it after this function returns.
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
proc newGrid ( padded : bool = false ) : Grid {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new grid.padded: true to make widgets padded, false otherwise.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc newGroup ( title : string ; margined : bool = false ) : Group {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new grouptitle: Group title text.
+margined: Sets whether or not the group has a margin.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc newHorizontalBox ( padded = false ) : Box {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates and returns a new horizontal box.
+Widgets within the box are placed next to each other horizontally.
+padded: true to make widgets padded, false otherwise.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc newImage ( width , height : float ) : Image {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new image container.
+Dimensions are measured in points. This is most commonly the pixel size of the 1 x scaled image.
+width: Width in points.
+height: Height in points.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc newLabel ( text : string = "" ) : Label {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new label.
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc newMultilineEntry ( onchanged : proc ( sender : MultilineEntry ) = nil ) : MultilineEntry {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new multi line entry that visually wraps text when lines overflow.
+ Source
+Edit
+
+
+
+
+
+
+
+
proc newNonWrappingMultilineEntry ( onchanged : proc ( sender : MultilineEntry ) = nil ) : MultilineEntry {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new multi line entry that scrolls horizontally when lines overflow.Note:
+Windows does not allow for this style to be changed after creation, hence the two constructors.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc newPasswordEntry ( text : string = "" ; onchanged : proc ( sender : Entry ) = nil ) : Entry {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new entry suitable for sensitive inputs like passwords.
+The entered text is NOT readable by the user but masked as *******.
+text: Entry text
+onchanged: Callback for when the user changes the entry's text.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc newProgressBar ( indeterminate : bool = false ) : ProgressBar {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new progress bar.indeterminate: Whether or not the progress bar will display an indeterminate value.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc newSearchEntry ( text : string = "" ; onchanged : proc ( sender : Entry ) = nil ) : Entry {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new entry suitable for search.
+Some systems will deliberately delay the onchanged ( ) callback for a more natural feel.
+text: Entry text
+onchanged: Callback for when the user changes the entry's text.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc newSizeAttribute ( size : float ) : Attribute {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Creates a new Attribute that changes the size of the text it is applied to, in typographical points.
+ Source
+Edit
+
+
+
+
+
+
+
+
proc newSlider ( min , max : int ; onchanged : proc ( sender : Slider ) = nil ) : Slider {.
+ ... deprecated : "Use `newSlider(min..max, ...)` instead." , raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Deprecated: Use `newSlider(min..max, ...)` instead.
+
+
+ Creates a new slider.
+The initial slider value equals the minimum value.
+In the current implementation min and max are swapped if min > max . This may change in the future though.
+min: Minimum value
+max: Maximum value
+onchanged: Callback for when the slider value is changed by the user.
+
+ Source
+Edit
+
+
+
+
+
proc newSlider ( range : Slice [ SomeInteger ] ; onchanged : proc ( sender : Slider ) = nil ) : Slider
+
+
+ Creates a new slider.
+The initial slider value equals the minimum value.
+In the current implementation min and max are swapped if min > max . This may change in the future though.
+range: Slider range, as min .. max
+onchanged: Callback for when the slider value is changed by the user.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc newSpinbox ( min , max : int ; onchanged : proc ( sender : Spinbox ) = nil ) : Spinbox {.
+ ... deprecated : "Use `newSpinbox(min..max, ...)` instead" , raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Deprecated: Use `newSpinbox(min..max, ...)` instead
+
+
+ Creates a new spinbox.
+The initial spinbox value equals the minimum value.
+In the current implementation min and max are swapped if min > max . This may change in the future though.
+min: Minimum value.
+max: Maximum value.
+onchanged: Callback for when the spinbox value is changed by the user.
+
+ Source
+Edit
+
+
+
+
+
proc newSpinbox ( range : Slice [ SomeInteger ] ;
+ onchanged : proc ( sender : Spinbox ) = nil ) : Spinbox
+
+
+ Creates a new spinbox.
+The initial spinbox value equals the minimum value.
+In the current implementation min and max are swapped if min > max . This may change in the future though.
+range: Range of allowed values as min .. max .
+onchanged: Callback for when the spinbox value is changed by the user.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc newTab ( ) : Tab {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new tab container.
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc newTableValue ( color : Color ; a : 0.0 .. 1.0 = 1.0 ) : TableValue {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new table value to store a color in.color: Table value color.
+a: Alpha. Float in range of 0, 1.0 .
+
+ Source
+Edit
+
+
+
+
+
proc newTableValue ( i : int | bool ) : TableValue
+
+
+ Creates a new table value to store an integer.
+This value type can be used in conjunction with properties like column editable `true`, `false` or widget like progress bars and checkboxes. For these, consult ProgressBar and Checkbox for the allowed integer ranges.
+i: Integer or boolean value.
+
+ Source
+Edit
+
+
+
+
+
proc newTableValue ( img : Image ) : TableValue {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new table value to store an image.Warning:
+Unlike other TableValue constructors, this function does NOT copy the image to save time and space. Make sure the image data stays valid while in use by the library. As a general rule: if the constructor is called via the TableModelHandler , the image is safe to free once execution returns to ANY of your code.
+img: Image. Data is NOT copied and needs to kept alive.
+
+ Source
+Edit
+
+
+
+
+
proc newTableValue ( r , g , b : 0.0 .. 1.0 ; a = 1.0 ) : TableValue {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new table value to store a color in.r: Red. Float in range of 0, 1.0 .
+g: Green. Float in range of 0, 1.0 .
+b: Blue. Float in range of 0, 1.0 .
+a: Alpha. Float in range of 0, 1.0 .
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc newTimePicker ( onchanged : proc ( sender : DateTimePicker ) = nil ) : DateTimePicker {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new time picker.onchanged: Callback for when the date time picker value is changed by the user.
+
+ Source
+Edit
+
+
+
+
+
proc newTimePicker ( time : DateTime ;
+ onchanged : proc ( sender : DateTimePicker ) = nil ) : DateTimePicker {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new time picker.time: Date and/or time as local time.
+onchanged: Callback for when the date time picker value is changed by the user.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc newUnderlineColorAttribute ( u : UnderlineColor ; color : Color ; a : float = 0.0 ) : Attribute {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new Attribute that changes the color of the underline on the text it is applied to.Error:
+If the specified color type is UnderlineColorCustom , it is an error to specify an invalid color value. Otherwise, the color values are ignored and should be specified as zero.
+
+ Source
+Edit
+
+
+
+
+
proc newUnderlineColorAttribute ( u : UnderlineColor ; r = 0.0 ; g = 0.0 ; b = 0.0 ;
+ a : float = 0.0 ) : Attribute {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new Attribute that changes the color of the underline on the text it is applied to.Error:
+If the specified color type is UnderlineColorCustom , it is an error to specify an invalid color value. Otherwise, the color values are ignored and should be specified as zero.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc newVerticalBox ( padded = false ) : Box {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new vertical box.
+Widgets within the box are placed next to each other vertically.
+padded: true to make widgets padded, false otherwise.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc newWindow ( title : string ; width , height : int ; hasMenubar : bool = false ;
+ onfocuschanged : proc ( sender : Window ) = nil ) : Window {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates and returns a new Window.title: Window title text.
+width: Window width.
+height: Window height.
+hasMenubar: Whether or not the window should display a menu bar.
+onfocuschanged: Callback for when the window focus changes.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc openFile ( parent : Window ) : string {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ File chooser dialog window to select a single file. Returns the selected file pathNote:
+File paths are separated by the underlying OS file path separator.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc openFolder ( parent : Window ) : string {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Folder chooser dialog window to select a single file. Returns the selected folder pathNote:
+File paths are separated by the underlying OS file path separator.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc padded ( b : Box ) : bool {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns whether or not widgets within the box are padded.
+Padding is defined as space between individual widgets.
+
+ Source
+Edit
+
+
+
+
+
+
proc padded ( g : Grid ) : bool {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns whether or not widgets within the grid are padded.
+Padding is defined as space between individual widgets.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc padded= ( b : Box ; padded : bool ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets whether or not widgets within the box are padded.
+Padding is defined as space between individual widgets. The padding size is determined by the OS defaults.
+b: Box instance.
+padded: true to make widgets padded, false otherwise.
+
+ Source
+Edit
+
+
+
+
+
+
proc padded= ( g : Grid ; padded : bool ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets whether or not widgets within the grid are padded.
+Padding is defined as space between individual widgets. The padding size is determined by the OS defaults.
+g: Grid instance.
+padded: true to make widgets padded, false otherwise.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc pollingMainLoop ( poll : proc ( timeout : int ) ; timeout : int ) {.
+ ... raises : [ Exception ] , tags : [ RootEffect ] , forbids : [ ] .}
+
+
+ Can be used to merge an async event loop with libui-ng's event loop.
+Implemented using timeouts and polling because that's the only thing that truely composes.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc position ( w : Window ) : tuple [ x , y : int ] {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Gets the window position.
+Coordinates are measured from the top left corner of the screen.
+Note:
+This method may return inaccurate or dummy values on Unix platforms.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc position= ( w : Window ; pos : tuple [ x , y : int ] ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Moves the window to the specified position.
+Coordinates are measured from the top left corner of the screen.
+Note:
+This method may return inaccurate or dummy values on Unix platforms.
+w: Window instance.
+pos.x: New x position of the window.
+pos.y: New y position of the window.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc queueMain ( f : proc ( data : pointer ) {.cdecl .}; data : pointer ) {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc quit ( ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Quit the application
+ Source
+Edit
+
+
+
+
+
+
+
+
proc quitAll ( errorcode : int = QuitSuccess ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Quit both UIng and the program altogether
+ Source
+Edit
+
+
+
+
+
+
+
+
proc range= ( s : Slider ; sliderRange : Slice [ SomeInteger ] )
+
+
+ Sets the slider range.s: Slider instance.
+sliderRange: Slider range, as min .. max
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc readOnly ( e : Entry ) : bool {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns whether or not the entry's text can be changed.
+ Source
+Edit
+
+
+
+
+
proc readOnly ( e : MultilineEntry ) : bool {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns whether or not the multi line entry's text can be changed.e: MultilineEntry instance
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc readOnly= ( e : Entry ; readOnly : bool ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets whether or not the entry's text is read only.e: Entry instance.
+readonly: true to make read only, false otherwise.
+
+ Source
+Edit
+
+
+
+
+
proc readOnly= ( e : MultilineEntry ; readOnly : bool ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Sets whether or not the multi line entry's text is read only.e: MultilineEntry instance
+readonly: true to make read only, false otherwise.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc remove ( otf : OpenTypeFeatures ; a , b , c , d : char ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Removes the given feature tag and value from otf. If the tag is not present in otf, this function does nothing.
+ Source
+Edit
+
+
+
+
+
proc remove ( otf : OpenTypeFeatures ; abcd : string ) {.... raises : [ ValueError ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+ Alias of remove . a , b , c , and d are instead a string of 4 characters, each character representing a , b , c , and d respectively.
+ Source
+Edit
+
+
+
+
+
+
+
+
proc resizeable ( w : Window ) : bool {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns whether or not the window is user resizeable.
+ Source
+Edit
+
+
+
+
+
+
+
+
proc resizeable= ( w : Window ; resizeable : bool ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Sets whether or not the window is user resizeable.Note:
+This method is merely a hint and may be ignored by the system.
+w: Window instance.
+resizeable: true to make window resizable, false otherwise.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc rowChanged ( m : TableModel ; index : int ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Informs all associated Table views that a row has been changed.
+You do NOT need to call this in your setCellValue() handlers, but NEED to call this if your data changes at any other point.
+m: Table model that has changed.
+index: Index of the row that has changed.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc rowDeleted ( m : TableModel ; oldIndex : int ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Informs all associated Table views that a row has been deleted.
+You must delete the row from your model before you call this function.
+numRows() must represent the new row count before you call this function.
+m: Table model that has changed.
+oldIndex: Index of the row that has been deleted.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc rowInserted ( m : TableModel ; newIndex : int ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Informs all associated Table views that a new row has been added.
+You must insert the row data in your model before calling this function.
+numRows() must represent the new row count before you call this function.
+m: Table model that has changed.
+newIndex: Index of the row that has been added.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc saveFile ( parent : Window ) : string {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Save file dialog window. Returns the selected file path.
+The user is asked to confirm overwriting existing files, should the chosen file path already exist on the system.
+Note:
+File paths are separated by the underlying OS file path separator.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc scale ( m : ptr DrawMatrix ; xCenter , yCenter , x , y : float ) {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc selected= ( c : Combobox ; index : int ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets the item selected.c: Combobox instance.
+index: Index of the item to be selected, - 1 to clear selection.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc selection ( table : Table ) : seq [ int ] {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the current table selection.Note:
+For empty selections an empty seq will be returned.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc selection= ( table : Table ; sel : openArray [ int ] ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Sets the current table selection, clearing any previous selection.Note:
+Selecting more rows than the selection mode allows for results in nothing happening.
+table: Table instance.
+sel: List of rows to select.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc selectionMode= ( table : Table ; mode : TableSelectionMode ) {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+ Sets the table selection mode.Warning:
+All rows will be deselected if the existing selection is illegal in the new selection mode.
+table: Table instance.
+mode: Table selection mode to set.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc setAllTabsMargined ( t : Tab ; margined : bool = true ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Set all tabs in t as marginedt: Tab instance.
+margined: true to set a margin for all tabs, false otherwise.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc setAttribute ( s : AttributedString ; a : Attribute ; start , end : int ) {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets a in the byte range [start , end ) of s . Any existing attributes in that byte range of the same type are removed. You should not use a after this function returns.
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc setColumnWidth ( table : Table ; column , width : int ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Sets the table column width.
+Setting the width to - 1 will restore automatic column sizing matching either the width of the content or column header (which ever one is bigger).
+Note:
+Darwin currently only resizes to the column header width on - 1 .
+table: Table instance.
+column: Column index.
+width: Column width to set in pixels, - 1 to restore automatic column sizing.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc setMargined ( t : Tab ; index : int ; margined : bool ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Sets whether or not the page/tab at index has a margin.
+The margin size is determined by the OS defaults.
+t: Tab instance.
+index: Index of the tab/page to un/set margin for.
+margined: true to set a margin for tab at index , false otherwise.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc setSortIndicator ( table : Table ; column : int ; indicator : SortIndicator ) {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets the column's sort indicator displayed in the table header.
+Use this to display appropriate arrows in the table header to indicate a sort direction.
+Note:
+Setting the indicator is purely visual and does not perform any sorting.
+table: Table instance.
+column: Column index.
+indicator: Sort indicator.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc size ( a : Attribute ) : float {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the font size stored in a .Error:
+It is an error to call this on a Attribute that does not hold a font size.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc size= ( a : Area ; size : tuple [ width , height : int ] ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc skew ( m : ptr DrawMatrix ; x , y , xamount , yamount : float ) {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc sortIndicator ( table : Table ; column : int ) : SortIndicator {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+ Returns the column's sort indicator displayed in the table header.table: Table instance.
+column: Column index.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc stretch ( a : Attribute ) : TextStretch {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the font stretch stored in a .Error:
+It is an error to call this on a Attribute that does not hold a font stretch.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc text ( b : Button ) : string {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the button label text.
+ Source
+Edit
+
+
+
+
+
proc text ( c : Checkbox ) : string {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the checkbox label text.
+ Source
+Edit
+
+
+
+
+
proc text ( c : EditableCombobox ) : string {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the text of the editable combo box.
+This text is either the text of one of the predefined list items or the text manually entered by the user.
+
+ Source
+Edit
+
+
+
+
+
proc text ( e : Entry ) : string {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the entry's text.
+ Source
+Edit
+
+
+
+
+
proc text ( e : MultilineEntry ) : string {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the multi line entry's text.e: MultilineEntry instance
+
+ Source
+Edit
+
+
+
+
+
proc text ( l : Label ) : string {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the label text.
+ Source
+Edit
+
+
+
+
+
+
+
+
proc text= ( b : Button ; text : string ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets the button label text.b: Button instance
+text: Label text
+
+ Source
+Edit
+
+
+
+
+
proc text= ( c : Checkbox ; text : string ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets the checkbox label text.c: Checkbox instance.
+text: Label text.
+
+ Source
+Edit
+
+
+
+
+
proc text= ( c : EditableCombobox ; text : string ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Sets the text of the editable combo box.
+This text is either the text of one of the predefined list items or the text manually entered by the user.
+c: Combobox instance.
+text: Text field text.
+
+ Source
+Edit
+
+
+
+
+
proc text= ( e : Entry ; text : string ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets the entry's text.e: Entry instance.
+text: Entry text
+
+ Source
+Edit
+
+
+
+
+
proc text= ( e : MultilineEntry ; text : string ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets the multi line entry's text.e: MultilineEntry instance
+text: Single/multi line text
+
+ Source
+Edit
+
+
+
+
+
proc text= ( l : Label ; text : string ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets the label text.l: Lable Instance
+text: Label text.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc time ( d : DateTimePicker ) : DateTime {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns date and time stored in the data time picker.d: DateTimePicker instance
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc time= ( d : DateTimePicker ; dateTime : DateTime ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Sets date and time of the data time picker.d: DateTimePicker instance.
+time: Date and/or time as local time.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc timer ( milliseconds : int ; fun : proc ( ) : bool ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Call fun after milliseconds milliseconds. This is repeated until fun returns false .Note:
+This cannot be called from any thread, unlike
queueMain()
+Note:
+The minimum exact timing, either accuracy (timer burst, etc.) or granularity (15ms on Windows, etc.), is OS-defined
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc title ( g : Group ) : string {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the group title.
+ Source
+Edit
+
+
+
+
+
proc title ( w : Window ) : string {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the window title.
+ Source
+Edit
+
+
+
+
+
+
+
+
proc title= ( g : Group ; title : string ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets the group title.g: Group instance.
+title: Group title text.
+
+ Source
+Edit
+
+
+
+
+
proc title= ( w : Window ; text : string ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the window title.Note:
+This method is merely a hint and may be ignored on unix platforms.
+w: Window instance.
+title: Window title text.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
proc underline ( a : Attribute ) : Underline {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the underline type stored in a .Error:
+It is an error to call this on a Attribute that does not hold an underline style.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc underlineColor ( a : Attribute ) : tuple [ u : UnderlineColor ,
+ r , g , b , alpha : float ] {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the underline color stored in a .Error:
+It is an error to call this on a Attribute that does not hold an underline color.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc uninit ( ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Un-Initialize the application
+Usually not needed as mainLoop() calls this for you.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc value ( p : ProgressBar ) : int {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the progress bar value.p: ProgressBar instance.
+
+ Source
+Edit
+
+
+
+
+
proc value ( s : Slider ) : int {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the slider value.
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc value= ( p : ProgressBar ; n : -1 .. 100 ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets the progress bar value.
+Valid values are [ 0 , 100 ] for displaying a solid bar imitating a percent value.
+Use a value of - 1 to render an animated bar to convey an indeterminate value.
+p: ProgressBar instance.
+n: Value to set. Integer in the range of [ - 1 , 100 ] .
+
+ Source
+Edit
+
+
+
+
+
proc value= ( s : Slider ; value : int ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets the slider value.s: Slider intance.
+value: Value to set.
+
+ Source
+Edit
+
+
+
+
+
proc value= ( s : Spinbox ; value : int ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the spinbox value.Note:
+Setting a value out of range will clamp to the nearest value in range.
+s: Spinbox instance.
+value: Value to set.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc weight ( a : Attribute ) : TextWeight {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the font weight stored in a .Error:
+It is an error to call this on a Attribute that does not hold a font weight.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+ ForEach , TextWeight , TextItalic , TextStretch , FontDescriptor , WindowResizeEdge , Modifiers , ExtKey , AreaDrawParams , AreaMouseEvent , AreaKeyEvent , AreaHandler , DrawMatrix , DrawFillMode , DrawBrushType , DrawLineCap , DrawLineJoin , DrawStrokeParams , DrawDefaultMiterLimit , DrawBrushGradientStop , AttributeType , TextWeight , TextItalic , TextStretch , Underline , UnderlineColor , DrawTextAlign , DrawTextLayoutParams , DrawContext , DrawBrush , DrawBrushType , Align , At , TableSelectionMode , TableModelHandler , TableParams , TableTextColumnOptionalParams , TableColumnType , TableValueType , TableModelColumnNeverEditable , TableModelColumnAlwaysEditable , SortIndicator
+
+
+
+
+
+
+
+
+
+ Made with Nim. Generated: 2024-07-04 16:02:16 UTC
+
+
+
+
+
+
+
+
+
diff --git a/nimdoc.out.css b/nimdoc.out.css
new file mode 100644
index 0000000..1417d9e
--- /dev/null
+++ b/nimdoc.out.css
@@ -0,0 +1,1026 @@
+/*
+Stylesheet for use with Docutils/rst2html.
+
+See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
+customize this style sheet.
+
+Modified from Chad Skeeters' rst2html-style
+https://bitbucket.org/cskeeters/rst2html-style/
+
+Modified by Boyd Greenfield and narimiran
+*/
+
+:root {
+ --primary-background: #fff;
+ --secondary-background: ghostwhite;
+ --third-background: #e8e8e8;
+ --info-background: #50c050;
+ --warning-background: #c0a000;
+ --error-background: #e04040;
+ --border: #dde;
+ --text: #222;
+ --anchor: #07b;
+ --anchor-focus: #607c9f;
+ --input-focus: #1fa0eb;
+ --strong: #3c3c3c;
+ --hint: #9A9A9A;
+ --nim-sprite-base64: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAN4AAAA9CAYAAADCt9ebAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFFmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMCAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE5LTEyLTAzVDAxOjAzOjQ4KzAxOjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAxOS0xMi0wM1QwMjoyODo0MSswMTowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOS0xMi0wM1QwMjoyODo0MSswMTowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozMzM0ZjAxYS0yMDExLWE1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");
+
+ --keyword: #5e8f60;
+ --identifier: #222;
+ --comment: #484a86;
+ --operator: #155da4;
+ --punctuation: black;
+ --other: black;
+ --escapeSequence: #c4891b;
+ --number: #252dbe;
+ --literal: #a4255b;
+ --program: #6060c0;
+ --option: #508000;
+ --raw-data: #a4255b;
+
+ --clipboard-image-normal: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' style='color: black' fill='none' viewBox='0 0 24 24' stroke='currentColor'%3E %3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2' /%3E %3C/svg%3E");
+ --clipboard-image-selected: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' style='color: black' viewBox='0 0 20 20' fill='currentColor'%3E %3Cpath d='M8 3a1 1 0 011-1h2a1 1 0 110 2H9a1 1 0 01-1-1z' /%3E %3Cpath d='M6 3a2 2 0 00-2 2v11a2 2 0 002 2h8a2 2 0 002-2V5a2 2 0 00-2-2 3 3 0 01-3 3H9a3 3 0 01-3-3z' /%3E %3C/svg%3E");
+ --clipboard-image: var(--clipboard-image-normal)
+}
+
+[data-theme="dark"] {
+ --primary-background: #171921;
+ --secondary-background: #1e202a;
+ --third-background: #2b2e3b;
+ --info-background: #008000;
+ --warning-background: #807000;
+ --error-background: #c03000;
+ --border: #0e1014;
+ --text: #fff;
+ --anchor: #8be9fd;
+ --anchor-focus: #8be9fd;
+ --input-focus: #8be9fd;
+ --strong: #bd93f9;
+ --hint: #7A7C85;
+ --nim-sprite-base64: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARMAAABMCAYAAABOBlMuAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFFmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMCAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE5LTEyLTAzVDAxOjE4OjIyKzAxOjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAxOS0xMi0wM1QwMToyMDoxMCswMTowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOS0xMi0wM1QwMToyMDoxMCswMTowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDplZGViMzU3MC1iNmZjLWQy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");
+
+ --keyword: #ff79c6;
+ --identifier: #f8f8f2;
+ --comment: #6272a4;
+ --operator: #ff79c6;
+ --punctuation: #f8f8f2;
+ --other: #f8f8f2;
+ --escapeSequence: #bd93f9;
+ --number: #bd93f9;
+ --literal: #f1fa8c;
+ --program: #9090c0;
+ --option: #90b010;
+ --raw-data: #8be9fd;
+
+ --clipboard-image-normal: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' style='color: lightgray' fill='none' viewBox='0 0 24 24' stroke='currentColor'%3E %3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2' /%3E %3C/svg%3E");
+ --clipboard-image-selected: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' style='color: lightgray' viewBox='0 0 20 20' fill='currentColor'%3E %3Cpath d='M8 3a1 1 0 011-1h2a1 1 0 110 2H9a1 1 0 01-1-1z' /%3E %3Cpath d='M6 3a2 2 0 00-2 2v11a2 2 0 002 2h8a2 2 0 002-2V5a2 2 0 00-2-2 3 3 0 01-3 3H9a3 3 0 01-3-3z' /%3E %3C/svg%3E");
+ --clipboard-image: var(--clipboard-image-normal);
+}
+
+@media (prefers-color-scheme: dark) {
+ [data-theme="auto"] {
+ --primary-background: #171921;
+ --secondary-background: #1e202a;
+ --third-background: #2b2e3b;
+ --info-background: #008000;
+ --warning-background: #807000;
+ --error-background: #c03000;
+ --border: #0e1014;
+ --text: #fff;
+ --anchor: #8be9fd;
+ --anchor-focus: #8be9fd;
+ --input-focus: #8be9fd;
+ --strong: #bd93f9;
+ --hint: #7A7C85;
+ --nim-sprite-base64: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARMAAABMCAYAAABOBlMuAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFFmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMCAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE5LTEyLTAzVDAxOjE4OjIyKzAxOjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAxOS0xMi0wM1QwMToyMDoxMCswMTowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOS0xMi0wM1QwMToyMDoxMCswMTowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDplZGViMzU3MC1iNmZjLWQy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");
+
+ --keyword: #ff79c6;
+ --identifier: #f8f8f2;
+ --comment: #6272a4;
+ --operator: #ff79c6;
+ --punctuation: #f8f8f2;
+ --other: #f8f8f2;
+ --escapeSequence: #bd93f9;
+ --number: #bd93f9;
+ --literal: #f1fa8c;
+ --program: #9090c0;
+ --option: #90b010;
+ --raw-data: #8be9fd;
+
+ --clipboard-image-normal: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' style='color: lightgray' fill='none' viewBox='0 0 24 24' stroke='currentColor'%3E %3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2' /%3E %3C/svg%3E");
+ --clipboard-image-selected: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' style='color: lightgray' viewBox='0 0 20 20' fill='currentColor'%3E %3Cpath d='M8 3a1 1 0 011-1h2a1 1 0 110 2H9a1 1 0 01-1-1z' /%3E %3Cpath d='M6 3a2 2 0 00-2 2v11a2 2 0 002 2h8a2 2 0 002-2V5a2 2 0 00-2-2 3 3 0 01-3 3H9a3 3 0 01-3-3z' /%3E %3C/svg%3E");
+ --clipboard-image: var(--clipboard-image-normal);
+ }
+}
+
+.theme-select-wrapper {
+ display: flex;
+ align-items: center;
+}
+
+html {
+ font-size: 100%;
+ -webkit-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%; }
+
+body {
+ font-family: "Lato", "Helvetica Neue", "HelveticaNeue", Helvetica, Arial, sans-serif;
+ font-weight: 400;
+ font-size: 1.125em;
+ line-height: 1.5;
+ color: var(--text);
+ background-color: var(--primary-background); }
+
+/* Skeleton grid */
+.container {
+ position: relative;
+ width: 100%;
+ max-width: 1050px;
+ margin: 0 auto;
+ padding: 0;
+ box-sizing: border-box; }
+
+.column, .columns {
+ width: 100%;
+ float: left;
+ box-sizing: border-box;
+ margin-left: 1%; }
+
+@media print {
+ #global-links, .link-seesrc, .theme-switch-wrapper, #searchInputDiv, .search-groupby {
+ display:none;
+ }
+ .columns {
+ width:100% !important;
+ }
+}
+
+.column:first-child, .columns:first-child {
+ margin-left: 0; }
+
+.container .row {
+ display: flex; }
+
+.three.columns {
+ width: 25.0%;
+ height: 100vh;
+ position: sticky;
+ top: 0px;
+ overflow-y: auto;
+ padding: 2px;
+}
+
+.nine.columns {
+ width: 75.0%;
+ padding-left: 1.5em; }
+
+.twelve.columns {
+ width: 100%;
+ margin-left: 0; }
+
+@media screen and (max-width: 860px) {
+ .three.columns {
+ display: none;
+ }
+ .nine.columns {
+ width: 98.0%;
+ }
+ body {
+ font-size: 1em;
+ line-height: 1.35;
+ }
+}
+
+cite {
+ font-style: italic !important; }
+
+
+/* Nim search input */
+div#searchInputDiv {
+ margin-bottom: 1em;
+}
+input#searchInput {
+ width: 80%;
+}
+
+/*
+ * Some custom formatting for input forms.
+ * This also fixes input form colors on Firefox with a dark system theme on Linux.
+ */
+input {
+ -moz-appearance: none;
+ background-color: var(--secondary-background);
+ color: var(--text);
+ border: 1px solid var(--border);
+ font-family: "Lato", "Helvetica Neue", "HelveticaNeue", Helvetica, Arial, sans-serif;
+ font-size: 0.9em;
+ padding: 6px;
+}
+
+input:focus {
+ border: 1px solid var(--input-focus);
+ box-shadow: 0 0 3px var(--input-focus);
+}
+
+select {
+ -moz-appearance: none;
+ background-color: var(--secondary-background);
+ color: var(--text);
+ border: 1px solid var(--border);
+ font-family: "Lato", "Helvetica Neue", "HelveticaNeue", Helvetica, Arial, sans-serif;
+ font-size: 0.9em;
+ padding: 6px;
+}
+
+select:focus {
+ border: 1px solid var(--input-focus);
+ box-shadow: 0 0 3px var(--input-focus);
+}
+
+/* Docgen styles */
+
+:target {
+ border: 2px solid #B5651D;
+ border-style: dotted;
+}
+
+/* Links */
+a {
+ color: var(--anchor);
+ text-decoration: none;
+}
+
+a span.Identifier {
+ text-decoration: underline;
+ text-decoration-color: #aab;
+}
+
+a.reference-toplevel {
+ font-weight: bold;
+}
+
+a.nimdoc {
+ word-spacing: 0.3em;
+}
+
+a.toc-backref {
+ text-decoration: none;
+ color: var(--text);
+}
+
+a.link-seesrc {
+ color: #607c9f;
+ font-size: 0.9em;
+ font-style: italic;
+}
+
+a:hover, a:focus {
+ color: var(--anchor-focus);
+ text-decoration: underline;
+}
+
+a:hover span.Identifier {
+ color: var(--anchor);
+}
+
+
+sub, sup {
+ position: relative;
+ font-size: 75%;
+ line-height: 0;
+ vertical-align: baseline; }
+
+sup {
+ top: -0.5em; }
+
+sub {
+ bottom: -0.25em; }
+
+img {
+ width: auto;
+ height: auto;
+ max-width: 100%;
+ vertical-align: middle;
+ border: 0;
+ -ms-interpolation-mode: bicubic; }
+
+@media print {
+ * {
+ color: black !important;
+ text-shadow: none !important;
+ background: transparent !important;
+ box-shadow: none !important; }
+
+ a, a:visited {
+ text-decoration: underline; }
+
+ a[href]:after {
+ content: " (" attr(href) ")"; }
+
+ abbr[title]:after {
+ content: " (" attr(title) ")"; }
+
+ .ir a:after,
+ a[href^="javascript:"]:after,
+ a[href^="#"]:after {
+ content: ""; }
+
+ pre, blockquote {
+ border: 1px solid #999;
+ page-break-inside: avoid; }
+
+ thead {
+ display: table-header-group; }
+
+ tr, img {
+ page-break-inside: avoid; }
+
+ img {
+ max-width: 100% !important; }
+
+ @page {
+ margin: 0.5cm; }
+
+ h1 {
+ page-break-before: always; }
+
+ h1.title {
+ page-break-before: avoid; }
+
+ p, h2, h3 {
+ orphans: 3;
+ widows: 3; }
+
+ h2, h3 {
+ page-break-after: avoid; }
+}
+
+
+p {
+ margin-top: 0.5em;
+ margin-bottom: 0.5em; }
+
+small {
+ font-size: 85%; }
+
+strong {
+ font-weight: 600;
+ font-size: 0.95em;
+ color: var(--strong); }
+
+em {
+ font-style: italic; }
+
+h1 {
+ font-size: 1.8em;
+ font-weight: 400;
+ padding-bottom: .25em;
+ border-bottom: 6px solid var(--third-background);
+ margin-top: 2.5em;
+ margin-bottom: 1em;
+ line-height: 1.2em; }
+
+h1.title {
+ padding-bottom: 1em;
+ border-bottom: 0px;
+ font-size: 2.5em;
+ text-align: center;
+ font-weight: 900;
+ margin-top: 0.75em;
+ margin-bottom: 0em; }
+
+h2 {
+ font-size: 1.3em;
+ margin-top: 2em; }
+
+h2.subtitle {
+ margin-top: 0em;
+ text-align: center; }
+
+h3 {
+ font-size: 1.125em;
+ font-style: italic;
+ margin-top: 1.5em; }
+
+h4 {
+ font-size: 1.125em;
+ margin-top: 1em; }
+
+h5 {
+ font-size: 1.125em;
+ margin-top: 0.75em; }
+
+h6 {
+ font-size: 1.1em; }
+
+
+ul, ol {
+ padding: 0;
+ margin-top: 0.5em;
+ margin-left: 0.75em; }
+
+ul ul, ul ol, ol ol, ol ul {
+ margin-bottom: 0;
+ margin-left: 1.25em; }
+
+ul.simple > li {
+ list-style-type: circle; }
+
+ul.simple-boot li {
+ list-style-type: none;
+ margin-left: 0em;
+ margin-bottom: 0.5em; }
+
+ol.simple > li, ul.simple > li {
+ margin-bottom: 0.2em;
+ margin-left: 0.4em }
+
+ul.simple.simple-toc > li {
+ margin-top: 1em; }
+
+ul.simple-toc {
+ list-style: none;
+ font-size: 0.9em;
+ margin-left: -0.3em;
+ margin-top: 1em; }
+
+ul.simple-toc > li {
+ list-style-type: none; }
+
+ul.simple-toc-section {
+ list-style-type: circle;
+ margin-left: 0.8em;
+ color: #6c9aae; }
+
+ul.nested-toc-section {
+ list-style-type: circle;
+ margin-left: -0.75em;
+ color: var(--text); }
+
+ul.nested-toc-section > li {
+ margin-left: 1.25em; }
+
+
+ol.arabic {
+ list-style: decimal; }
+
+ol.loweralpha {
+ list-style: lower-alpha; }
+
+ol.upperalpha {
+ list-style: upper-alpha; }
+
+ol.lowerroman {
+ list-style: lower-roman; }
+
+ol.upperroman {
+ list-style: upper-roman; }
+
+ul.auto-toc {
+ list-style-type: none; }
+
+
+dl {
+ margin-bottom: 1.5em; }
+
+dt {
+ margin-bottom: -0.5em;
+ margin-left: 0.0em; }
+
+dd {
+ margin-left: 2.0em;
+ margin-bottom: 3.0em;
+ margin-top: 0.5em; }
+
+
+hr {
+ margin: 2em 0;
+ border: 0;
+ border-top: 1px solid #aaa; }
+
+hr.footnote {
+ width: 25%;
+ border-top: 0.15em solid #999;
+ margin-bottom: 0.15em;
+ margin-top: 0.15em;
+}
+div.footnote-group {
+ margin-left: 1em;
+}
+div.footnote-label {
+ display: inline-block;
+ min-width: 1.7em;
+}
+
+div.option-list {
+ border: 0.1em solid var(--border);
+}
+div.option-list-item {
+ padding-left: 12em;
+ padding-right: 0;
+ padding-bottom: 0.3em;
+ padding-top: 0.3em;
+}
+div.odd {
+ background-color: var(--secondary-background);
+}
+div.option-list-label {
+ margin-left: -11.5em;
+ margin-right: 0em;
+ min-width: 11.5em;
+ display: inline-block;
+ vertical-align: top;
+}
+div.option-list-description {
+ width: calc(100% - 1em);
+ padding-left: 1em;
+ padding-right: 0;
+ display: inline-block;
+}
+
+blockquote {
+ font-size: 0.9em;
+ font-style: italic;
+ padding-left: 0.5em;
+ margin-left: 0;
+ border-left: 5px solid #bbc;
+}
+
+blockquote.markdown-quote {
+ font-size: 0.9rem; /* use rem to avoid recursion */
+ font-style: normal;
+}
+
+.pre, span.tok {
+ font-family: "Source Code Pro", Monaco, Menlo, Consolas, "Courier New", monospace;
+ font-weight: 500;
+ font-size: 0.85em;
+ color: var(--text);
+ background-color: var(--third-background);
+ padding-left: 3px;
+ padding-right: 3px;
+ border-radius: 4px;
+}
+
+span.tok {
+ border: 1px solid #808080;
+ padding-bottom: 0.1em;
+ margin-right: 0.2em;
+}
+
+.copyToClipBoard {
+ position: relative;
+}
+
+pre {
+ font-family: "Source Code Pro", Monaco, Menlo, Consolas, "Courier New", monospace;
+ color: var(--text);
+ font-weight: 500;
+ display: inline-block;
+ box-sizing: border-box;
+ min-width: 100%;
+ padding: 0.5em;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ font-size: 0.85em;
+ white-space: pre !important;
+ overflow-y: hidden;
+ overflow-x: visible;
+ background-color: var(--secondary-background);
+ border: 1px solid var(--border);
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+}
+
+.copyToClipBoardBtn {
+ visibility: hidden;
+ position: absolute;
+ width: 24px;
+ border-radius: 4px;
+ background-image: var(--clipboard-image);
+ right: 5px;
+ top: 13px;
+ background-color: var(--secondary-background);
+ padding: 11px;
+ border: 0;
+}
+
+.copyToClipBoard:hover .copyToClipBoardBtn {
+ visibility: visible;
+}
+
+.pre-scrollable {
+ max-height: 340px;
+ overflow-y: scroll; }
+
+
+/* Nim line-numbered tables */
+.line-nums-table {
+ width: 100%;
+ table-layout: fixed; }
+
+table.line-nums-table {
+ border-radius: 4px;
+ border: 1px solid #cccccc;
+ background-color: ghostwhite;
+ border-collapse: separate;
+ margin-top: 15px;
+ margin-bottom: 25px; }
+
+.line-nums-table tbody {
+ border: none; }
+
+.line-nums-table td pre {
+ border: none;
+ background-color: transparent; }
+
+.line-nums-table td.blob-line-nums {
+ width: 28px; }
+
+.line-nums-table td.blob-line-nums pre {
+ color: #b0b0b0;
+ -webkit-filter: opacity(75%);
+ filter: opacity(75%);
+ text-align: right;
+ border-color: transparent;
+ background-color: transparent;
+ padding-left: 0px;
+ margin-left: 0px;
+ padding-right: 0px;
+ margin-right: 0px; }
+
+
+table {
+ max-width: 100%;
+ background-color: transparent;
+ margin-top: 0.5em;
+ margin-bottom: 1.5em;
+ border-collapse: collapse;
+ border-color: var(--third-background);
+ border-spacing: 0;
+ font-size: 0.9em;
+}
+
+table th, table td {
+ padding: 0px 0.5em 0px;
+ border-color: var(--third-background);
+}
+
+table th {
+ background-color: var(--third-background);
+ border-color: var(--third-background);
+ font-weight: bold; }
+
+table th.docinfo-name {
+ background-color: transparent;
+ text-align: right;
+}
+
+table tr:hover {
+ background-color: var(--third-background); }
+
+
+/* rst2html default used to remove borders from tables and images */
+.borderless, table.borderless td, table.borderless th {
+ border: 0; }
+
+table.borderless td, table.borderless th {
+ /* Override padding for "table.docutils td" with "! important".
+ The right padding separates the table cells. */
+ padding: 0 0.5em 0 0 !important; }
+
+.admonition {
+ padding: 0.3em;
+ background-color: var(--secondary-background);
+ border-left: 0.4em solid #7f7f84;
+ margin-bottom: 0.5em;
+ -webkit-box-shadow: 0 5px 8px -6px rgba(0,0,0,.2);
+ -moz-box-shadow: 0 5px 8px -6px rgba(0,0,0,.2);
+ box-shadow: 0 5px 8px -6px rgba(0,0,0,.2);
+}
+.admonition-info {
+ border-color: var(--info-background);
+}
+.admonition-info-text {
+ color: var(--info-background);
+}
+.admonition-warning {
+ border-color: var(--warning-background);
+}
+.admonition-warning-text {
+ color: var(--warning-background);
+}
+.admonition-error {
+ border-color: var(--error-background);
+}
+.admonition-error-text {
+ color: var(--error-background);
+}
+
+.first {
+ /* Override more specific margin styles with "! important". */
+ margin-top: 0 !important; }
+
+.last, .with-subtitle {
+ margin-bottom: 0 !important; }
+
+.hidden {
+ display: none; }
+
+blockquote.epigraph {
+ margin: 2em 5em; }
+
+dl.docutils dd {
+ margin-bottom: 0.5em; }
+
+object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
+ overflow: hidden; }
+
+
+div.figure {
+ margin-left: 2em;
+ margin-right: 2em; }
+
+div.footer, div.header {
+ clear: both;
+ text-align: center;
+ color: #666;
+ font-size: smaller; }
+
+div.footer {
+ padding-top: 5em; }
+
+div.line-block {
+ display: block;
+ margin-top: 1em;
+ margin-bottom: 1em; }
+
+div.line-block div.line-block {
+ margin-top: 0;
+ margin-bottom: 0;
+ margin-left: 1.5em; }
+
+div.topic {
+ margin: 2em; }
+
+div.search_results {
+ background-color: var(--third-background);
+ margin: 3em;
+ padding: 1em;
+ border: 1px solid #4d4d4d; }
+
+div#global-links ul {
+ margin-left: 0;
+ list-style-type: none; }
+
+div#global-links > simple-boot {
+ margin-left: 3em; }
+
+hr.docutils {
+ width: 75%; }
+
+img.align-left, .figure.align-left, object.align-left {
+ clear: left;
+ float: left;
+ margin-right: 1em; }
+
+img.align-right, .figure.align-right, object.align-right {
+ clear: right;
+ float: right;
+ margin-left: 1em; }
+
+img.align-center, .figure.align-center, object.align-center {
+ display: block;
+ margin-left: auto;
+ margin-right: auto; }
+
+.align-left {
+ text-align: left; }
+
+.align-center {
+ clear: both;
+ text-align: center; }
+
+.align-right {
+ text-align: right; }
+
+/* reset inner alignment in figures */
+div.align-right {
+ text-align: inherit; }
+
+p.attribution {
+ text-align: right;
+ margin-left: 50%; }
+
+p.caption {
+ font-style: italic; }
+
+p.credits {
+ font-style: italic;
+ font-size: smaller; }
+
+p.label {
+ white-space: nowrap; }
+
+p.rubric {
+ font-weight: bold;
+ font-size: larger;
+ color: maroon;
+ text-align: center; }
+
+p.topic-title {
+ font-weight: bold; }
+
+pre.address {
+ margin-bottom: 0;
+ margin-top: 0;
+ font: inherit; }
+
+pre.literal-block, pre.doctest-block, pre.math, pre.code {
+ margin-left: 2em;
+ margin-right: 2em; }
+
+pre.code .ln {
+ color: grey; }
+
+/* line numbers */
+pre.code, code {
+ background-color: #eeeeee; }
+
+pre.code .comment, code .comment {
+ color: #5c6576; }
+
+pre.code .keyword, code .keyword {
+ color: #3B0D06;
+ font-weight: bold; }
+
+pre.code .literal.string, code .literal.string {
+ color: #0c5404; }
+
+pre.code .name.builtin, code .name.builtin {
+ color: #352b84; }
+
+pre.code .deleted, code .deleted {
+ background-color: #DEB0A1; }
+
+pre.code .inserted, code .inserted {
+ background-color: #A3D289; }
+
+span.classifier {
+ font-style: oblique; }
+
+span.classifier-delimiter {
+ font-weight: bold; }
+
+span.problematic {
+ color: #b30000; }
+
+span.section-subtitle {
+ /* font-size relative to parent (h1..h6 element) */
+ font-size: 80%; }
+
+span.DecNumber {
+ color: var(--number); }
+
+span.BinNumber {
+ color: var(--number); }
+
+span.HexNumber {
+ color: var(--number); }
+
+span.OctNumber {
+ color: var(--number); }
+
+span.FloatNumber {
+ color: var(--number); }
+
+span.Identifier {
+ color: var(--identifier); }
+
+span.Keyword {
+ font-weight: 600;
+ color: var(--keyword); }
+
+span.StringLit {
+ color: var(--literal); }
+
+span.LongStringLit {
+ color: var(--literal); }
+
+span.CharLit {
+ color: var(--literal); }
+
+span.EscapeSequence {
+ color: var(--escapeSequence); }
+
+span.Operator {
+ color: var(--operator); }
+
+span.Punctuation {
+ color: var(--punctuation); }
+
+span.Comment, span.LongComment {
+ font-style: italic;
+ font-weight: 400;
+ color: var(--comment); }
+
+span.RegularExpression {
+ color: darkviolet; }
+
+span.TagStart {
+ color: darkviolet; }
+
+span.TagEnd {
+ color: darkviolet; }
+
+span.Key {
+ color: #252dbe; }
+
+span.Value {
+ color: #252dbe; }
+
+span.RawData {
+ color: var(--raw-data); }
+
+span.Assembler {
+ color: #252dbe; }
+
+span.Preprocessor {
+ color: #252dbe; }
+
+span.Directive {
+ color: #252dbe; }
+
+span.option {
+ font-weight: bold;
+ font-family: "Source Code Pro", Monaco, Menlo, Consolas, "Courier New", monospace;
+ color: var(--option); }
+
+span.Prompt {
+ font-weight: bold;
+ color: red; }
+
+span.ProgramOutput {
+ font-weight: bold;
+ color: #808080; }
+
+span.program {
+ font-weight: bold;
+ color: var(--program);
+ text-decoration: underline;
+ text-decoration-color: var(--hint);
+ text-decoration-thickness: 0.05em;
+ text-underline-offset: 0.15em; }
+
+span.Command, span.Rule, span.Hyperlink,
+span.Label, span.Reference, span.Other {
+ color: var(--other); }
+
+/* Pop type, const, proc, and iterator defs in nim def blocks */
+dt pre > span.Identifier, dt pre > span.Operator {
+ color: var(--identifier);
+ font-weight: 700; }
+
+dt pre > span.Keyword ~ span.Identifier, dt pre > span.Identifier ~ span.Identifier,
+dt pre > span.Operator ~ span.Identifier, dt pre > span.Other ~ span.Identifier {
+ color: var(--identifier);
+ font-weight: inherit; }
+
+/* Nim sprite for the footer (taken from main page favicon) */
+.nim-sprite {
+ display: inline-block;
+ width: 51px;
+ height: 14px;
+ background-position: 0 0;
+ background-size: 51px 14px;
+ -webkit-filter: opacity(50%);
+ filter: opacity(50%);
+ background-repeat: no-repeat;
+ background-image: var(--nim-sprite-base64);
+ margin-bottom: 5px; }
+
+span.pragmadots {
+ /* Position: relative frees us up to make the dots
+ look really nice without fucking up the layout and
+ causing bulging in the parent container */
+ position: relative;
+ /* 1px down looks slightly nicer */
+ top: 1px;
+ padding: 2px;
+ background-color: var(--third-background);
+ border-radius: 4px;
+ margin: 0 2px;
+ cursor: pointer;
+ font-size: 0.8em; }
+
+span.pragmadots:hover {
+ background-color: var(--hint); }
+
+span.pragmawrap {
+ display: none; }
+
+span.attachedType {
+ display: none;
+ visibility: hidden; }
diff --git a/theindex.html b/theindex.html
new file mode 100644
index 0000000..aa710cb
--- /dev/null
+++ b/theindex.html
@@ -0,0 +1,2954 @@
+
+
+
+
+
+
+
+Index
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/uing.html b/uing.html
new file mode 100644
index 0000000..02e37fc
--- /dev/null
+++ b/uing.html
@@ -0,0 +1,6790 @@
+
+
+
+
+
+
+
+uing
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
uing
+
+
+
+ Theme:
+
+ 🌗 Match OS
+ 🌑 Dark
+ 🌕 Light
+
+
+
+
+ Search:
+
+
+ Group by:
+
+ Section
+ Type
+
+
+
+ See also
+
+ Imports
+
+
+
+ Types
+
+
+
+
+
+ Procs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Exports
+
+
+
+
+
+
+
Source
+
Edit
+
+
+
+
High level wrapper for libui-ng.
+
Documentation mainly from ui.h
+
+
+
+
+
+
+
+
+
+
Attribute = ref object
+
+
+ Attribute stores information about an attribute in a AttributedString .
+You do not create Attribute s directly; instead, you create a Attribute of a given type using the specialized constructor functions. For every Unicode codepoint in the AttributedString , at most one value of each attribute type can be applied.
+Attributes are immutable.
+
+ Source
+Edit
+
+
+
+
+
AttributedString = ref object
+
+
+ AttributedString represents a string of UTF-8 text that can optionally be embellished with formatting attributes. libui-ng provides the list of formatting attributes, which cover common formatting traits like boldface and color as well as advanced typographical features provided by OpenType like superscripts and small caps. These attributes can be combined in a variety of ways.
+Attributes are applied to runs of Unicode codepoints in the string. Zero-length runs are elided. Consecutive runs that have the same attribute type and value are merged. Each attribute is independent of each other attribute; overlapping attributes of different types do not split each other apart, but different values of the same attribute type do.
+The empty string can also be represented by AttributedString , but because of the no-zero-length-attribute rule, it will not have attributes.
+A AttributedString takes ownership of all attributes given to it, as it may need to duplicate or delete Attribute objects at any time. By extension, when you free a AttributedString , all Attributes within will also be freed. Each method will describe its own rules in more details.
+In addition, AttributedString provides facilities for moving between grapheme clusters, which represent a character from the point of view of the end user. The cursor of a text editor is always placed on a grapheme boundary, so you can use these features to move the cursor left or right by one "character".
+AttributedString does not provide enough information to be able to draw itself onto a DrawContext or respond to user actions. In order to do that, you'll need to use a DrawTextLayout , which is built from the combination of a AttributedString and a set of layout-specific properties.
+
+ Source
+Edit
+
+
+
+
+
Box = ref object of Widget
+ children * : seq [ Widget ]
+
+
+ A boxlike container that holds a group of widgets.
+The contained widgets are arranged to be displayed either horizontally or vertically next to each other.
+
+ Source
+Edit
+
+
+
+
+
+
Checkbox = ref object of Widget
+ ontoggled * : proc ( sender : Checkbox )
+
+
+ A widget with a user checkable box accompanied by a text label.
+ Source
+Edit
+
+
+
+
+
+
Combobox = ref object of Widget
+ items * : seq [ string ]
+ onselected * : proc ( sender : Combobox )
+
+
+ A widget to select one item from a predefined list of items via a drop down menu.
+ Source
+Edit
+
+
+
+
+
DateTimePicker = ref object of Widget
+ onchanged * : proc ( sender : DateTimePicker )
+
+
+ A widget to enter a date and/or time.
+All functions assume local time and do NOT perform any time zone conversions.
+
+ Source
+Edit
+
+
+
+
+
+
DrawTextLayout = ref object
+
+
+ DrawTextLayout is a concrete representation of a AttributedString that can be displayed in a DrawContext . It includes information important for the drawing of a block of text, including the bounding box to wrap the text within, the alignment of lines of text within that box, areas to mark as being selected, and other things.
+Unlike AttributedString , the content of a DrawTextLayout is immutable once it has been created.
+Note:
+There are OS-specific differences with text drawing that libui-ng can't account for
+
+ Source
+Edit
+
+
+
+
+
EditableCombobox = ref object of Widget
+ items * : seq [ string ]
+ onchanged * : proc ( sender : EditableCombobox )
+
+
+ A widget to select one item from a predefined list of items or enter ones own.
+Predefined items can be selected from a drop down menu.
+A customary item can be entered by the user via an editable text field.
+
+ Source
+Edit
+
+
+
+
+
Entry = ref object of Widget
+ onchanged * : proc ( sender : Entry )
+
+
+ A widget with a single line text entry field.
+ Source
+Edit
+
+
+
+
+
+
+
Grid = ref object of Widget
+ children * : seq [ Widget ]
+
+
+ A widget container to arrange containing widgets in a grid.
+Contained widgets are arranged on an imaginary grid of rows and columns. Widgets can be placed anywhere on this grid, spanning multiple rows and/or columns.
+Additionally placed widgets can be programmed to expand horizontally and/or vertically, sharing the remaining space among other expanded widgets.
+Alignment options are available via Align attributes to determine the widgets placement within the reserved area, should the area be bigger than the widget itself.
+Widgets can also be placed in relation to other widget using At attributes.
+
+ Source
+Edit
+
+
+
+
+
Group = ref object of Widget
+
+
+ A widget container that adds a label to the contained child widget.
+This widget is a great way of grouping related widgets in combination with Box .
+A visual box will or will not be drawn around the child widget dependent on the underlying OS implementation.
+
+ Source
+Edit
+
+
+
+
+
Image = ref object of Widget
+
+
+ A container for an image to be displayed on screen.
+The container can hold multiple representations of the same image with the same aspect ratio but in different resolutions to support high-density displays.
+Common image dimension scale factors are 1 x and 2 x . Providing higher density representations is entirely optional.
+The system will automatically determine the correct image to render depending on the screen's pixel density.
+Image only supports premultiplied 32-bit RGBA images.
+No image file loading or image format conversion utilities are provided.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
MultilineEntry = ref object of Widget
+ onchanged * : proc ( sender : MultilineEntry )
+
+
+ A widget with a multi line text entry field.
+ Source
+Edit
+
+
+
+
+
OpenTypeFeatures = ref object
+
+
+ OpenTypeFeatures represents a set of OpenType feature tag-value pairs, for applying OpenType features to text. OpenType feature tags are four-character codes defined by OpenType that cover things from design features like small caps and swashes to language-specific glyph shapes and beyond. Each tag may only appear once in any given OpenTypeFeatures instance. Each value is a 32-bit integer, often used as a Boolean flag, but sometimes as an index to choose a glyph shape to use.
+If a font does not support a certain feature, that feature will be ignored.
+See the OpenType specification at https://www.microsoft.com/typography/otspec/featuretags.htm for the complete list of available features, information on specific features, and how to use them.
+
+ Source
+Edit
+
+
+
+
+
ProgressBar = ref object of Widget
+
+
+ A widget that visualizes the progress of a task via the fill level of a horizontal bar.
+Indeterminate values are supported via an animated bar.
+
+ Source
+Edit
+
+
+
+
+
+
Separator = ref object of Widget
+
+
+ A widget to visually separate widget, horizontally or vertically.
+ Source
+Edit
+
+
+
+
+
Slider = ref object of Widget
+ onchanged * : proc ( sender : Slider )
+ onreleased * : proc ( sender : Slider )
+
+
+ A widget to display and modify integer values via a user draggable slider.
+Values are guaranteed to be within the specified range.
+Sliders by default display a tool tip showing the current value when being dragged.
+Sliders are horizontal only.
+
+ Source
+Edit
+
+
+
+
+
Spinbox = ref object of Widget
+ onchanged * : proc ( sender : Spinbox )
+
+
+ A widget to display and modify integer values via a text field or +/- buttons.
+This is a convenient widget for having the user enter integer values. Values are guaranteed to be within the specified range.
+The + button increases the held value by 1.
+The - button decreased the held value by 1.
+Entering a value out of range will clamp to the nearest value in range.
+
+ Source
+Edit
+
+
+
+
+
Tab = ref object of Widget
+ tabs * : seq [ tuple [ name : string , widget : Widget ] ]
+
+
+ A multi page widget interface that displays one page at a time.
+Each page/tab has an associated label that can be selected to switch between pages/tabs.
+
+ Source
+Edit
+
+
+
+
+
Table = ref object of Widget
+ onRowClicked * : proc ( sender : Table ; row : int )
+ onRowDoubleClicked * : proc ( sender : Table ; row : int )
+ onHeaderClicked * : proc ( sender : Table ; column : int )
+ onSelectionChanged * : proc ( sender : Table )
+
+
+ A widget to display data in a tabular fashion.
+The view of the architecture.
+Data is retrieved from a TableModel via methods that you need to define in a TableModelHandler .
+Make sure the TableModel columns return the right type, as specified in the addColumn ( ) parameters.
+The EditableModelColumn parameters typically point to a TableModel column index, that specifies the property on a per row basis.
+They can however also be passed two special values defining the property for all rows: TableModelColumnNeverEditable and TableModelColumnAlwaysEditable .
+
+ Source
+Edit
+
+
+
+
+
TableModel = ref object
+
+
+ Table model delegate to retrieve data and inform about model changes.
+This is a wrapper around TableModelHandler where the actual data is held.
+The main purpose it to provide methods to the developer to signal that underlying data has changed.
+Row indexes match both the row indexes in Table and TableModelHandler .
+A TableModel can be used as the backing store for multiple Table views.
+Once created, the number of columns and their data types are not allowed to change.
+Error:
+Not informing the TableModel about out-of-band data changes is an error. User edits via Table do not fall in this category.
+
+ Source
+Edit
+
+
+
+
+
TableValue = ref object
+
+
+ Container to store values used in container related methods.
+TableValue objects are immutable.
+
+ Source
+Edit
+
+
+
+
+
+
Window = ref object of Widget
+ onclosing * : proc ( sender : Window ) : bool
+ onfocuschanged * : proc ( sender : Window )
+ onContentSizeChanged * : proc ( sender : Window )
+ onPositionChanged * : proc ( sender : Window )
+
+
+ A Widget that represents a top-level window.
+A window contains exactly one child widget that occupies the entire window.
+Note:
+Many of the Window methods should be regarded as mere hints. The underlying system may override these or even choose to ignore them completely. This is especially true for many Unix systems.
+Warning:
+A Window can NOT be a child of another Widget.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
proc `$` ( s : AttributedString ) : string {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the textual content of s as a string.
+ Source
+Edit
+
+
+
+
+
proc `$` ( v : TableValue ) : string {.... raises : [ ValueError ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the string value held internally.
+To be used only on TableValue objects of type TableValueTypeString .
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc add ( c : Combobox ; items : varargs [ string , ` $ ` ] ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Appends an item to the combo box.c: Combobox instance.
+items: Item text(s).
+
+ Source
+Edit
+
+
+
+
+
proc add ( c : EditableCombobox ; items : varargs [ string , ` $ ` ] ) {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+ Appends an item to the editable combo box.c: Combobox instance.
+items: Item text(s).
+
+ Source
+Edit
+
+
+
+
+
proc add ( e : MultilineEntry ; text : string ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Appends text to the multi line entry's text.e: MultilineEntry instance
+text: Text to append.
+
+ Source
+Edit
+
+
+
+
+
+
+
proc add ( i : Image ; pixels : pointer ; pixelWidth : int ; pixelHeight : int ;
+ byteStride : int ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Appends a new image representation.i: Image instance.
+pixels: Pointer to byte array of premultiplied pixels in R G B A order. pixels [ 0 ] equals the R of the first pixel, [ 3 ] the A of the first pixel. pixels must be at least byteStride * pixelHeight bytes long.
+pixelWidth: Width in pixels.
+pixelHeight: Height in pixels.
+byteStride: Number of bytes per row of the pixel array.
+
+ Source
+Edit
+
+
+
+
+
proc add ( otf : OpenTypeFeatures ; a , b , c , d : char ; value : uint32 ) {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+ Adds the given feature tag and value to otf. The feature tag is specified by a, b, c, and d. If there is already a value associated with the specified tag in otf, the old value is removed.
+ Source
+Edit
+
+
+
+
+
proc add ( otf : OpenTypeFeatures ; abcd : string ; value : uint32 | bool )
+
+
+ Alias of add . a , b , c , and d are instead a string of 4 characters, each character representing a , b , c , and d respectively.
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
proc addCheckboxColumn ( table : Table ; title : string ; index , editableMode : int ) {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Appends a column to the table containing a checkbox.t: Table instance.
+title: Column title text.
+index: Column that holds the data to be displayed.
+editableMode: Column that defines whether or not the checkbox is editable. TableModelColumnNeverEditable to make all rows never editable. TableModelColumnAlwaysEditable to make all rows always editable.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc addCheckboxTextColumn ( t : Table ; name : string ; checkboxModelColumn ,
+ checkboxEditableModelColumn , textModelColumn , textEditableModelColumn : int ;
+ textParams : ptr TableTextColumnOptionalParams = nil ) {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Appends a column to the table containing a checkbox and text.t: Table instance.
+name: Column title text.
+checkboxModelColumn: Column that holds the data to be displayed. true for a checked checkbox, false otherwise.
+checkboxEditableModelColumn: Column that defines whether or not the checkbox is editable. TableModelColumnNeverEditable to make all rows never editable. TableModelColumnAlwaysEditable to make all rows always editable.
+textModelColumn: Column that holds the text to be displayed.
+textEditableModelColumn: Column that defines whether or not the text is editable. TableModelColumnNeverEditable to make all rows never editable. TableModelColumnAlwaysEditable to make all rows always editable.
+textParams: Text display settings, nil to use defaults.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
proc addImageColumn ( table : Table ; title : string ; index : int ) {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+ Appends an image column to the table.
+Images are drawn at icon size, using the representation that best fits the pixel density of the screen.
+table: Table instance.
+title: Column title text.
+index: Column that holds the images to be displayed.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc addImageTextColumn ( t : Table ; name : string ;
+ imageIndex , textIndex , editableMode : int ;
+ textParams : ptr TableTextColumnOptionalParams ) {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Appends a column to the table that displays both an image and text.
+Images are drawn at icon size, using the representation that best fits the pixel density of the screen.
+t: Table instance.
+name: Column title text.
+imageIndex: Column that holds the images to be displayed.
+textIndex: Column that holds the text to be displayed.
+editableMode: Column that defines whether or not the text is editable. TableModelColumnNeverEditable to make all rows never editable. TableModelColumnAlwaysEditable to make all rows always editable.
+textParams: Text display settings, NULL to use defaults.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
proc addProgressBarColumn ( table : Table ; title : string ; index : int ) {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+ Appends a column to the table containing a progress bar.
+The workings and valid range are exactly the same as that of uiProgressBar.
+table: Table instance.
+title: Column title text.
+index: Column that holds the data to be displayed. Integer in range of [ - 1 , 100 ] , see ProgressBar for details.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
proc addTextColumn ( t : Table ; name : string ;
+ textModelColumn , textEditableModelColumn : int ;
+ textParams : ptr TableTextColumnOptionalParams = nil ) {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Appends a text column to the table.t: Table instance.
+name: Column title text.
+textModelColumn: Column that holds the text to be displayed.
+textEditableModelColumn: Column that defines whether or not the text is editable. TableModelColumnNeverEditable to make all rows never editable. TableModelColumnAlwaysEditable to make all rows always editable.
+textParams: Text display settings, nil to use defaults.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc arcTo ( p : DrawPath ; xCenter , yCenter , radius , startAngle , sweep : float ;
+ negative : int ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc bezierTo ( p : DrawPath ; c1x , c1y , c2x , c2y , endX , endY : float ) {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc borderless ( w : Window ) : bool {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns whether or not the window is borderless.
+ Source
+Edit
+
+
+
+
+
+
+
+
proc borderless= ( w : Window ; borderless : bool ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Returns whether or not the window is full screen.Note:
+This method is merely a hint and may be ignored by the system.
+w: Window instance.
+borderless: true to make window borderless, false otherwise.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc checked ( c : Checkbox ) : bool {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns whether or the checkbox is checked.
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc checked= ( c : Checkbox ; checked : bool ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets whether or not the checkbox is checked.c: Checkbox instance.
+checked: true to check box, false otherwise.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc child ( g : Group ) : Widget {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the group's child widget.
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc clear ( c : Combobox ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Deletes all items from the combo box.
+ Source
+Edit
+
+
+
+
+
+
proc clear ( e : Entry ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Clears the entry's text
+ Source
+Edit
+
+
+
+
+
proc clear ( e : MultilineEntry ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Clears the multi line entry's texte: MultilineEntry instance.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
proc color ( a : Attribute ) : tuple [ r , g , b , alpha : float ] {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Returns the text color stored in a .Error:
+It is an error to call this on a Attribute that does not hold a text color.
+
+ Source
+Edit
+
+
+
+
+
+
proc color ( v : TableValue ) : tuple [ r , g , b , a : float ] {.... raises : [ ValueError ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+ Returns the color value held internally.
+To be used only on TableValue objects of type TableValueTypeColor .
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc columnWidth ( table : Table ; column : int ) : int {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Returns the table column width in pixels.table: Table instance.
+column: Column index.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc contentSize ( window : Window ) : tuple [ width , height : int ] {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+ Gets the window content size.Note:
+The content size does NOT include window decorations like menus or title bars.
+window: Window instance.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc contentSize= ( window : Window ; size : tuple [ width , height : int ] ) {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+ Gets the window content size.Note:
+The content size does NOT include window decorations like menus or title bars.
+Note:
+This method is merely a hint and may be ignored by the system.
+window: Window instance.
+size.width: Window content width to set.
+size.height: Window content height to set.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc delete ( b : Box ; index : int ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Removes the widget at index from the box.Note:
+The widget is neither destroyed nor freed.
+b: Box instance.
+index: Index of widget to be removed.
+
+ Source
+Edit
+
+
+
+
+
proc delete ( c : Combobox ; index : int ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Deletes an item at index from the combo box.Note:
+Deleting the index of the item currently selected will move the selection to the next item in the combo box or - 1 if no such item exists.
+c: Combobox instance.
+index: Index of the item to be deleted.
+
+ Source
+Edit
+
+
+
+
+
+
proc delete ( s : AttributedString ; start , end : int ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Deletes the characters and attributes of s in the byte range [start , end ).
+ Source
+Edit
+
+
+
+
+
proc delete ( t : Tab ; index : int ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Removes the widget at index.Note:
+The widget is neither destroyed nor freed.
+t: Tab instance.
+index: Index at which to insert the widget.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc drawText ( c : ptr DrawContext ; tl : DrawTextLayout ; point : tuple [ x , y : float ] ) {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Draws tl in c with the top-left point of tl at (point . x , point . y ).
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
proc extents ( tl : DrawTextLayout ) : tuple [ width , height : float ] {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+ Returns the width and height of tl . The returned width may be smaller than the width passed into newDrawTextLayout() depending on how the text in tl is wrapped. Therefore, you can use this function to get the actual size of the text layout.
+ Source
+Edit
+
+
+
+
+
+
+
+
proc family ( a : Attribute ) : string {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the font family stored in a .Error:
+It is an error to call this on a Attribute that does not hold a font family.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc features ( a : Attribute ) : OpenTypeFeatures {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Returns the OpenType features stored in a .Error:
+It is an error to call this on a Attribute that does not hold OpenType features.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc focused ( w : Window ) : bool {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns whether or not the window is focused.
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc forEach ( otf : OpenTypeFeatures ;
+ f : proc ( otf : OpenTypeFeatures ; abcd : string ; value : int ) : ForEach ) {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Executes f for every tag-value pair in otf . The enumeration order is unspecified.Error:
+You cannot modify otf while this function is running.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc free ( a : Attribute ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Frees a Attribute . You generally do not need to call this yourself, as AttributedString does this for you.Error:
+It is an error to call this function on a Attribute that has been given to a AttributedString .
+You can call this, however, if you created a Attribute that you aren't going to use later.
+
+ Source
+Edit
+
+
+
+
+
proc free ( a : AttributedString ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Destroys the AttributedString a . It will also free all Attributes within.
+ Source
+Edit
+
+
+
+
+
+
proc free ( i : Image ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Frees the image container and all associated resources.
+ Source
+Edit
+
+
+
+
+
+
+
proc free ( str : cstring ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Free the memory of a returned string.
+Every time a string is returned from libui, this method should be called.
+
+ Source
+Edit
+
+
+
+
+
proc free ( t : ptr TableSelection ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Frees the given TableSelection and all its resources.s: TableSelection instance.
+
+ Source
+Edit
+
+
+
+
+
proc free ( t : TableModel ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Frees the table model.Error:
+It is an error to free table models currently associated with a Table .
+
+ Source
+Edit
+
+
+
+
+
proc free ( t : TableValue ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Frees the TableValue.Warning:
+
This function is to be used only on TableValue objects that have NOT been passed to Table or TableModel - as these take ownership of the object.
+
Use this for freeing erroneously created values or when directly calling TableModelHandler without transferring ownership to Table or TableModel .
+
+
+ Source
+Edit
+
+
+
+
+
proc free ( tl : DrawTextLayout ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Frees tl . The underlying AttributedString is not freed.
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc freeFont ( desc : ptr FontDescriptor ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Frees a FontDescriptor previously filled by font() .
+After calling this function the contents of desc should be assumed undefined, however you can safely reuse desc .
+Calling this function on a FontDescriptor not previously filled by font() results in undefined behavior.
+desc: Font descriptor to free.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc fullscreen ( w : Window ) : bool {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns whether or not the window is full screen.
+ Source
+Edit
+
+
+
+
+
+
+
+
proc fullscreen= ( w : Window ; fullscreen : bool ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Returns whether or not the window is full screen.Note:
+This method is merely a hint and may be ignored by the system.
+w: Window instance.
+fullscreen: true to make window full screen, false otherwise.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc get ( otf : OpenTypeFeatures ; a , b , c , d : char ; value : var int ) : bool {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Determines whether the given feature tag is present in otf . If it is, value is set to the tag's value and true is returned. Otherwise, false is returned.
+Note that if this function returns false , value isn't changed. This is important: if a feature is not present in a OpenTypeFeatures , the feature is NOT treated as if its value was zero anyway. Script-specific font shaping rules and font-specific feature settings may use a different default value for a feature. You should likewise not treat a missing feature as having a value of zero either. Instead, a missing feature should be treated as having some unspecified default value.
+
+ Source
+Edit
+
+
+
+
+
proc get ( otf : OpenTypeFeatures ; abcd : string ; value : var int ) : bool {.
+ ... raises : [ ValueError ] , tags : [ ] , forbids : [ ] .}
+
+
+ Alias of get . a , b , c , and d are instead a string of 4 characters, each character representing a , b , c , and d respectively.
+ Source
+Edit
+
+
+
+
+
+
+
+
proc getInt ( v : TableValue ) : int {.... raises : [ ValueError ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the integer value held internally.
+To be used only on TableValue objects of type TableValueTypeInt .
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
proc image ( v : TableValue ) : Image {.... raises : [ ValueError ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the image contained.
+To be used only on TableValue objects of kind TableValueTypeImage .
+Warning:
+The image returned is not owned by the object v , hence no lifetime guarantees can be made.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
func impl ( b : Area ) : RawArea {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl ( b : Attribute ) : RawAttribute {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl ( b : AttributedString ) : RawAttributedString {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl ( b : Box ) : RawBox {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
+
func impl ( b : Checkbox ) : RawCheckbox {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
+
func impl ( b : Combobox ) : RawCombobox {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl ( b : DateTimePicker ) : RawDateTimePicker {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl ( b : DrawPath ) : RawDrawPath {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl ( b : DrawTextLayout ) : RawDrawTextLayout {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl ( b : EditableCombobox ) : RawEditableCombobox {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl ( b : Entry ) : RawEntry {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
+
+
func impl ( b : Grid ) : RawGrid {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl ( b : Group ) : RawGroup {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl ( b : Image ) : RawImage {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl ( b : Label ) : RawLabel {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
+
+
func impl ( b : MultilineEntry ) : RawMultilineEntry {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl ( b : OpenTypeFeatures ) : RawOpenTypeFeatures {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl ( b : ProgressBar ) : RawProgressBar {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
+
func impl ( b : Separator ) : RawSeparator {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl ( b : Slider ) : RawSlider {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl ( b : Spinbox ) : RawSpinbox {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl ( b : Tab ) : RawTab {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl ( b : Table ) : RawTable {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl ( b : TableModel ) : RawTableModel {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl ( b : TableValue ) : RawTableValue {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl ( b : Window ) : RawWindow {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Gets internal implementation of b
+ Source
+Edit
+
+
+
+
+
+
+
+
+
func impl= ( b : Area ; r : RawArea ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl= ( b : Attribute ; r : RawAttribute ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl= ( b : AttributedString ; r : RawAttributedString ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl= ( b : Box ; r : RawBox ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
+
func impl= ( b : Checkbox ; r : RawCheckbox ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
+
func impl= ( b : Combobox ; r : RawCombobox ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl= ( b : DateTimePicker ; r : RawDateTimePicker ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl= ( b : DrawPath ; r : RawDrawPath ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl= ( b : DrawTextLayout ; r : RawDrawTextLayout ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl= ( b : EditableCombobox ; r : RawEditableCombobox ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl= ( b : Entry ; r : RawEntry ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
+
+
func impl= ( b : Grid ; r : RawGrid ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl= ( b : Group ; r : RawGroup ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl= ( b : Image ; r : RawImage ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl= ( b : Label ; r : RawLabel ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
+
+
func impl= ( b : MultilineEntry ; r : RawMultilineEntry ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl= ( b : OpenTypeFeatures ; r : RawOpenTypeFeatures ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl= ( b : ProgressBar ; r : RawProgressBar ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
+
func impl= ( b : Separator ; r : RawSeparator ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl= ( b : Slider ; r : RawSlider ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl= ( b : Spinbox ; r : RawSpinbox ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl= ( b : Tab ; r : RawTab ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl= ( b : Table ; r : RawTable ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl= ( b : TableModel ; r : RawTableModel ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl= ( b : TableValue ; r : RawTableValue ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
func impl= ( b : Window ; r : RawWindow ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets internal implementation of b
+ Source
+Edit
+
+
+
+
+
+
+
+
proc init ( ) {.... raises : [ ValueError ] , tags : [ ] , forbids : [ ] .}
+
+
+ Initialize the application
+ Source
+Edit
+
+
+
+
+
+
+
+
proc insertAt ( c : Combobox ; index : int ; text : string ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Inserts an item at index to the combo box.c: Combobox instance.
+index: Index at which to insert the item.
+text: Item text.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc insertAtUnattributed ( s : AttributedString ; str : string ; at : int ) {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Adds the string str to s at the byte position specified by at . The new substring will be unattributed; existing attributes will be moved along with their text.
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc italic ( a : Attribute ) : TextItalic {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the font italic mode stored in a .Error:
+It is an error to call this on a Attribute that does not hold a font italic mode.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc len ( s : AttributedString ) : int {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the number of UTF-8 bytes in the textual content of s
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc mainLoop ( ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc mainStep ( wait : int ) : bool {.discardable , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc mainSteps ( ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc margined ( g : Group ) : bool {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns whether or not the group has a margin.
+ Source
+Edit
+
+
+
+
+
proc margined ( t : Tab ; index : int ) : bool {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns whether or not the page/tab at index has a margin.t: Tab instance.
+index: Index to check if it has a margin.
+
+ Source
+Edit
+
+
+
+
+
proc margined ( w : Window ) : bool {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns whether or not the window has a margin.
+ Source
+Edit
+
+
+
+
+
+
+
+
proc margined= ( g : Group ; margined : bool ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets whether or not the group has a margin.
+The margin size is determined by the OS defaults.
+g: Group instance.
+margined: true to set a margin, false otherwise.
+
+ Source
+Edit
+
+
+
+
+
proc margined= ( w : Window ; margined : bool ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets whether or not the window has a margin. The margin size is determined by the OS defaults.w: Window instance.
+margined: true to set a window margin, false otherwise.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc msgBox ( parent : Window ; title , desc : string ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Message box dialog window.
+A message box displayed in a new window indicating a common message.
+parent: Parent window.
+title: Dialog window title text.
+description: Dialog message text.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc msgBoxError ( parent : Window ; title , desc : string ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Error message box dialog window.
+A message box displayed in a new window indicating an error. On some systems this may invoke an accompanying sound.
+parent: Parent window.
+title: Dialog window title text.
+description: Dialog message text.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc newAttributedString ( initialString : string ) : AttributedString {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new AttributedString from initialString . The returned string will be entirely unattributed.
+ Source
+Edit
+
+
+
+
+
+
+
+
proc newBackgroundColorAttribute ( color : Color ; a : float = 1.0 ) : Attribute {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new Attribute that changes the background color of the text it is applied to.Error:
+It is an error to specify an invalid color.
+
+ Source
+Edit
+
+
+
+
+
proc newBackgroundColorAttribute ( r , g , b : float ; a : float = 1.0 ) : Attribute {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new Attribute that changes the background color of the text it is applied to.Error:
+It is an error to specify an invalid color.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc newCheckbox ( text : string ; ontoggled : proc ( sender : Checkbox ) = nil ) : Checkbox {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates and returns a new checkbox.text: Checkbox label text
+ontoggled: Callback for when the checkbox is toggled by the user.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc newColorAttribute ( color : Color ; a : float = 1.0 ) : Attribute {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new Attribute that changes the color of the text it is applied to.Error:
+It is an error to specify an invalid color.
+
+ Source
+Edit
+
+
+
+
+
proc newColorAttribute ( r , g , b : float ; a = 1.0 ) : Attribute {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new Attribute that changes the color of the text it is applied to.Error:
+It is an error to specify an invalid color.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc newCombobox ( items : openArray [ string ] = [ ] ;
+ onselected : proc ( sender : Combobox ) = nil ) : Combobox {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new combo box.items: List of strings to add to the combobox
+onselected: Callback for when a combo box item is selected.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc newDatePicker ( date : DateTime ;
+ onchanged : proc ( sender : DateTimePicker ) = nil ) : DateTimePicker {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new date pickerdate: Date and/or time as local time.
+onchanged: Callback for when the date time picker value is changed by the user.
+
+ Source
+Edit
+
+
+
+
+
proc newDatePicker ( onchanged : proc ( sender : DateTimePicker ) = nil ) : DateTimePicker {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new date pickeronchanged: Callback for when the date time picker value is changed by the user.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc newDateTimePicker ( dateTime : DateTime ;
+ onchanged : proc ( sender : DateTimePicker ) = nil ) : DateTimePicker {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new date and time picker.dateTime: Date and/or time as local time.
+onchanged: Callback for when the date time picker value is changed by the user.
+
+ Source
+Edit
+
+
+
+
+
proc newDateTimePicker ( onchanged : proc ( sender : DateTimePicker ) = nil ) : DateTimePicker {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new date and time picker.onchanged: Callback for when the date time picker value is changed by the user.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc newDrawTextLayout ( params : ptr DrawTextLayoutParams ) : DrawTextLayout {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new DrawTextLayout from the given parameters params .
+ Source
+Edit
+
+
+
+
+
+
+
+
proc newEditableCombobox ( items : openArray [ string ] = [ ] ;
+ onchanged : proc ( sender : EditableCombobox ) = nil ) : EditableCombobox {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new editable combo box.onchanged: Callback for when an editable combo box item is selected or user text changed.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc newEntry ( text : string = "" ; onchanged : proc ( sender : Entry ) = nil ) : Entry {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new entry.text: Entry text
+onchanged: Callback for when the user changes the entry's text.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc newFamilyAttribute ( family : string ) : Attribute {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Creates a new Attribute that changes the font family of the text it is applied to. Font family names are case-insensitive.
+ Source
+Edit
+
+
+
+
+
+
+
+
proc newFeaturesAttribute ( otf : OpenTypeFeatures ) : Attribute {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+ Creates a and returns new Attribute that changes the font family of the text it is applied to. otf is copied; you may free it after this function returns.
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
proc newGrid ( padded : bool = false ) : Grid {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new grid.padded: true to make widgets padded, false otherwise.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc newGroup ( title : string ; margined : bool = false ) : Group {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new grouptitle: Group title text.
+margined: Sets whether or not the group has a margin.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc newHorizontalBox ( padded = false ) : Box {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates and returns a new horizontal box.
+Widgets within the box are placed next to each other horizontally.
+padded: true to make widgets padded, false otherwise.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc newImage ( width , height : float ) : Image {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new image container.
+Dimensions are measured in points. This is most commonly the pixel size of the 1 x scaled image.
+width: Width in points.
+height: Height in points.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc newLabel ( text : string = "" ) : Label {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new label.
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc newMultilineEntry ( onchanged : proc ( sender : MultilineEntry ) = nil ) : MultilineEntry {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new multi line entry that visually wraps text when lines overflow.
+ Source
+Edit
+
+
+
+
+
+
+
+
proc newNonWrappingMultilineEntry ( onchanged : proc ( sender : MultilineEntry ) = nil ) : MultilineEntry {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new multi line entry that scrolls horizontally when lines overflow.Note:
+Windows does not allow for this style to be changed after creation, hence the two constructors.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc newPasswordEntry ( text : string = "" ; onchanged : proc ( sender : Entry ) = nil ) : Entry {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new entry suitable for sensitive inputs like passwords.
+The entered text is NOT readable by the user but masked as *******.
+text: Entry text
+onchanged: Callback for when the user changes the entry's text.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc newProgressBar ( indeterminate : bool = false ) : ProgressBar {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new progress bar.indeterminate: Whether or not the progress bar will display an indeterminate value.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc newSearchEntry ( text : string = "" ; onchanged : proc ( sender : Entry ) = nil ) : Entry {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new entry suitable for search.
+Some systems will deliberately delay the onchanged ( ) callback for a more natural feel.
+text: Entry text
+onchanged: Callback for when the user changes the entry's text.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc newSizeAttribute ( size : float ) : Attribute {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Creates a new Attribute that changes the size of the text it is applied to, in typographical points.
+ Source
+Edit
+
+
+
+
+
+
+
+
proc newSlider ( min , max : int ; onchanged : proc ( sender : Slider ) = nil ) : Slider {.
+ ... deprecated : "Use `newSlider(min..max, ...)` instead." , raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Deprecated: Use `newSlider(min..max, ...)` instead.
+
+
+ Creates a new slider.
+The initial slider value equals the minimum value.
+In the current implementation min and max are swapped if min > max . This may change in the future though.
+min: Minimum value
+max: Maximum value
+onchanged: Callback for when the slider value is changed by the user.
+
+ Source
+Edit
+
+
+
+
+
proc newSlider ( range : Slice [ SomeInteger ] ; onchanged : proc ( sender : Slider ) = nil ) : Slider
+
+
+ Creates a new slider.
+The initial slider value equals the minimum value.
+In the current implementation min and max are swapped if min > max . This may change in the future though.
+range: Slider range, as min .. max
+onchanged: Callback for when the slider value is changed by the user.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc newSpinbox ( min , max : int ; onchanged : proc ( sender : Spinbox ) = nil ) : Spinbox {.
+ ... deprecated : "Use `newSpinbox(min..max, ...)` instead" , raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Deprecated: Use `newSpinbox(min..max, ...)` instead
+
+
+ Creates a new spinbox.
+The initial spinbox value equals the minimum value.
+In the current implementation min and max are swapped if min > max . This may change in the future though.
+min: Minimum value.
+max: Maximum value.
+onchanged: Callback for when the spinbox value is changed by the user.
+
+ Source
+Edit
+
+
+
+
+
proc newSpinbox ( range : Slice [ SomeInteger ] ;
+ onchanged : proc ( sender : Spinbox ) = nil ) : Spinbox
+
+
+ Creates a new spinbox.
+The initial spinbox value equals the minimum value.
+In the current implementation min and max are swapped if min > max . This may change in the future though.
+range: Range of allowed values as min .. max .
+onchanged: Callback for when the spinbox value is changed by the user.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc newTab ( ) : Tab {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new tab container.
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc newTableValue ( color : Color ; a : 0.0 .. 1.0 = 1.0 ) : TableValue {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new table value to store a color in.color: Table value color.
+a: Alpha. Float in range of 0, 1.0 .
+
+ Source
+Edit
+
+
+
+
+
proc newTableValue ( i : int | bool ) : TableValue
+
+
+ Creates a new table value to store an integer.
+This value type can be used in conjunction with properties like column editable `true`, `false` or widget like progress bars and checkboxes. For these, consult ProgressBar and Checkbox for the allowed integer ranges.
+i: Integer or boolean value.
+
+ Source
+Edit
+
+
+
+
+
proc newTableValue ( img : Image ) : TableValue {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new table value to store an image.Warning:
+Unlike other TableValue constructors, this function does NOT copy the image to save time and space. Make sure the image data stays valid while in use by the library. As a general rule: if the constructor is called via the TableModelHandler , the image is safe to free once execution returns to ANY of your code.
+img: Image. Data is NOT copied and needs to kept alive.
+
+ Source
+Edit
+
+
+
+
+
proc newTableValue ( r , g , b : 0.0 .. 1.0 ; a = 1.0 ) : TableValue {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new table value to store a color in.r: Red. Float in range of 0, 1.0 .
+g: Green. Float in range of 0, 1.0 .
+b: Blue. Float in range of 0, 1.0 .
+a: Alpha. Float in range of 0, 1.0 .
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc newTimePicker ( onchanged : proc ( sender : DateTimePicker ) = nil ) : DateTimePicker {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new time picker.onchanged: Callback for when the date time picker value is changed by the user.
+
+ Source
+Edit
+
+
+
+
+
proc newTimePicker ( time : DateTime ;
+ onchanged : proc ( sender : DateTimePicker ) = nil ) : DateTimePicker {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new time picker.time: Date and/or time as local time.
+onchanged: Callback for when the date time picker value is changed by the user.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc newUnderlineColorAttribute ( u : UnderlineColor ; color : Color ; a : float = 0.0 ) : Attribute {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new Attribute that changes the color of the underline on the text it is applied to.Error:
+If the specified color type is UnderlineColorCustom , it is an error to specify an invalid color value. Otherwise, the color values are ignored and should be specified as zero.
+
+ Source
+Edit
+
+
+
+
+
proc newUnderlineColorAttribute ( u : UnderlineColor ; r = 0.0 ; g = 0.0 ; b = 0.0 ;
+ a : float = 0.0 ) : Attribute {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new Attribute that changes the color of the underline on the text it is applied to.Error:
+If the specified color type is UnderlineColorCustom , it is an error to specify an invalid color value. Otherwise, the color values are ignored and should be specified as zero.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc newVerticalBox ( padded = false ) : Box {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates a new vertical box.
+Widgets within the box are placed next to each other vertically.
+padded: true to make widgets padded, false otherwise.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc newWindow ( title : string ; width , height : int ; hasMenubar : bool = false ;
+ onfocuschanged : proc ( sender : Window ) = nil ) : Window {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Creates and returns a new Window.title: Window title text.
+width: Window width.
+height: Window height.
+hasMenubar: Whether or not the window should display a menu bar.
+onfocuschanged: Callback for when the window focus changes.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc openFile ( parent : Window ) : string {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ File chooser dialog window to select a single file. Returns the selected file pathNote:
+File paths are separated by the underlying OS file path separator.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc openFolder ( parent : Window ) : string {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Folder chooser dialog window to select a single file. Returns the selected folder pathNote:
+File paths are separated by the underlying OS file path separator.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc padded ( b : Box ) : bool {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns whether or not widgets within the box are padded.
+Padding is defined as space between individual widgets.
+
+ Source
+Edit
+
+
+
+
+
+
proc padded ( g : Grid ) : bool {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns whether or not widgets within the grid are padded.
+Padding is defined as space between individual widgets.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc padded= ( b : Box ; padded : bool ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets whether or not widgets within the box are padded.
+Padding is defined as space between individual widgets. The padding size is determined by the OS defaults.
+b: Box instance.
+padded: true to make widgets padded, false otherwise.
+
+ Source
+Edit
+
+
+
+
+
+
proc padded= ( g : Grid ; padded : bool ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets whether or not widgets within the grid are padded.
+Padding is defined as space between individual widgets. The padding size is determined by the OS defaults.
+g: Grid instance.
+padded: true to make widgets padded, false otherwise.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc pollingMainLoop ( poll : proc ( timeout : int ) ; timeout : int ) {.
+ ... raises : [ Exception ] , tags : [ RootEffect ] , forbids : [ ] .}
+
+
+ Can be used to merge an async event loop with libui-ng's event loop.
+Implemented using timeouts and polling because that's the only thing that truely composes.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc position ( w : Window ) : tuple [ x , y : int ] {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Gets the window position.
+Coordinates are measured from the top left corner of the screen.
+Note:
+This method may return inaccurate or dummy values on Unix platforms.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc position= ( w : Window ; pos : tuple [ x , y : int ] ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Moves the window to the specified position.
+Coordinates are measured from the top left corner of the screen.
+Note:
+This method may return inaccurate or dummy values on Unix platforms.
+w: Window instance.
+pos.x: New x position of the window.
+pos.y: New y position of the window.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc queueMain ( f : proc ( data : pointer ) {.cdecl .}; data : pointer ) {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc quit ( ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Quit the application
+ Source
+Edit
+
+
+
+
+
+
+
+
proc quitAll ( errorcode : int = QuitSuccess ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Quit both UIng and the program altogether
+ Source
+Edit
+
+
+
+
+
+
+
+
proc range= ( s : Slider ; sliderRange : Slice [ SomeInteger ] )
+
+
+ Sets the slider range.s: Slider instance.
+sliderRange: Slider range, as min .. max
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc readOnly ( e : Entry ) : bool {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns whether or not the entry's text can be changed.
+ Source
+Edit
+
+
+
+
+
proc readOnly ( e : MultilineEntry ) : bool {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns whether or not the multi line entry's text can be changed.e: MultilineEntry instance
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc readOnly= ( e : Entry ; readOnly : bool ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets whether or not the entry's text is read only.e: Entry instance.
+readonly: true to make read only, false otherwise.
+
+ Source
+Edit
+
+
+
+
+
proc readOnly= ( e : MultilineEntry ; readOnly : bool ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Sets whether or not the multi line entry's text is read only.e: MultilineEntry instance
+readonly: true to make read only, false otherwise.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc remove ( otf : OpenTypeFeatures ; a , b , c , d : char ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Removes the given feature tag and value from otf. If the tag is not present in otf, this function does nothing.
+ Source
+Edit
+
+
+
+
+
proc remove ( otf : OpenTypeFeatures ; abcd : string ) {.... raises : [ ValueError ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+ Alias of remove . a , b , c , and d are instead a string of 4 characters, each character representing a , b , c , and d respectively.
+ Source
+Edit
+
+
+
+
+
+
+
+
proc resizeable ( w : Window ) : bool {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns whether or not the window is user resizeable.
+ Source
+Edit
+
+
+
+
+
+
+
+
proc resizeable= ( w : Window ; resizeable : bool ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Sets whether or not the window is user resizeable.Note:
+This method is merely a hint and may be ignored by the system.
+w: Window instance.
+resizeable: true to make window resizable, false otherwise.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc rowChanged ( m : TableModel ; index : int ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Informs all associated Table views that a row has been changed.
+You do NOT need to call this in your setCellValue() handlers, but NEED to call this if your data changes at any other point.
+m: Table model that has changed.
+index: Index of the row that has changed.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc rowDeleted ( m : TableModel ; oldIndex : int ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Informs all associated Table views that a row has been deleted.
+You must delete the row from your model before you call this function.
+numRows() must represent the new row count before you call this function.
+m: Table model that has changed.
+oldIndex: Index of the row that has been deleted.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc rowInserted ( m : TableModel ; newIndex : int ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Informs all associated Table views that a new row has been added.
+You must insert the row data in your model before calling this function.
+numRows() must represent the new row count before you call this function.
+m: Table model that has changed.
+newIndex: Index of the row that has been added.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc saveFile ( parent : Window ) : string {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Save file dialog window. Returns the selected file path.
+The user is asked to confirm overwriting existing files, should the chosen file path already exist on the system.
+Note:
+File paths are separated by the underlying OS file path separator.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc scale ( m : ptr DrawMatrix ; xCenter , yCenter , x , y : float ) {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc selected= ( c : Combobox ; index : int ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets the item selected.c: Combobox instance.
+index: Index of the item to be selected, - 1 to clear selection.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc selection ( table : Table ) : seq [ int ] {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the current table selection.Note:
+For empty selections an empty seq will be returned.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc selection= ( table : Table ; sel : openArray [ int ] ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Sets the current table selection, clearing any previous selection.Note:
+Selecting more rows than the selection mode allows for results in nothing happening.
+table: Table instance.
+sel: List of rows to select.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc selectionMode= ( table : Table ; mode : TableSelectionMode ) {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+ Sets the table selection mode.Warning:
+All rows will be deselected if the existing selection is illegal in the new selection mode.
+table: Table instance.
+mode: Table selection mode to set.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc setAllTabsMargined ( t : Tab ; margined : bool = true ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Set all tabs in t as marginedt: Tab instance.
+margined: true to set a margin for all tabs, false otherwise.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc setAttribute ( s : AttributedString ; a : Attribute ; start , end : int ) {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets a in the byte range [start , end ) of s . Any existing attributes in that byte range of the same type are removed. You should not use a after this function returns.
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc setColumnWidth ( table : Table ; column , width : int ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Sets the table column width.
+Setting the width to - 1 will restore automatic column sizing matching either the width of the content or column header (which ever one is bigger).
+Note:
+Darwin currently only resizes to the column header width on - 1 .
+table: Table instance.
+column: Column index.
+width: Column width to set in pixels, - 1 to restore automatic column sizing.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc setMargined ( t : Tab ; index : int ; margined : bool ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Sets whether or not the page/tab at index has a margin.
+The margin size is determined by the OS defaults.
+t: Tab instance.
+index: Index of the tab/page to un/set margin for.
+margined: true to set a margin for tab at index , false otherwise.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc setSortIndicator ( table : Table ; column : int ; indicator : SortIndicator ) {.
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets the column's sort indicator displayed in the table header.
+Use this to display appropriate arrows in the table header to indicate a sort direction.
+Note:
+Setting the indicator is purely visual and does not perform any sorting.
+table: Table instance.
+column: Column index.
+indicator: Sort indicator.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc size ( a : Attribute ) : float {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the font size stored in a .Error:
+It is an error to call this on a Attribute that does not hold a font size.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc size= ( a : Area ; size : tuple [ width , height : int ] ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc skew ( m : ptr DrawMatrix ; x , y , xamount , yamount : float ) {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc sortIndicator ( table : Table ; column : int ) : SortIndicator {.... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+ Returns the column's sort indicator displayed in the table header.table: Table instance.
+column: Column index.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc stretch ( a : Attribute ) : TextStretch {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the font stretch stored in a .Error:
+It is an error to call this on a Attribute that does not hold a font stretch.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc text ( b : Button ) : string {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the button label text.
+ Source
+Edit
+
+
+
+
+
proc text ( c : Checkbox ) : string {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the checkbox label text.
+ Source
+Edit
+
+
+
+
+
proc text ( c : EditableCombobox ) : string {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the text of the editable combo box.
+This text is either the text of one of the predefined list items or the text manually entered by the user.
+
+ Source
+Edit
+
+
+
+
+
proc text ( e : Entry ) : string {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the entry's text.
+ Source
+Edit
+
+
+
+
+
proc text ( e : MultilineEntry ) : string {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the multi line entry's text.e: MultilineEntry instance
+
+ Source
+Edit
+
+
+
+
+
proc text ( l : Label ) : string {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the label text.
+ Source
+Edit
+
+
+
+
+
+
+
+
proc text= ( b : Button ; text : string ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets the button label text.b: Button instance
+text: Label text
+
+ Source
+Edit
+
+
+
+
+
proc text= ( c : Checkbox ; text : string ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets the checkbox label text.c: Checkbox instance.
+text: Label text.
+
+ Source
+Edit
+
+
+
+
+
proc text= ( c : EditableCombobox ; text : string ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Sets the text of the editable combo box.
+This text is either the text of one of the predefined list items or the text manually entered by the user.
+c: Combobox instance.
+text: Text field text.
+
+ Source
+Edit
+
+
+
+
+
proc text= ( e : Entry ; text : string ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets the entry's text.e: Entry instance.
+text: Entry text
+
+ Source
+Edit
+
+
+
+
+
proc text= ( e : MultilineEntry ; text : string ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets the multi line entry's text.e: MultilineEntry instance
+text: Single/multi line text
+
+ Source
+Edit
+
+
+
+
+
proc text= ( l : Label ; text : string ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets the label text.l: Lable Instance
+text: Label text.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc time ( d : DateTimePicker ) : DateTime {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns date and time stored in the data time picker.d: DateTimePicker instance
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc time= ( d : DateTimePicker ; dateTime : DateTime ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Sets date and time of the data time picker.d: DateTimePicker instance.
+time: Date and/or time as local time.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc timer ( milliseconds : int ; fun : proc ( ) : bool ) {.... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+ Call fun after milliseconds milliseconds. This is repeated until fun returns false .Note:
+This cannot be called from any thread, unlike
queueMain()
+Note:
+The minimum exact timing, either accuracy (timer burst, etc.) or granularity (15ms on Windows, etc.), is OS-defined
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc title ( g : Group ) : string {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the group title.
+ Source
+Edit
+
+
+
+
+
proc title ( w : Window ) : string {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the window title.
+ Source
+Edit
+
+
+
+
+
+
+
+
proc title= ( g : Group ; title : string ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets the group title.g: Group instance.
+title: Group title text.
+
+ Source
+Edit
+
+
+
+
+
proc title= ( w : Window ; text : string ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the window title.Note:
+This method is merely a hint and may be ignored on unix platforms.
+w: Window instance.
+title: Window title text.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
proc underline ( a : Attribute ) : Underline {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the underline type stored in a .Error:
+It is an error to call this on a Attribute that does not hold an underline style.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc underlineColor ( a : Attribute ) : tuple [ u : UnderlineColor ,
+ r , g , b , alpha : float ] {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the underline color stored in a .Error:
+It is an error to call this on a Attribute that does not hold an underline color.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc uninit ( ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Un-Initialize the application
+Usually not needed as mainLoop() calls this for you.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc value ( p : ProgressBar ) : int {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the progress bar value.p: ProgressBar instance.
+
+ Source
+Edit
+
+
+
+
+
proc value ( s : Slider ) : int {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the slider value.
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc value= ( p : ProgressBar ; n : -1 .. 100 ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets the progress bar value.
+Valid values are [ 0 , 100 ] for displaying a solid bar imitating a percent value.
+Use a value of - 1 to render an animated bar to convey an indeterminate value.
+p: ProgressBar instance.
+n: Value to set. Integer in the range of [ - 1 , 100 ] .
+
+ Source
+Edit
+
+
+
+
+
proc value= ( s : Slider ; value : int ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Sets the slider value.s: Slider intance.
+value: Value to set.
+
+ Source
+Edit
+
+
+
+
+
proc value= ( s : Spinbox ; value : int ) {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the spinbox value.Note:
+Setting a value out of range will clamp to the nearest value in range.
+s: Spinbox instance.
+value: Value to set.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc weight ( a : Attribute ) : TextWeight {.... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+ Returns the font weight stored in a .Error:
+It is an error to call this on a Attribute that does not hold a font weight.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+ ForEach , TextWeight , TextItalic , TextStretch , FontDescriptor , WindowResizeEdge , Modifiers , ExtKey , AreaDrawParams , AreaMouseEvent , AreaKeyEvent , AreaHandler , DrawMatrix , DrawFillMode , DrawBrushType , DrawLineCap , DrawLineJoin , DrawStrokeParams , DrawDefaultMiterLimit , DrawBrushGradientStop , AttributeType , TextWeight , TextItalic , TextStretch , Underline , UnderlineColor , DrawTextAlign , DrawTextLayoutParams , DrawContext , DrawBrush , DrawBrushType , Align , At , TableSelectionMode , TableModelHandler , TableParams , TableTextColumnOptionalParams , TableColumnType , TableValueType , TableModelColumnNeverEditable , TableModelColumnAlwaysEditable , SortIndicator
+
+
+
+
+
+
+
+
+
+ Made with Nim. Generated: 2024-07-04 16:02:16 UTC
+
+
+
+
+
+
+
+
+
diff --git a/uing.idx b/uing.idx
new file mode 100644
index 0000000..3e8508b
--- /dev/null
+++ b/uing.idx
@@ -0,0 +1,443 @@
+nimTitle uing uing.html module uing 0
+nim Widget uing.html#Widget type Widget 16
+nim impl uing.html#impl,Widget proc impl(w: Widget): ptr [Control] 19
+nim init uing.html#init proc init() 22
+nim uninit uing.html#uninit proc uninit() 35
+nim quit uing.html#quit proc quit() 42
+nim quitAll uing.html#quitAll,int proc quitAll(errorcode: int = QuitSuccess) 47
+nim mainLoop uing.html#mainLoop proc mainLoop() 53
+nim pollingMainLoop uing.html#pollingMainLoop,proc(int),int proc pollingMainLoop(poll: proc (timeout: int); timeout: int) 57
+nim queueMain uing.html#queueMain,proc(pointer),pointer proc queueMain(f: proc (data: pointer) {.cdecl.}; data: pointer) 102
+nim mainSteps uing.html#mainSteps proc mainSteps() 105
+nim mainStep uing.html#mainStep,int proc mainStep(wait: int): bool 108
+nim timer uing.html#timer,int,proc) proc timer(milliseconds: int; fun: proc (): bool) 118
+nim free uing.html#free,cstring proc free(str: cstring) 134
+nim loadControlFont uing.html#loadControlFont,ptr.FontDescriptor proc loadControlFont(f: ptr FontDescriptor) 143
+nim free uing.html#free,ptr.FontDescriptor proc free(f: ptr FontDescriptor) 146
+nim Area uing.html#Area type Area 154
+nim impl uing.html#impl,Area proc impl(b: Area): RawArea 85
+nim impl= uing.html#impl=,Area,RawArea proc impl=(b: Area; r: RawArea) 167
+nim size= uing.html#size=,Area,tuple[int,int] proc size=(a: Area; size: tuple[width, height: int]) 169
+nim queueRedrawAll uing.html#queueRedrawAll,Area proc queueRedrawAll(a: Area) 172
+nim beginUserWindowMove uing.html#beginUserWindowMove,Area proc beginUserWindowMove(a: Area) 175
+nim beginUserWindowResize uing.html#beginUserWindowResize,Area,WindowResizeEdge proc beginUserWindowResize(a: Area; edge: WindowResizeEdge) 178
+nim scrollTo uing.html#scrollTo,Area,float,float,float,float proc scrollTo(a: Area; x, y, width, height: float) 181
+nim handler uing.html#handler,Area proc handler(a: Area): ptr AreaHandler 184
+nim newArea uing.html#newArea,ptr.AreaHandler proc newArea(ah: ptr AreaHandler): Area 187
+nim newScrollingArea uing.html#newScrollingArea,ptr.AreaHandler,int,int proc newScrollingArea(ah: ptr AreaHandler; width, height: int): Area 192
+nim DrawPath uing.html#DrawPath type DrawPath 203
+nim impl uing.html#impl,DrawPath proc impl(b: DrawPath): RawDrawPath 85
+nim impl= uing.html#impl=,DrawPath,RawDrawPath proc impl=(b: DrawPath; r: RawDrawPath) 216
+nim newDrawPath uing.html#newDrawPath,DrawFillMode proc newDrawPath(fillMode: DrawFillMode): DrawPath 218
+nim free uing.html#free,DrawPath proc free(p: DrawPath) 222
+nim newFigure uing.html#newFigure,DrawPath,float,float proc newFigure(p: DrawPath; x: float; y: float) 224
+nim newFigureWithArc uing.html#newFigureWithArc,DrawPath,float,float,float,float,float,int proc newFigureWithArc(p: DrawPath;\n xCenter, yCenter, radius, startAngle, sweep: float;\n negative: int) 226
+nim lineTo uing.html#lineTo,DrawPath,float,float proc lineTo(p: DrawPath; x, y: float) 237
+nim arcTo uing.html#arcTo,DrawPath,float,float,float,float,float,int proc arcTo(p: DrawPath; xCenter, yCenter, radius, startAngle, sweep: float;\n negative: int) 240
+nim bezierTo uing.html#bezierTo,DrawPath,float,float,float,float,float,float proc bezierTo(p: DrawPath; c1x, c1y, c2x, c2y, endX, endY: float) 251
+nim closeFigure uing.html#closeFigure,DrawPath proc closeFigure(p: DrawPath) 262
+nim addRectangle uing.html#addRectangle,DrawPath,float,float,float,float proc addRectangle(p: DrawPath; x, y, width, height: float) 264
+nim ended uing.html#ended,DrawPath proc ended(p: DrawPath): bool 267
+nim `end` uing.html#end,DrawPath proc `end`(p: DrawPath) 270
+nim stroke uing.html#stroke,ptr.DrawContext,DrawPath,ptr.DrawBrush,ptr.DrawStrokeParams proc stroke(c: ptr DrawContext; path: DrawPath; b: ptr DrawBrush;\n p: ptr DrawStrokeParams) 273
+nim fill uing.html#fill,ptr.DrawContext,DrawPath,ptr.DrawBrush proc fill(c: ptr DrawContext; path: DrawPath; b: ptr DrawBrush) 276
+nim transform uing.html#transform,ptr.DrawContext,ptr.DrawMatrix proc transform(c: ptr DrawContext; m: ptr DrawMatrix) 279
+nim setIdentity uing.html#setIdentity,ptr.DrawMatrix proc setIdentity(m: ptr DrawMatrix) 282
+nim translate uing.html#translate,ptr.DrawMatrix,float,float proc translate(m: ptr DrawMatrix; x, y: float) 285
+nim scale uing.html#scale,ptr.DrawMatrix,float,float,float,float proc scale(m: ptr DrawMatrix; xCenter, yCenter, x, y: float) 288
+nim rotate uing.html#rotate,ptr.DrawMatrix,float,float,float proc rotate(m: ptr DrawMatrix; x, y, amount: float) 291
+nim skew uing.html#skew,ptr.DrawMatrix,float,float,float,float proc skew(m: ptr DrawMatrix; x, y, xamount, yamount: float) 294
+nim multiply uing.html#multiply,ptr.DrawMatrix,ptr.DrawMatrix proc multiply(dest, src: ptr DrawMatrix) 297
+nim invertible uing.html#invertible,ptr.DrawMatrix proc invertible(m: ptr DrawMatrix): bool 300
+nim invert uing.html#invert,ptr.DrawMatrix proc invert(m: ptr DrawMatrix): int 303
+nim transformPoint uing.html#transformPoint,ptr.DrawMatrix proc transformPoint(m: ptr DrawMatrix): tuple[x, y: float] 306
+nim transformSize uing.html#transformSize,ptr.DrawMatrix proc transformSize(m: ptr DrawMatrix): tuple[x, y: float] 312
+nim clip uing.html#clip,ptr.DrawContext,DrawPath proc clip(c: ptr DrawContext; path: DrawPath) 318
+nim save uing.html#save,ptr.DrawContext proc save(c: ptr DrawContext) 321
+nim restore uing.html#restore,ptr.DrawContext proc restore(c: ptr DrawContext) 324
+nim Attribute uing.html#Attribute type Attribute 330
+nim AttributedString uing.html#AttributedString type AttributedString 343
+nim impl uing.html#impl,Attribute proc impl(b: Attribute): RawAttribute 85
+nim impl= uing.html#impl=,Attribute,RawAttribute proc impl=(b: Attribute; r: RawAttribute) 385
+nim impl uing.html#impl,AttributedString proc impl(b: AttributedString): RawAttributedString 85
+nim impl= uing.html#impl=,AttributedString,RawAttributedString proc impl=(b: AttributedString; r: RawAttributedString) 386
+nim newAttributedString uing.html#newAttributedString,string proc newAttributedString(initialString: string): AttributedString 388
+nim free uing.html#free,AttributedString proc free(a: AttributedString) 395
+nim `$` uing.html#$,AttributedString proc `$`(s: AttributedString): string 401
+nim len uing.html#len,AttributedString proc len(s: AttributedString): int 408
+nim addUnattributed uing.html#addUnattributed,AttributedString,string proc addUnattributed(s: AttributedString; str: string) 413
+nim insertAtUnattributed uing.html#insertAtUnattributed,AttributedString,string,int proc insertAtUnattributed(s: AttributedString; str: string; at: int) 419
+nim delete uing.html#delete,AttributedString,int,int proc delete(s: AttributedString; start, end: int) 426
+nim setAttribute uing.html#setAttribute,AttributedString,Attribute,int,int proc setAttribute(s: AttributedString; a: Attribute; start, end: int) 432
+nim addWithAttributes uing.html#addWithAttributes,AttributedString,string,varargs[Attribute] proc addWithAttributes(s: AttributedString; str: string; attrs: varargs[Attribute]) 439
+nim addWithAttributes uing.html#addWithAttributes,AttributedString,string,openArray[Attribute] proc addWithAttributes(s: AttributedString; str: string; attrs: openArray[Attribute]) 452
+nim forEachAttribute uing.html#forEachAttribute,AttributedString,proc(AttributedString,Attribute,int,int) proc forEachAttribute(str: AttributedString; fun: proc (s: AttributedString;\n a: Attribute; start, end: int): ForEach) 485
+nim numGraphemes uing.html#numGraphemes,AttributedString proc numGraphemes(s: AttributedString): int 497
+nim byteIndexToGrapheme uing.html#byteIndexToGrapheme,AttributedString,int proc byteIndexToGrapheme(s: AttributedString; pos: int): int 500
+nim graphemeToByteIndex uing.html#graphemeToByteIndex,AttributedString,int proc graphemeToByteIndex(s: AttributedString; pos: int): int 503
+nim free uing.html#free,Attribute proc free(a: Attribute) 508
+nim getType uing.html#getType,Attribute proc getType(a: Attribute): AttributeType 520
+nim newFamilyAttribute uing.html#newFamilyAttribute,string proc newFamilyAttribute(family: string): Attribute 525
+nim family uing.html#family,Attribute proc family(a: Attribute): string 533
+nim newSizeAttribute uing.html#newSizeAttribute,float proc newSizeAttribute(size: float): Attribute 543
+nim size uing.html#size,Attribute proc size(a: Attribute): float 550
+nim newWeightAttribute uing.html#newWeightAttribute,TextWeight proc newWeightAttribute(weight: TextWeight): Attribute 561
+nim weight uing.html#weight,Attribute proc weight(a: Attribute): TextWeight 568
+nim newItalicAttribute uing.html#newItalicAttribute,TextItalic proc newItalicAttribute(italic: TextItalic): Attribute 576
+nim italic uing.html#italic,Attribute proc italic(a: Attribute): TextItalic 583
+nim newStretchAttribute uing.html#newStretchAttribute,TextStretch proc newStretchAttribute(stretch: TextStretch): Attribute 594
+nim stretch uing.html#stretch,Attribute proc stretch(a: Attribute): TextStretch 601
+nim newColorAttribute uing.html#newColorAttribute,float,float,float,float proc newColorAttribute(r, g, b: float; a = 1.0): Attribute 609
+nim newColorAttribute uing.html#newColorAttribute,Color,float proc newColorAttribute(color: Color; a: float = 1.0): Attribute 618
+nim color uing.html#color,Attribute proc color(a: Attribute): tuple[r, g, b, alpha: float] 629
+nim newBackgroundColorAttribute uing.html#newBackgroundColorAttribute,float,float,float,float proc newBackgroundColorAttribute(r, g, b: float; a: float = 1.0): Attribute 640
+nim newBackgroundColorAttribute uing.html#newBackgroundColorAttribute,Color,float proc newBackgroundColorAttribute(color: Color; a: float = 1.0): Attribute 649
+nim newUnderlineAttribute uing.html#newUnderlineAttribute,Underline proc newUnderlineAttribute(u: Underline): Attribute 662
+nim underline uing.html#underline,Attribute proc underline(a: Attribute): Underline 669
+nim newUnderlineColorAttribute uing.html#newUnderlineColorAttribute,UnderlineColor,float,float,float,float proc newUnderlineColorAttribute(u: UnderlineColor; r = 0.0; g = 0.0; b = 0.0;\n a: float = 0.0): Attribute 678
+nim newUnderlineColorAttribute uing.html#newUnderlineColorAttribute,UnderlineColor,Color,float proc newUnderlineColorAttribute(u: UnderlineColor; color: Color; a: float = 0.0): Attribute 689
+nim underlineColor uing.html#underlineColor,Attribute proc underlineColor(a: Attribute): tuple[u: UnderlineColor, r, g, b, alpha: float] 702
+nim OpenTypeFeatures uing.html#OpenTypeFeatures type OpenTypeFeatures 718
+nim impl uing.html#impl,OpenTypeFeatures proc impl(b: OpenTypeFeatures): RawOpenTypeFeatures 85
+nim impl= uing.html#impl=,OpenTypeFeatures,RawOpenTypeFeatures proc impl=(b: OpenTypeFeatures; r: RawOpenTypeFeatures) 739
+nim newOpenTypeFeatures uing.html#newOpenTypeFeatures proc newOpenTypeFeatures(): OpenTypeFeatures 741
+nim free uing.html#free,OpenTypeFeatures proc free(otf: OpenTypeFeatures) 747
+nim clone uing.html#clone,OpenTypeFeatures proc clone(otf: OpenTypeFeatures): OpenTypeFeatures 752
+nim add uing.html#add,OpenTypeFeatures,char,char,char,char,uint32 proc add(otf: OpenTypeFeatures; a, b, c, d: char; value: uint32) 759
+nim add uing.html#add,OpenTypeFeatures,string, proc add(otf: OpenTypeFeatures; abcd: string; value: uint32 | bool) 767
+nim remove uing.html#remove,OpenTypeFeatures,char,char,char,char proc remove(otf: OpenTypeFeatures; a, b, c, d: char) 777
+nim remove uing.html#remove,OpenTypeFeatures,string proc remove(otf: OpenTypeFeatures; abcd: string) 783
+nim get uing.html#get,OpenTypeFeatures,char,char,char,char,int proc get(otf: OpenTypeFeatures; a, b, c, d: char; value: var int): bool 793
+nim get uing.html#get,OpenTypeFeatures,string,int proc get(otf: OpenTypeFeatures; abcd: string; value: var int): bool 812
+nim forEach uing.html#forEach,OpenTypeFeatures,proc(OpenTypeFeatures,string,int) proc forEach(otf: OpenTypeFeatures;\n f: proc (otf: OpenTypeFeatures; abcd: string; value: int): ForEach) 840
+nim newFeaturesAttribute uing.html#newFeaturesAttribute,OpenTypeFeatures proc newFeaturesAttribute(otf: OpenTypeFeatures): Attribute 852
+nim features uing.html#features,Attribute proc features(a: Attribute): OpenTypeFeatures 860
+nim DrawTextLayout uing.html#DrawTextLayout type DrawTextLayout 872
+nim impl uing.html#impl,DrawTextLayout proc impl(b: DrawTextLayout): RawDrawTextLayout 85
+nim impl= uing.html#impl=,DrawTextLayout,RawDrawTextLayout proc impl=(b: DrawTextLayout; r: RawDrawTextLayout) 895
+nim newDrawTextLayout uing.html#newDrawTextLayout,ptr.DrawTextLayoutParams proc newDrawTextLayout(params: ptr DrawTextLayoutParams): DrawTextLayout 897
+nim free uing.html#free,DrawTextLayout proc free(tl: DrawTextLayout) 903
+nim drawText uing.html#drawText,ptr.DrawContext,DrawTextLayout,tuple[float,float] proc drawText(c: ptr DrawContext; tl: DrawTextLayout; point: tuple[x, y: float]) 908
+nim extents uing.html#extents,DrawTextLayout proc extents(tl: DrawTextLayout): tuple[width, height: float] 913
+nim Button uing.html#Button type Button 932
+nim impl uing.html#impl,Button proc impl(b: Button): RawButton 85
+nim impl= uing.html#impl=,Button,RawButton proc impl=(b: Button; r: RawButton) 940
+nim text uing.html#text,Button proc text(b: Button): string 942
+nim text= uing.html#text=,Button,string proc text=(b: Button; text: string) 949
+nim newButton uing.html#newButton,string,proc(Button) proc newButton(text: string; onclick: proc (sender: Button) = nil): Button 957
+nim RadioButtons uing.html#RadioButtons type RadioButtons 971
+nim impl uing.html#impl,RadioButtons proc impl(b: RadioButtons): RawRadioButtons 85
+nim impl= uing.html#impl=,RadioButtons,RawRadioButtons proc impl=(b: RadioButtons; r: RawRadioButtons) 977
+nim add uing.html#add,RadioButtons,varargs[string,] proc add(r: RadioButtons; items: varargs[string, `$`]) 979
+nim selected uing.html#selected,RadioButtons proc selected(r: RadioButtons): int 989
+nim selected= uing.html#selected=,RadioButtons,int proc selected=(r: RadioButtons; index: int) 996
+nim newRadioButtons uing.html#newRadioButtons,openArray[string],proc(RadioButtons) proc newRadioButtons(items: openArray[string] = [];\n onselected: proc (sender: RadioButtons) = nil): RadioButtons 1006
+nim Window uing.html#Window type Window 1022
+nim impl uing.html#impl,Window proc impl(b: Window): RawWindow 85
+nim impl= uing.html#impl=,Window,RawWindow proc impl=(b: Window; r: RawWindow) 1039
+nim title uing.html#title,Window proc title(w: Window): string 1041
+nim title= uing.html#title=,Window,string proc title=(w: Window; text: string) 1050
+nim position uing.html#position,Window proc position(w: Window): tuple[x, y: int] 1060
+nim position= uing.html#position=,Window,tuple[int,int] proc position=(w: Window; pos: tuple[x, y: int]) 1075
+nim contentSize uing.html#contentSize,Window proc contentSize(window: Window): tuple[width, height: int] 1088
+nim contentSize= uing.html#contentSize=,Window,tuple[int,int] proc contentSize=(window: Window; size: tuple[width, height: int]) 1100
+nim fullscreen uing.html#fullscreen,Window proc fullscreen(w: Window): bool 1113
+nim fullscreen= uing.html#fullscreen=,Window,bool proc fullscreen=(w: Window; fullscreen: bool) 1120
+nim focused uing.html#focused,Window proc focused(w: Window): bool 1130
+nim borderless uing.html#borderless,Window proc borderless(w: Window): bool 1137
+nim borderless= uing.html#borderless=,Window,bool proc borderless=(w: Window; borderless: bool) 1144
+nim resizeable uing.html#resizeable,Window proc resizeable(w: Window): bool 1154
+nim resizeable= uing.html#resizeable=,Window,bool proc resizeable=(w: Window; resizeable: bool) 1161
+nim margined uing.html#margined,Window proc margined(w: Window): bool 1171
+nim margined= uing.html#margined=,Window,bool proc margined=(w: Window; margined: bool) 1178
+nim child uing.html#child,Window proc child(w: Window): Widget 1187
+nim child= uing.html#child=,Window,Widget proc child=(w: Window; child: Widget) 1194
+nim setChild uing.html#setChild,Window,Widget proc setChild(w: Window; child: Widget) 1203
+nim openFile uing.html#openFile,Window proc openFile(parent: Window): string 1212
+nim openFolder uing.html#openFolder,Window proc openFolder(parent: Window): string 1225
+nim saveFile uing.html#saveFile,Window proc saveFile(parent: Window): string 1238
+nim msgBox uing.html#msgBox,Window,string,string proc msgBox(parent: Window; title, desc: string) 1253
+nim msgBoxError uing.html#msgBoxError,Window,string,string proc msgBoxError(parent: Window; title, desc: string) 1264
+nim error uing.html#error,Window,string,string proc error(parent: Window; title, desc: string) 1276
+nim newWindow uing.html#newWindow,string,int,int,bool,proc(Window) proc newWindow(title: string; width, height: int; hasMenubar: bool = false;\n onfocuschanged: proc (sender: Window) = nil): Window 1296
+nim Box uing.html#Box type Box 1320
+nim impl uing.html#impl,Box proc impl(b: Box): RawBox 85
+nim impl= uing.html#impl=,Box,RawBox proc impl=(b: Box; r: RawBox) 1328
+nim add uing.html#add,Box,Widget proc add(b: Box; child: Widget; stretchy = false) 1330
+nim add uing.html#add,Box,openArray[Widget] proc add(c: Box; items: openArray[Widget]; stretchy = false) 1343
+nim delete uing.html#delete,Box,int proc delete(b: Box; index: int) 1349
+nim padded uing.html#padded,Box proc padded(b: Box): bool 1360
+nim padded= uing.html#padded=,Box,bool proc padded=(b: Box; padded: bool) 1369
+nim newHorizontalBox uing.html#newHorizontalBox proc newHorizontalBox(padded = false): Box 1380
+nim newVerticalBox uing.html#newVerticalBox proc newVerticalBox(padded = false): Box 1392
+nim Checkbox uing.html#Checkbox type Checkbox 1407
+nim impl uing.html#impl,Checkbox proc impl(b: Checkbox): RawCheckbox 85
+nim impl= uing.html#impl=,Checkbox,RawCheckbox proc impl=(b: Checkbox; r: RawCheckbox) 1412
+nim text uing.html#text,Checkbox proc text(c: Checkbox): string 1414
+nim text= uing.html#text=,Checkbox,string proc text=(c: Checkbox; text: string) 1423
+nim checked uing.html#checked,Checkbox proc checked(c: Checkbox): bool 1433
+nim checked= uing.html#checked=,Checkbox,bool proc checked=(c: Checkbox; checked: bool) 1440
+nim newCheckbox uing.html#newCheckbox,string,proc(Checkbox) proc newCheckbox(text: string; ontoggled: proc (sender: Checkbox) = nil): Checkbox 1448
+nim Entry uing.html#Entry type Entry 1462
+nim impl uing.html#impl,Entry proc impl(b: Entry): RawEntry 85
+nim impl= uing.html#impl=,Entry,RawEntry proc impl=(b: Entry; r: RawEntry) 1467
+nim text uing.html#text,Entry proc text(e: Entry): string 1469
+nim text= uing.html#text=,Entry,string proc text=(e: Entry; text: string) 1478
+nim clear uing.html#clear,Entry proc clear(e: Entry) 1486
+nim readOnly uing.html#readOnly,Entry proc readOnly(e: Entry): bool 1493
+nim readOnly= uing.html#readOnly=,Entry,bool proc readOnly=(e: Entry; readOnly: bool) 1500
+nim newEntry uing.html#newEntry,string,proc(Entry) proc newEntry(text: string = ""; onchanged: proc (sender: Entry) = nil): Entry 1510
+nim newPasswordEntry uing.html#newPasswordEntry,string,proc(Entry) proc newPasswordEntry(text: string = ""; onchanged: proc (sender: Entry) = nil): Entry 1522
+nim newSearchEntry uing.html#newSearchEntry,string,proc(Entry) proc newSearchEntry(text: string = ""; onchanged: proc (sender: Entry) = nil): Entry 1536
+nim Label uing.html#Label type Label 1554
+nim impl uing.html#impl,Label proc impl(b: Label): RawLabel 85
+nim impl= uing.html#impl=,Label,RawLabel proc impl=(b: Label; r: RawLabel) 1557
+nim text uing.html#text,Label proc text(l: Label): string 1559
+nim text= uing.html#text=,Label,string proc text=(l: Label; text: string) 1568
+nim newLabel uing.html#newLabel,string proc newLabel(text: string = ""): Label 1576
+nim Tab uing.html#Tab type Tab 1587
+nim impl uing.html#impl,Tab proc impl(b: Tab): RawTab 85
+nim impl= uing.html#impl=,Tab,RawTab proc impl=(b: Tab; r: RawTab) 1595
+nim add uing.html#add,Tab,string,Widget proc add(t: Tab; name: string; w: Widget) 1597
+nim insertAt uing.html#insertAt,Tab,string,int,Widget proc insertAt(t: Tab; name: string; index: int; w: Widget) 1607
+nim delete uing.html#delete,Tab,int proc delete(t: Tab; index: int) 1618
+nim margined uing.html#margined,Tab,int proc margined(t: Tab; index: int): bool 1629
+nim setMargined uing.html#setMargined,Tab,int,bool proc setMargined(t: Tab; index: int; margined: bool) 1637
+nim setAllTabsMargined uing.html#setAllTabsMargined,Tab,bool proc setAllTabsMargined(t: Tab; margined: bool = true) 1648
+nim newTab uing.html#newTab proc newTab(): Tab 1657
+nim Group uing.html#Group type Group 1667
+nim impl uing.html#impl,Group proc impl(b: Group): RawGroup 85
+nim impl= uing.html#impl=,Group,RawGroup proc impl=(b: Group; r: RawGroup) 1678
+nim title uing.html#title,Group proc title(g: Group): string 1680
+nim title= uing.html#title=,Group,string proc title=(g: Group; title: string) 1689
+nim child uing.html#child,Group proc child(g: Group): Widget 1697
+nim child= uing.html#child=,Group,Widget proc child=(g: Group; c: Widget) 1704
+nim margined uing.html#margined,Group proc margined(g: Group): bool 1717
+nim margined= uing.html#margined=,Group,bool proc margined=(g: Group; margined: bool) 1724
+nim newGroup uing.html#newGroup,string,bool proc newGroup(title: string; margined: bool = false): Group 1734
+nim Spinbox uing.html#Spinbox type Spinbox 1747
+nim impl uing.html#impl,Spinbox proc impl(b: Spinbox): RawSpinbox 85
+nim impl= uing.html#impl=,Spinbox,RawSpinbox proc impl=(b: Spinbox; r: RawSpinbox) 1761
+nim value uing.html#value,Spinbox proc value(s: Spinbox): int 1763
+nim value= uing.html#value=,Spinbox,int proc value=(s: Spinbox; value: int) 1770
+nim newSpinbox uing.html#newSpinbox,Slice[SomeInteger],proc(Spinbox) proc newSpinbox(range: Slice[SomeInteger]; onchanged: proc (sender: Spinbox) = nil): Spinbox 1782
+nim newSpinbox uing.html#newSpinbox,int,int,proc(Spinbox) proc newSpinbox(min, max: int; onchanged: proc (sender: Spinbox) = nil): Spinbox 1798
+nim Slider uing.html#Slider type Slider 1818
+nim impl uing.html#impl,Slider proc impl(b: Slider): RawSlider 85
+nim impl= uing.html#impl=,Slider,RawSlider proc impl=(b: Slider; r: RawSlider) 1831
+nim value uing.html#value,Slider proc value(s: Slider): int 1833
+nim value= uing.html#value=,Slider,int proc value=(s: Slider; value: int) 1840
+nim hasToolTip uing.html#hasToolTip,Slider proc hasToolTip(s: Slider): bool 1848
+nim hasToolTip= uing.html#hasToolTip=,Slider,bool proc hasToolTip=(s: Slider; hasToolTip: bool) 1855
+nim range= uing.html#range=,Slider,Slice[SomeInteger] proc range=(s: Slider; sliderRange: Slice[SomeInteger]) 1864
+nim newSlider uing.html#newSlider,Slice[SomeInteger],proc(Slider) proc newSlider(range: Slice[SomeInteger]; onchanged: proc (sender: Slider) = nil): Slider 1876
+nim newSlider uing.html#newSlider,int,int,proc(Slider) proc newSlider(min, max: int; onchanged: proc (sender: Slider) = nil): Slider 1893
+nim ProgressBar uing.html#ProgressBar type ProgressBar 1914
+nim impl uing.html#impl,ProgressBar proc impl(b: ProgressBar): RawProgressBar 85
+nim impl= uing.html#impl=,ProgressBar,RawProgressBar proc impl=(b: ProgressBar; r: RawProgressBar) 1919
+nim value uing.html#value,ProgressBar proc value(p: ProgressBar): int 1921
+nim value= uing.html#value=,ProgressBar, proc value=(p: ProgressBar; n: -1 .. 100) 1928
+nim newProgressBar uing.html#newProgressBar,bool proc newProgressBar(indeterminate: bool = false): ProgressBar 1942
+nim Separator uing.html#Separator type Separator 1957
+nim impl uing.html#impl,Separator proc impl(b: Separator): RawSeparator 85
+nim impl= uing.html#impl=,Separator,RawSeparator proc impl=(b: Separator; r: RawSeparator) 1960
+nim newVerticalSeparator uing.html#newVerticalSeparator proc newVerticalSeparator(): Separator 1962
+nim newHorizontalSeparator uing.html#newHorizontalSeparator proc newHorizontalSeparator(): Separator 1968
+nim Combobox uing.html#Combobox type Combobox 1977
+nim impl uing.html#impl,Combobox proc impl(b: Combobox): RawCombobox 85
+nim impl= uing.html#impl=,Combobox,RawCombobox proc impl=(b: Combobox; r: RawCombobox) 1983
+nim add uing.html#add,Combobox,varargs[string,] proc add(c: Combobox; items: varargs[string, `$`]) 1985
+nim insertAt uing.html#insertAt,Combobox,int,string proc insertAt(c: Combobox; index: int; text: string) 1995
+nim clear uing.html#clear,Combobox proc clear(c: Combobox) 2006
+nim delete uing.html#delete,Combobox,int proc delete(c: Combobox; index: int) 2014
+nim selected uing.html#selected,Combobox proc selected(c: Combobox): int 2026
+nim selected= uing.html#selected=,Combobox,int proc selected=(c: Combobox; index: int) 2033
+nim newCombobox uing.html#newCombobox,openArray[string],proc(Combobox) proc newCombobox(items: openArray[string] = [];\n onselected: proc (sender: Combobox) = nil): Combobox 2043
+nim EditableCombobox uing.html#EditableCombobox type EditableCombobox 2060
+nim impl uing.html#impl,EditableCombobox proc impl(b: EditableCombobox): RawEditableCombobox 85
+nim impl= uing.html#impl=,EditableCombobox,RawEditableCombobox proc impl=(b: EditableCombobox; r: RawEditableCombobox) 2070
+nim add uing.html#add,EditableCombobox,varargs[string,] proc add(c: EditableCombobox; items: varargs[string, `$`]) 2072
+nim text uing.html#text,EditableCombobox proc text(c: EditableCombobox): string 2082
+nim text= uing.html#text=,EditableCombobox,string proc text=(c: EditableCombobox; text: string) 2094
+nim clear uing.html#clear,EditableCombobox proc clear(e: EditableCombobox) 2105
+nim newEditableCombobox uing.html#newEditableCombobox,openArray[string],proc(EditableCombobox) proc newEditableCombobox(items: openArray[string] = [];\n onchanged: proc (sender: EditableCombobox) = nil): EditableCombobox 2114
+nim MultilineEntry uing.html#MultilineEntry type MultilineEntry 2130
+nim impl uing.html#impl,MultilineEntry proc impl(b: MultilineEntry): RawMultilineEntry 85
+nim impl= uing.html#impl=,MultilineEntry,RawMultilineEntry proc impl=(b: MultilineEntry; r: RawMultilineEntry) 2135
+nim text uing.html#text,MultilineEntry proc text(e: MultilineEntry): string 2137
+nim text= uing.html#text=,MultilineEntry,string proc text=(e: MultilineEntry; text: string) 2146
+nim clear uing.html#clear,MultilineEntry proc clear(e: MultilineEntry) 2154
+nim add uing.html#add,MultilineEntry,string proc add(e: MultilineEntry; text: string) 2161
+nim readOnly uing.html#readOnly,MultilineEntry proc readOnly(e: MultilineEntry): bool 2169
+nim readOnly= uing.html#readOnly=,MultilineEntry,bool proc readOnly=(e: MultilineEntry; readOnly: bool) 2176
+nim newMultilineEntry uing.html#newMultilineEntry,proc(MultilineEntry) proc newMultilineEntry(onchanged: proc (sender: MultilineEntry) = nil): MultilineEntry 2186
+nim newNonWrappingMultilineEntry uing.html#newNonWrappingMultilineEntry,proc(MultilineEntry) proc newNonWrappingMultilineEntry(onchanged: proc (sender: MultilineEntry) = nil): MultilineEntry 2193
+nim MenuItem uing.html#MenuItem type MenuItem 2206
+nim impl uing.html#impl,MenuItem proc impl(b: MenuItem): RawMenuItem 85
+nim impl= uing.html#impl=,MenuItem,RawMenuItem proc impl=(b: MenuItem; r: RawMenuItem) 2211
+nim enable uing.html#enable,MenuItem proc enable(m: MenuItem) 2213
+nim disable uing.html#disable,MenuItem proc disable(m: MenuItem) 2220
+nim checked uing.html#checked,MenuItem proc checked(m: MenuItem): bool 2237
+nim checked= uing.html#checked=,MenuItem,bool proc checked=(m: MenuItem; checked: bool) 2246
+nim Menu uing.html#Menu type Menu 2259
+nim impl uing.html#impl,Menu proc impl(b: Menu): RawMenu 85
+nim impl= uing.html#impl=,Menu,RawMenu proc impl=(b: Menu; r: RawMenu) 2286
+nim addItem uing.html#addItem,Menu,string,proc(MenuItem,Window) proc addItem(m: Menu; name: string;\n onclicked: proc (sender: MenuItem; window: Window) = nil): MenuItem 2294
+nim addCheckItem uing.html#addCheckItem,Menu,string,proc(MenuItem,Window) proc addCheckItem(m: Menu; name: string;\n onclicked: proc (sender: MenuItem; window: Window) = nil): MenuItem 2304
+nim addQuitItem uing.html#addQuitItem,Menu,proc) proc addQuitItem(m: Menu; shouldQuit: proc (): bool): MenuItem 2328
+nim addPreferencesItem uing.html#addPreferencesItem,Menu,proc(MenuItem,Window) proc addPreferencesItem(m: Menu;\n onclicked: proc (sender: MenuItem; window: Window) = nil): MenuItem 2345
+nim addAboutItem uing.html#addAboutItem,Menu,proc(MenuItem,Window) proc addAboutItem(m: Menu; onclicked: proc (sender: MenuItem; window: Window) = nil): MenuItem 2356
+nim addSeparator uing.html#addSeparator,Menu proc addSeparator(m: Menu) 2369
+nim newMenu uing.html#newMenu,string proc newMenu(name: string): Menu 2376
+nim FontButton uing.html#FontButton type FontButton 2394
+nim impl uing.html#impl,FontButton proc impl(b: FontButton): RawFontButton 85
+nim impl= uing.html#impl=,FontButton,RawFontButton proc impl=(b: FontButton; r: RawFontButton) 2399
+nim font uing.html#font,FontButton proc font(f: FontButton): FontDescriptor 2401
+nim freeFont uing.html#freeFont,ptr.FontDescriptor proc freeFont(desc: ptr FontDescriptor) 2411
+nim newFontButton uing.html#newFontButton,proc(FontButton) proc newFontButton(onchanged: proc (sender: FontButton) = nil): FontButton 2426
+nim ColorButton uing.html#ColorButton type ColorButton 2441
+nim impl uing.html#impl,ColorButton proc impl(b: ColorButton): RawColorButton 85
+nim impl= uing.html#impl=,ColorButton,RawColorButton proc impl=(b: ColorButton; r: RawColorButton) 2451
+nim color uing.html#color,ColorButton proc color(c: ColorButton): tuple[r, g, b, a: float] 2453
+nim setColor uing.html#setColor,ColorButton,,,,range 0.0..1.0 proc setColor(c: ColorButton; r, g, b: 0.0 .. 1.0; alpha: 0.0 .. 1.0 = 1.0) 2463
+nim color= uing.html#color=,ColorButton,Color proc color=(c: ColorButton; color: Color) 2474
+nim newColorButton uing.html#newColorButton,proc(ColorButton) proc newColorButton(onchanged: proc (sender: ColorButton) = nil): ColorButton 2488
+nim newColorButton uing.html#newColorButton,Color,proc(ColorButton) proc newColorButton(color: Color; onchanged: proc (sender: ColorButton) = nil): ColorButton 2498
+nim newColorButton uing.html#newColorButton,,,,float,proc(ColorButton) proc newColorButton(r, g, b: 0.0 .. 1.0; alpha = 1.0;\n onchanged: proc (sender: ColorButton) = nil): ColorButton 2510
+nim Form uing.html#Form type Form 2528
+nim impl uing.html#impl,Form proc impl(b: Form): RawForm 85
+nim impl= uing.html#impl=,Form,RawForm proc impl=(b: Form; r: RawForm) 2541
+nim add uing.html#add,Form,string,Widget,bool proc add(f: Form; label: string; w: Widget; stretchy: bool = false) 2543
+nim delete uing.html#delete,Form,int proc delete(f: Form; index: int) 2557
+nim padded uing.html#padded,Form proc padded(f: Form): bool 2568
+nim padded= uing.html#padded=,Form,bool proc padded=(f: Form; padded: bool) 2577
+nim newForm uing.html#newForm,bool proc newForm(padded: bool = false): Form 2588
+nim Grid uing.html#Grid type Grid 2600
+nim impl uing.html#impl,Grid proc impl(b: Grid): RawGrid 85
+nim impl= uing.html#impl=,Grid,RawGrid proc impl=(b: Grid; r: RawGrid) 2621
+nim add uing.html#add,Grid,Widget,int,int,int,int,bool,Align,bool,Align proc add(g: Grid; w: Widget; left, top, xspan, yspan: int; hexpand: bool;\n halign: Align; vexpand: bool; valign: Align) 2623
+nim insertAt uing.html#insertAt,Grid,Widget,Widget,At,int,int,int,int,bool,Align,bool,Align proc insertAt(g: Grid; w, existing: Widget; at: At; left, top, xspan, yspan: int;\n hexpand: bool; halign: Align; vexpand: bool; valign: Align) 2640
+nim padded uing.html#padded,Grid proc padded(g: Grid): bool 2657
+nim padded= uing.html#padded=,Grid,bool proc padded=(g: Grid; padded: bool) 2666
+nim newGrid uing.html#newGrid,bool proc newGrid(padded: bool = false): Grid 2677
+nim Image uing.html#Image type Image 2689
+nim impl uing.html#impl,Image proc impl(b: Image): RawImage 85
+nim impl= uing.html#impl=,Image,RawImage proc impl=(b: Image; r: RawImage) 2706
+nim add uing.html#add,Image,pointer,int,int,int proc add(i: Image; pixels: pointer; pixelWidth: int; pixelHeight: int;\n byteStride: int) 2708
+nim free uing.html#free,Image proc free(i: Image) 2722
+nim newImage uing.html#newImage,float,float proc newImage(width, height: float): Image 2729
+nim Table uing.html#Table type Table 2757
+nim TableValue uing.html#TableValue type TableValue 2780
+nim TableModel uing.html#TableModel type TableModel 2787
+nim impl uing.html#impl,Table proc impl(b: Table): RawTable 85
+nim impl= uing.html#impl=,Table,RawTable proc impl=(b: Table; r: RawTable) 2808
+nim impl uing.html#impl,TableValue proc impl(b: TableValue): RawTableValue 85
+nim impl= uing.html#impl=,TableValue,RawTableValue proc impl=(b: TableValue; r: RawTableValue) 2809
+nim impl uing.html#impl,TableModel proc impl(b: TableModel): RawTableModel 85
+nim impl= uing.html#impl=,TableModel,RawTableModel proc impl=(b: TableModel; r: RawTableModel) 2810
+nim free uing.html#free,TableValue proc free(t: TableValue) 2812
+nim free uing.html#free,TableModel proc free(t: TableModel) 2827
+nim free uing.html#free,ptr.TableSelection proc free(t: ptr TableSelection) 2837
+nim `type` uing.html#type,TableValue proc `type`(v: TableValue): TableValueType 2844
+nim newTableValue uing.html#newTableValue,string proc newTableValue(str: string): TableValue 2851
+nim `$` uing.html#$,TableValue proc `$`(v: TableValue): string 2859
+nim newTableValue uing.html#newTableValue,Image proc newTableValue(img: Image): TableValue 2871
+nim image uing.html#image,TableValue proc image(v: TableValue): Image 2887
+nim newTableValue uing.html#newTableValue proc newTableValue(i: int | bool): TableValue 2903
+nim getInt uing.html#getInt,TableValue proc getInt(v: TableValue): int 2916
+nim newTableValue uing.html#newTableValue,,,,float proc newTableValue(r, g, b: 0.0 .. 1.0; a = 1.0): TableValue 2928
+nim newTableValue uing.html#newTableValue,Color,range 0.0..1.0 proc newTableValue(color: Color; a: 0.0 .. 1.0 = 1.0): TableValue 2939
+nim color uing.html#color,TableValue proc color(v: TableValue): tuple[r, g, b, a: float] 2951
+nim newTableModel uing.html#newTableModel,ptr.TableModelHandler proc newTableModel(mh: ptr TableModelHandler): TableModel 2969
+nim rowInserted uing.html#rowInserted,TableModel,int proc rowInserted(m: TableModel; newIndex: int) 2977
+nim rowChanged uing.html#rowChanged,TableModel,int proc rowChanged(m: TableModel; index: int) 2990
+nim rowDeleted uing.html#rowDeleted,TableModel,int proc rowDeleted(m: TableModel; oldIndex: int) 3001
+nim addTextColumn uing.html#addTextColumn,Table,string,int,int,ptr.TableTextColumnOptionalParams proc addTextColumn(t: Table; name: string;\n textModelColumn, textEditableModelColumn: int;\n textParams: ptr TableTextColumnOptionalParams = nil) 3014
+nim addImageColumn uing.html#addImageColumn,Table,string,int proc addImageColumn(table: Table; title: string; index: int) 3027
+nim addCheckboxTextColumn uing.html#addCheckboxTextColumn,Table,string,int,int,int,int,ptr.TableTextColumnOptionalParams proc addCheckboxTextColumn(t: Table; name: string; checkboxModelColumn,\n checkboxEditableModelColumn, textModelColumn, textEditableModelColumn: int;\n textParams: ptr TableTextColumnOptionalParams = nil) 3039
+nim addImageTextColumn uing.html#addImageTextColumn,Table,string,int,int,int,ptr.TableTextColumnOptionalParams proc addImageTextColumn(t: Table; name: string;\n imageIndex, textIndex, editableMode: int;\n textParams: ptr TableTextColumnOptionalParams) 3064
+nim addCheckboxColumn uing.html#addCheckboxColumn,Table,string,int,int proc addCheckboxColumn(table: Table; title: string; index, editableMode: int) 3081
+nim addProgressBarColumn uing.html#addProgressBarColumn,Table,string,int proc addProgressBarColumn(table: Table; title: string; index: int) 3093
+nim addButtonColumn uing.html#addButtonColumn,Table,string,int,int proc addButtonColumn(table: Table; title: string; index, clickableMode: int) 3106
+nim headerVisible uing.html#headerVisible,Table proc headerVisible(t: Table): bool 3123
+nim headerVisible= uing.html#headerVisible=,Table,bool proc headerVisible=(t: Table; visible: bool) 3130
+nim selectionMode uing.html#selectionMode,Table proc selectionMode(table: Table): TableSelectionMode 3138
+nim selectionMode= uing.html#selectionMode=,Table,TableSelectionMode proc selectionMode=(table: Table; mode: TableSelectionMode) 3145
+nim columnWidth uing.html#columnWidth,Table,int proc columnWidth(table: Table; column: int): int 3156
+nim setColumnWidth uing.html#setColumnWidth,Table,int,int proc setColumnWidth(table: Table; column, width: int) 3164
+nim sortIndicator uing.html#sortIndicator,Table,int proc sortIndicator(table: Table; column: int): SortIndicator 3178
+nim setSortIndicator uing.html#setSortIndicator,Table,int,SortIndicator proc setSortIndicator(table: Table; column: int; indicator: SortIndicator) 3186
+nim selection uing.html#selection,Table proc selection(table: Table): seq[int] 3201
+nim selection= uing.html#selection=,Table,openArray[int] proc selection=(table: Table; sel: openArray[int]) 3224
+nim newTable uing.html#newTable,ptr.TableParams proc newTable(params: ptr TableParams): Table 3260
+nim show uing.html#show,SomeWidget proc show[SomeWidget: Widget](w: SomeWidget) 3275
+nim hide uing.html#hide,SomeWidget proc hide[SomeWidget: Widget](w: SomeWidget) 3280
+nim enabled uing.html#enabled,SomeWidget proc enabled[SomeWidget: Widget](w: SomeWidget): bool 3285
+nim enable uing.html#enable,SomeWidget proc enable[SomeWidget: Widget and not MenuItem](w: SomeWidget) 3292
+nim disable uing.html#disable,SomeWidget proc disable[SomeWidget: Widget and not MenuItem](w: SomeWidget) 3297
+nim destroy uing.html#destroy,SomeWidget proc destroy[SomeWidget: Widget](w: SomeWidget) 3302
+nim parent uing.html#parent,SomeWidget proc parent[SomeWidget: Widget and not Window](w: SomeWidget): Widget 3312
+nim parent= uing.html#parent=,SomeWidget,Widget proc parent=[SomeWidget: Widget](w: SomeWidget; parent: Widget) 3329
+nim handle uing.html#handle,SomeWidget proc handle[SomeWidget: Widget](w: SomeWidget): int 3341
+nim signature uing.html#signature,SomeWidget proc signature[SomeWidget: Widget](w: SomeWidget): int 3348
+nim typeSignature uing.html#typeSignature,SomeWidget proc typeSignature[SomeWidget: Widget](w: SomeWidget): int 3353
+nim osSignature uing.html#osSignature,SomeWidget proc osSignature[SomeWidget: Widget](w: SomeWidget): int 3358
+nim topLevel uing.html#topLevel,SomeWidget proc topLevel[SomeWidget: Widget](w: SomeWidget): bool 3363
+nim visible uing.html#visible,SomeWidget proc visible[SomeWidget: Widget](w: SomeWidget): bool 3368
+nim verifySetParent uing.html#verifySetParent,SomeWidget,Widget proc verifySetParent[SomeWidget: Widget](w: SomeWidget; parent: Widget) 3373
+nim enabledToUser uing.html#enabledToUser,SomeWidget proc enabledToUser[SomeWidget: Widget](w: SomeWidget): bool 3383
+nim free uing.html#free,SomeWidget proc free[SomeWidget: Widget](w: SomeWidget) 3391
+nim DateTimePicker uing.html#DateTimePicker type DateTimePicker 3401
+nim impl uing.html#impl,DateTimePicker proc impl(b: DateTimePicker): RawDateTimePicker 85
+nim impl= uing.html#impl=,DateTimePicker,RawDateTimePicker proc impl=(b: DateTimePicker; r: RawDateTimePicker) 3408
+nim time uing.html#time,DateTimePicker proc time(d: DateTimePicker): DateTime 3410
+nim time= uing.html#time=,DateTimePicker,DateTime proc time=(d: DateTimePicker; dateTime: DateTime) 3438
+nim newDateTimePicker uing.html#newDateTimePicker,proc(DateTimePicker) proc newDateTimePicker(onchanged: proc (sender: DateTimePicker) = nil): DateTimePicker 3460
+nim newDateTimePicker uing.html#newDateTimePicker,DateTime,proc(DateTimePicker) proc newDateTimePicker(dateTime: DateTime;\n onchanged: proc (sender: DateTimePicker) = nil): DateTimePicker 3470
+nim newDatePicker uing.html#newDatePicker,proc(DateTimePicker) proc newDatePicker(onchanged: proc (sender: DateTimePicker) = nil): DateTimePicker 3482
+nim newDatePicker uing.html#newDatePicker,DateTime,proc(DateTimePicker) proc newDatePicker(date: DateTime; onchanged: proc (sender: DateTimePicker) = nil): DateTimePicker 3492
+nim newTimePicker uing.html#newTimePicker,proc(DateTimePicker) proc newTimePicker(onchanged: proc (sender: DateTimePicker) = nil): DateTimePicker 3504
+nim newTimePicker uing.html#newTimePicker,DateTime,proc(DateTimePicker) proc newTimePicker(time: DateTime; onchanged: proc (sender: DateTimePicker) = nil): DateTimePicker 3514
+nimgrp newslider uing.html#newSlider-procs-all proc 1876
+nimgrp padded uing.html#padded-procs-all proc 1360
+nimgrp addwithattributes uing.html#addWithAttributes-procs-all proc 439
+nimgrp text uing.html#text-procs-all proc 942
+nimgrp child= uing.html#child=-procs-all proc 1194
+nimgrp checked uing.html#checked-procs-all proc 1433
+nimgrp selected= uing.html#selected=-procs-all proc 996
+nimgrp selected uing.html#selected-procs-all proc 989
+nimgrp child uing.html#child-procs-all proc 1187
+nimgrp delete uing.html#delete-procs-all proc 426
+nimgrp free uing.html#free-procs-all proc 134
+nimgrp title uing.html#title-procs-all proc 1041
+nimgrp padded= uing.html#padded=-procs-all proc 1369
+nimgrp clear uing.html#clear-procs-all proc 1486
+nimgrp impl uing.html#impl-procs-all proc 19
+nimgrp value= uing.html#value=-procs-all proc 1770
+nimgrp newdatetimepicker uing.html#newDateTimePicker-procs-all proc 3460
+nimgrp margined= uing.html#margined=-procs-all proc 1178
+nimgrp title= uing.html#title=-procs-all proc 1050
+nimgrp add uing.html#add-procs-all proc 759
+nimgrp readonly= uing.html#readOnly=-procs-all proc 1500
+nimgrp newcolorbutton uing.html#newColorButton-procs-all proc 2488
+nimgrp enable uing.html#enable-procs-all proc 2213
+nimgrp newtimepicker uing.html#newTimePicker-procs-all proc 3504
+nimgrp newcolorattribute uing.html#newColorAttribute-procs-all proc 609
+nimgrp newspinbox uing.html#newSpinbox-procs-all proc 1782
+nimgrp text= uing.html#text=-procs-all proc 949
+nimgrp insertat uing.html#insertAt-procs-all proc 1607
+nimgrp value uing.html#value-procs-all proc 1763
+nimgrp newbackgroundcolorattribute uing.html#newBackgroundColorAttribute-procs-all proc 640
+nimgrp $ uing.html#$-procs-all proc 401
+nimgrp disable uing.html#disable-procs-all proc 2220
+nimgrp get uing.html#get-procs-all proc 793
+nimgrp newtablevalue uing.html#newTableValue-procs-all proc 2851
+nimgrp checked= uing.html#checked=-procs-all proc 1440
+nimgrp readonly uing.html#readOnly-procs-all proc 1493
+nimgrp margined uing.html#margined-procs-all proc 1171
+nimgrp color uing.html#color-procs-all proc 629
+nimgrp newdatepicker uing.html#newDatePicker-procs-all proc 3482
+nimgrp remove uing.html#remove-procs-all proc 777
+nimgrp impl= uing.html#impl=-procs-all proc 88
+nimgrp newunderlinecolorattribute uing.html#newUnderlineColorAttribute-procs-all proc 678
+heading See also uing.html#see-also See also 0
diff --git a/uing/genui.html b/uing/genui.html
new file mode 100644
index 0000000..549951b
--- /dev/null
+++ b/uing/genui.html
@@ -0,0 +1,176 @@
+
+
+
+
+
+
+
+uing/genui
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
uing/genui
+
+
+
+ Theme:
+
+ 🌗 Match OS
+ 🌑 Dark
+ 🌕 Light
+
+
+
+
+ Search:
+
+
+ Group by:
+
+ Section
+ Type
+
+
+
+
+
+
+
Source
+
Edit
+
+
+
+
+
+
+
+
+
+
+
macro genui ( args : varargs [ untyped ] ) : untyped
+
+
+ Macro that transforms a DSL into a GUI.
+The macro is a fairly simple substitution, it follows one of three patterns:
+
+< Widget name > ( arguments , for , widget , creator ) [ arguments , for , add , function ] :
+ < Children >
+
+< Identifier >%< Widget name > ( arguments , for , widget , creator ) [ arguments , for , add , function ] :
+ < Children >
+
+%< Identifier > [ arguments , for , add , function ] :
+ < Children >
+"String"
+Both ( ) -arguments and [ ] -arguments can be omitted.
+If the widget has no children the : must be omitted.
+Identifiers create a var statement assigning the widget to the identifier, or assign the widget to the identifier if it already exists. Using %< identifier > you can add widget created previously, it takes the same add options and children as any other widget.
+The string pattern is used for widgets which have an add function for string values, such as RadioButtons and ComboBox .
+See genuiusg.nim for an example of usage.
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Made with Nim. Generated: 2024-07-04 16:02:17 UTC
+
+
+
+
+
+
+
+
+
diff --git a/uing/nimdoc.out.css b/uing/nimdoc.out.css
new file mode 100644
index 0000000..1417d9e
--- /dev/null
+++ b/uing/nimdoc.out.css
@@ -0,0 +1,1026 @@
+/*
+Stylesheet for use with Docutils/rst2html.
+
+See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
+customize this style sheet.
+
+Modified from Chad Skeeters' rst2html-style
+https://bitbucket.org/cskeeters/rst2html-style/
+
+Modified by Boyd Greenfield and narimiran
+*/
+
+:root {
+ --primary-background: #fff;
+ --secondary-background: ghostwhite;
+ --third-background: #e8e8e8;
+ --info-background: #50c050;
+ --warning-background: #c0a000;
+ --error-background: #e04040;
+ --border: #dde;
+ --text: #222;
+ --anchor: #07b;
+ --anchor-focus: #607c9f;
+ --input-focus: #1fa0eb;
+ --strong: #3c3c3c;
+ --hint: #9A9A9A;
+ --nim-sprite-base64: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAN4AAAA9CAYAAADCt9ebAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFFmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMCAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE5LTEyLTAzVDAxOjAzOjQ4KzAxOjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAxOS0xMi0wM1QwMjoyODo0MSswMTowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOS0xMi0wM1QwMjoyODo0MSswMTowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozMzM0ZjAxYS0yMDExLWE1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");
+
+ --keyword: #5e8f60;
+ --identifier: #222;
+ --comment: #484a86;
+ --operator: #155da4;
+ --punctuation: black;
+ --other: black;
+ --escapeSequence: #c4891b;
+ --number: #252dbe;
+ --literal: #a4255b;
+ --program: #6060c0;
+ --option: #508000;
+ --raw-data: #a4255b;
+
+ --clipboard-image-normal: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' style='color: black' fill='none' viewBox='0 0 24 24' stroke='currentColor'%3E %3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2' /%3E %3C/svg%3E");
+ --clipboard-image-selected: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' style='color: black' viewBox='0 0 20 20' fill='currentColor'%3E %3Cpath d='M8 3a1 1 0 011-1h2a1 1 0 110 2H9a1 1 0 01-1-1z' /%3E %3Cpath d='M6 3a2 2 0 00-2 2v11a2 2 0 002 2h8a2 2 0 002-2V5a2 2 0 00-2-2 3 3 0 01-3 3H9a3 3 0 01-3-3z' /%3E %3C/svg%3E");
+ --clipboard-image: var(--clipboard-image-normal)
+}
+
+[data-theme="dark"] {
+ --primary-background: #171921;
+ --secondary-background: #1e202a;
+ --third-background: #2b2e3b;
+ --info-background: #008000;
+ --warning-background: #807000;
+ --error-background: #c03000;
+ --border: #0e1014;
+ --text: #fff;
+ --anchor: #8be9fd;
+ --anchor-focus: #8be9fd;
+ --input-focus: #8be9fd;
+ --strong: #bd93f9;
+ --hint: #7A7C85;
+ --nim-sprite-base64: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARMAAABMCAYAAABOBlMuAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFFmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMCAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE5LTEyLTAzVDAxOjE4OjIyKzAxOjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAxOS0xMi0wM1QwMToyMDoxMCswMTowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOS0xMi0wM1QwMToyMDoxMCswMTowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDplZGViMzU3MC1iNmZjLWQy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");
+
+ --keyword: #ff79c6;
+ --identifier: #f8f8f2;
+ --comment: #6272a4;
+ --operator: #ff79c6;
+ --punctuation: #f8f8f2;
+ --other: #f8f8f2;
+ --escapeSequence: #bd93f9;
+ --number: #bd93f9;
+ --literal: #f1fa8c;
+ --program: #9090c0;
+ --option: #90b010;
+ --raw-data: #8be9fd;
+
+ --clipboard-image-normal: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' style='color: lightgray' fill='none' viewBox='0 0 24 24' stroke='currentColor'%3E %3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2' /%3E %3C/svg%3E");
+ --clipboard-image-selected: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' style='color: lightgray' viewBox='0 0 20 20' fill='currentColor'%3E %3Cpath d='M8 3a1 1 0 011-1h2a1 1 0 110 2H9a1 1 0 01-1-1z' /%3E %3Cpath d='M6 3a2 2 0 00-2 2v11a2 2 0 002 2h8a2 2 0 002-2V5a2 2 0 00-2-2 3 3 0 01-3 3H9a3 3 0 01-3-3z' /%3E %3C/svg%3E");
+ --clipboard-image: var(--clipboard-image-normal);
+}
+
+@media (prefers-color-scheme: dark) {
+ [data-theme="auto"] {
+ --primary-background: #171921;
+ --secondary-background: #1e202a;
+ --third-background: #2b2e3b;
+ --info-background: #008000;
+ --warning-background: #807000;
+ --error-background: #c03000;
+ --border: #0e1014;
+ --text: #fff;
+ --anchor: #8be9fd;
+ --anchor-focus: #8be9fd;
+ --input-focus: #8be9fd;
+ --strong: #bd93f9;
+ --hint: #7A7C85;
+ --nim-sprite-base64: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARMAAABMCAYAAABOBlMuAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFFmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDggNzkuMTY0MDM2LCAyMDE5LzA4LzEzLTAxOjA2OjU3ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgMjEuMCAoV2luZG93cykiIHhtcDpDcmVhdGVEYXRlPSIyMDE5LTEyLTAzVDAxOjE4OjIyKzAxOjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAxOS0xMi0wM1QwMToyMDoxMCswMTowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxOS0xMi0wM1QwMToyMDoxMCswMTowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDplZGViMzU3MC1iNmZjLWQy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");
+
+ --keyword: #ff79c6;
+ --identifier: #f8f8f2;
+ --comment: #6272a4;
+ --operator: #ff79c6;
+ --punctuation: #f8f8f2;
+ --other: #f8f8f2;
+ --escapeSequence: #bd93f9;
+ --number: #bd93f9;
+ --literal: #f1fa8c;
+ --program: #9090c0;
+ --option: #90b010;
+ --raw-data: #8be9fd;
+
+ --clipboard-image-normal: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' style='color: lightgray' fill='none' viewBox='0 0 24 24' stroke='currentColor'%3E %3Cpath stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2' /%3E %3C/svg%3E");
+ --clipboard-image-selected: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' style='color: lightgray' viewBox='0 0 20 20' fill='currentColor'%3E %3Cpath d='M8 3a1 1 0 011-1h2a1 1 0 110 2H9a1 1 0 01-1-1z' /%3E %3Cpath d='M6 3a2 2 0 00-2 2v11a2 2 0 002 2h8a2 2 0 002-2V5a2 2 0 00-2-2 3 3 0 01-3 3H9a3 3 0 01-3-3z' /%3E %3C/svg%3E");
+ --clipboard-image: var(--clipboard-image-normal);
+ }
+}
+
+.theme-select-wrapper {
+ display: flex;
+ align-items: center;
+}
+
+html {
+ font-size: 100%;
+ -webkit-text-size-adjust: 100%;
+ -ms-text-size-adjust: 100%; }
+
+body {
+ font-family: "Lato", "Helvetica Neue", "HelveticaNeue", Helvetica, Arial, sans-serif;
+ font-weight: 400;
+ font-size: 1.125em;
+ line-height: 1.5;
+ color: var(--text);
+ background-color: var(--primary-background); }
+
+/* Skeleton grid */
+.container {
+ position: relative;
+ width: 100%;
+ max-width: 1050px;
+ margin: 0 auto;
+ padding: 0;
+ box-sizing: border-box; }
+
+.column, .columns {
+ width: 100%;
+ float: left;
+ box-sizing: border-box;
+ margin-left: 1%; }
+
+@media print {
+ #global-links, .link-seesrc, .theme-switch-wrapper, #searchInputDiv, .search-groupby {
+ display:none;
+ }
+ .columns {
+ width:100% !important;
+ }
+}
+
+.column:first-child, .columns:first-child {
+ margin-left: 0; }
+
+.container .row {
+ display: flex; }
+
+.three.columns {
+ width: 25.0%;
+ height: 100vh;
+ position: sticky;
+ top: 0px;
+ overflow-y: auto;
+ padding: 2px;
+}
+
+.nine.columns {
+ width: 75.0%;
+ padding-left: 1.5em; }
+
+.twelve.columns {
+ width: 100%;
+ margin-left: 0; }
+
+@media screen and (max-width: 860px) {
+ .three.columns {
+ display: none;
+ }
+ .nine.columns {
+ width: 98.0%;
+ }
+ body {
+ font-size: 1em;
+ line-height: 1.35;
+ }
+}
+
+cite {
+ font-style: italic !important; }
+
+
+/* Nim search input */
+div#searchInputDiv {
+ margin-bottom: 1em;
+}
+input#searchInput {
+ width: 80%;
+}
+
+/*
+ * Some custom formatting for input forms.
+ * This also fixes input form colors on Firefox with a dark system theme on Linux.
+ */
+input {
+ -moz-appearance: none;
+ background-color: var(--secondary-background);
+ color: var(--text);
+ border: 1px solid var(--border);
+ font-family: "Lato", "Helvetica Neue", "HelveticaNeue", Helvetica, Arial, sans-serif;
+ font-size: 0.9em;
+ padding: 6px;
+}
+
+input:focus {
+ border: 1px solid var(--input-focus);
+ box-shadow: 0 0 3px var(--input-focus);
+}
+
+select {
+ -moz-appearance: none;
+ background-color: var(--secondary-background);
+ color: var(--text);
+ border: 1px solid var(--border);
+ font-family: "Lato", "Helvetica Neue", "HelveticaNeue", Helvetica, Arial, sans-serif;
+ font-size: 0.9em;
+ padding: 6px;
+}
+
+select:focus {
+ border: 1px solid var(--input-focus);
+ box-shadow: 0 0 3px var(--input-focus);
+}
+
+/* Docgen styles */
+
+:target {
+ border: 2px solid #B5651D;
+ border-style: dotted;
+}
+
+/* Links */
+a {
+ color: var(--anchor);
+ text-decoration: none;
+}
+
+a span.Identifier {
+ text-decoration: underline;
+ text-decoration-color: #aab;
+}
+
+a.reference-toplevel {
+ font-weight: bold;
+}
+
+a.nimdoc {
+ word-spacing: 0.3em;
+}
+
+a.toc-backref {
+ text-decoration: none;
+ color: var(--text);
+}
+
+a.link-seesrc {
+ color: #607c9f;
+ font-size: 0.9em;
+ font-style: italic;
+}
+
+a:hover, a:focus {
+ color: var(--anchor-focus);
+ text-decoration: underline;
+}
+
+a:hover span.Identifier {
+ color: var(--anchor);
+}
+
+
+sub, sup {
+ position: relative;
+ font-size: 75%;
+ line-height: 0;
+ vertical-align: baseline; }
+
+sup {
+ top: -0.5em; }
+
+sub {
+ bottom: -0.25em; }
+
+img {
+ width: auto;
+ height: auto;
+ max-width: 100%;
+ vertical-align: middle;
+ border: 0;
+ -ms-interpolation-mode: bicubic; }
+
+@media print {
+ * {
+ color: black !important;
+ text-shadow: none !important;
+ background: transparent !important;
+ box-shadow: none !important; }
+
+ a, a:visited {
+ text-decoration: underline; }
+
+ a[href]:after {
+ content: " (" attr(href) ")"; }
+
+ abbr[title]:after {
+ content: " (" attr(title) ")"; }
+
+ .ir a:after,
+ a[href^="javascript:"]:after,
+ a[href^="#"]:after {
+ content: ""; }
+
+ pre, blockquote {
+ border: 1px solid #999;
+ page-break-inside: avoid; }
+
+ thead {
+ display: table-header-group; }
+
+ tr, img {
+ page-break-inside: avoid; }
+
+ img {
+ max-width: 100% !important; }
+
+ @page {
+ margin: 0.5cm; }
+
+ h1 {
+ page-break-before: always; }
+
+ h1.title {
+ page-break-before: avoid; }
+
+ p, h2, h3 {
+ orphans: 3;
+ widows: 3; }
+
+ h2, h3 {
+ page-break-after: avoid; }
+}
+
+
+p {
+ margin-top: 0.5em;
+ margin-bottom: 0.5em; }
+
+small {
+ font-size: 85%; }
+
+strong {
+ font-weight: 600;
+ font-size: 0.95em;
+ color: var(--strong); }
+
+em {
+ font-style: italic; }
+
+h1 {
+ font-size: 1.8em;
+ font-weight: 400;
+ padding-bottom: .25em;
+ border-bottom: 6px solid var(--third-background);
+ margin-top: 2.5em;
+ margin-bottom: 1em;
+ line-height: 1.2em; }
+
+h1.title {
+ padding-bottom: 1em;
+ border-bottom: 0px;
+ font-size: 2.5em;
+ text-align: center;
+ font-weight: 900;
+ margin-top: 0.75em;
+ margin-bottom: 0em; }
+
+h2 {
+ font-size: 1.3em;
+ margin-top: 2em; }
+
+h2.subtitle {
+ margin-top: 0em;
+ text-align: center; }
+
+h3 {
+ font-size: 1.125em;
+ font-style: italic;
+ margin-top: 1.5em; }
+
+h4 {
+ font-size: 1.125em;
+ margin-top: 1em; }
+
+h5 {
+ font-size: 1.125em;
+ margin-top: 0.75em; }
+
+h6 {
+ font-size: 1.1em; }
+
+
+ul, ol {
+ padding: 0;
+ margin-top: 0.5em;
+ margin-left: 0.75em; }
+
+ul ul, ul ol, ol ol, ol ul {
+ margin-bottom: 0;
+ margin-left: 1.25em; }
+
+ul.simple > li {
+ list-style-type: circle; }
+
+ul.simple-boot li {
+ list-style-type: none;
+ margin-left: 0em;
+ margin-bottom: 0.5em; }
+
+ol.simple > li, ul.simple > li {
+ margin-bottom: 0.2em;
+ margin-left: 0.4em }
+
+ul.simple.simple-toc > li {
+ margin-top: 1em; }
+
+ul.simple-toc {
+ list-style: none;
+ font-size: 0.9em;
+ margin-left: -0.3em;
+ margin-top: 1em; }
+
+ul.simple-toc > li {
+ list-style-type: none; }
+
+ul.simple-toc-section {
+ list-style-type: circle;
+ margin-left: 0.8em;
+ color: #6c9aae; }
+
+ul.nested-toc-section {
+ list-style-type: circle;
+ margin-left: -0.75em;
+ color: var(--text); }
+
+ul.nested-toc-section > li {
+ margin-left: 1.25em; }
+
+
+ol.arabic {
+ list-style: decimal; }
+
+ol.loweralpha {
+ list-style: lower-alpha; }
+
+ol.upperalpha {
+ list-style: upper-alpha; }
+
+ol.lowerroman {
+ list-style: lower-roman; }
+
+ol.upperroman {
+ list-style: upper-roman; }
+
+ul.auto-toc {
+ list-style-type: none; }
+
+
+dl {
+ margin-bottom: 1.5em; }
+
+dt {
+ margin-bottom: -0.5em;
+ margin-left: 0.0em; }
+
+dd {
+ margin-left: 2.0em;
+ margin-bottom: 3.0em;
+ margin-top: 0.5em; }
+
+
+hr {
+ margin: 2em 0;
+ border: 0;
+ border-top: 1px solid #aaa; }
+
+hr.footnote {
+ width: 25%;
+ border-top: 0.15em solid #999;
+ margin-bottom: 0.15em;
+ margin-top: 0.15em;
+}
+div.footnote-group {
+ margin-left: 1em;
+}
+div.footnote-label {
+ display: inline-block;
+ min-width: 1.7em;
+}
+
+div.option-list {
+ border: 0.1em solid var(--border);
+}
+div.option-list-item {
+ padding-left: 12em;
+ padding-right: 0;
+ padding-bottom: 0.3em;
+ padding-top: 0.3em;
+}
+div.odd {
+ background-color: var(--secondary-background);
+}
+div.option-list-label {
+ margin-left: -11.5em;
+ margin-right: 0em;
+ min-width: 11.5em;
+ display: inline-block;
+ vertical-align: top;
+}
+div.option-list-description {
+ width: calc(100% - 1em);
+ padding-left: 1em;
+ padding-right: 0;
+ display: inline-block;
+}
+
+blockquote {
+ font-size: 0.9em;
+ font-style: italic;
+ padding-left: 0.5em;
+ margin-left: 0;
+ border-left: 5px solid #bbc;
+}
+
+blockquote.markdown-quote {
+ font-size: 0.9rem; /* use rem to avoid recursion */
+ font-style: normal;
+}
+
+.pre, span.tok {
+ font-family: "Source Code Pro", Monaco, Menlo, Consolas, "Courier New", monospace;
+ font-weight: 500;
+ font-size: 0.85em;
+ color: var(--text);
+ background-color: var(--third-background);
+ padding-left: 3px;
+ padding-right: 3px;
+ border-radius: 4px;
+}
+
+span.tok {
+ border: 1px solid #808080;
+ padding-bottom: 0.1em;
+ margin-right: 0.2em;
+}
+
+.copyToClipBoard {
+ position: relative;
+}
+
+pre {
+ font-family: "Source Code Pro", Monaco, Menlo, Consolas, "Courier New", monospace;
+ color: var(--text);
+ font-weight: 500;
+ display: inline-block;
+ box-sizing: border-box;
+ min-width: 100%;
+ padding: 0.5em;
+ margin-top: 0.5em;
+ margin-bottom: 0.5em;
+ font-size: 0.85em;
+ white-space: pre !important;
+ overflow-y: hidden;
+ overflow-x: visible;
+ background-color: var(--secondary-background);
+ border: 1px solid var(--border);
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+}
+
+.copyToClipBoardBtn {
+ visibility: hidden;
+ position: absolute;
+ width: 24px;
+ border-radius: 4px;
+ background-image: var(--clipboard-image);
+ right: 5px;
+ top: 13px;
+ background-color: var(--secondary-background);
+ padding: 11px;
+ border: 0;
+}
+
+.copyToClipBoard:hover .copyToClipBoardBtn {
+ visibility: visible;
+}
+
+.pre-scrollable {
+ max-height: 340px;
+ overflow-y: scroll; }
+
+
+/* Nim line-numbered tables */
+.line-nums-table {
+ width: 100%;
+ table-layout: fixed; }
+
+table.line-nums-table {
+ border-radius: 4px;
+ border: 1px solid #cccccc;
+ background-color: ghostwhite;
+ border-collapse: separate;
+ margin-top: 15px;
+ margin-bottom: 25px; }
+
+.line-nums-table tbody {
+ border: none; }
+
+.line-nums-table td pre {
+ border: none;
+ background-color: transparent; }
+
+.line-nums-table td.blob-line-nums {
+ width: 28px; }
+
+.line-nums-table td.blob-line-nums pre {
+ color: #b0b0b0;
+ -webkit-filter: opacity(75%);
+ filter: opacity(75%);
+ text-align: right;
+ border-color: transparent;
+ background-color: transparent;
+ padding-left: 0px;
+ margin-left: 0px;
+ padding-right: 0px;
+ margin-right: 0px; }
+
+
+table {
+ max-width: 100%;
+ background-color: transparent;
+ margin-top: 0.5em;
+ margin-bottom: 1.5em;
+ border-collapse: collapse;
+ border-color: var(--third-background);
+ border-spacing: 0;
+ font-size: 0.9em;
+}
+
+table th, table td {
+ padding: 0px 0.5em 0px;
+ border-color: var(--third-background);
+}
+
+table th {
+ background-color: var(--third-background);
+ border-color: var(--third-background);
+ font-weight: bold; }
+
+table th.docinfo-name {
+ background-color: transparent;
+ text-align: right;
+}
+
+table tr:hover {
+ background-color: var(--third-background); }
+
+
+/* rst2html default used to remove borders from tables and images */
+.borderless, table.borderless td, table.borderless th {
+ border: 0; }
+
+table.borderless td, table.borderless th {
+ /* Override padding for "table.docutils td" with "! important".
+ The right padding separates the table cells. */
+ padding: 0 0.5em 0 0 !important; }
+
+.admonition {
+ padding: 0.3em;
+ background-color: var(--secondary-background);
+ border-left: 0.4em solid #7f7f84;
+ margin-bottom: 0.5em;
+ -webkit-box-shadow: 0 5px 8px -6px rgba(0,0,0,.2);
+ -moz-box-shadow: 0 5px 8px -6px rgba(0,0,0,.2);
+ box-shadow: 0 5px 8px -6px rgba(0,0,0,.2);
+}
+.admonition-info {
+ border-color: var(--info-background);
+}
+.admonition-info-text {
+ color: var(--info-background);
+}
+.admonition-warning {
+ border-color: var(--warning-background);
+}
+.admonition-warning-text {
+ color: var(--warning-background);
+}
+.admonition-error {
+ border-color: var(--error-background);
+}
+.admonition-error-text {
+ color: var(--error-background);
+}
+
+.first {
+ /* Override more specific margin styles with "! important". */
+ margin-top: 0 !important; }
+
+.last, .with-subtitle {
+ margin-bottom: 0 !important; }
+
+.hidden {
+ display: none; }
+
+blockquote.epigraph {
+ margin: 2em 5em; }
+
+dl.docutils dd {
+ margin-bottom: 0.5em; }
+
+object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
+ overflow: hidden; }
+
+
+div.figure {
+ margin-left: 2em;
+ margin-right: 2em; }
+
+div.footer, div.header {
+ clear: both;
+ text-align: center;
+ color: #666;
+ font-size: smaller; }
+
+div.footer {
+ padding-top: 5em; }
+
+div.line-block {
+ display: block;
+ margin-top: 1em;
+ margin-bottom: 1em; }
+
+div.line-block div.line-block {
+ margin-top: 0;
+ margin-bottom: 0;
+ margin-left: 1.5em; }
+
+div.topic {
+ margin: 2em; }
+
+div.search_results {
+ background-color: var(--third-background);
+ margin: 3em;
+ padding: 1em;
+ border: 1px solid #4d4d4d; }
+
+div#global-links ul {
+ margin-left: 0;
+ list-style-type: none; }
+
+div#global-links > simple-boot {
+ margin-left: 3em; }
+
+hr.docutils {
+ width: 75%; }
+
+img.align-left, .figure.align-left, object.align-left {
+ clear: left;
+ float: left;
+ margin-right: 1em; }
+
+img.align-right, .figure.align-right, object.align-right {
+ clear: right;
+ float: right;
+ margin-left: 1em; }
+
+img.align-center, .figure.align-center, object.align-center {
+ display: block;
+ margin-left: auto;
+ margin-right: auto; }
+
+.align-left {
+ text-align: left; }
+
+.align-center {
+ clear: both;
+ text-align: center; }
+
+.align-right {
+ text-align: right; }
+
+/* reset inner alignment in figures */
+div.align-right {
+ text-align: inherit; }
+
+p.attribution {
+ text-align: right;
+ margin-left: 50%; }
+
+p.caption {
+ font-style: italic; }
+
+p.credits {
+ font-style: italic;
+ font-size: smaller; }
+
+p.label {
+ white-space: nowrap; }
+
+p.rubric {
+ font-weight: bold;
+ font-size: larger;
+ color: maroon;
+ text-align: center; }
+
+p.topic-title {
+ font-weight: bold; }
+
+pre.address {
+ margin-bottom: 0;
+ margin-top: 0;
+ font: inherit; }
+
+pre.literal-block, pre.doctest-block, pre.math, pre.code {
+ margin-left: 2em;
+ margin-right: 2em; }
+
+pre.code .ln {
+ color: grey; }
+
+/* line numbers */
+pre.code, code {
+ background-color: #eeeeee; }
+
+pre.code .comment, code .comment {
+ color: #5c6576; }
+
+pre.code .keyword, code .keyword {
+ color: #3B0D06;
+ font-weight: bold; }
+
+pre.code .literal.string, code .literal.string {
+ color: #0c5404; }
+
+pre.code .name.builtin, code .name.builtin {
+ color: #352b84; }
+
+pre.code .deleted, code .deleted {
+ background-color: #DEB0A1; }
+
+pre.code .inserted, code .inserted {
+ background-color: #A3D289; }
+
+span.classifier {
+ font-style: oblique; }
+
+span.classifier-delimiter {
+ font-weight: bold; }
+
+span.problematic {
+ color: #b30000; }
+
+span.section-subtitle {
+ /* font-size relative to parent (h1..h6 element) */
+ font-size: 80%; }
+
+span.DecNumber {
+ color: var(--number); }
+
+span.BinNumber {
+ color: var(--number); }
+
+span.HexNumber {
+ color: var(--number); }
+
+span.OctNumber {
+ color: var(--number); }
+
+span.FloatNumber {
+ color: var(--number); }
+
+span.Identifier {
+ color: var(--identifier); }
+
+span.Keyword {
+ font-weight: 600;
+ color: var(--keyword); }
+
+span.StringLit {
+ color: var(--literal); }
+
+span.LongStringLit {
+ color: var(--literal); }
+
+span.CharLit {
+ color: var(--literal); }
+
+span.EscapeSequence {
+ color: var(--escapeSequence); }
+
+span.Operator {
+ color: var(--operator); }
+
+span.Punctuation {
+ color: var(--punctuation); }
+
+span.Comment, span.LongComment {
+ font-style: italic;
+ font-weight: 400;
+ color: var(--comment); }
+
+span.RegularExpression {
+ color: darkviolet; }
+
+span.TagStart {
+ color: darkviolet; }
+
+span.TagEnd {
+ color: darkviolet; }
+
+span.Key {
+ color: #252dbe; }
+
+span.Value {
+ color: #252dbe; }
+
+span.RawData {
+ color: var(--raw-data); }
+
+span.Assembler {
+ color: #252dbe; }
+
+span.Preprocessor {
+ color: #252dbe; }
+
+span.Directive {
+ color: #252dbe; }
+
+span.option {
+ font-weight: bold;
+ font-family: "Source Code Pro", Monaco, Menlo, Consolas, "Courier New", monospace;
+ color: var(--option); }
+
+span.Prompt {
+ font-weight: bold;
+ color: red; }
+
+span.ProgramOutput {
+ font-weight: bold;
+ color: #808080; }
+
+span.program {
+ font-weight: bold;
+ color: var(--program);
+ text-decoration: underline;
+ text-decoration-color: var(--hint);
+ text-decoration-thickness: 0.05em;
+ text-underline-offset: 0.15em; }
+
+span.Command, span.Rule, span.Hyperlink,
+span.Label, span.Reference, span.Other {
+ color: var(--other); }
+
+/* Pop type, const, proc, and iterator defs in nim def blocks */
+dt pre > span.Identifier, dt pre > span.Operator {
+ color: var(--identifier);
+ font-weight: 700; }
+
+dt pre > span.Keyword ~ span.Identifier, dt pre > span.Identifier ~ span.Identifier,
+dt pre > span.Operator ~ span.Identifier, dt pre > span.Other ~ span.Identifier {
+ color: var(--identifier);
+ font-weight: inherit; }
+
+/* Nim sprite for the footer (taken from main page favicon) */
+.nim-sprite {
+ display: inline-block;
+ width: 51px;
+ height: 14px;
+ background-position: 0 0;
+ background-size: 51px 14px;
+ -webkit-filter: opacity(50%);
+ filter: opacity(50%);
+ background-repeat: no-repeat;
+ background-image: var(--nim-sprite-base64);
+ margin-bottom: 5px; }
+
+span.pragmadots {
+ /* Position: relative frees us up to make the dots
+ look really nice without fucking up the layout and
+ causing bulging in the parent container */
+ position: relative;
+ /* 1px down looks slightly nicer */
+ top: 1px;
+ padding: 2px;
+ background-color: var(--third-background);
+ border-radius: 4px;
+ margin: 0 2px;
+ cursor: pointer;
+ font-size: 0.8em; }
+
+span.pragmadots:hover {
+ background-color: var(--hint); }
+
+span.pragmawrap {
+ display: none; }
+
+span.attachedType {
+ display: none;
+ visibility: hidden; }
diff --git a/uing/rawui.html b/uing/rawui.html
new file mode 100644
index 0000000..e45017f
--- /dev/null
+++ b/uing/rawui.html
@@ -0,0 +1,7462 @@
+
+
+
+
+
+
+
+uing/rawui
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
uing/rawui
+
+
+
+ Theme:
+
+ 🌗 Match OS
+ 🌑 Dark
+ 🌕 Light
+
+
+
+
+ Search:
+
+
+ Group by:
+
+ Section
+ Type
+
+
+
+
+
+ Types
+
+
+
+
+
+ Consts
+
+
+
+
+
+ Procs
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Templates
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Source
+
Edit
+
+
+
+
Low level wrapper for libui-ng.
+
Documentation mainly from ui.h
+
Documentation is only added when neccessary, see ui.h for documentation
+
+
+
+
+
+
Align {.size : 4 .} = enum
+ AlignFill ,
+ AlignStart ,
+ AlignCenter ,
+ AlignEnd
+
+
+ Alignment specifiers to define placement within the reserved area.
+Used in Grid
+
+ Source
+Edit
+
+
+
+
+
+
AreaDrawParams {.bycopy .} = object
+ context * : ptr DrawContext
+ areaWidth * : cdouble
+ areaHeight * : cdouble
+ clipX * : cdouble
+ clipY * : cdouble
+ clipWidth * : cdouble
+ clipHeight * : cdouble
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
AreaMouseEvent {.bycopy .} = object
+ x * : cdouble
+ y * : cdouble
+ areaWidth * : cdouble
+ areaHeight * : cdouble
+ down * : cint
+ up * : cint
+ count * : cint
+ modifiers * : Modifiers
+ held1To64 * : uint64
+
+
+
+ Source
+Edit
+
+
+
+
+
At {.size : 4 .} = enum
+ AtLeading ,
+ AtTop ,
+ AtTrailing ,
+ AtBottom
+
+
+ Placement specifier to define placement in relation to another widget.
+Used in Grid
+
+ Source
+Edit
+
+
+
+
+
+
+
+
AttributeType {.size : 4 .} = enum
+ AttributeTypeFamily , AttributeTypeSize , AttributeTypeWeight ,
+ AttributeTypeItalic , AttributeTypeStretch , AttributeTypeColor ,
+ AttributeTypeBackground , AttributeTypeUnderline , AttributeTypeUnderlineColor ,
+ AttributeTypeFeatures
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
Color {.bycopy .} = object
+ r * : cdouble
+ g * : cdouble
+ b * : cdouble
+ a * : cdouble
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
Control {.inheritable , pure , bycopy .} = object
+ signature * : uint32
+ osSignature * : uint32
+ typeSignature * : uint32
+ destroy * : proc ( a1 : ptr Control ) {.cdecl .}
+ handle * : proc ( a1 : ptr Control ) : int {.cdecl .}
+ parent * : proc ( a1 : ptr Control ) : ptr Control {.cdecl .}
+ setParent * : proc ( a1 : ptr Control ; a2 : ptr Control ) {.cdecl .}
+ toplevel * : proc ( a1 : ptr Control ) : cint {.cdecl .}
+ visible * : proc ( a1 : ptr Control ) : cint {.cdecl .}
+ show * : proc ( a1 : ptr Control ) {.cdecl .}
+ hide * : proc ( a1 : ptr Control ) {.cdecl .}
+ enabled * : proc ( a1 : ptr Control ) : cint {.cdecl .}
+ enable * : proc ( a1 : ptr Control ) {.cdecl .}
+ disable * : proc ( a1 : ptr Control ) {.cdecl .}
+
+
+ Base class for GUI controls providing common methods.
+ Source
+Edit
+
+
+
+
+
+
DrawBrush {.bycopy .} = object
+ r * : cdouble
+ g * : cdouble
+ b * : cdouble
+ a * : cdouble
+ x0 * : cdouble
+ y0 * : cdouble
+ x1 * : cdouble
+ y1 * : cdouble
+ outerRadius * : cdouble
+ stops * : ptr UncheckedArray [ DrawBrushGradientStop ]
+ numStops * : csize_t
+
+
+
+ Source
+Edit
+
+
+
+
+
+
DrawBrushType {.size : 4 .} = enum
+ DrawBrushTypeSolid , DrawBrushTypeLinearGradient , DrawBrushTypeRadialGradient ,
+ DrawBrushTypeImage
+
+
+
+ Source
+Edit
+
+
+
+
+
DrawContext = object
+
+
+
+ Source
+Edit
+
+
+
+
+
+
DrawLineCap {.size : 4 .} = enum
+ DrawLineCapFlat , DrawLineCapRound , DrawLineCapSquare
+
+
+
+ Source
+Edit
+
+
+
+
+
DrawLineJoin {.size : 4 .} = enum
+ DrawLineJoinMiter , DrawLineJoinRound , DrawLineJoinBevel
+
+
+
+ Source
+Edit
+
+
+
+
+
DrawMatrix {.bycopy .} = object
+ m11 * : cdouble
+ m12 * : cdouble
+ m21 * : cdouble
+ m22 * : cdouble
+ m31 * : cdouble
+ m32 * : cdouble
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
DrawTextAlign {.size : 4 .} = enum
+ DrawTextAlignLeft , DrawTextAlignCenter , DrawTextAlignRight
+
+
+ DrawTextAlign specifies the alignment of lines of text in a DrawTextLayout .
+ Source
+Edit
+
+
+
+
+
DrawTextLayout = object
+
+
+
+ Source
+Edit
+
+
+
+
+
DrawTextLayoutParams {.bycopy .} = object
+ string * : ptr AttributedString
+ defaultFont * : ptr FontDescriptor
+ width * : cdouble
+ align * : DrawTextAlign
+
+
+ DrawTextLayoutParams describes a DrawTextLayout . defaultFont is used to render any text that is not attributed sufficiently in string . width determines the width of the bounding box of the text; the height is determined automatically.
+ Source
+Edit
+
+
+
+
+
+
Entry = object of Control
+
+
+
+ Source
+Edit
+
+
+
+
+
ExtKey {.size : 4 .} = enum
+ ExtKeyEscape = 1 , ExtKeyInsert ,
+ ExtKeyDelete , ExtKeyHome , ExtKeyEnd , ExtKeyPageUp , ExtKeyPageDown , ExtKeyUp ,
+ ExtKeyDown , ExtKeyLeft , ExtKeyRight , ExtKeyF1 ,
+ ExtKeyF3 , ExtKeyF4 , ExtKeyF5 , ExtKeyF6 , ExtKeyF7 , ExtKeyF8 , ExtKeyF9 ,
+ ExtKeyF10 , ExtKeyF11 , ExtKeyF12 , ExtKeyN0 ,
+ ExtKeyN1 ,
+ ExtKeyN2 , ExtKeyN3 , ExtKeyN4 , ExtKeyN5 , ExtKeyN6 , ExtKeyN7 , ExtKeyN8 ,
+ ExtKeyN9 , ExtKeyNDot , ExtKeyNEnter , ExtKeyNAdd , ExtKeyNSubtract ,
+ ExtKeyNMultiply , ExtKeyNDivide
+
+
+
+ Source
+Edit
+
+
+
+
+
+
FontDescriptor {.bycopy .} = object
+ family * : cstring
+ size * : cdouble
+ weight * : TextWeight
+ italic * : TextItalic
+ stretch * : TextStretch
+
+
+ FontDescriptor provides a complete description of a font where one is needed. Currently, this means as the default font of a DrawTextLayout and as the data returned by FontButton .
+All the members operate like the respective Attribute s.
+
+ Source
+Edit
+
+
+
+
+
ForEach {.size : 4 .} = enum
+ ForEachContinue , ForEachStop
+
+
+ ForEach represents the return value from one of libui-ng's various ForEach functions.
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
+
Modifiers {.size : 4 .} = enum
+ ModifierCtrl = 1 ,
+ ModifierAlt = 2 ,
+ ModifierShift = 4 ,
+ ModifierSuper = 8
+
+
+ Keyboard modifier keys.
+Usable as bitmasks.
+
+ Source
+Edit
+
+
+
+
+
MultilineEntry = object of Control
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
SortIndicator {.size : 4 .} = enum
+ SortIndicatorNone , SortIndicatorAscending , SortIndicatorDescending
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
TableParams {.bycopy .} = object
+ model * : ptr TableModel
+
+ rowBackgroundColorModelColumn * : cint
+
+
+
+
+
+
+
+
+ Table parameters passed to newTable ( ) .
+ Source
+Edit
+
+
+
+
+
TableSelection {.bycopy .} = object
+ numRows * : cint
+ rows * : ptr UncheckedArray [ cint ]
+
+
+ Holds an array of selected row indices for a table.
+ Source
+Edit
+
+
+
+
+
TableSelectionMode {.size : 4 .} = enum
+ TableSelectionModeNone ,
+
+
+
+ TableSelectionModeZeroOrOne ,
+ TableSelectionModeOne ,
+ TableSelectionModeZeroOrMany
+
+
+ Table selection modes.
+Table selection that enforce how a user can interact with a table.
+Note:
+An empty table selection is a valid state for any selection mode. This is in fact the default upon table creation and can otherwise triggered through operations such as row deletion.
+
+ Source
+Edit
+
+
+
+
+
TableTextColumnOptionalParams {.bycopy .} = object
+ colorModelColumn * : cint
+
+
+ Optional parameters to control the appearance of text columns.
+ Source
+Edit
+
+
+
+
+
+
+
+
TextItalic {.size : 4 .} = enum
+ TextItalicNormal , TextItalicOblique , TextItalicItalic
+
+
+ TextItalic represents possible italic modes for a font. Italic represents "true" italics where the slanted glyphs have custom shapes, whereas oblique represents italics that are merely slanted versions of the normal glyphs. Most fonts usually have one or the other.
+ Source
+Edit
+
+
+
+
+
TextStretch {.size : 4 .} = enum
+ TextStretchUltraCondensed , TextStretchExtraCondensed , TextStretchCondensed ,
+ TextStretchSemiCondensed , TextStretchNormal , TextStretchSemiExpanded ,
+ TextStretchExpanded , TextStretchExtraExpanded , TextStretchUltraExpanded
+
+
+ TextStretch represents possible stretches (also called "widths") of a font.
+Note that due to restrictions in early versions of Windows, some fonts have "special" stretches be exposed in many programs as separate font families. This is perhaps most notable with Arial Condensed. libui does not do this, even on Windows (because the DirectWrite API libui-ng uses on Windows does not do this); to specify Arial Condensed, use family Arial and stretch TextStretchCondensed .
+
+ Source
+Edit
+
+
+
+
+
TextWeight {.size : 4 .} = enum
+ TextWeightMinimum = 0 , TextWeightThin = 100 , TextWeightUltraLight = 200 ,
+ TextWeightLight = 300 , TextWeightBook = 350 , TextWeightNormal = 400 ,
+ TextWeightMedium = 500 , TextWeightSemiBold = 600 , TextWeightBold = 700 ,
+ TextWeightUltraBold = 800 , TextWeightHeavy = 900 , TextWeightUltraHeavy = 950 ,
+ TextWeightMaximum = 1000
+
+
+ TextWeight represents possible text weights. These roughly map to the OS/2 text weight field of TrueType and OpenType fonts, or to CSS weight numbers. The named constants are nominal values; the actual values may vary by font and by OS, though this isn't particularly likely. Any value between TextWeightMinimum and TextWeightMaximum , inclusive, is allowed.
+Note that due to restrictions in early versions of Windows, some fonts have "special" weights be exposed in many programs as separate font families. This is perhaps most notable with Arial Black. libui-ng does not do this, even on Windows (because the DirectWrite API libui-ng uses on Windows does not do this); to specify Arial Black, use family Arial and weight TextWeightBlack .
+
+ Source
+Edit
+
+
+
+
+
Tm {.importc : "struct tm" , header : "time.h" , bycopy .} = object
+ tm_sec * : cint
+ tm_min * : cint
+ tm_hour * : cint
+ tm_mday * : cint
+ tm_mon * : cint
+ tm_year * : cint
+ tm_wday * : cint
+ tm_yday * : cint
+ tm_isdst * : cint
+
+
+
+ Source
+Edit
+
+
+
+
+
Underline {.size : 4 .} = enum
+ UnderlineNone , UnderlineSingle , UnderlineDouble , UnderlineSuggestion
+
+
+ Underline specifies a type of underline to use on text.
+ Source
+Edit
+
+
+
+
+
UnderlineColor {.size : 4 .} = enum
+ UnderlineColorCustom , UnderlineColorSpelling , UnderlineColorGrammar , UnderlineColorAuxiliary
+
+
+ UnderlineColor specifies the color of any underline on the text it is applied to, regardless of the type of underline. In addition to being able to specify a custom color, you can explicitly specify platform-specific colors for suggestion underlines; to use them correctly, pair them with UnderlineSuggestion (though they can be used on other types of underline as well).
+If an underline type is applied but no underline color is specified, the text color is used instead. If an underline color is specified without an underline type, the underline color attribute is ignored, but not removed from the AttributedString .
+
+ Source
+Edit
+
+
+
+
+
+
WindowResizeEdge {.size : 4 .} = enum
+ WindowResizeEdgeLeft , WindowResizeEdgeTop , WindowResizeEdgeRight ,
+ WindowResizeEdgeBottom , WindowResizeEdgeTopLeft , WindowResizeEdgeTopRight ,
+ WindowResizeEdgeBottomLeft , WindowResizeEdgeBottomRight
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
+
proc allocControl ( n : csize_t ; oSsig : uint32 ; typesig : uint32 ;
+ typenamestr : cstring ) : ptr Control {.cdecl ,
+ importc : "uiAllocControl" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
proc areaSetSize ( a : ptr Area ; width : cint ; height : cint ) {.cdecl ,
+ importc : "uiAreaSetSize" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc attributeColor ( a : ptr Attribute ; r : ptr cdouble ; g : ptr cdouble ;
+ b : ptr cdouble ; alpha : ptr cdouble ) {.cdecl ,
+ importc : "uiAttributeColor" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
proc boxAppend ( b : ptr Box ; child : ptr Control ; stretchy : cint ) {.cdecl ,
+ importc : "uiBoxAppend" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc boxDelete ( b : ptr Box ; index : cint ) {.cdecl , importc : "uiBoxDelete" ,
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc boxNumChildren ( b : ptr Box ) : cint {.cdecl , importc : "uiBoxNumChildren" ,
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc boxPadded ( b : ptr Box ) : cint {.cdecl , importc : "uiBoxPadded" , ... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc boxSetPadded ( b : ptr Box ; padded : cint ) {.cdecl , importc : "uiBoxSetPadded" ,
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc buttonSetText ( b : ptr Button ; text : cstring ) {.cdecl ,
+ importc : "uiButtonSetText" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc buttonText ( b : ptr Button ) : cstring {.cdecl , importc : "uiButtonText" ,
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc checkboxOnToggled ( c : ptr Checkbox ; f : proc ( sender : ptr Checkbox ;
+ senderData : pointer ) {.cdecl .}; data : pointer ) {.cdecl ,
+ importc : "uiCheckboxOnToggled" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc checkboxSetText ( c : ptr Checkbox ; text : cstring ) {.cdecl ,
+ importc : "uiCheckboxSetText" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc checkboxText ( c : ptr Checkbox ) : cstring {.cdecl , importc : "uiCheckboxText" ,
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
proc comboboxInsertAt ( c : ptr Combobox ; index : cint ; text : cstring ) {.cdecl ,
+ importc : "uiComboboxInsertAt" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc comboboxOnSelected ( c : ptr Combobox ; f : proc ( sender : ptr Combobox ;
+ senderData : pointer ) {.cdecl .}; data : pointer ) {.cdecl ,
+ importc : "uiComboboxOnSelected" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
proc drawFreeTextLayout ( tl : ptr DrawTextLayout ) {.cdecl ,
+ importc : "uiDrawFreeTextLayout" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
proc drawMatrixRotate ( m : ptr DrawMatrix ; x : cdouble ; y : cdouble ; amount : cdouble ) {.
+ cdecl , importc : "uiDrawMatrixRotate" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc drawMatrixScale ( m : ptr DrawMatrix ; xCenter : cdouble ; yCenter : cdouble ;
+ x : cdouble ; y : cdouble ) {.cdecl ,
+ importc : "uiDrawMatrixScale" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc drawMatrixSkew ( m : ptr DrawMatrix ; x : cdouble ; y : cdouble ; xamount : cdouble ;
+ yamount : cdouble ) {.cdecl , importc : "uiDrawMatrixSkew" ,
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
proc drawNewTextLayout ( params : ptr DrawTextLayoutParams ) : ptr DrawTextLayout {.
+ cdecl , importc : "uiDrawNewTextLayout" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc drawPathAddRectangle ( p : ptr DrawPath ; x : cdouble ; y : cdouble ;
+ width : cdouble ; height : cdouble ) {.cdecl ,
+ importc : "uiDrawPathAddRectangle" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc drawPathArcTo ( p : ptr DrawPath ; xCenter : cdouble ; yCenter : cdouble ;
+ radius : cdouble ; startAngle : cdouble ; sweep : cdouble ;
+ negative : cint ) {.cdecl , importc : "uiDrawPathArcTo" ,
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc drawPathBezierTo ( p : ptr DrawPath ; c1x : cdouble ; c1y : cdouble ; c2x : cdouble ;
+ c2y : cdouble ; endX : cdouble ; endY : cdouble ) {.cdecl ,
+ importc : "uiDrawPathBezierTo" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
proc drawPathLineTo ( p : ptr DrawPath ; x : cdouble ; y : cdouble ) {.cdecl ,
+ importc : "uiDrawPathLineTo" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
+
proc drawText ( c : ptr DrawContext ; tl : ptr DrawTextLayout ; x : cdouble ; y : cdouble ) {.
+ cdecl , importc : "uiDrawText" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc drawTextLayoutExtents ( tl : ptr DrawTextLayout ; width : ptr cdouble ;
+ height : ptr cdouble ) {.cdecl ,
+ importc : "uiDrawTextLayoutExtents" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
proc editableComboboxSetText ( c : ptr EditableCombobox ; text : cstring ) {.cdecl ,
+ importc : "uiEditableComboboxSetText" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc editableComboboxText ( c : ptr EditableCombobox ) : cstring {.cdecl ,
+ importc : "uiEditableComboboxText" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc entryOnChanged ( e : ptr Entry ;
+ f : proc ( sender : ptr Entry ; senderData : pointer ) {.cdecl .};
+ data : pointer ) {.cdecl , importc : "uiEntryOnChanged" ,
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc entryReadOnly ( e : ptr Entry ) : cint {.cdecl , importc : "uiEntryReadOnly" ,
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc entrySetReadOnly ( e : ptr Entry ; readonly : cint ) {.cdecl ,
+ importc : "uiEntrySetReadOnly" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc entrySetText ( e : ptr Entry ; text : cstring ) {.cdecl ,
+ importc : "uiEntrySetText" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc entryText ( e : ptr Entry ) : cstring {.cdecl , importc : "uiEntryText" ,
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
proc freeImage ( i : ptr Image ) {.cdecl , importc : "uiFreeImage" , ... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc freeInitError ( err : cstring ) {.cdecl , importc : "uiFreeInitError" ,
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
proc freeText ( text : cstring ) {.cdecl , importc : "uiFreeText" , ... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc gridAppend ( g : ptr Grid ; c : ptr Control ; left : cint ; top : cint ; xspan : cint ;
+ yspan : cint ; hexpand : cint ; halign : Align ; vexpand : cint ;
+ valign : Align ) {.cdecl , importc : "uiGridAppend" , ... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc gridInsertAt ( g : ptr Grid ; c : ptr Control ; existing : ptr Control ; at : At ;
+ xspan : cint ; yspan : cint ; hexpand : cint ; halign : Align ;
+ vexpand : cint ; valign : Align ) {.cdecl ,
+ importc : "uiGridInsertAt" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc gridPadded ( g : ptr Grid ) : cint {.cdecl , importc : "uiGridPadded" , ... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc gridSetPadded ( g : ptr Grid ; padded : cint ) {.cdecl ,
+ importc : "uiGridSetPadded" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc groupMargined ( g : ptr Group ) : cint {.cdecl , importc : "uiGroupMargined" ,
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc groupSetMargined ( g : ptr Group ; margined : cint ) {.cdecl ,
+ importc : "uiGroupSetMargined" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc groupSetTitle ( g : ptr Group ; title : cstring ) {.cdecl ,
+ importc : "uiGroupSetTitle" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc groupTitle ( g : ptr Group ) : cstring {.cdecl , importc : "uiGroupTitle" ,
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc imageAppend ( i : ptr Image ; pixels : pointer ; pixelWidth : cint ;
+ pixelHeight : cint ; byteStride : cint ) {.cdecl ,
+ importc : "uiImageAppend" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc init ( options : ptr InitOptions ) : cstring {.cdecl , importc : "uiInit" ,
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc labelSetText ( l : ptr Label ; text : cstring ) {.cdecl ,
+ importc : "uiLabelSetText" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc labelText ( l : ptr Label ) : cstring {.cdecl , importc : "uiLabelText" ,
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc main ( ) {.cdecl , importc : "uiMain" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc mainStep ( wait : cint ) : cint {.cdecl , importc : "uiMainStep" , ... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc mainSteps ( ) {.cdecl , importc : "uiMainSteps" , ... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
proc msgBox ( parent : ptr Window ; title : cstring ; description : cstring ) {.cdecl ,
+ importc : "uiMsgBox" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc msgBoxError ( parent : ptr Window ; title : cstring ; description : cstring ) {.
+ cdecl , importc : "uiMsgBoxError" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc multilineEntryAppend ( e : ptr MultilineEntry ; text : cstring ) {.cdecl ,
+ importc : "uiMultilineEntryAppend" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc multilineEntryOnChanged ( e : ptr MultilineEntry ; f : proc (
+ sender : ptr MultilineEntry ; senderData : pointer ) {.cdecl .}; data : pointer ) {.
+ cdecl , importc : "uiMultilineEntryOnChanged" , ... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc multilineEntryReadOnly ( e : ptr MultilineEntry ) : cint {.cdecl ,
+ importc : "uiMultilineEntryReadOnly" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc multilineEntrySetReadOnly ( e : ptr MultilineEntry ; readonly : cint ) {.cdecl ,
+ importc : "uiMultilineEntrySetReadOnly" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc multilineEntrySetText ( e : ptr MultilineEntry ; text : cstring ) {.cdecl ,
+ importc : "uiMultilineEntrySetText" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc multilineEntryText ( e : ptr MultilineEntry ) : cstring {.cdecl ,
+ importc : "uiMultilineEntryText" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc newBackgroundAttribute ( r : cdouble ; g : cdouble ; b : cdouble ; a : cdouble ) : ptr Attribute {.
+ cdecl , importc : "uiNewBackgroundAttribute" , ... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc newCheckbox ( text : cstring ) : ptr Checkbox {.cdecl , importc : "uiNewCheckbox" ,
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc newColorAttribute ( r : cdouble ; g : cdouble ; b : cdouble ; a : cdouble ) : ptr Attribute {.
+ cdecl , importc : "uiNewColorAttribute" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
+
proc newEntry ( ) : ptr Entry {.cdecl , importc : "uiNewEntry" , ... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
proc newGrid ( ) : ptr Grid {.cdecl , importc : "uiNewGrid" , ... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc newGroup ( title : cstring ) : ptr Group {.cdecl , importc : "uiNewGroup" ,
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc newImage ( width : cdouble ; height : cdouble ) : ptr Image {.cdecl ,
+ importc : "uiNewImage" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc newLabel ( text : cstring ) : ptr Label {.cdecl , importc : "uiNewLabel" ,
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc newMultilineEntry ( ) : ptr MultilineEntry {.cdecl ,
+ importc : "uiNewMultilineEntry" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc newNonWrappingMultilineEntry ( ) : ptr MultilineEntry {.cdecl ,
+ importc : "uiNewNonWrappingMultilineEntry" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc newPasswordEntry ( ) : ptr Entry {.cdecl , importc : "uiNewPasswordEntry" ,
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
proc newSearchEntry ( ) : ptr Entry {.cdecl , importc : "uiNewSearchEntry" ,
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc newSlider ( min : cint ; max : cint ) : ptr Slider {.cdecl ,
+ importc : "uiNewSlider" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc newSpinbox ( min : cint ; max : cint ) : ptr Spinbox {.cdecl ,
+ importc : "uiNewSpinbox" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc newTab ( ) : ptr Tab {.cdecl , importc : "uiNewTab" , ... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc newTableValueColor ( r : cdouble ; g : cdouble ; b : cdouble ; a : cdouble ) : ptr TableValue {.
+ cdecl , importc : "uiNewTableValueColor" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
proc newVerticalBox ( ) : ptr Box {.cdecl , importc : "uiNewVerticalBox" , ... raises : [ ] ,
+ tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc newWindow ( title : cstring ; width : cint ; height : cint ; hasMenubar : cint ) : ptr Window {.
+ cdecl , importc : "uiNewWindow" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc onShouldQuit ( f : proc ( data : pointer ) : cint {.cdecl .}; data : pointer ) {.
+ cdecl , importc : "uiOnShouldQuit" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc openFile ( parent : ptr Window ) : cstring {.cdecl , importc : "uiOpenFile" ,
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc openFolder ( parent : ptr Window ) : cstring {.cdecl , importc : "uiOpenFolder" ,
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
proc openTypeFeaturesGet ( otf : ptr OpenTypeFeatures ; a : char ; b : char ; c : char ;
+ d : char ; value : ptr uint32 ) : cint {.cdecl ,
+ importc : "uiOpenTypeFeaturesGet" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
proc queueMain ( f : proc ( data : pointer ) {.cdecl .}; data : pointer ) {.cdecl ,
+ importc : "uiQueueMain" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc quit ( ) {.cdecl , importc : "uiQuit" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
proc saveFile ( parent : ptr Window ) : cstring {.cdecl , importc : "uiSaveFile" ,
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc sliderOnChanged ( s : ptr Slider ; f : proc ( sender : ptr Slider ;
+ senderData : pointer ) {.cdecl .}; data : pointer ) {.cdecl ,
+ importc : "uiSliderOnChanged" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc sliderOnReleased ( s : ptr Slider ; f : proc ( sender : ptr Slider ;
+ senderData : pointer ) {.cdecl .}; data : pointer ) {.cdecl ,
+ importc : "uiSliderOnReleased" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc sliderSetRange ( s : ptr Slider ; min : cint ; max : cint ) {.cdecl ,
+ importc : "uiSliderSetRange" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc sliderSetValue ( s : ptr Slider ; value : cint ) {.cdecl ,
+ importc : "uiSliderSetValue" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc sliderValue ( s : ptr Slider ) : cint {.cdecl , importc : "uiSliderValue" ,
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc spinboxOnChanged ( s : ptr Spinbox ; f : proc ( sender : ptr Spinbox ;
+ senderData : pointer ) {.cdecl .}; data : pointer ) {.cdecl ,
+ importc : "uiSpinboxOnChanged" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc spinboxValue ( s : ptr Spinbox ) : cint {.cdecl , importc : "uiSpinboxValue" ,
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc tabAppend ( t : ptr Tab ; name : cstring ; c : ptr Control ) {.cdecl ,
+ importc : "uiTabAppend" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc tabDelete ( t : ptr Tab ; index : cint ) {.cdecl , importc : "uiTabDelete" ,
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc tabInsertAt ( t : ptr Tab ; name : cstring ; index : cint ; c : ptr Control ) {.
+ cdecl , importc : "uiTabInsertAt" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc tableAppendCheckboxColumn ( t : ptr Table ; name : cstring ;
+ checkboxModelColumn : cint ;
+ checkboxEditableModelColumn : cint ) {.cdecl ,
+ importc : "uiTableAppendCheckboxColumn" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc tableAppendCheckboxTextColumn ( t : ptr Table ; name : cstring ;
+ checkboxModelColumn : cint ;
+ checkboxEditableModelColumn : cint ;
+ textModelColumn : cint ;
+ textEditableModelColumn : cint ; textParams : ptr TableTextColumnOptionalParams ) {.
+ cdecl , importc : "uiTableAppendCheckboxTextColumn" , ... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc tableAppendImageColumn ( t : ptr Table ; name : cstring ; imageModelColumn : cint ) {.
+ cdecl , importc : "uiTableAppendImageColumn" , ... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc tableAppendImageTextColumn ( t : ptr Table ; name : cstring ;
+ imageModelColumn : cint ; textModelColumn : cint ;
+ textEditableModelColumn : cint ;
+ textParams : ptr TableTextColumnOptionalParams ) {.
+ cdecl , importc : "uiTableAppendImageTextColumn" , ... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc tableAppendTextColumn ( t : ptr Table ; name : cstring ; textModelColumn : cint ;
+ textEditableModelColumn : cint ;
+ textParams : ptr TableTextColumnOptionalParams ) {.
+ cdecl , importc : "uiTableAppendTextColumn" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc tableColumnSetWidth ( t : ptr Table ; column : cint ; width : cint ) {.cdecl ,
+ importc : "uiTableColumnSetWidth" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc tableColumnWidth ( t : ptr Table ; column : cint ) : cint {.cdecl ,
+ importc : "uiTableColumnWidth" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
proc tableOnRowClicked ( t : ptr Table ; f : proc ( t : ptr Table ; row : cint ;
+ data : pointer ) {.cdecl .}; data : pointer ) {.cdecl ,
+ importc : "uiTableOnRowClicked" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc tableOnRowDoubleClicked ( t : ptr Table ; f : proc ( t : ptr Table ; row : cint ;
+ data : pointer ) {.cdecl .}; data : pointer ) {.cdecl ,
+ importc : "uiTableOnRowDoubleClicked" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc tableOnSelectionChanged ( t : ptr Table ;
+ f : proc ( t : ptr Table ; data : pointer ) {.cdecl .};
+ data : pointer ) {.cdecl ,
+ importc : "uiTableOnSelectionChanged" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc tableValueColor ( v : ptr TableValue ; r : ptr cdouble ; g : ptr cdouble ;
+ b : ptr cdouble ; a : ptr cdouble ) {.cdecl ,
+ importc : "uiTableValueColor" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
proc tabMargined ( t : ptr Tab ; index : cint ) : cint {.cdecl ,
+ importc : "uiTabMargined" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc tabNumPages ( t : ptr Tab ) : cint {.cdecl , importc : "uiTabNumPages" ,
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc tabSetMargined ( t : ptr Tab ; index : cint ; margined : cint ) {.cdecl ,
+ importc : "uiTabSetMargined" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc timer ( milliseconds : cint ; f : proc ( data : pointer ) : cint {.cdecl .};
+ data : pointer ) {.cdecl , importc : "uiTimer" , ... raises : [ ] , tags : [ ] ,
+ forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc uninit ( ) {.cdecl , importc : "uiUninit" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc windowContentSize ( w : ptr Window ; width : ptr cint ; height : ptr cint ) {.
+ cdecl , importc : "uiWindowContentSize" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc windowFocused ( w : ptr Window ) : cint {.cdecl , importc : "uiWindowFocused" ,
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc windowOnClosing ( w : ptr Window ; f : proc ( sender : ptr Window ;
+ senderData : pointer ) : cint {.cdecl .}; data : pointer ) {.cdecl ,
+ importc : "uiWindowOnClosing" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc windowOnContentSizeChanged ( w : ptr Window ; f : proc ( sender : ptr Window ;
+ senderData : pointer ) {.cdecl .}; data : pointer ) {.cdecl ,
+ importc : "uiWindowOnContentSizeChanged" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc windowOnFocusChanged ( w : ptr Window ; f : proc ( sender : ptr Window ;
+ senderData : pointer ) {.cdecl .}; data : pointer ) {.cdecl ,
+ importc : "uiWindowOnFocusChanged" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc windowOnPositionChanged ( w : ptr Window ; f : proc ( sender : ptr Window ;
+ senderData : pointer ) {.cdecl .}; data : pointer ) {.cdecl ,
+ importc : "uiWindowOnPositionChanged" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc windowPosition ( w : ptr Window ; x : ptr cint ; y : ptr cint ) {.cdecl ,
+ importc : "uiWindowPosition" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
proc windowSetContentSize ( w : ptr Window ; width : cint ; height : cint ) {.cdecl ,
+ importc : "uiWindowSetContentSize" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
proc windowSetPosition ( w : ptr Window ; x : cint ; y : cint ) {.cdecl ,
+ importc : "uiWindowSetPosition" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
proc windowSetTitle ( w : ptr Window ; title : cstring ) {.cdecl ,
+ importc : "uiWindowSetTitle" , ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
proc windowTitle ( w : ptr Window ) : cstring {.cdecl , importc : "uiWindowTitle" ,
+ ... raises : [ ] , tags : [ ] , forbids : [ ] .}
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
template box ( this : untyped ) : untyped
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
template entry ( this : untyped ) : untyped
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
template multilineEntry ( this : untyped ) : untyped
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
+
template tab ( this : untyped ) : untyped
+
+
+
+ Source
+Edit
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Made with Nim. Generated: 2024-07-04 16:02:16 UTC
+
+
+
+
+
+
+
+
+
diff --git a/uing/rawui.idx b/uing/rawui.idx
new file mode 100644
index 0000000..4aec115
--- /dev/null
+++ b/uing/rawui.idx
@@ -0,0 +1,402 @@
+nimTitle rawui uing/rawui.html module uing/rawui 0
+nim ForEach uing/rawui.html#ForEach enum ForEach 136
+nim InitOptions uing/rawui.html#InitOptions object InitOptions 142
+nim init uing/rawui.html#init,ptr.InitOptions proc init(options: ptr InitOptions): cstring 149
+nim uninit uing/rawui.html#uninit proc uninit() 150
+nim freeInitError uing/rawui.html#freeInitError,cstring proc freeInitError(err: cstring) 151
+nim main uing/rawui.html#main proc main() 152
+nim mainSteps uing/rawui.html#mainSteps proc mainSteps() 153
+nim mainStep uing/rawui.html#mainStep,cint proc mainStep(wait: cint): cint 154
+nim quit uing/rawui.html#quit proc quit() 155
+nim queueMain uing/rawui.html#queueMain,proc(pointer),pointer proc queueMain(f: proc (data: pointer) {.cdecl.}; data: pointer) 156
+nim timer uing/rawui.html#timer,cint,proc(pointer),pointer proc timer(milliseconds: cint; f: proc (data: pointer): cint {.cdecl.}; data: pointer) 158
+nim onShouldQuit uing/rawui.html#onShouldQuit,proc(pointer),pointer proc onShouldQuit(f: proc (data: pointer): cint {.cdecl.}; data: pointer) 160
+nim freeText uing/rawui.html#freeText,cstring proc freeText(text: cstring) 162
+nim Control uing/rawui.html#Control object Control 165
+nim control uing/rawui.html#control.t,untyped template control(this: untyped): untyped 183
+nim controlDestroy uing/rawui.html#controlDestroy,ptr.Control proc controlDestroy(c: ptr Control) 186
+nim controlHandle uing/rawui.html#controlHandle,ptr.Control proc controlHandle(c: ptr Control): int 189
+nim controlParent uing/rawui.html#controlParent,ptr.Control proc controlParent(c: ptr Control): ptr Control 192
+nim controlSetParent uing/rawui.html#controlSetParent,ptr.Control,ptr.Control proc controlSetParent(c: ptr Control; parent: ptr Control) 195
+nim controlToplevel uing/rawui.html#controlToplevel,ptr.Control proc controlToplevel(c: ptr Control): cint 198
+nim controlVisible uing/rawui.html#controlVisible,ptr.Control proc controlVisible(c: ptr Control): cint 201
+nim controlShow uing/rawui.html#controlShow,ptr.Control proc controlShow(c: ptr Control) 204
+nim controlHide uing/rawui.html#controlHide,ptr.Control proc controlHide(c: ptr Control) 206
+nim controlEnabled uing/rawui.html#controlEnabled,ptr.Control proc controlEnabled(c: ptr Control): cint 208
+nim controlEnable uing/rawui.html#controlEnable,ptr.Control proc controlEnable(c: ptr Control) 211
+nim controlDisable uing/rawui.html#controlDisable,ptr.Control proc controlDisable(c: ptr Control) 214
+nim allocControl uing/rawui.html#allocControl,csize_t,uint32,uint32,cstring proc allocControl(n: csize_t; oSsig: uint32; typesig: uint32; typenamestr: cstring): ptr Control 217
+nim freeControl uing/rawui.html#freeControl,ptr.Control proc freeControl(c: ptr Control) 220
+nim controlVerifySetParent uing/rawui.html#controlVerifySetParent,ptr.Control,ptr.Control proc controlVerifySetParent(c: ptr Control; parent: ptr Control) 222
+nim controlEnabledToUser uing/rawui.html#controlEnabledToUser,ptr.Control proc controlEnabledToUser(c: ptr Control): cint 225
+nim userBugCannotSetParentOnToplevel uing/rawui.html#userBugCannotSetParentOnToplevel,cstring proc userBugCannotSetParentOnToplevel(type: cstring) 228
+nim Window uing/rawui.html#Window object Window 232
+nim window uing/rawui.html#window.t,untyped template window(this: untyped): untyped 234
+nim windowTitle uing/rawui.html#windowTitle,ptr.Window proc windowTitle(w: ptr Window): cstring 238
+nim windowSetTitle uing/rawui.html#windowSetTitle,ptr.Window,cstring proc windowSetTitle(w: ptr Window; title: cstring) 241
+nim windowPosition uing/rawui.html#windowPosition,ptr.Window,ptr.cint,ptr.cint proc windowPosition(w: ptr Window; x: ptr cint; y: ptr cint) 244
+nim windowSetPosition uing/rawui.html#windowSetPosition,ptr.Window,cint,cint proc windowSetPosition(w: ptr Window; x: cint; y: cint) 247
+nim windowOnPositionChanged uing/rawui.html#windowOnPositionChanged,ptr.Window,proc(ptr.Window,pointer),pointer proc windowOnPositionChanged(w: ptr Window; f: proc (sender: ptr Window;\n senderData: pointer) {.cdecl.}; data: pointer) 250
+nim windowContentSize uing/rawui.html#windowContentSize,ptr.Window,ptr.cint,ptr.cint proc windowContentSize(w: ptr Window; width: ptr cint; height: ptr cint) 254
+nim windowSetContentSize uing/rawui.html#windowSetContentSize,ptr.Window,cint,cint proc windowSetContentSize(w: ptr Window; width: cint; height: cint) 257
+nim windowFullscreen uing/rawui.html#windowFullscreen,ptr.Window proc windowFullscreen(w: ptr Window): cint 260
+nim windowSetFullscreen uing/rawui.html#windowSetFullscreen,ptr.Window,cint proc windowSetFullscreen(w: ptr Window; fullscreen: cint) 263
+nim windowOnContentSizeChanged uing/rawui.html#windowOnContentSizeChanged,ptr.Window,proc(ptr.Window,pointer),pointer proc windowOnContentSizeChanged(w: ptr Window; f: proc (sender: ptr Window;\n senderData: pointer) {.cdecl.}; data: pointer) 266
+nim windowOnClosing uing/rawui.html#windowOnClosing,ptr.Window,proc(ptr.Window,pointer),pointer proc windowOnClosing(w: ptr Window; f: proc (sender: ptr Window; senderData: pointer): cint {.\n cdecl.}; data: pointer) 270
+nim windowOnFocusChanged uing/rawui.html#windowOnFocusChanged,ptr.Window,proc(ptr.Window,pointer),pointer proc windowOnFocusChanged(w: ptr Window; f: proc (sender: ptr Window;\n senderData: pointer) {.cdecl.}; data: pointer) 273
+nim windowFocused uing/rawui.html#windowFocused,ptr.Window proc windowFocused(w: ptr Window): cint 277
+nim windowBorderless uing/rawui.html#windowBorderless,ptr.Window proc windowBorderless(w: ptr Window): cint 280
+nim windowSetBorderless uing/rawui.html#windowSetBorderless,ptr.Window,cint proc windowSetBorderless(w: ptr Window; borderless: cint) 283
+nim windowSetChild uing/rawui.html#windowSetChild,ptr.Window,ptr.Control proc windowSetChild(w: ptr Window; child: ptr Control) 286
+nim windowMargined uing/rawui.html#windowMargined,ptr.Window proc windowMargined(w: ptr Window): cint 289
+nim windowSetMargined uing/rawui.html#windowSetMargined,ptr.Window,cint proc windowSetMargined(w: ptr Window; margined: cint) 292
+nim windowResizeable uing/rawui.html#windowResizeable,ptr.Window proc windowResizeable(w: ptr Window): cint 295
+nim windowSetResizeable uing/rawui.html#windowSetResizeable,ptr.Window,cint proc windowSetResizeable(w: ptr Window; resizeable: cint) 298
+nim newWindow uing/rawui.html#newWindow,cstring,cint,cint,cint proc newWindow(title: cstring; width: cint; height: cint; hasMenubar: cint): ptr Window 301
+nim Button uing/rawui.html#Button object Button 305
+nim button uing/rawui.html#button.t,untyped template button(this: untyped): untyped 307
+nim buttonText uing/rawui.html#buttonText,ptr.Button proc buttonText(b: ptr Button): cstring 311
+nim buttonSetText uing/rawui.html#buttonSetText,ptr.Button,cstring proc buttonSetText(b: ptr Button; text: cstring) 314
+nim buttonOnClicked uing/rawui.html#buttonOnClicked,ptr.Button,proc(ptr.Button,pointer),pointer proc buttonOnClicked(b: ptr Button;\n f: proc (sender: ptr Button; senderData: pointer) {.cdecl.};\n data: pointer) 317
+nim newButton uing/rawui.html#newButton,cstring proc newButton(text: cstring): ptr Button 320
+nim Box uing/rawui.html#Box object Box 324
+nim box uing/rawui.html#box.t,untyped template box(this: untyped): untyped 326
+nim boxAppend uing/rawui.html#boxAppend,ptr.Box,ptr.Control,cint proc boxAppend(b: ptr Box; child: ptr Control; stretchy: cint) 330
+nim boxNumChildren uing/rawui.html#boxNumChildren,ptr.Box proc boxNumChildren(b: ptr Box): cint 333
+nim boxDelete uing/rawui.html#boxDelete,ptr.Box,cint proc boxDelete(b: ptr Box; index: cint) 336
+nim boxPadded uing/rawui.html#boxPadded,ptr.Box proc boxPadded(b: ptr Box): cint 338
+nim boxSetPadded uing/rawui.html#boxSetPadded,ptr.Box,cint proc boxSetPadded(b: ptr Box; padded: cint) 340
+nim newHorizontalBox uing/rawui.html#newHorizontalBox proc newHorizontalBox(): ptr Box 343
+nim newVerticalBox uing/rawui.html#newVerticalBox proc newVerticalBox(): ptr Box 346
+nim Checkbox uing/rawui.html#Checkbox object Checkbox 349
+nim checkbox uing/rawui.html#checkbox.t,untyped template checkbox(this: untyped): untyped 351
+nim checkboxText uing/rawui.html#checkboxText,ptr.Checkbox proc checkboxText(c: ptr Checkbox): cstring 355
+nim checkboxSetText uing/rawui.html#checkboxSetText,ptr.Checkbox,cstring proc checkboxSetText(c: ptr Checkbox; text: cstring) 358
+nim checkboxOnToggled uing/rawui.html#checkboxOnToggled,ptr.Checkbox,proc(ptr.Checkbox,pointer),pointer proc checkboxOnToggled(c: ptr Checkbox;\n f: proc (sender: ptr Checkbox; senderData: pointer) {.cdecl.};\n data: pointer) 361
+nim checkboxChecked uing/rawui.html#checkboxChecked,ptr.Checkbox proc checkboxChecked(c: ptr Checkbox): cint 365
+nim checkboxSetChecked uing/rawui.html#checkboxSetChecked,ptr.Checkbox,cint proc checkboxSetChecked(c: ptr Checkbox; checked: cint) 368
+nim newCheckbox uing/rawui.html#newCheckbox,cstring proc newCheckbox(text: cstring): ptr Checkbox 371
+nim Entry uing/rawui.html#Entry object Entry 375
+nim entry uing/rawui.html#entry.t,untyped template entry(this: untyped): untyped 377
+nim entryText uing/rawui.html#entryText,ptr.Entry proc entryText(e: ptr Entry): cstring 381
+nim entrySetText uing/rawui.html#entrySetText,ptr.Entry,cstring proc entrySetText(e: ptr Entry; text: cstring) 383
+nim entryOnChanged uing/rawui.html#entryOnChanged,ptr.Entry,proc(ptr.Entry,pointer),pointer proc entryOnChanged(e: ptr Entry;\n f: proc (sender: ptr Entry; senderData: pointer) {.cdecl.};\n data: pointer) 386
+nim entryReadOnly uing/rawui.html#entryReadOnly,ptr.Entry proc entryReadOnly(e: ptr Entry): cint 391
+nim entrySetReadOnly uing/rawui.html#entrySetReadOnly,ptr.Entry,cint proc entrySetReadOnly(e: ptr Entry; readonly: cint) 394
+nim newEntry uing/rawui.html#newEntry proc newEntry(): ptr Entry 397
+nim newPasswordEntry uing/rawui.html#newPasswordEntry proc newPasswordEntry(): ptr Entry 399
+nim newSearchEntry uing/rawui.html#newSearchEntry proc newSearchEntry(): ptr Entry 402
+nim Label uing/rawui.html#Label object Label 405
+nim label uing/rawui.html#label.t,untyped template label(this: untyped): untyped 407
+nim labelText uing/rawui.html#labelText,ptr.Label proc labelText(l: ptr Label): cstring 411
+nim labelSetText uing/rawui.html#labelSetText,ptr.Label,cstring proc labelSetText(l: ptr Label; text: cstring) 413
+nim newLabel uing/rawui.html#newLabel,cstring proc newLabel(text: cstring): ptr Label 416
+nim Tab uing/rawui.html#Tab object Tab 419
+nim tab uing/rawui.html#tab.t,untyped template tab(this: untyped): untyped 421
+nim tabAppend uing/rawui.html#tabAppend,ptr.Tab,cstring,ptr.Control proc tabAppend(t: ptr Tab; name: cstring; c: ptr Control) 425
+nim tabInsertAt uing/rawui.html#tabInsertAt,ptr.Tab,cstring,cint,ptr.Control proc tabInsertAt(t: ptr Tab; name: cstring; index: cint; c: ptr Control) 428
+nim tabDelete uing/rawui.html#tabDelete,ptr.Tab,cint proc tabDelete(t: ptr Tab; index: cint) 431
+nim tabNumPages uing/rawui.html#tabNumPages,ptr.Tab proc tabNumPages(t: ptr Tab): cint 433
+nim tabMargined uing/rawui.html#tabMargined,ptr.Tab,cint proc tabMargined(t: ptr Tab; index: cint): cint 435
+nim tabSetMargined uing/rawui.html#tabSetMargined,ptr.Tab,cint,cint proc tabSetMargined(t: ptr Tab; index: cint; margined: cint) 438
+nim newTab uing/rawui.html#newTab proc newTab(): ptr Tab 441
+nim Group uing/rawui.html#Group object Group 444
+nim group uing/rawui.html#group.t,untyped template group(this: untyped): untyped 446
+nim groupTitle uing/rawui.html#groupTitle,ptr.Group proc groupTitle(g: ptr Group): cstring 450
+nim groupSetTitle uing/rawui.html#groupSetTitle,ptr.Group,cstring proc groupSetTitle(g: ptr Group; title: cstring) 453
+nim groupSetChild uing/rawui.html#groupSetChild,ptr.Group,ptr.Control proc groupSetChild(g: ptr Group; c: ptr Control) 456
+nim groupMargined uing/rawui.html#groupMargined,ptr.Group proc groupMargined(g: ptr Group): cint 459
+nim groupSetMargined uing/rawui.html#groupSetMargined,ptr.Group,cint proc groupSetMargined(g: ptr Group; margined: cint) 462
+nim newGroup uing/rawui.html#newGroup,cstring proc newGroup(title: cstring): ptr Group 465
+nim Spinbox uing/rawui.html#Spinbox object Spinbox 469
+nim spinbox uing/rawui.html#spinbox.t,untyped template spinbox(this: untyped): untyped 471
+nim spinboxValue uing/rawui.html#spinboxValue,ptr.Spinbox proc spinboxValue(s: ptr Spinbox): cint 475
+nim spinboxSetValue uing/rawui.html#spinboxSetValue,ptr.Spinbox,cint proc spinboxSetValue(s: ptr Spinbox; value: cint) 478
+nim spinboxOnChanged uing/rawui.html#spinboxOnChanged,ptr.Spinbox,proc(ptr.Spinbox,pointer),pointer proc spinboxOnChanged(s: ptr Spinbox;\n f: proc (sender: ptr Spinbox; senderData: pointer) {.cdecl.};\n data: pointer) 481
+nim newSpinbox uing/rawui.html#newSpinbox,cint,cint proc newSpinbox(min: cint; max: cint): ptr Spinbox 484
+nim Slider uing/rawui.html#Slider object Slider 488
+nim slider uing/rawui.html#slider.t,untyped template slider(this: untyped): untyped 490
+nim sliderValue uing/rawui.html#sliderValue,ptr.Slider proc sliderValue(s: ptr Slider): cint 494
+nim sliderSetValue uing/rawui.html#sliderSetValue,ptr.Slider,cint proc sliderSetValue(s: ptr Slider; value: cint) 497
+nim sliderHasToolTip uing/rawui.html#sliderHasToolTip,ptr.Slider proc sliderHasToolTip(s: ptr Slider): cint 500
+nim sliderSetHasToolTip uing/rawui.html#sliderSetHasToolTip,ptr.Slider,cint proc sliderSetHasToolTip(s: ptr Slider; hasToolTip: cint) 503
+nim sliderOnChanged uing/rawui.html#sliderOnChanged,ptr.Slider,proc(ptr.Slider,pointer),pointer proc sliderOnChanged(s: ptr Slider;\n f: proc (sender: ptr Slider; senderData: pointer) {.cdecl.};\n data: pointer) 506
+nim sliderOnReleased uing/rawui.html#sliderOnReleased,ptr.Slider,proc(ptr.Slider,pointer),pointer proc sliderOnReleased(s: ptr Slider;\n f: proc (sender: ptr Slider; senderData: pointer) {.cdecl.};\n data: pointer) 509
+nim sliderSetRange uing/rawui.html#sliderSetRange,ptr.Slider,cint,cint proc sliderSetRange(s: ptr Slider; min: cint; max: cint) 512
+nim newSlider uing/rawui.html#newSlider,cint,cint proc newSlider(min: cint; max: cint): ptr Slider 515
+nim ProgressBar uing/rawui.html#ProgressBar object ProgressBar 519
+nim progressBar uing/rawui.html#progressBar.t,untyped template progressBar(this: untyped): untyped 521
+nim progressBarValue uing/rawui.html#progressBarValue,ptr.ProgressBar proc progressBarValue(p: ptr ProgressBar): cint 525
+nim progressBarSetValue uing/rawui.html#progressBarSetValue,ptr.ProgressBar,cint proc progressBarSetValue(p: ptr ProgressBar; n: cint) 528
+nim newProgressBar uing/rawui.html#newProgressBar proc newProgressBar(): ptr ProgressBar 531
+nim Separator uing/rawui.html#Separator object Separator 535
+nim separator uing/rawui.html#separator.t,untyped template separator(this: untyped): untyped 537
+nim newHorizontalSeparator uing/rawui.html#newHorizontalSeparator proc newHorizontalSeparator(): ptr Separator 541
+nim newVerticalSeparator uing/rawui.html#newVerticalSeparator proc newVerticalSeparator(): ptr Separator 544
+nim Combobox uing/rawui.html#Combobox object Combobox 548
+nim combobox uing/rawui.html#combobox.t,untyped template combobox(this: untyped): untyped 550
+nim comboboxAppend uing/rawui.html#comboboxAppend,ptr.Combobox,cstring proc comboboxAppend(c: ptr Combobox; text: cstring) 554
+nim comboboxInsertAt uing/rawui.html#comboboxInsertAt,ptr.Combobox,cint,cstring proc comboboxInsertAt(c: ptr Combobox; index: cint; text: cstring) 557
+nim comboboxDelete uing/rawui.html#comboboxDelete,ptr.Combobox,cint proc comboboxDelete(c: ptr Combobox; index: cint) 560
+nim comboboxClear uing/rawui.html#comboboxClear,ptr.Combobox proc comboboxClear(c: ptr Combobox) 563
+nim comboboxNumItems uing/rawui.html#comboboxNumItems,ptr.Combobox proc comboboxNumItems(c: ptr Combobox): cint 566
+nim comboboxSelected uing/rawui.html#comboboxSelected,ptr.Combobox proc comboboxSelected(c: ptr Combobox): cint 569
+nim comboboxSetSelected uing/rawui.html#comboboxSetSelected,ptr.Combobox,cint proc comboboxSetSelected(c: ptr Combobox; index: cint) 572
+nim comboboxOnSelected uing/rawui.html#comboboxOnSelected,ptr.Combobox,proc(ptr.Combobox,pointer),pointer proc comboboxOnSelected(c: ptr Combobox; f: proc (sender: ptr Combobox;\n senderData: pointer) {.cdecl.}; data: pointer) 575
+nim newCombobox uing/rawui.html#newCombobox proc newCombobox(): ptr Combobox 579
+nim EditableCombobox uing/rawui.html#EditableCombobox object EditableCombobox 582
+nim editableCombobox uing/rawui.html#editableCombobox.t,untyped template editableCombobox(this: untyped): untyped 584
+nim editableComboboxAppend uing/rawui.html#editableComboboxAppend,ptr.EditableCombobox,cstring proc editableComboboxAppend(c: ptr EditableCombobox; text: cstring) 588
+nim editableComboboxText uing/rawui.html#editableComboboxText,ptr.EditableCombobox proc editableComboboxText(c: ptr EditableCombobox): cstring 591
+nim editableComboboxSetText uing/rawui.html#editableComboboxSetText,ptr.EditableCombobox,cstring proc editableComboboxSetText(c: ptr EditableCombobox; text: cstring) 594
+nim editableComboboxOnChanged uing/rawui.html#editableComboboxOnChanged,ptr.EditableCombobox,proc(ptr.EditableCombobox,pointer),pointer proc editableComboboxOnChanged(c: ptr EditableCombobox; f: proc (\n sender: ptr EditableCombobox; senderData: pointer) {.cdecl.}; data: pointer) 597
+nim newEditableCombobox uing/rawui.html#newEditableCombobox proc newEditableCombobox(): ptr EditableCombobox 601
+nim RadioButtons uing/rawui.html#RadioButtons object RadioButtons 605
+nim radioButtons uing/rawui.html#radioButtons.t,untyped template radioButtons(this: untyped): untyped 607
+nim radioButtonsAppend uing/rawui.html#radioButtonsAppend,ptr.RadioButtons,cstring proc radioButtonsAppend(r: ptr RadioButtons; text: cstring) 611
+nim radioButtonsSelected uing/rawui.html#radioButtonsSelected,ptr.RadioButtons proc radioButtonsSelected(r: ptr RadioButtons): cint 614
+nim radioButtonsSetSelected uing/rawui.html#radioButtonsSetSelected,ptr.RadioButtons,cint proc radioButtonsSetSelected(r: ptr RadioButtons; index: cint) 617
+nim radioButtonsOnSelected uing/rawui.html#radioButtonsOnSelected,ptr.RadioButtons,proc(ptr.RadioButtons,pointer),pointer proc radioButtonsOnSelected(r: ptr RadioButtons; f: proc (sender: ptr RadioButtons;\n senderData: pointer) {.cdecl.}; data: pointer) 620
+nim newRadioButtons uing/rawui.html#newRadioButtons proc newRadioButtons(): ptr RadioButtons 624
+nim Tm uing/rawui.html#Tm object Tm 628
+nim DateTimePicker uing/rawui.html#DateTimePicker object DateTimePicker 639
+nim dateTimePicker uing/rawui.html#dateTimePicker.t,untyped template dateTimePicker(this: untyped): untyped 641
+nim dateTimePickerTime uing/rawui.html#dateTimePickerTime,ptr.DateTimePicker,ptr.Tm proc dateTimePickerTime(d: ptr DateTimePicker; time: ptr Tm) 645
+nim dateTimePickerSetTime uing/rawui.html#dateTimePickerSetTime,ptr.DateTimePicker,ptr.Tm proc dateTimePickerSetTime(d: ptr DateTimePicker; time: ptr Tm) 648
+nim dateTimePickerOnChanged uing/rawui.html#dateTimePickerOnChanged,ptr.DateTimePicker,proc(ptr.DateTimePicker,pointer),pointer proc dateTimePickerOnChanged(d: ptr DateTimePicker; f: proc (\n sender: ptr DateTimePicker; senderData: pointer) {.cdecl.}; data: pointer) 651
+nim newDateTimePicker uing/rawui.html#newDateTimePicker proc newDateTimePicker(): ptr DateTimePicker 655
+nim newDatePicker uing/rawui.html#newDatePicker proc newDatePicker(): ptr DateTimePicker 658
+nim newTimePicker uing/rawui.html#newTimePicker proc newTimePicker(): ptr DateTimePicker 661
+nim MultilineEntry uing/rawui.html#MultilineEntry object MultilineEntry 665
+nim multilineEntry uing/rawui.html#multilineEntry.t,untyped template multilineEntry(this: untyped): untyped 667
+nim multilineEntryText uing/rawui.html#multilineEntryText,ptr.MultilineEntry proc multilineEntryText(e: ptr MultilineEntry): cstring 671
+nim multilineEntrySetText uing/rawui.html#multilineEntrySetText,ptr.MultilineEntry,cstring proc multilineEntrySetText(e: ptr MultilineEntry; text: cstring) 674
+nim multilineEntryAppend uing/rawui.html#multilineEntryAppend,ptr.MultilineEntry,cstring proc multilineEntryAppend(e: ptr MultilineEntry; text: cstring) 677
+nim multilineEntryOnChanged uing/rawui.html#multilineEntryOnChanged,ptr.MultilineEntry,proc(ptr.MultilineEntry,pointer),pointer proc multilineEntryOnChanged(e: ptr MultilineEntry; f: proc (\n sender: ptr MultilineEntry; senderData: pointer) {.cdecl.}; data: pointer) 680
+nim multilineEntryReadOnly uing/rawui.html#multilineEntryReadOnly,ptr.MultilineEntry proc multilineEntryReadOnly(e: ptr MultilineEntry): cint 684
+nim multilineEntrySetReadOnly uing/rawui.html#multilineEntrySetReadOnly,ptr.MultilineEntry,cint proc multilineEntrySetReadOnly(e: ptr MultilineEntry; readonly: cint) 687
+nim newMultilineEntry uing/rawui.html#newMultilineEntry proc newMultilineEntry(): ptr MultilineEntry 690
+nim newNonWrappingMultilineEntry uing/rawui.html#newNonWrappingMultilineEntry proc newNonWrappingMultilineEntry(): ptr MultilineEntry 693
+nim MenuItem uing/rawui.html#MenuItem object MenuItem 697
+nim menuItem uing/rawui.html#menuItem.t,untyped template menuItem(this: untyped): untyped 699
+nim menuItemEnable uing/rawui.html#menuItemEnable,ptr.MenuItem proc menuItemEnable(m: ptr MenuItem) 703
+nim menuItemDisable uing/rawui.html#menuItemDisable,ptr.MenuItem proc menuItemDisable(m: ptr MenuItem) 706
+nim menuItemOnClicked uing/rawui.html#menuItemOnClicked,ptr.MenuItem,proc(ptr.MenuItem,ptr.Window,pointer),pointer proc menuItemOnClicked(m: ptr MenuItem; f: proc (sender: ptr MenuItem;\n window: ptr Window; senderData: pointer) {.cdecl.}; data: pointer) 709
+nim menuItemChecked uing/rawui.html#menuItemChecked,ptr.MenuItem proc menuItemChecked(m: ptr MenuItem): cint 713
+nim menuItemSetChecked uing/rawui.html#menuItemSetChecked,ptr.MenuItem,cint proc menuItemSetChecked(m: ptr MenuItem; checked: cint) 716
+nim Menu uing/rawui.html#Menu object Menu 720
+nim menu uing/rawui.html#menu.t,untyped template menu(this: untyped): untyped 722
+nim menuAppendItem uing/rawui.html#menuAppendItem,ptr.Menu,cstring proc menuAppendItem(m: ptr Menu; name: cstring): ptr MenuItem 726
+nim menuAppendCheckItem uing/rawui.html#menuAppendCheckItem,ptr.Menu,cstring proc menuAppendCheckItem(m: ptr Menu; name: cstring): ptr MenuItem 729
+nim menuAppendQuitItem uing/rawui.html#menuAppendQuitItem,ptr.Menu proc menuAppendQuitItem(m: ptr Menu): ptr MenuItem 732
+nim menuAppendPreferencesItem uing/rawui.html#menuAppendPreferencesItem,ptr.Menu proc menuAppendPreferencesItem(m: ptr Menu): ptr MenuItem 735
+nim menuAppendAboutItem uing/rawui.html#menuAppendAboutItem,ptr.Menu proc menuAppendAboutItem(m: ptr Menu): ptr MenuItem 738
+nim menuAppendSeparator uing/rawui.html#menuAppendSeparator,ptr.Menu proc menuAppendSeparator(m: ptr Menu) 741
+nim newMenu uing/rawui.html#newMenu,cstring proc newMenu(name: cstring): ptr Menu 744
+nim openFile uing/rawui.html#openFile,ptr.Window proc openFile(parent: ptr Window): cstring 746
+nim openFolder uing/rawui.html#openFolder,ptr.Window proc openFolder(parent: ptr Window): cstring 749
+nim saveFile uing/rawui.html#saveFile,ptr.Window proc saveFile(parent: ptr Window): cstring 752
+nim msgBox uing/rawui.html#msgBox,ptr.Window,cstring,cstring proc msgBox(parent: ptr Window; title: cstring; description: cstring) 755
+nim msgBoxError uing/rawui.html#msgBoxError,ptr.Window,cstring,cstring proc msgBoxError(parent: ptr Window; title: cstring; description: cstring) 758
+nim Area uing/rawui.html#Area object Area 762
+nim Modifiers uing/rawui.html#Modifiers enum Modifiers 764
+nim ExtKey uing/rawui.html#ExtKey enum ExtKey 774
+nim AreaDrawParams uing/rawui.html#AreaDrawParams object AreaDrawParams 814
+nim AreaMouseEvent uing/rawui.html#AreaMouseEvent object AreaMouseEvent 823
+nim AreaKeyEvent uing/rawui.html#AreaKeyEvent object AreaKeyEvent 834
+nim DrawContext uing/rawui.html#DrawContext object DrawContext 841
+nim AreaHandler uing/rawui.html#AreaHandler object AreaHandler 843
+nim WindowResizeEdge uing/rawui.html#WindowResizeEdge enum WindowResizeEdge 851
+nim area uing/rawui.html#area.t,untyped template area(this: untyped): untyped 862
+nim areaSetSize uing/rawui.html#areaSetSize,ptr.Area,cint,cint proc areaSetSize(a: ptr Area; width: cint; height: cint) 866
+nim areaQueueRedrawAll uing/rawui.html#areaQueueRedrawAll,ptr.Area proc areaQueueRedrawAll(a: ptr Area) 869
+nim areaScrollTo uing/rawui.html#areaScrollTo,ptr.Area,cdouble,cdouble,cdouble,cdouble proc areaScrollTo(a: ptr Area; x: cdouble; y: cdouble; width: cdouble;\n height: cdouble) 871
+nim areaBeginUserWindowMove uing/rawui.html#areaBeginUserWindowMove,ptr.Area proc areaBeginUserWindowMove(a: ptr Area) 874
+nim areaBeginUserWindowResize uing/rawui.html#areaBeginUserWindowResize,ptr.Area,WindowResizeEdge proc areaBeginUserWindowResize(a: ptr Area; edge: WindowResizeEdge) 876
+nim newArea uing/rawui.html#newArea,ptr.AreaHandler proc newArea(ah: ptr AreaHandler): ptr Area 878
+nim newScrollingArea uing/rawui.html#newScrollingArea,ptr.AreaHandler,cint,cint proc newScrollingArea(ah: ptr AreaHandler; width: cint; height: cint): ptr Area 880
+nim DrawPath uing/rawui.html#DrawPath object DrawPath 884
+nim DrawBrushType uing/rawui.html#DrawBrushType enum DrawBrushType 886
+nim DrawLineCap uing/rawui.html#DrawLineCap enum DrawLineCap 892
+nim DrawLineJoin uing/rawui.html#DrawLineJoin enum DrawLineJoin 897
+nim DrawFillMode uing/rawui.html#DrawFillMode enum DrawFillMode 902
+nim DrawBrush uing/rawui.html#DrawBrush object DrawBrush 906
+nim DrawStrokeParams uing/rawui.html#DrawStrokeParams object DrawStrokeParams 921
+nim DrawMatrix uing/rawui.html#DrawMatrix object DrawMatrix 930
+nim DrawBrushGradientStop uing/rawui.html#DrawBrushGradientStop object DrawBrushGradientStop 938
+nim DrawDefaultMiterLimit uing/rawui.html#DrawDefaultMiterLimit const DrawDefaultMiterLimit 946
+nim drawNewPath uing/rawui.html#drawNewPath,DrawFillMode proc drawNewPath(fillMode: DrawFillMode): ptr DrawPath 948
+nim drawFreePath uing/rawui.html#drawFreePath,ptr.DrawPath proc drawFreePath(p: ptr DrawPath) 950
+nim drawPathNewFigure uing/rawui.html#drawPathNewFigure,ptr.DrawPath,cdouble,cdouble proc drawPathNewFigure(p: ptr DrawPath; x: cdouble; y: cdouble) 951
+nim drawPathNewFigureWithArc uing/rawui.html#drawPathNewFigureWithArc,ptr.DrawPath,cdouble,cdouble,cdouble,cdouble,cdouble,cint proc drawPathNewFigureWithArc(p: ptr DrawPath; xCenter: cdouble; yCenter: cdouble;\n radius: cdouble; startAngle: cdouble; sweep: cdouble;\n negative: cint) 953
+nim drawPathLineTo uing/rawui.html#drawPathLineTo,ptr.DrawPath,cdouble,cdouble proc drawPathLineTo(p: ptr DrawPath; x: cdouble; y: cdouble) 957
+nim drawPathArcTo uing/rawui.html#drawPathArcTo,ptr.DrawPath,cdouble,cdouble,cdouble,cdouble,cdouble,cint proc drawPathArcTo(p: ptr DrawPath; xCenter: cdouble; yCenter: cdouble;\n radius: cdouble; startAngle: cdouble; sweep: cdouble;\n negative: cint) 960
+nim drawPathBezierTo uing/rawui.html#drawPathBezierTo,ptr.DrawPath,cdouble,cdouble,cdouble,cdouble,cdouble,cdouble proc drawPathBezierTo(p: ptr DrawPath; c1x: cdouble; c1y: cdouble; c2x: cdouble;\n c2y: cdouble; endX: cdouble; endY: cdouble) 964
+nim drawPathCloseFigure uing/rawui.html#drawPathCloseFigure,ptr.DrawPath proc drawPathCloseFigure(p: ptr DrawPath) 968
+nim drawPathAddRectangle uing/rawui.html#drawPathAddRectangle,ptr.DrawPath,cdouble,cdouble,cdouble,cdouble proc drawPathAddRectangle(p: ptr DrawPath; x: cdouble; y: cdouble; width: cdouble;\n height: cdouble) 971
+nim drawPathEnded uing/rawui.html#drawPathEnded,ptr.DrawPath proc drawPathEnded(p: ptr DrawPath): cint 974
+nim drawPathEnd uing/rawui.html#drawPathEnd,ptr.DrawPath proc drawPathEnd(p: ptr DrawPath) 976
+nim drawStroke uing/rawui.html#drawStroke,ptr.DrawContext,ptr.DrawPath,ptr.DrawBrush,ptr.DrawStrokeParams proc drawStroke(c: ptr DrawContext; path: ptr DrawPath; b: ptr DrawBrush;\n p: ptr DrawStrokeParams) 977
+nim drawFill uing/rawui.html#drawFill,ptr.DrawContext,ptr.DrawPath,ptr.DrawBrush proc drawFill(c: ptr DrawContext; path: ptr DrawPath; b: ptr DrawBrush) 980
+nim drawMatrixSetIdentity uing/rawui.html#drawMatrixSetIdentity,ptr.DrawMatrix proc drawMatrixSetIdentity(m: ptr DrawMatrix) 983
+nim drawMatrixTranslate uing/rawui.html#drawMatrixTranslate,ptr.DrawMatrix,cdouble,cdouble proc drawMatrixTranslate(m: ptr DrawMatrix; x: cdouble; y: cdouble) 985
+nim drawMatrixScale uing/rawui.html#drawMatrixScale,ptr.DrawMatrix,cdouble,cdouble,cdouble,cdouble proc drawMatrixScale(m: ptr DrawMatrix; xCenter: cdouble; yCenter: cdouble;\n x: cdouble; y: cdouble) 987
+nim drawMatrixRotate uing/rawui.html#drawMatrixRotate,ptr.DrawMatrix,cdouble,cdouble,cdouble proc drawMatrixRotate(m: ptr DrawMatrix; x: cdouble; y: cdouble; amount: cdouble) 990
+nim drawMatrixSkew uing/rawui.html#drawMatrixSkew,ptr.DrawMatrix,cdouble,cdouble,cdouble,cdouble proc drawMatrixSkew(m: ptr DrawMatrix; x: cdouble; y: cdouble; xamount: cdouble;\n yamount: cdouble) 992
+nim drawMatrixMultiply uing/rawui.html#drawMatrixMultiply,ptr.DrawMatrix,ptr.DrawMatrix proc drawMatrixMultiply(dest: ptr DrawMatrix; src: ptr DrawMatrix) 995
+nim drawMatrixInvertible uing/rawui.html#drawMatrixInvertible,ptr.DrawMatrix proc drawMatrixInvertible(m: ptr DrawMatrix): cint 997
+nim drawMatrixInvert uing/rawui.html#drawMatrixInvert,ptr.DrawMatrix proc drawMatrixInvert(m: ptr DrawMatrix): cint 999
+nim drawMatrixTransformPoint uing/rawui.html#drawMatrixTransformPoint,ptr.DrawMatrix,ptr.cdouble,ptr.cdouble proc drawMatrixTransformPoint(m: ptr DrawMatrix; x: ptr cdouble; y: ptr cdouble) 1001
+nim drawMatrixTransformSize uing/rawui.html#drawMatrixTransformSize,ptr.DrawMatrix,ptr.cdouble,ptr.cdouble proc drawMatrixTransformSize(m: ptr DrawMatrix; x: ptr cdouble; y: ptr cdouble) 1003
+nim drawTransform uing/rawui.html#drawTransform,ptr.DrawContext,ptr.DrawMatrix proc drawTransform(c: ptr DrawContext; m: ptr DrawMatrix) 1005
+nim drawClip uing/rawui.html#drawClip,ptr.DrawContext,ptr.DrawPath proc drawClip(c: ptr DrawContext; path: ptr DrawPath) 1008
+nim drawSave uing/rawui.html#drawSave,ptr.DrawContext proc drawSave(c: ptr DrawContext) 1010
+nim drawRestore uing/rawui.html#drawRestore,ptr.DrawContext proc drawRestore(c: ptr DrawContext) 1011
+nim Attribute uing/rawui.html#Attribute object Attribute 1015
+nim AttributedString uing/rawui.html#AttributedString object AttributedString 1016
+nim AttributeType uing/rawui.html#AttributeType enum AttributeType 1018
+nim freeAttribute uing/rawui.html#freeAttribute,ptr.Attribute proc freeAttribute(a: ptr Attribute) 1031
+nim attributeGetType uing/rawui.html#attributeGetType,ptr.Attribute proc attributeGetType(a: ptr Attribute): AttributeType 1034
+nim newFamilyAttribute uing/rawui.html#newFamilyAttribute,cstring proc newFamilyAttribute(family: cstring): ptr Attribute 1037
+nim attributeFamily uing/rawui.html#attributeFamily,ptr.Attribute proc attributeFamily(a: ptr Attribute): cstring 1040
+nim newSizeAttribute uing/rawui.html#newSizeAttribute,cdouble proc newSizeAttribute(size: cdouble): ptr Attribute 1043
+nim attributeSize uing/rawui.html#attributeSize,ptr.Attribute proc attributeSize(a: ptr Attribute): cdouble 1046
+nim TextWeight uing/rawui.html#TextWeight enum TextWeight 1050
+nim TextItalic uing/rawui.html#TextItalic enum TextItalic 1080
+nim newWeightAttribute uing/rawui.html#newWeightAttribute,TextWeight proc newWeightAttribute(weight: TextWeight): ptr Attribute 1092
+nim attributeWeight uing/rawui.html#attributeWeight,ptr.Attribute proc attributeWeight(a: ptr Attribute): TextWeight 1095
+nim newItalicAttribute uing/rawui.html#newItalicAttribute,TextItalic proc newItalicAttribute(italic: TextItalic): ptr Attribute 1098
+nim attributeItalic uing/rawui.html#attributeItalic,ptr.Attribute proc attributeItalic(a: ptr Attribute): TextItalic 1101
+nim TextStretch uing/rawui.html#TextStretch enum TextStretch 1105
+nim newStretchAttribute uing/rawui.html#newStretchAttribute,TextStretch proc newStretchAttribute(stretch: TextStretch): ptr Attribute 1127
+nim attributeStretch uing/rawui.html#attributeStretch,ptr.Attribute proc attributeStretch(a: ptr Attribute): TextStretch 1130
+nim newColorAttribute uing/rawui.html#newColorAttribute,cdouble,cdouble,cdouble,cdouble proc newColorAttribute(r: cdouble; g: cdouble; b: cdouble; a: cdouble): ptr Attribute 1133
+nim attributeColor uing/rawui.html#attributeColor,ptr.Attribute,ptr.cdouble,ptr.cdouble,ptr.cdouble,ptr.cdouble proc attributeColor(a: ptr Attribute; r: ptr cdouble; g: ptr cdouble; b: ptr cdouble;\n alpha: ptr cdouble) 1136
+nim newBackgroundAttribute uing/rawui.html#newBackgroundAttribute,cdouble,cdouble,cdouble,cdouble proc newBackgroundAttribute(r: cdouble; g: cdouble; b: cdouble; a: cdouble): ptr Attribute 1140
+nim Underline uing/rawui.html#Underline enum Underline 1144
+nim UnderlineColor uing/rawui.html#UnderlineColor enum UnderlineColor 1152
+nim newUnderlineAttribute uing/rawui.html#newUnderlineAttribute,Underline proc newUnderlineAttribute(u: Underline): ptr Attribute 1171
+nim attributeUnderline uing/rawui.html#attributeUnderline,ptr.Attribute proc attributeUnderline(a: ptr Attribute): Underline 1174
+nim newUnderlineColorAttribute uing/rawui.html#newUnderlineColorAttribute,UnderlineColor,cdouble,cdouble,cdouble,cdouble proc newUnderlineColorAttribute(u: UnderlineColor; r: cdouble; g: cdouble;\n b: cdouble; a: cdouble): ptr Attribute 1177
+nim attributeUnderlineColor uing/rawui.html#attributeUnderlineColor,ptr.Attribute,ptr.UnderlineColor,ptr.cdouble,ptr.cdouble,ptr.cdouble,ptr.cdouble proc attributeUnderlineColor(a: ptr Attribute; u: ptr UnderlineColor; r: ptr cdouble;\n g: ptr cdouble; b: ptr cdouble; alpha: ptr cdouble) 1181
+nim OpenTypeFeatures uing/rawui.html#OpenTypeFeatures object OpenTypeFeatures 1186
+nim OpenTypeFeaturesForEachFunc uing/rawui.html#OpenTypeFeaturesForEachFunc type OpenTypeFeaturesForEachFunc 1188
+nim newOpenTypeFeatures uing/rawui.html#newOpenTypeFeatures proc newOpenTypeFeatures(): ptr OpenTypeFeatures 1193
+nim freeOpenTypeFeatures uing/rawui.html#freeOpenTypeFeatures,ptr.OpenTypeFeatures proc freeOpenTypeFeatures(otf: ptr OpenTypeFeatures) 1196
+nim openTypeFeaturesClone uing/rawui.html#openTypeFeaturesClone,ptr.OpenTypeFeatures proc openTypeFeaturesClone(otf: ptr OpenTypeFeatures): ptr OpenTypeFeatures 1199
+nim openTypeFeaturesAdd uing/rawui.html#openTypeFeaturesAdd,ptr.OpenTypeFeatures,char,char,char,char,uint32 proc openTypeFeaturesAdd(otf: ptr OpenTypeFeatures; a: char; b: char; c: char;\n d: char; value: uint32) 1202
+nim openTypeFeaturesRemove uing/rawui.html#openTypeFeaturesRemove,ptr.OpenTypeFeatures,char,char,char,char proc openTypeFeaturesRemove(otf: ptr OpenTypeFeatures; a: char; b: char; c: char;\n d: char) 1206
+nim openTypeFeaturesGet uing/rawui.html#openTypeFeaturesGet,ptr.OpenTypeFeatures,char,char,char,char,ptr.uint32 proc openTypeFeaturesGet(otf: ptr OpenTypeFeatures; a: char; b: char; c: char;\n d: char; value: ptr uint32): cint 1209
+nim openTypeFeaturesForEach uing/rawui.html#openTypeFeaturesForEach,ptr.OpenTypeFeatures,OpenTypeFeaturesForEachFunc,pointer proc openTypeFeaturesForEach(otf: ptr OpenTypeFeatures;\n f: OpenTypeFeaturesForEachFunc; data: pointer) 1213
+nim newFeaturesAttribute uing/rawui.html#newFeaturesAttribute,ptr.OpenTypeFeatures proc newFeaturesAttribute(otf: ptr OpenTypeFeatures): ptr Attribute 1217
+nim attributeFeatures uing/rawui.html#attributeFeatures,ptr.Attribute proc attributeFeatures(a: ptr Attribute): ptr OpenTypeFeatures 1220
+nim AttributedStringForEachAttributeFunc uing/rawui.html#AttributedStringForEachAttributeFunc type AttributedStringForEachAttributeFunc 1224
+nim newAttributedString uing/rawui.html#newAttributedString,cstring proc newAttributedString(initialString: cstring): ptr AttributedString 1228
+nim freeAttributedString uing/rawui.html#freeAttributedString,ptr.AttributedString proc freeAttributedString(s: ptr AttributedString) 1231
+nim attributedStringString uing/rawui.html#attributedStringString,ptr.AttributedString proc attributedStringString(s: ptr AttributedString): cstring 1234
+nim attributedStringLen uing/rawui.html#attributedStringLen,ptr.AttributedString proc attributedStringLen(s: ptr AttributedString): csize_t 1237
+nim attributedStringAppendUnattributed uing/rawui.html#attributedStringAppendUnattributed,ptr.AttributedString,cstring proc attributedStringAppendUnattributed(s: ptr AttributedString; str: cstring) 1240
+nim attributedStringInsertAtUnattributed uing/rawui.html#attributedStringInsertAtUnattributed,ptr.AttributedString,cstring,csize_t proc attributedStringInsertAtUnattributed(s: ptr AttributedString; str: cstring;\n at: csize_t) 1243
+nim attributedStringDelete uing/rawui.html#attributedStringDelete,ptr.AttributedString,csize_t,csize_t proc attributedStringDelete(s: ptr AttributedString; start: csize_t; end: csize_t) 1247
+nim attributedStringSetAttribute uing/rawui.html#attributedStringSetAttribute,ptr.AttributedString,ptr.Attribute,csize_t,csize_t proc attributedStringSetAttribute(s: ptr AttributedString; a: ptr Attribute;\n start: csize_t; end: csize_t) 1250
+nim attributedStringForEachAttribute uing/rawui.html#attributedStringForEachAttribute,ptr.AttributedString,AttributedStringForEachAttributeFunc,pointer proc attributedStringForEachAttribute(s: ptr AttributedString;\n f: AttributedStringForEachAttributeFunc;\n data: pointer) 1254
+nim attributedStringNumGraphemes uing/rawui.html#attributedStringNumGraphemes,ptr.AttributedString proc attributedStringNumGraphemes(s: ptr AttributedString): csize_t 1259
+nim attributedStringByteIndexToGrapheme uing/rawui.html#attributedStringByteIndexToGrapheme,ptr.AttributedString,csize_t proc attributedStringByteIndexToGrapheme(s: ptr AttributedString; pos: csize_t): csize_t 1262
+nim attributedStringGraphemeToByteIndex uing/rawui.html#attributedStringGraphemeToByteIndex,ptr.AttributedString,csize_t proc attributedStringGraphemeToByteIndex(s: ptr AttributedString; pos: csize_t): csize_t 1265
+nim FontDescriptor uing/rawui.html#FontDescriptor object FontDescriptor 1269
+nim loadControlFont uing/rawui.html#loadControlFont,ptr.FontDescriptor proc loadControlFont(f: ptr FontDescriptor) 1283
+nim freeFontDescriptor uing/rawui.html#freeFontDescriptor,ptr.FontDescriptor proc freeFontDescriptor(desc: ptr FontDescriptor) 1285
+nim DrawTextLayout uing/rawui.html#DrawTextLayout object DrawTextLayout 1289
+nim DrawTextAlign uing/rawui.html#DrawTextAlign enum DrawTextAlign 1291
+nim DrawTextLayoutParams uing/rawui.html#DrawTextLayoutParams object DrawTextLayoutParams 1299
+nim drawNewTextLayout uing/rawui.html#drawNewTextLayout,ptr.DrawTextLayoutParams proc drawNewTextLayout(params: ptr DrawTextLayoutParams): ptr DrawTextLayout 1310
+nim drawFreeTextLayout uing/rawui.html#drawFreeTextLayout,ptr.DrawTextLayout proc drawFreeTextLayout(tl: ptr DrawTextLayout) 1313
+nim drawText uing/rawui.html#drawText,ptr.DrawContext,ptr.DrawTextLayout,cdouble,cdouble proc drawText(c: ptr DrawContext; tl: ptr DrawTextLayout; x: cdouble; y: cdouble) 1316
+nim drawTextLayoutExtents uing/rawui.html#drawTextLayoutExtents,ptr.DrawTextLayout,ptr.cdouble,ptr.cdouble proc drawTextLayoutExtents(tl: ptr DrawTextLayout; width: ptr cdouble;\n height: ptr cdouble) 1319
+nim FontButton uing/rawui.html#FontButton object FontButton 1324
+nim fontButton uing/rawui.html#fontButton.t,untyped template fontButton(this: untyped): untyped 1326
+nim fontButtonFont uing/rawui.html#fontButtonFont,ptr.FontButton,ptr.FontDescriptor proc fontButtonFont(b: ptr FontButton; desc: ptr FontDescriptor) 1330
+nim fontButtonOnChanged uing/rawui.html#fontButtonOnChanged,ptr.FontButton,proc(ptr.FontButton,pointer),pointer proc fontButtonOnChanged(b: ptr FontButton; f: proc (sender: ptr FontButton;\n senderData: pointer) {.cdecl.}; data: pointer) 1333
+nim newFontButton uing/rawui.html#newFontButton proc newFontButton(): ptr FontButton 1337
+nim freeFontButtonFont uing/rawui.html#freeFontButtonFont,ptr.FontDescriptor proc freeFontButtonFont(desc: ptr FontDescriptor) 1340
+nim ColorButton uing/rawui.html#ColorButton object ColorButton 1344
+nim colorButton uing/rawui.html#colorButton.t,untyped template colorButton(this: untyped): untyped 1346
+nim colorButtonColor uing/rawui.html#colorButtonColor,ptr.ColorButton,ptr.cdouble,ptr.cdouble,ptr.cdouble,ptr.cdouble proc colorButtonColor(b: ptr ColorButton; r: ptr cdouble; g: ptr cdouble;\n bl: ptr cdouble; a: ptr cdouble) 1350
+nim colorButtonSetColor uing/rawui.html#colorButtonSetColor,ptr.ColorButton,cdouble,cdouble,cdouble,cdouble proc colorButtonSetColor(b: ptr ColorButton; r: cdouble; g: cdouble; bl: cdouble;\n a: cdouble) 1354
+nim colorButtonOnChanged uing/rawui.html#colorButtonOnChanged,ptr.ColorButton,proc(ptr.ColorButton,pointer),pointer proc colorButtonOnChanged(b: ptr ColorButton; f: proc (sender: ptr ColorButton;\n senderData: pointer) {.cdecl.}; data: pointer) 1358
+nim newColorButton uing/rawui.html#newColorButton proc newColorButton(): ptr ColorButton 1362
+nim Form uing/rawui.html#Form object Form 1366
+nim form uing/rawui.html#form.t,untyped template form(this: untyped): untyped 1368
+nim formAppend uing/rawui.html#formAppend,ptr.Form,cstring,ptr.Control,cint proc formAppend(f: ptr Form; label: cstring; c: ptr Control; stretchy: cint) 1372
+nim formNumChildren uing/rawui.html#formNumChildren,ptr.Form proc formNumChildren(f: ptr Form): cint 1375
+nim formDelete uing/rawui.html#formDelete,ptr.Form,cint proc formDelete(f: ptr Form; index: cint) 1378
+nim formPadded uing/rawui.html#formPadded,ptr.Form proc formPadded(f: ptr Form): cint 1381
+nim formSetPadded uing/rawui.html#formSetPadded,ptr.Form,cint proc formSetPadded(f: ptr Form; padded: cint) 1383
+nim newForm uing/rawui.html#newForm proc newForm(): ptr Form 1386
+nim Align uing/rawui.html#Align enum Align 1389
+nim At uing/rawui.html#At enum At 1399
+nim Grid uing/rawui.html#Grid object Grid 1411
+nim grid uing/rawui.html#grid.t,untyped template grid(this: untyped): untyped 1413
+nim gridAppend uing/rawui.html#gridAppend,ptr.Grid,ptr.Control,cint,cint,cint,cint,cint,Align,cint,Align proc gridAppend(g: ptr Grid; c: ptr Control; left: cint; top: cint; xspan: cint;\n yspan: cint; hexpand: cint; halign: Align; vexpand: cint;\n valign: Align) 1417
+nim gridInsertAt uing/rawui.html#gridInsertAt,ptr.Grid,ptr.Control,ptr.Control,At,cint,cint,cint,Align,cint,Align proc gridInsertAt(g: ptr Grid; c: ptr Control; existing: ptr Control; at: At;\n xspan: cint; yspan: cint; hexpand: cint; halign: Align;\n vexpand: cint; valign: Align) 1421
+nim gridPadded uing/rawui.html#gridPadded,ptr.Grid proc gridPadded(g: ptr Grid): cint 1425
+nim gridSetPadded uing/rawui.html#gridSetPadded,ptr.Grid,cint proc gridSetPadded(g: ptr Grid; padded: cint) 1427
+nim newGrid uing/rawui.html#newGrid proc newGrid(): ptr Grid 1430
+nim Image uing/rawui.html#Image object Image 1433
+nim newImage uing/rawui.html#newImage,cdouble,cdouble proc newImage(width: cdouble; height: cdouble): ptr Image 1435
+nim freeImage uing/rawui.html#freeImage,ptr.Image proc freeImage(i: ptr Image) 1438
+nim imageAppend uing/rawui.html#imageAppend,ptr.Image,pointer,cint,cint,cint proc imageAppend(i: ptr Image; pixels: pointer; pixelWidth: cint; pixelHeight: cint;\n byteStride: cint) 1440
+nim TableValueType uing/rawui.html#TableValueType enum TableValueType 1444
+nim Color uing/rawui.html#Color object Color 1452
+nim TableValueInner uing/rawui.html#TableValueInner object TableValueInner 1458
+nim TableValue uing/rawui.html#TableValue object TableValue 1464
+nim freeTableValue uing/rawui.html#freeTableValue,ptr.TableValue proc freeTableValue(v: ptr TableValue) 1469
+nim tableValueGetType uing/rawui.html#tableValueGetType,ptr.TableValue proc tableValueGetType(v: ptr TableValue): TableValueType 1472
+nim newTableValueString uing/rawui.html#newTableValueString,cstring proc newTableValueString(str: cstring): ptr TableValue 1475
+nim tableValueString uing/rawui.html#tableValueString,ptr.TableValue proc tableValueString(v: ptr TableValue): cstring 1478
+nim newTableValueImage uing/rawui.html#newTableValueImage,ptr.Image proc newTableValueImage(img: ptr Image): ptr TableValue 1481
+nim tableValueImage uing/rawui.html#tableValueImage,ptr.TableValue proc tableValueImage(v: ptr TableValue): ptr Image 1484
+nim newTableValueInt uing/rawui.html#newTableValueInt,cint proc newTableValueInt(i: cint): ptr TableValue 1487
+nim tableValueInt uing/rawui.html#tableValueInt,ptr.TableValue proc tableValueInt(v: ptr TableValue): cint 1490
+nim newTableValueColor uing/rawui.html#newTableValueColor,cdouble,cdouble,cdouble,cdouble proc newTableValueColor(r: cdouble; g: cdouble; b: cdouble; a: cdouble): ptr TableValue 1493
+nim tableValueColor uing/rawui.html#tableValueColor,ptr.TableValue,ptr.cdouble,ptr.cdouble,ptr.cdouble,ptr.cdouble proc tableValueColor(v: ptr TableValue; r: ptr cdouble; g: ptr cdouble;\n b: ptr cdouble; a: ptr cdouble) 1496
+nim SortIndicator uing/rawui.html#SortIndicator enum SortIndicator 1501
+nim TableModel uing/rawui.html#TableModel type TableModel 1507
+nim TableModelHandler uing/rawui.html#TableModelHandler object TableModelHandler 1510
+nim newTableModel uing/rawui.html#newTableModel,ptr.TableModelHandler proc newTableModel(mh: ptr TableModelHandler): ptr TableModel 1559
+nim freeTableModel uing/rawui.html#freeTableModel,ptr.TableModel proc freeTableModel(m: ptr TableModel) 1562
+nim tableModelRowInserted uing/rawui.html#tableModelRowInserted,ptr.TableModel,cint proc tableModelRowInserted(m: ptr TableModel; newIndex: cint) 1565
+nim tableModelRowChanged uing/rawui.html#tableModelRowChanged,ptr.TableModel,cint proc tableModelRowChanged(m: ptr TableModel; index: cint) 1568
+nim tableModelRowDeleted uing/rawui.html#tableModelRowDeleted,ptr.TableModel,cint proc tableModelRowDeleted(m: ptr TableModel; oldIndex: cint) 1571
+nim TableModelColumnNeverEditable uing/rawui.html#TableModelColumnNeverEditable const TableModelColumnNeverEditable 1575
+nim TableModelColumnAlwaysEditable uing/rawui.html#TableModelColumnAlwaysEditable const TableModelColumnAlwaysEditable 1578
+nim Table uing/rawui.html#Table object Table 1582
+nim TableTextColumnOptionalParams uing/rawui.html#TableTextColumnOptionalParams object TableTextColumnOptionalParams 1584
+nim TableParams uing/rawui.html#TableParams object TableParams 1589
+nim table uing/rawui.html#table.t,untyped template table(this: untyped): untyped 1603
+nim tableAppendTextColumn uing/rawui.html#tableAppendTextColumn,ptr.Table,cstring,cint,cint,ptr.TableTextColumnOptionalParams proc tableAppendTextColumn(t: ptr Table; name: cstring; textModelColumn: cint;\n textEditableModelColumn: cint;\n textParams: ptr TableTextColumnOptionalParams) 1607
+nim tableAppendImageColumn uing/rawui.html#tableAppendImageColumn,ptr.Table,cstring,cint proc tableAppendImageColumn(t: ptr Table; name: cstring; imageModelColumn: cint) 1612
+nim tableAppendImageTextColumn uing/rawui.html#tableAppendImageTextColumn,ptr.Table,cstring,cint,cint,cint,ptr.TableTextColumnOptionalParams proc tableAppendImageTextColumn(t: ptr Table; name: cstring; imageModelColumn: cint;\n textModelColumn: cint; textEditableModelColumn: cint;\n textParams: ptr TableTextColumnOptionalParams) 1615
+nim tableAppendCheckboxColumn uing/rawui.html#tableAppendCheckboxColumn,ptr.Table,cstring,cint,cint proc tableAppendCheckboxColumn(t: ptr Table; name: cstring;\n checkboxModelColumn: cint;\n checkboxEditableModelColumn: cint) 1621
+nim tableAppendCheckboxTextColumn uing/rawui.html#tableAppendCheckboxTextColumn,ptr.Table,cstring,cint,cint,cint,cint,ptr.TableTextColumnOptionalParams proc tableAppendCheckboxTextColumn(t: ptr Table; name: cstring;\n checkboxModelColumn: cint;\n checkboxEditableModelColumn: cint;\n textModelColumn: cint;\n textEditableModelColumn: cint;\n textParams: ptr TableTextColumnOptionalParams) 1626
+nim tableAppendProgressBarColumn uing/rawui.html#tableAppendProgressBarColumn,ptr.Table,cstring,cint proc tableAppendProgressBarColumn(t: ptr Table; name: cstring;\n progressModelColumn: cint) 1633
+nim tableAppendButtonColumn uing/rawui.html#tableAppendButtonColumn,ptr.Table,cstring,cint,cint proc tableAppendButtonColumn(t: ptr Table; name: cstring; buttonModelColumn: cint;\n buttonClickableModelColumn: cint) 1637
+nim tableHeaderVisible uing/rawui.html#tableHeaderVisible,ptr.Table proc tableHeaderVisible(t: ptr Table): cint 1641
+nim tableHeaderSetVisible uing/rawui.html#tableHeaderSetVisible,ptr.Table,cint proc tableHeaderSetVisible(t: ptr Table; visible: cint) 1644
+nim newTable uing/rawui.html#newTable,ptr.TableParams proc newTable(params: ptr TableParams): ptr Table 1647
+nim tableOnRowClicked uing/rawui.html#tableOnRowClicked,ptr.Table,proc(ptr.Table,cint,pointer),pointer proc tableOnRowClicked(t: ptr Table;\n f: proc (t: ptr Table; row: cint; data: pointer) {.cdecl.};\n data: pointer) 1650
+nim tableOnRowDoubleClicked uing/rawui.html#tableOnRowDoubleClicked,ptr.Table,proc(ptr.Table,cint,pointer),pointer proc tableOnRowDoubleClicked(t: ptr Table; f: proc (t: ptr Table; row: cint;\n data: pointer) {.cdecl.}; data: pointer) 1653
+nim tableHeaderSetSortIndicator uing/rawui.html#tableHeaderSetSortIndicator,ptr.Table,cint,SortIndicator proc tableHeaderSetSortIndicator(t: ptr Table; column: cint; indicator: SortIndicator) 1657
+nim tableHeaderSortIndicator uing/rawui.html#tableHeaderSortIndicator,ptr.Table,cint proc tableHeaderSortIndicator(t: ptr Table; column: cint): SortIndicator 1660
+nim tableHeaderOnClicked uing/rawui.html#tableHeaderOnClicked,ptr.Table,proc(ptr.Table,cint,pointer),pointer proc tableHeaderOnClicked(t: ptr Table; f: proc (sender: ptr Table; column: cint;\n senderData: pointer) {.cdecl.}; data: pointer) 1663
+nim tableColumnWidth uing/rawui.html#tableColumnWidth,ptr.Table,cint proc tableColumnWidth(t: ptr Table; column: cint): cint 1667
+nim tableColumnSetWidth uing/rawui.html#tableColumnSetWidth,ptr.Table,cint,cint proc tableColumnSetWidth(t: ptr Table; column: cint; width: cint) 1670
+nim TableColumnType uing/rawui.html#TableColumnType type TableColumnType 1674
+nim TableSelectionMode uing/rawui.html#TableSelectionMode enum TableSelectionMode 1675
+nim TableSelection uing/rawui.html#TableSelection object TableSelection 1695
+nim tableGetSelectionMode uing/rawui.html#tableGetSelectionMode,ptr.Table proc tableGetSelectionMode(t: ptr Table): TableSelectionMode 1701
+nim tableSetSelectionMode uing/rawui.html#tableSetSelectionMode,ptr.Table,TableSelectionMode proc tableSetSelectionMode(t: ptr Table; mode: TableSelectionMode) 1704
+nim tableOnSelectionChanged uing/rawui.html#tableOnSelectionChanged,ptr.Table,proc(ptr.Table,pointer),pointer proc tableOnSelectionChanged(t: ptr Table;\n f: proc (t: ptr Table; data: pointer) {.cdecl.};\n data: pointer) 1707
+nim tableGetSelection uing/rawui.html#tableGetSelection,ptr.Table proc tableGetSelection(t: ptr Table): ptr TableSelection 1712
+nim tableSetSelection uing/rawui.html#tableSetSelection,ptr.Table,ptr.TableSelection proc tableSetSelection(t: ptr Table; sel: ptr TableSelection) 1715
+nim freeTableSelection uing/rawui.html#freeTableSelection,ptr.TableSelection proc freeTableSelection(s: ptr TableSelection) 1718
diff --git a/uing/uing.html b/uing/uing.html
new file mode 100644
index 0000000..496995a
--- /dev/null
+++ b/uing/uing.html
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file