Краткое описание библиотеки libuniwidgets

Общее описание libuniwidgets

Основной целью библиотеки libuniwidgets является создание графического интерфейса пользователя в АСУ основанных на использовании библиотеки UniSet. В основу положена библиотека Gtkmm, виджеты которой являются базовыми классами для классов виджетов libuniwidgets. Для создания виджетов и работы с ними в редакторе glade-3 используется отдельная библиотека libglade. Для конструирования виджетов можно использовать и gtkbuilder. Для этого существует wrap_init в каждом каталоге где расположены виджеты. В этом файле есть одна единственная функция wrap_init_x() с вызовами x_Get_Type(...) для каждого виджета. Этот вызов регистрирует типы виджетов для использования в дальнейшем т.е. для того чтобы gtkbuilder смог построить виджет из glade файла нужно зарегистрировать типы для виджетов.
Например:
main (int argc, char **argv)
{
    ...

    Gtk::Main Kit(argc, (char**&)argv);       //   регистрация типов виджетов Gtkmm
    UniWidgets::init(argc, (char**&)argv);    //   регистрация типов виджетов UniWidgets

    ...

}
После этих действий можно загружать и работать с виджетами.
Заметки:
На данный момент можно использовать виджеты с Gtk::Builder, но свойства производных виджетов не считываются с glade файла. Это нужно решить.
На данный момент библиотека создает виджеты с помощью плагина libglade, где также регистрируются виджеты с помощью типов, но свойства производных виджетов считываются. Это происходит благодаря вызову функции glade_new куда передается список всех считанных свойств и эти свойства выставляются для виджета(см. plugins/libglade/function.h). При этом вызов дополнительных функций, типа init,не нужен.

Библиотека libuniwidgets в АСУ

Так как библиотека предназначена для использования в АСУ с применением библиотеки UniSet, значит эти две библиотеки должны взаимодействовать. Взаимодействие осуществляется по средствам менеджера объектов GuiPM. Через него происходит работа с датчиками и сообщениями. Библиотека UniSet содержит такое понятие как "датчик", здесь это же понятие тоже можно отнести к одной из основных сущностей так как работа виджета, его отображаемое состояние и его активность зависит от набора из одного и более датчиков. Значения датчиков поступают из SharedMemory и обрабатываются логиками одни из которых работают с датччиками(логика состояния), другие работают над отображением самого виджета(логика отображения). Отображаться может как простой сигнал от дискретного датчика в виде мнемознака и/или надписи с названием и номером сигнала, так и сигнал от аналогового датчика ввиде числового индикатора или мнемознака с множеством состояний. Само отображение может принимать различные виды в зависимости от того что нужно отобразать: если есть датчик уровня в цистерне, то на экране отрисовывается цистерна и заполнитель, который меняет размеры в зависимоти от значения авалогового датчика уровня. Вообщем, информация от различных датчиков должна отображаться в удобно скомпановоной, читабельной и главное в наглядной форме.

Документация по UniWidgets. Последние изменения: Fri Oct 10 09:57:50 2014. Создано системой  doxygen 1.5.9