Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПОУК / 09 семестр / Книги и методические указания / Руководство программиста в Photon.doc
Источник:
Скачиваний:
364
Добавлен:
04.03.2014
Размер:
7.99 Mб
Скачать

Функциональность панели управления ресурсами

Версия PhAB под Photon тормозит в сравнении с натуральной версией под QNX при заполнении панели управления ресурсами. Если панель управления ресурсами отображается и не перекрыта другой панелью управления, она обновляется каждый раз, когда Вы выбираете другой виджет.

Чтобы исключить эти нежелательные паузы и уменьшить время отклика при выборе виджета, Вам имеет смысл держать панель управления ресурсами скрытой под другой панелью управления до тех пор, пока Вам на самом деле она не понадобится.

Разработка индивидуальных виджетов иPhAb

Photon позволяет Вам создавать приложения, используя виджеты, которые Вы создали сами или получили от сторонних разработчиков. Вы можете встроить эти библиотеки "заказных" виджетов в своё приложение и запускать его на Вашей планируемой целевой машине.

Документация, описывающая написание исходного кода для разрабатываемых индивидуальных виджетов, получение их при работе Вашего приложения на целевой машине, и того, как добиться, чтобы PhAB распознавал Ваши индивидуальные виджеты, собрана в руководстве "Построение индивидуальных виджетов". Процесс, который делает все эти вещи, в сущности одинаков для всех платформ хост-машин.

PhAB умеет динамически подгружать индивидуальные виджеты и затем должным образом их отображать так, как Вы разработали Ваше приложение на хост-машине. До того как это стало возможным, Вы могли бы установить размеры и задать ресурсы и ответные реакции, но эти установки не будут в действительности иметь эффекта и отображаться до тех пор, пока Вы не запустите приложение на целевой машине.

Чтобы PhAB отображал индивидуальные виджеты корректно на хост-машине при разработке Вашего приложения, вам необходимо предпринять некоторые дополнительные шаги, которые зависят от платформы хост-машины. Вам понадобится перекомпилировать и слинковать исходный код индивидуальных виджетов под платформу и процессор хост-машины. Под OC QNX это означает построение библиотек совместного доступа, которые PhAB динамически погружает во время исполнения приложения. Под Windows процесс слегка отличается и работает, используя статическую линковку.

Статическое линкование Ваших индивидуальных виджетов

Для следующей ниже процедуры мы предполагаем, что Вы уже выполнили шаги, которые не являются специфическими для платформы хост-машины. Вам нужно:

  • Иметь исходный код индивидуальных виджетов

  • Построить целевые библиотеки из Ваших исходников индивидуальных виджетов

  • Добавить соответствующие входы в файлы определения палитры PhAB

  • Создать изображение иконки и файлы ресурсов по умолчанию в директории шаблонов templates.

После того как Вы сделали всё вышеперечисленное, выполните следующие шаги:

  1. Загрузите и инсталлируйте окружение разработчика Cygwin из www.cygwin.com. Это Unix-подобная система с открытым кодом, предлагающая основанное на gcc окружение разработки под Windows.

  2. Напишите функцию С, действующую как таблица для просмотра индивидуальных виджетов PhAB'а для всех индивидуальных виджетов. Вы должны присвоить ей имя get_custom_wgt(), и она должна проверять передаваемое ей имя класса виджета и возвращать соответствующий указатель на класс виджета. Например:

#include <Pt.h>

extern PtWidgetClassRef_t *MyWidget;

PtWidgetClassRef_t **get_custom_wgt( const char *name ) {

if (!strcmp(name, "MyWidget")) return &MyWidget;

else return NULL;

}

  1. Откомпилируйте Вашу функцию индивидуального виджета и функцию таблицы просмотра, используя Cygwin'овский транслятор gcc:

gcc -c -D__LITTLEENDIAN__ -D__X86__ \

-I /usr/lib/gcc-lib/i686-pc-cygwin/*/include \

-I /usr/include \

-I $QNX_HOST/usr/include -I$QNX_TARGET/usr/include \

MyWidget.c get_custom_wgt.c

  1. Сделайте резервную копию оригинального файла ab.exe, который имеется в поставке PhAB.

  2. Слинкуйте Ваши объектные файлы индивидуальных виджетов, чтобы создать новую версию ab.exe:

ld $QNX_HOST/usr/photon/appbuilder/ab.o MyWidget.o \

get_custom_wgt.o -o ab.exe -lcygwin -lkernel32

  1. Замените имеющийся исполняющийся файл PhAB новым, Вами построенным. Вы должны выйти из PhAB, чтобы это сделать.

cp ab.exe $QNX_HOST/usr/photon/appbuilder/ab.exe

В следующий раз, когда Вы запустите PhAB после выполнения этих шагов, Вы сможете увидеть индивидуальные виджеты, корректно отображаемые, когда Вы с ними будете работать.