1extern crate libc;
21
22use libc::{ c_char, c_uchar, c_int, c_float, c_double, c_void };
23
24pub const IUP_NAME: &'static str = "IUP - Portable User Interface";
25pub const IUP_COPYRIGHT: &'static str = "Copyright (C) 1994-2014 Tecgraf, PUC-Rio.";
26pub const IUP_DESCRIPTION: &'static str = "Multi-platform toolkit for building graphical user interfaces.";
27pub const IUP_VERSION: &'static str = "3.12"; pub const IUP_VERSION_NUMBER: c_int = 312000;
29pub const IUP_VERSION_DATE: &'static str = "2014/11/19"; pub enum Ihandle {}
32pub type Icallback = extern fn(ih: *mut Ihandle) -> c_int;
33pub type Iparamcb = extern fn (dialog: *mut Ihandle, param_index: c_int, user_data: *mut c_void) -> c_int;
34
35extern {
36 pub fn IupOpen(argc: *const c_int, argv: *const *const *const c_char) -> c_int;
40 pub fn IupClose();
41 pub fn IupImageLibOpen();
42
43 pub fn IupMainLoop() -> c_int;
44 pub fn IupLoopStep() -> c_int;
45 pub fn IupLoopStepWait() -> c_int;
46 pub fn IupMainLoopLevel() -> c_int;
47 pub fn IupFlush();
48 pub fn IupExitLoop();
49
50 pub fn IupRecordInput(filename: *const c_char, mode: c_int) -> c_int;
51 pub fn IupPlayInput(filename: *const c_char) -> c_int;
52
53 pub fn IupUpdate(ih: *mut Ihandle);
54 pub fn IupUpdateChildren(ih: *mut Ihandle);
55 pub fn IupRedraw(ih: *mut Ihandle, children: c_int);
56 pub fn IupRefresh(ih: *mut Ihandle);
57 pub fn IupRefreshChildren(ih: *mut Ihandle);
58
59 pub fn IupHelp(url: *const c_char) -> c_int;
60 pub fn IupLoad(filename: *const c_char) -> *mut c_char;
61 pub fn IupLoadBuffer(buffer: *const c_char) -> *mut c_char;
62
63 pub fn IupVersion() -> *mut c_char;
64 pub fn IupVersionDate() -> *mut c_char;
65 pub fn IupVersionNumber() -> c_int;
66
67 pub fn IupSetLanguage(lng: *const c_char);
68 pub fn IupGetLanguage() -> *mut c_char;
69 pub fn IupSetLanguageString(name: *const c_char, str: *const c_char);
70 pub fn IupStoreLanguageString(name: *const c_char, str: *const c_char);
71 pub fn IupGetLanguageString(name: *const c_char) -> *mut c_char;
72 pub fn IupSetLanguagePack(ih: *mut Ihandle);
73
74 pub fn IupDestroy(ih: *mut Ihandle);
75 pub fn IupDetach(child: *mut Ihandle);
76 pub fn IupAppend(ih: *mut Ihandle, child: *mut Ihandle) -> *mut Ihandle;
77 pub fn IupInsert(ih: *mut Ihandle, ref_child: *mut Ihandle, child: *mut Ihandle) -> *mut Ihandle;
78 pub fn IupGetChild(ih: *mut Ihandle, pos: c_int) -> *mut Ihandle;
79 pub fn IupGetChildPos(ih: *mut Ihandle, child: *mut Ihandle) -> c_int;
80 pub fn IupGetChildCount(ih: *mut Ihandle) -> c_int;
81 pub fn IupGetNextChild(ih: *mut Ihandle, child: *mut Ihandle) -> *mut Ihandle;
82 pub fn IupGetBrother(ih: *mut Ihandle) -> *mut Ihandle;
83 pub fn IupGetParent(ih: *mut Ihandle) -> *mut Ihandle;
84 pub fn IupGetDialog(ih: *mut Ihandle) -> *mut Ihandle;
85 pub fn IupGetDialogChild(ih: *mut Ihandle, name: *const c_char) -> *mut Ihandle;
86 pub fn IupReparent(ih: *mut Ihandle, new_parent: *mut Ihandle, ref_child: *mut Ihandle) -> c_int;
87
88 pub fn IupPopup(ih: *mut Ihandle, x: c_int, y: c_int) -> c_int;
89 pub fn IupShow(ih: *mut Ihandle) -> c_int;
90 pub fn IupShowXY(ih: *mut Ihandle, x: c_int, y: c_int) -> c_int;
91 pub fn IupHide(ih: *mut Ihandle) -> c_int;
92 pub fn IupMap(ih: *mut Ihandle) -> c_int;
93 pub fn IupUnmap(ih: *mut Ihandle);
94
95 pub fn IupResetAttribute(ih: *mut Ihandle, name: *const c_char);
96 pub fn IupGetAllAttributes(ih: *mut Ihandle, names: *mut *mut c_char, n: c_int) -> c_int;
97 pub fn IupSetAtt(handle_name: *const c_char, ih: *mut Ihandle, name: *const c_char, ...) -> *mut Ihandle;
98 pub fn IupSetAttributes(ih: *mut Ihandle, str: *const c_char) -> *mut Ihandle;
99 pub fn IupGetAttributes(ih: *mut Ihandle) -> *mut c_char;
100
101 pub fn IupSetAttribute(ih: *mut Ihandle, name: *const c_char, value: *const c_char);
102 pub fn IupSetStrAttribute(ih: *mut Ihandle, name: *const c_char, value: *const c_char);
103 pub fn IupSetStrf(ih: *mut Ihandle, name: *const c_char, format: *const c_char, ...);
104 pub fn IupSetInt(ih: *mut Ihandle, name: *const c_char, value: c_int);
105 pub fn IupSetFloat(ih: *mut Ihandle, name: *const c_char, value: c_float);
106 pub fn IupSetDouble(ih: *mut Ihandle, name: *const c_char, value: c_double);
107 pub fn IupSetRGB(ih: *mut Ihandle, name: *const c_char, r: c_uchar, g: c_uchar, b: c_uchar);
108
109 pub fn IupGetAttribute(ih: *mut Ihandle, name: *const c_char) -> *mut c_char;
110 pub fn IupGetInt(ih: *mut Ihandle, name: *const c_char) -> c_int;
111 pub fn IupGetInt2(ih: *mut Ihandle, name: *const c_char) -> c_int;
112 pub fn IupGetIntInt(ih: *mut Ihandle, name: *const c_char, i1: *mut c_int, i2: *mut c_int) -> c_int;
113 pub fn IupGetFloat(ih: *mut Ihandle, name: *const c_char) -> c_float;
114 pub fn IupGetDouble(ih: *mut Ihandle, name: *const c_char) -> c_double;
115 pub fn IupGetRGB(ih: *mut Ihandle, name: *const c_char, r: *mut c_uchar, g: *mut c_uchar, b: *mut c_uchar);
116 pub fn IupSetAttributeId(ih: *mut Ihandle, name: *const c_char, id: c_int, value: *const c_char);
117 pub fn IupSetStrAttributeId(ih: *mut Ihandle, name: *const c_char, id: c_int, value: *const c_char);
118 pub fn IupSetStrfId(ih: *mut Ihandle, name: *const c_char, id: c_int, format: *const c_char, ...);
119 pub fn IupSetIntId(ih: *mut Ihandle, name: *const c_char, id: c_int, value: c_int);
120 pub fn IupSetFloatId(ih: *mut Ihandle, name: *const c_char, id: c_int, value: c_float);
121 pub fn IupSetDoubleId(ih: *mut Ihandle, name: *const c_char, id: c_int, value: c_double);
122 pub fn IupSetRGBId(ih: *mut Ihandle, name: *const c_char, id: c_int, r: c_uchar, g: c_uchar, b: c_uchar);
123
124 pub fn IupGetAttributeId(ih: *mut Ihandle, name: *const c_char, id: c_int) -> *mut c_char;
125 pub fn IupGetIntId(ih: *mut Ihandle, name: *const c_char, id: c_int) -> c_int;
126 pub fn IupGetFloatId(ih: *mut Ihandle, name: *const c_char, id: c_int) -> c_float;
127 pub fn IupGetDoubleId(ih: *mut Ihandle, name: *const c_char, id: c_int) -> c_double;
128 pub fn IupGetRGBId(ih: *mut Ihandle, name: *const c_char, id: c_int, r: *mut c_uchar, g: *mut c_uchar, b: *mut c_uchar);
129
130 pub fn IupSetAttributeId2(ih: *mut Ihandle, name: *const c_char, lin: c_int, col: c_int, value: *const c_char);
131 pub fn IupSetStrAttributeId2(ih: *mut Ihandle, name: *const c_char, lin: c_int, col: c_int, value: *const c_char);
132 pub fn IupSetStrfId2(ih: *mut Ihandle, name: *const c_char, lin: c_int, col: c_int, format: *const c_char, ...);
133 pub fn IupSetIntId2(ih: *mut Ihandle, name: *const c_char, lin: c_int, col: c_int, value: c_int);
134 pub fn IupSetFloatId2(ih: *mut Ihandle, name: *const c_char, lin: c_int, col: c_int, value: c_float);
135 pub fn IupSetDoubleId2(ih: *mut Ihandle, name: *const c_char, lin: c_int, col: c_int, value: c_double);
136 pub fn IupSetRGBId2(ih: *mut Ihandle, name: *const c_char, lin: c_int, col: c_int, r: c_uchar, g: c_uchar, b: c_uchar);
137
138 pub fn IupGetAttributeId2(ih: *mut Ihandle, name: *const c_char, lin: c_int, col: c_int) -> *mut c_char;
139 pub fn IupGetIntId2(ih: *mut Ihandle, name: *const c_char, lin: c_int, col: c_int) -> c_int;
140 pub fn IupGetFloatId2(ih: *mut Ihandle, name: *const c_char, lin: c_int, col: c_int) -> c_float;
141 pub fn IupGetDoubleId2(ih: *mut Ihandle, name: *const c_char, lin: c_int, col: c_int) -> c_double;
142 pub fn IupGetRGBId2(ih: *mut Ihandle, name: *const c_char, lin: c_int, col: c_int, r: *mut c_uchar, g: *mut c_uchar, b: *mut c_uchar);
143
144 pub fn IupSetGlobal(name: *const c_char, value: *const c_char);
145 pub fn IupSetStrGlobal(name: *const c_char, value: *const c_char);
146 pub fn IupGetGlobal(name: *const c_char) -> *mut c_char;
147
148 pub fn IupSetFocus(ih: *mut Ihandle) -> *mut Ihandle;
149 pub fn IupGetFocus() -> *mut Ihandle;
150 pub fn IupPreviousField(ih: *mut Ihandle) -> *mut Ihandle;
151 pub fn IupNextField(ih: *mut Ihandle) -> *mut Ihandle;
152
153 pub fn IupGetCallback(ih: *mut Ihandle, name: *const c_char) -> Icallback;
154 pub fn IupSetCallback(ih: *mut Ihandle, name: *const c_char, func: Icallback) -> Icallback;
155 pub fn IupSetCallbacks(ih: *mut Ihandle, name: *const c_char, func: Icallback, ...) -> *mut Ihandle;
156
157 pub fn IupGetFunction(name: *const c_char) -> Icallback;
158 pub fn IupSetFunction(name: *const c_char, func: Icallback) -> Icallback;
159
160 pub fn IupGetHandle(name: *const c_char) -> *mut Ihandle;
161 pub fn IupSetHandle(name: *const c_char, ih: *mut Ihandle) -> *mut Ihandle;
162 pub fn IupGetAllNames(names: *mut *mut c_char, n: c_int) -> c_int;
163 pub fn IupGetAllDialogs(names: *mut *mut c_char, n: c_int) -> c_int;
164 pub fn IupGetName(ih: *mut Ihandle) -> *mut c_char;
165
166 pub fn IupSetAttributeHandle(ih: *mut Ihandle, name: *const c_char, ih_named: *mut Ihandle);
167 pub fn IupGetAttributeHandle(ih: *mut Ihandle, name: *const c_char) -> *mut Ihandle;
168
169 pub fn IupGetClassName(ih: *mut Ihandle) -> *mut c_char;
170 pub fn IupGetClassType(ih: *mut Ihandle) -> *mut c_char;
171 pub fn IupGetAllClasses(names: *mut *mut c_char, n: c_int) -> c_int;
172 pub fn IupGetClassAttributes(classname: *const c_char, names: *mut *mut c_char, n: c_int) -> c_int;
173 pub fn IupGetClassCallbacks(classname: *const c_char, names: *mut *mut c_char, n: c_int) -> c_int;
174 pub fn IupSaveClassAttributes(ih: *mut Ihandle);
175 pub fn IupCopyClassAttributes(src_ih: *mut Ihandle, dst_ih: *mut Ihandle);
176 pub fn IupSetClassDefaultAttribute(classname: *const c_char, name: *const c_char, value: *const c_char);
177 pub fn IupClassMatch(ih: *mut Ihandle, classname: *const c_char) -> c_int;
178
179 pub fn IupCreate(classname: *const c_char) -> *mut Ihandle;
180 pub fn IupCreatev(classname: *const c_char, params: *mut *mut c_void) -> *mut Ihandle;
181 pub fn IupCreatep(classname: *const c_char, first: *mut c_void, ...) -> *mut Ihandle;
182
183 pub fn IupFill() -> *mut Ihandle;
187 pub fn IupRadio(child: *mut Ihandle) -> *mut Ihandle;
188 pub fn IupVbox(child: *mut Ihandle, ...) -> *mut Ihandle;
189 pub fn IupVboxv(children: *mut *mut Ihandle) -> *mut Ihandle;
190 pub fn IupZbox(child: *mut Ihandle, ...) -> *mut Ihandle;
191 pub fn IupZboxv(children: *mut *mut Ihandle) -> *mut Ihandle;
192 pub fn IupHbox(child: *mut Ihandle, ...) -> *mut Ihandle;
193 pub fn IupHboxv(children: *mut *mut Ihandle) -> *mut Ihandle;
194
195 pub fn IupNormalizer(ih_first: *mut Ihandle, ...) -> *mut Ihandle;
196 pub fn IupNormalizerv(ih_list: *mut *mut Ihandle) -> *mut Ihandle;
197
198 pub fn IupCbox(child: *mut Ihandle, ...) -> *mut Ihandle;
199 pub fn IupCboxv(children: *mut *mut Ihandle) -> *mut Ihandle;
200 pub fn IupSbox(child: *mut Ihandle) -> *mut Ihandle;
201 pub fn IupSplit(child1: *mut Ihandle, child2: *mut Ihandle) -> *mut Ihandle;
202 pub fn IupScrollBox(child: *mut Ihandle) -> *mut Ihandle;
203 pub fn IupGridBox(child: *mut Ihandle, ...) -> *mut Ihandle;
204 pub fn IupGridBoxv(children: *mut *mut Ihandle) -> *mut Ihandle;
205 pub fn IupExpander(child: *mut Ihandle) -> *mut Ihandle;
206 pub fn IupDetachBox(child: *mut Ihandle) -> *mut Ihandle;
207 pub fn IupBackgroundBox(child: *mut Ihandle) -> *mut Ihandle;
208
209 pub fn IupFrame(child: *mut Ihandle) -> *mut Ihandle;
210
211 pub fn IupImage(width: c_int, height: c_int, pixmap: *const c_uchar) -> *mut Ihandle;
212 pub fn IupImageRGB(width: c_int, height: c_int, pixmap: *const c_uchar) -> *mut Ihandle;
213 pub fn IupImageRGBA(width: c_int, height: c_int, pixmap: *const c_uchar) -> *mut Ihandle;
214
215 pub fn IupItem(title: *const c_char, action: *const c_char) -> *mut Ihandle;
216 pub fn IupSubmenu(title: *const c_char, child: *mut Ihandle) -> *mut Ihandle;
217 pub fn IupSeparator() -> *mut Ihandle;
218 pub fn IupMenu(child: *mut Ihandle, ...) -> *mut Ihandle;
219 pub fn IupMenuv(children: *mut *mut Ihandle) -> *mut Ihandle;
220
221 pub fn IupButton(title: *const c_char, action: *const c_char) -> *mut Ihandle;
222 pub fn IupCanvas(action: *const c_char) -> *mut Ihandle;
223 pub fn IupDialog(child: *mut Ihandle) -> *mut Ihandle;
224 pub fn IupUser() -> *mut Ihandle;
225 pub fn IupLabel(title: *const c_char) -> *mut Ihandle;
226 pub fn IupList(action: *const c_char) -> *mut Ihandle;
227 pub fn IupText(action: *const c_char) -> *mut Ihandle;
228 pub fn IupMultiLine(action: *const c_char) -> *mut Ihandle;
229 pub fn IupToggle(title: *const c_char, action: *const c_char) -> *mut Ihandle;
230 pub fn IupTimer() -> *mut Ihandle;
231 pub fn IupClipboard() -> *mut Ihandle;
232 pub fn IupProgressBar() -> *mut Ihandle;
233 pub fn IupVal(_type: *const c_char) -> *mut Ihandle;
234 pub fn IupTabs(child: *mut Ihandle, ...) -> *mut Ihandle;
235 pub fn IupTabsv(children: *mut *mut Ihandle) -> *mut Ihandle;
236 pub fn IupTree() -> *mut Ihandle;
237 pub fn IupLink(url: *const c_char, title: *const c_char) -> *mut Ihandle;
238
239 pub fn IupSaveImageAsText(ih: *mut Ihandle, file_name: *const c_char, format: *const c_char, name: *const c_char) -> c_int;
245
246 pub fn IupTextConvertLinColToPos(ih: *mut Ihandle, lin: c_int, col: c_int, pos: *mut c_int);
248 pub fn IupTextConvertPosToLinCol(ih: *mut Ihandle, pos: c_int, lin: *mut c_int, col: *mut c_int);
249
250 pub fn IupConvertXYToPos(ih: *mut Ihandle, x: c_int, y: c_int) -> c_int;
252
253 pub fn IupTreeSetUserId(ih: *mut Ihandle, id: c_int, userid: *mut c_void) -> c_int;
255 pub fn IupTreeGetUserId(ih: *mut Ihandle, id: c_int) -> *mut c_void;
256 pub fn IupTreeGetId(ih: *mut Ihandle, userid: *mut c_void) -> c_int;
257 pub fn IupTreeSetAttributeHandle(ih: *mut Ihandle, name: *const c_char, id: c_int, ih_named: *mut Ihandle);
258
259 pub fn IupFileDlg() -> *mut Ihandle;
263 pub fn IupMessageDlg() -> *mut Ihandle;
264 pub fn IupColorDlg() -> *mut Ihandle;
265 pub fn IupFontDlg() -> *mut Ihandle;
266 pub fn IupProgressDlg() -> *mut Ihandle;
267
268 pub fn IupGetFile(arq: *mut c_char) -> c_int;
269 pub fn IupMessage(title: *const c_char, msg: *const c_char);
270 pub fn IupMessagef(title: *const c_char, format: *const c_char, ...);
271 pub fn IupAlarm(title: *const c_char, msg: *const c_char, b1: *const c_char, b2: *const c_char, b3: *const c_char) -> c_int;
272 pub fn IupScanf(format: *const c_char, ...) -> c_int;
273 pub fn IupListDialog(_type: c_int, title: *const c_char, size: c_int, list: *mut *const c_char, op: c_int, max_col: c_int, max_lin: c_int, marks: *mut c_int) -> c_int;
274 pub fn IupGetText(title: *const c_char, text: *mut c_char) -> c_int;
275 pub fn IupGetColor(x: c_int, y: c_int, r: *mut c_uchar, g: *mut c_uchar, b: *mut c_uchar) -> c_int;
276
277 pub fn IupGetParam(title: *const c_char, action: Iparamcb, user_data: *mut c_void, format: *const c_char, ...) -> c_int;
278 pub fn IupGetParamv(title: *const c_char, action: Iparamcb, user_data: *mut c_void, format: *const c_char, param_count: c_int, param_extra: c_int, param_data: *mut *mut c_void) -> c_int;
279
280 pub fn IupLayoutDialog(dialog: *mut Ihandle) -> *mut Ihandle;
281 pub fn IupElementPropertiesDialog(elem: *mut Ihandle) -> *mut Ihandle;
282}
283
284pub const IUP_ERROR: c_int = 1;
288pub const IUP_NOERROR: c_int = 0;
289pub const IUP_OPENED: c_int = -1;
290pub const IUP_INVALID: c_int = -1;
291pub const IUP_INVALID_ID: c_int = -10;
292
293pub const IUP_IGNORE: c_int = -1;
297pub const IUP_DEFAULT: c_int = -2;
298pub const IUP_CLOSE: c_int = -3;
299pub const IUP_CONTINUE: c_int = -4;
300
301pub const IUP_CENTER: c_int = 0xFFFF; pub const IUP_LEFT: c_int = 0xFFFE; pub const IUP_RIGHT: c_int = 0xFFFD; pub const IUP_MOUSEPOS: c_int = 0xFFFC; pub const IUP_CURRENT: c_int = 0xFFFB; pub const IUP_CENTERPARENT: c_int = 0xFFFA; pub const IUP_TOP: c_int = IUP_LEFT;
311pub const IUP_BOTTOM: c_int = IUP_RIGHT;
312
313pub const IUP_SHOW: c_int = 0;
317pub const IUP_RESTORE: c_int = 1;
318pub const IUP_MINIMIZE: c_int = 2;
319pub const IUP_MAXIMIZE: c_int = 3;
320pub const IUP_HIDE: c_int = 4;
321
322pub const IUP_SBUP: c_int = 0;
326pub const IUP_SBDN: c_int = 1;
327pub const IUP_SBPGUP: c_int = 2;
328pub const IUP_SBPGDN: c_int = 3;
329pub const IUP_SBPOSV: c_int = 4;
330pub const IUP_SBDRAGV: c_int = 5;
331pub const IUP_SBLEFT: c_int = 6;
332pub const IUP_SBRIGHT: c_int = 7;
333pub const IUP_SBPGLEFT: c_int = 8;
334pub const IUP_SBPGRIGHT: c_int = 9;
335pub const IUP_SBPOSH: c_int = 10;
336pub const IUP_SBDRAGH: c_int = 11;
337
338pub const IUP_BUTTON1: c_int = '1' as c_int;
342pub const IUP_BUTTON2: c_int = '2' as c_int;
343pub const IUP_BUTTON3: c_int = '3' as c_int;
344pub const IUP_BUTTON4: c_int = '4' as c_int;
345pub const IUP_BUTTON5: c_int = '5' as c_int;
346
347#[inline(always)]
348pub unsafe fn iup_isshift(s: *const c_char) -> bool { *s.offset(0) == 'S' as c_char }
349#[inline(always)]
350pub unsafe fn iup_iscontrol(s: *const c_char) -> bool { *s.offset(1) == 'C' as c_char }
351#[inline(always)]
352pub unsafe fn iup_isbutton1(s: *const c_char) -> bool { *s.offset(2) == '1' as c_char }
353#[inline(always)]
354pub unsafe fn iup_isbutton2(s: *const c_char) -> bool { *s.offset(3) == '2' as c_char }
355#[inline(always)]
356pub unsafe fn iup_isbutton3(s: *const c_char) -> bool { *s.offset(4) == '3' as c_char }
357#[inline(always)]
358pub unsafe fn iup_isdouble(s: *const c_char) -> bool { *s.offset(5) == 'D' as c_char }
359#[inline(always)]
360pub unsafe fn iup_isalt(s: *const c_char) -> bool { *s.offset(6) == 'A' as c_char }
361#[inline(always)]
362pub unsafe fn iup_issys(s: *const c_char) -> bool { *s.offset(7) == 'Y' as c_char }
363#[inline(always)]
364pub unsafe fn iup_isbutton4(s: *const c_char) -> bool { *s.offset(8) == '4' as c_char }
365#[inline(always)]
366pub unsafe fn iup_isbutton5(s: *const c_char) -> bool { *s.offset(9) == '5' as c_char }
367
368pub const IUP_MASK_FLOAT: &'static str = "[+/-]?(/d+/.?/d*|/./d+)";
372pub const IUP_MASK_UFLOAT: &'static str = "(/d+/.?/d*|/./d+)";
373pub const IUP_MASK_EFLOAT: &'static str = "[+/-]?(/d+/.?/d*|/./d+)([eE][+/-]?/d+)?";
374pub const IUP_MASK_INT: &'static str = "[+/-]?/d+";
375pub const IUP_MASK_UINT: &'static str = "/d+";
376
377pub const IUP_GETPARAM_OK: c_int = -1;
381pub const IUP_GETPARAM_INIT: c_int = -2;
382pub const IUP_GETPARAM_CANCEL: c_int = -3;
383pub const IUP_GETPARAM_HELP: c_int = -4;
384
385pub const IUP_RECBINARY: c_int = 0;
389pub const IUP_RECTEXT: c_int = 1;