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
Комментарии
Отправить комментарий