IUP - библиотека элементов GUI



Iup — кросплатформенная библиотека графического интерфейса с использованием языков программирования С и Lua. Библиотека содержит ряд интересных и уникальных возможностей.





1. Система атрибутов. В Iup очень немного функций, потому что основным методом работи с виджетами является доступ к их атрибутам с помощью функций IupSetAttribute и IupGetAttribute.
2. Виджеты регистрируются в системе графического интерфейса по именам - либо глобально, либо локально на уровне своего окна. Для этого существуют функции IupSetHandle и IupGetHandle и атрибут NAME.
3. Есть возможность использовать Lua, для описания GUI. А это практически json, если заменить = на : )) Думаю, что в будущем напишу GUI билдер.

Это сильно упрощает создание абстракций высокого уровня при написании CRUD задач. У таких абстракций , как справочник или документ,существует элемент карточка, который представляет собой массив элементов типа
{ widget, функция записи/ чтения в/из него, поле в структуре данных}
Учитывая гомогенность элементов в массивах языков с статичной типизацией и ООП стиль, или его имитация в большинстве библиотек графического интерфейса , необходима достаточная мощность языка программирования для реализации таких элементов (ADT, сопоставление с образцом, и прочих) В случае Iup widget это строковая или числовая величина, а вместо функции записи/ чтения его атрибут тоже строковая или числовая величина. Все эти вопросы я намериваюсь детально рассмотреть в статье о создании таких абстракций.

Iup имеет вполне развитую систему контейнеров для относительного и абсолютного позиционирования виджетов,размещения их в шарах, для манипулирования видимостью или в контейнерах, которые динамично расширяют макет GUI.
Библиотека не требует инсталяции, и если не использовать её дополнительные виджеты, то под Windows это одна dll размером около пол- мегабайта.
Основной дополнительный виджет это - Matrix, достаточно мощный grid с возможностями формул на Lua.

Также есть дополнительные контейнеры в виджеты, на OpenGL . Iup написана на С и это даёт возможность с легкостью писать биндинги для таких языков как Rust, Haskell и других.

Документация на Iup на английском языке http://iup.sourceforge.net

Я написал свои биндинги для Rust которые находятся на https://github.com/anatoly62/rust-iup

Комментарии

Популярные сообщения из этого блога

Работа с глобальными переменными в Rust

Виртуальный GUI на Rust