140 likes | 312 Views
Сравнительный анализ библиотек построения GUI на Maemo 4/5. Дорохова Р.В. GTK+. Краткая история. GIMP (GNU Image Manipulation ) - Peter Mattis, Spencer Kimball и Josh Macdonald.Спенсер - GTK Marius Vollmer – языковые привязки Lars Hamann и Stefan Jeske - основные элементы управления
E N D
Сравнительный анализ библиотек построения GUI на Maemo 4/5 Дорохова Р.В.
GTK+. Краткая история. • GIMP (GNU Image Manipulation) - Peter Mattis, Spencer Kimball и Josh Macdonald.Спенсер - GTK • Marius Vollmer – языковые привязки • Lars Hamann и Stefan Jeske - основные элементы управления • Carsten Haitzler – поддержка тем • Shawn Amundson - менеджмент релизов GTK+-1.0 и GTK+-1.2.
GTK. Основные компоненты. GTK+ зависит от следующих библиотек: • GLib • Pango • ATK • GdkPixbuf • GDK • GTK
gulong g_signal_connect( gpointer *object, const gchar *name, GCallback func, gpointerfunc_data ); gulong g_signal_connect_swapped( gpointer *object, const gchar *name, GCallback func, gpointer*slot_object ); void callback_func( GtkWidget *widget, gpointercallback_data ); void callback_func( GtkObject *object ); Сигналы и обратные вызовы.
События • Представляют собой разновидность сигналов • Тесно связаны с событиями системы X-Window • Общий вид заголовка функции-обработчика событий: gint callback_func(GtkWidget *widget, GdkEvent *event, gpointer callback_data );
QT. Краткая история. • 1991 год Хаавард Норд – написание первых классов • Эрик Чамбенг – общий дизайн, идея «сигналов и слотов» • 1993 г – первое графическое ядро, создание widgets • 4 марта 1994 г -"Quasar Technologies“ "Troll Tech“"Trolltech" • 20 мая 1995 г Qt 0.90 • Май 1996 г.- Qt 0.97 • 1996 г. - Qt 1.0, Qt 1.1, KDE (Матиас Эттрич ) • 1997 г. - Qt 1.2, Qt 1.3 • 1999 г. - Qt 2 • 2001 г. - Qt 3. • 2005 г. – Qt 4
QT. Объектная модель. • QObject – основной, базовый класс. • Класс QObject содержит в себе поддержку: • сигналов и слотов; • таймера; • механизма объединения объектов в иерархии; • событий и механизма их фильтраций; • организации объектных иерархий; • метаобъектной информации; • приведения типов; • свойств.
Сигналы и слоты. • Обеспечивают связь между объектами; • Каждый класс, унаследованный от QObject, имеет любое число слотов и сигналов; • Аргументы любого типа в сообщениях, посылаемых посредством сигналов • 1 сигнал соединен с n слотов; • 1 слот получает сообщения от m сигналов, принадлежащих различным объектам; • Соединение может происходить в любой точке приложения; • Автоматическое разъединение со всеми сигнально-слотовыми связями при уничтожении объекта
Сферы применения GTK+ и Qt. • Быстрая разработка кода – Qt • Оптимизация, портабельность – GTK+ • Использование «малых» языков - GTK+ • Справочная система - Qt • Дешевизна - GTK+ • Независимая разработка - Qt • Низкоуровневый контроль над деталями интерфейса - GTK+
Desktop widgets на Hildon.Home widgets. • Базовый класс для всех home widgets HDHomePluginItem из libhildondesktop • HD_DEFINE_PLUGIN_MODULE (TimeOutPlugin, time_out_plugin, HD_TYPE_HOME_PLUGIN_ITEM) • Пример файла .desktop [Desktop Entry] Name=TimeOut Widget Comment=Execute an action at a given time Type=default X-Path=lib-timeout-home-widget.so
Desktop widgets на Hildon.Status Menu widgets. • Делятся на постоянные, условные и временные • Наследуют от HDStatusMenuItem • Пример файла .desktop [Desktop Entry] Name=Example Icon=general_email Comment=An example status menu widget Category=permanent Type=default X-Path=lib-example-status-menu-widget.so
Control panel applets на Hildon. • #include <hildon-cp-plugin/hildon-cp-plugin-interface.h> • execute • save_state
run-standalone.sh • Приведение стиля приложения к стилю среды • Вызывает af-defines.sh, в котором: • Устанавливаются соответствующие значения переменных окружения 1 #!/bin/sh 2 3 if [ -r /etc/osso-af-init/af-defines.sh ]; then 4 unset AF_DEFINES_SOURCED 5 source /etc/osso-af-init/af-defines.sh 6 else 7 echo "$0: /etc/osso-af-init/af-defines.sh is not readable!" 8 exit 1 9 fi 10 11 "$@"