Руководство программиста в Photon (Раздаточные материалы), страница 8
Описание файла
Файл "Руководство программиста в Photon" внутри архива находится в папке "Раздаточные материалы". Документ из архива "Раздаточные материалы", который расположен в категории "". Всё это находится в предмете "программное обеспечение управляющих комплексов (поук)" из 9 семестр (1 семестр магистратуры), которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "поук" в общих файлах.
Онлайн просмотр документа "Руководство программиста в Photon"
Текст 8 страницы из документа "Руководство программиста в Photon"
Чтобы модуль меню "File" всплывал при нажатии кнопки "File", Вам надо присоединить ответную реакцию "Arm" к кнопке. Для прикрепления ответной реакции "Arm" Вы можете открыть меню, используя механизмы "щёлкнуть-переместить-щёлкнуть" либо "нажать-перетащить-опустить".
Щёлкните на "Arm", чтобы вызвать редактор ответной реакции.
Область "Module Types" редактора позволяет Вам выбрать тип модуля, к которому Вы хотите присоединится. Поскольку Вы хотите присоединить кнопку "File" к модулю меню, щёлкните на "Menu".
Щёлкните на области "Name" и наберите filemenu, что является именем, которое Вы дали Вашему модулю меню "File". Это подсоединит кнопку меню к этому модулю. Вы можете также выбрать filemenu из всплывающего списка доступных модулей. Чтобы вызвать список, щёлкните на иконке справа от области "Name".
Щёлкните на "Apply", чтобы добавить связь с ответной реакцией, затем щёлкните на "Done", чтобы закрыть редактор ответных связей.
Повторите вышеприведенные шаги для присоединения кнопки меню "Help" к модулю меню "Help".
Присоединение ответной реакции кодового типа
Давайте теперь присоединим ответную реакцию кодового типа к пункту "Quit" меню "File", так чтобы она могла завершать работу приложения.
-
Выполните двойной щелчок на свёрнутом в иконку модуле filemenu. Он откроется и выберет модуль.
-
Переключитесь на панель управления ресурсами и щёлкните на ресурсе "Menu Items".
-
Выберите пункт "Quit" в списке "Menu Items".
-
Щёлкните на иконке следом за областью "Callback", чтобы открыть редактор ответной реакции:
-
Когда редактор откроется, принятым по умолчанию типом ответной реакции будет "Code". Поскольку это нужный Вам тип, всё, что Вам надо сделать – это задать имя функции, которую Вы хотите вызвать. Функция должна иметь имя, имеющее смысл (святые слова! Сколько уже вызывал я функций с именами типа f1 или pro... Прим. пер.) Так что наберите quit в области "Function".
-
Щёлкните на "Apply", чтобы обновить список ответных реакций, затем щёлкните на "Done", закрывая редактор.
-
Щёлкните на "Done" вновь, чтобы закрыть редактор меню.
Подготовка кода
Вы теперь генерируете код для Вашего приложения и отредактируете сгенерированную заглушку кода, так чтобы пункт "Quit" приводил к завершению приложения.
-
Из меню "Application" выберите "Build+Run" и сгенерируйте код приложения.
-
После того, как процесс генерации завершился, диалог "Build+Run" отобразит список сгенерированных файлов.
Прокрутите список в поисках файла quit.c. Это сгенерированный шаблон кода, который PhAB сгенерировал для Вашей функции quit ().
-
Вам необходимо сделать функцию выхода из программы. Чтобы сделать это, выберите quit.c из списка файлов, щёлкните на кнопке "Edit" и измените функцию quit (), как показано ниже:
int
quit( PtWidget_t *widget, ApInfo_t *apinfo,
PtCallbackInfo_t *cbinfo )
{
/* предотвращает предупреждения (warnings) об отсутствии ссылок */
widget = widget,
apinfo = apinfo,
cbinfo = cbinfo;
PtExit( EXIT_SUCCESS );
/* Этот оператор не может быть достигнут, */
/* но это оставит компилятор счастливым */
return( Pt_CONTINUE );
}
PtExit () – это функция, которая очищает окружение Photon'а и затем закрывает приложение. Она описана в "Справочнике библиотеки Photon'а".
-
После того, как Вы отредактировали код, сохраните Ваши изменения, закройте редактор и щёлкните на "Make" для компиляции кода.
-
Щёлкните на Run Application" для запуска приложения.
-
После запуска приложения щёлкните на кнопку "File" для вызова меню "File". Затем выберите "Quit". Ваше приложение немедленно завершит работу и закроется.
Хотите узнать больше?
Чтобы узнать больше: | См. раздел: | В главе: |
Ответные реакции виджета Имена экземпляров Модули меню | Ответные реакции Имена экземпляров Модули меню | Редактирование ресурсов и ответных реакций в PhAB Создание виджетов в PhAB Работа с модулями |
Урок 4. Создание диалогов
Этот урок описывает, как создать диалог. Он также предоставит хороший пример того, как Вы можете использовать установочный код для модификации ресурсов виджета перед тем, как виджет появится на экране.
Этот урок использует приложение, созданное Вами на уроке 3.
На это уроке Вы:
-
присоедините пункт "About Demo" в меню "Help" к диалогу
-
добавите надписи и кнопку "Done" к новому диалогу
-
определите установочную функцию, которая изменит текст одной из надписей для отображения номера версии, когда диалог будет вызван.
О диалогах
Модули диалогов спроектированы для того, чтобы позволить Вам получить дополнительную информацию о пользователе. Обычно Вы используете такую информацию, чтобы выполнить конкретную команду или задачу.
Поскольку Вам обычно нет нужды получать одну и ту же информацию дважды, диалоги являются модулями, существующими в одном экземпляре. Иными словами, Вы не можете открыть один и тот же диалог более одного раза одновременно. Если Вы попытаетесь создать второй экземпляр диалога, PhAB просто переведёт существующий диалог поверх остальных окон и передаст ему фокус.
Если Вам необходимо создать окно, поддерживающее несколько экземпляров, используйте модуль окна. Вы изучите модули окна на следующем уроке.
Ещё об именах экземпляров
Чтобы облегчить доступ к виджетам из кода Вашего приложения, PhAB генерирует глобальную переменную и декларацию. Обе они базируются на имени экземпляра виджета.
Глобально переменная, начинающаяся с префикса ABN_, представляет собой имя виджета. Декларация, начинающаяся с префикса ABW_, представляет указатель на экземпляр виджета.
Например, пусть Вы имеете виджет, имя которого about_version. PhAB использует это имя для генерации глобальной переменной с именем ABN_about_version и декларации с именем ABW_about_version.
На этом уроке мы научимся, как использовать эти сгенерированные имена.
Значение переменной виджета ABN_..., является уникальным для всего приложения.
Прикрепление модуля диалога
-
Откройте приложение tut3, созданное Вами, и используйте пункт "Save As" в меню "File", чтобы сохранить его как tut4.
-
Откройте созданный Вами модуль меню "Help" (он может быть ещё свёрнутым в иконку).
-
Щёлкните на ресурсе "Menu Items" в панели управления ресурсами, чтобы открыть редактор меню.
-
Выберите пункт "About Demo", затем щёлкните на иконке, следующей за областью "Callback", чтобы открыть редактор ответных реакций:
-
Когда редактор откроется, принимаемым по умолчанию типом ответной реакции будет "Code". Перейдите к группе "Module Types" и измените тип ответной реакции на "Dialog".
-
В области "Name" наберите как имя модуля диалога, с которым Вы хотите установить связь, aboutdlg. (Этот диалог ещё не существует, но позже PhAB спросит Вас, создавать ли его).
-
В области "Setup Function" наберите about_setup. Это имя, которое мы присваиваем функции установки, которая будет вызвана перед запуском диалога.
Используя эту функцию, мы изменим содержание виджета надписи внутри диалога для отображения номера версии.
-
Поскольку Вы хотите, чтобы функция aboutdlg_setup вызывалась перед открытием диалога, убедитесь, что включена кнопка "Pre-Realize".
-
Щёлкните на иконке "Location", чтобы задать, где должен появляться диалог при его запуске. (Хорошим выбором будет расположение "Center Screen"). Щёлкните на "Done". Информация об ответной реакции будет теперь выглядеть так:
-
Щёлкните на "Apply", чтобы добавить связь ответной реакции. Поскольку модуль диалога, к которому Вы хотите прикрепить связь, ещё не существует, Phab предложит Вам выбрать стиль; выберите "Plain" и щёлкните "Continue". Вы увидите в рабочей области новый диалог. Вы также увидите новую ответную реакцию в списке ответных реакций в редакторе ответных реакций.
-
Щёлкните на "Done", чтобы закрыть редактор ответных реакций, затем щёлкните на "Done" ещё раз, чтобы закрыть редактор меню.
Добавление виджетов в диалог
-
Откройте модуль диалога aboutdlg
-
Поместите два виджета PtLabel в верхней половине диалога, и виджет PtButton в нижней части:
-
Выберите верхний виджет PtLabel и измените ресурс его текста на "About this Demo". Затем измените его горизонтальное выравнивание на Pt_CENTER.
-
Выберите второй виджет PtLabel и измените его текст на пустую строку. Затем измените его горизонтальное выравнивание на Pt_CENTER.
Позже Вы заполните его с помощью функции aboutdlg_setup(), так что она изменит пустой текст этой надписи на отображение номера версии.
-
Вы должны присвоить этому пустому виджету PtLabel имя экземпляра, поскольку будете ссылаться на него в коде программы. Поэтому измените его имя экземпляра на about_version.
-
Выберите виджет PtButton и измените ресурс текста кнопки на "Done". Затем измените его имя экземпляра на about_done.
-
Давайте отцентрируем виджеты горизонтально в диалоге. Выберите оба виджета PtLabel и виджет PtButton и выберите из меню "Edit" пункт "Aligment". Вы увидите диалог "Align Widgets".
-
В столбце "Horizontal" щёлкните на "Align Centers" и на "Align to Container". Затем щёлкните на кнопке "Align". Две надписи и кнопка теперь будут горизонтально отцентрированы внутри Вашего диалога. Ваш модуль about должен теперь выглядеть так:
Добавление ответной реакции к кнопке Done
Теперь добавим ответную реакцию к кнопке Done, так чтобы диалог закрывался, когда пользователь щёлкал на этой кнопке.
-
Выберите кнопку "Done", затем переключитесь на панель управления ответными реакциями (панель "Callbacks").
-
Щёлкните на "Activate", чтобы добавить ответную реакцию на активизацию. Вы увидите редактор ответной реакции.
-
Выберите тип "Done code", затем щёлкните на "Apply". Ничего не вводите в области "Function".
Выбор типа "Done code" говорит виджету исполнять операцию "Done" при активизации виджета. То есть виджет вызывает функцию, заданную в области "Function" (если она задана) и затем закрывает модуль диалога.
-
Закройте редактор. Список ответных реакций теперь указывает, что Вы добавили ответную реакцию активизации ("Activate"), называемую Done:
Модификация сгенерированного кода функции
Теперь Вы измените сгенерированный код функции about_setup(), так чтобы она изменяла текст надписи about_version, показывая номер версии.
-
Сохраните Ваше приложение.
-
Откройте диалог "Build+Run" и сгенерируйте код.
-
Когда генерация кода завершится, закройте диалог "Generate Code", выберите файл aboutdlg_setup.c из списка файлов и щёлкните на кнопке "Edit"2 (или дважды щёлкните на имени файла).
Измените код с
int aboutdlg_setup( PtWidget_t *link_instance,
ApInfo_t *apinfo,