Сделал бинд к основной либе IUP:
https://code.google.com/p/cp-iup/Пример использования:
Код:
MODULE IupTest;
IMPORT
Iup := IupLib,
SYSTEM;
CONST
expand = "EXPAND";
VAR
ml: Iup.Ihandle;
PROCEDURE [ccall] BtnCB(self: Iup.Ihandle);
BEGIN
Iup.SetAttribute(ml, "VALUE", "Hello!")
END BtnCB;
PROCEDURE Main*;
VAR
dlg, bt, split: Iup.Ihandle;
res: INTEGER;
ih: Iup.Ihandle;
prev: Iup.Icallback; (* the address of the previous function associated to the action. *)
BEGIN
res := Iup.Open(NIL, NIL);
bt := Iup.Button("Button", "btn_test");
Iup.SetAttribute(bt, expand, "YES");
prev := Iup.SetCallback(bt, "ACTION", SYSTEM.ADR(BtnCB));
ml := Iup.SetAttributes(Iup.MultiLine(NIL), "EXPAND = YES, VISIBLELINES = 5, VISIBLECOLUMNS = 10");
split := Iup.Split(bt, ml);
Iup.SetAttribute(split, "ORIENTATION", "VERTICAL");
Iup.SetAttribute(split, "COLOR", "255 20 20");
dlg := Iup.Dialog(Iup.SetAttributes(Iup.Vbox(split, NIL), "MARGIN = 10x10, GAP = 10"));
Iup.SetAttribute(dlg, "TITLE", "IupSplit Example");
res := Iup.Show(dlg);
res := Iup.MainLoop();
Iup.Close();
END Main;
BEGIN
Main;
END IupTest.
^Q DevLinker.LinkExe
Simple.exe := IupTest ~
Бинд пока неполный. Есть еще расширения:
http://www.tecgraf.puc-rio.br/iup/en/gallery_ctrl.htmlВ ближайшее время появится доп. контрол Scintilla:
http://ru.wikipedia.org/wiki/ScintillaНо даже на этом бинде вполне можно сделать автономное приложение с полноценным интерфейсом.
API очень простой. Есть куча примеров на C и Lua:
http://www.tecgraf.puc-rio.br/iup/examples/Планируется сделать еще бинд к Canvas Draw:
http://www.tecgraf.puc-rio.br/cd/Это чтобы иметь возможность рисовать на канве.
Кроме этого на канве в IUP можно рисовать с помощью Cairo и OpenGL. Бинды к ним уже есть, так что дело за малым.
Еще довольно любопытен вот этот доп. контрол:
http://www.tecgraf.puc-rio.br/iup/en/ct ... lplot.htmlБиблиотеки (IUP и CD) работают на след. платформах:
Цитата:
UNIX (SunOS, IRIX, and AIX) using Motif 2.x
UNIX (FreeBSD and Linux) using GTK+ (since 3.0)
Microsoft Windows 2000/XP/2003/Vista/7 using the Win32 API
В ближайшее время должна появиться поддержка Mac'ов.
Особенности бинда:
* Типы оканчивающиеся на List - это массивы, которые обязательно должны иметь NIL в последнем элементе (Так определяется конец списка)
* Значение типа Inull должно всегда быть равно NIL.
* Колбэки имеют тип INTEGER. Это необходимо, т.к. есть много видов колбэков с разными сигнатурами. Для установки колбэка следует использовать SYSTEM.ADR()
В Будущем планируется сделать безопасную обертку.
Во вложении бинд, сама либа и тестовый пример.