AppBuilder (1037668), страница 3
Текст из файла (страница 3)
3. Размещаем PtMenuButton виджет в строку меню, которую Вы только что создали. Кнопка меню автоматически центрируется вертикально в строке меню.
4. Идем в панель управления Ресурсов и нажимают имя образца виджета только ниже имени класса. Измените имя экземпляра кнопки, чтобы идентифицировать файл:
5. Изменяем ресурс кнопки Label Text с Label на File.
6. Поместим другой PtMenuButton виджет рядом с первый. Изменим имя экземпляра base_help и его текст на Help.
Создание модуля меню File
Теперь, когда Вы имеете кнопки меню, Вы должны создать ваши модули меню. Давайте начнем с модуля меню File.
1. Выберем Project>Add Menu. Появляется новый модуль меню.
2. Изменяем имя меню с Menu0 на filemenu:
Добавление пунктов меню
Теперь добавляем несколько пунктов в меню File. Если Вы нажимаете другой модуль, модуль меню отмечается как выбранный, что означает, что Вы не можете воздействовать на предыдущий. Чтобы переназначать модуль меню, нажмите его строку заголовка.
1. Нажимаем ресурс Menu Items в панели управления Ресурсов. Вы увидите редактор меню:
Если Вы посмотрите на список Menu Items, Вы увидете, что выбран пункт <New>. Этот специальный пункт позволяет Вам добавлять новые пункты подменю к вашему меню.
2. Чтобы добавить ваш первый пункт меню — который также, назван "New" - нажимаем поле Item Text, затем напечатали New.
3. Теперь даем пункту имя экземпляра виджета. В поле Inst Name, напечатайте file_new.
4. Щелкнем Apply, чтобы добавить пункт к меню. Вы увидеть имя пункта в списке Menu Items с префиксом CMD. Префикс CMD , означает, что это пункт команды, то есть пункт, который вызывает PhAB callback вызов.
5. Повторим, вышеупомянутые шаги, чтобы создать еще два пункта меню Save и Save As…. Дайте этим пунктам, имена, file_save и file_as.
6. До сих пор, Вы добавляли пункты меню командного типа. Теперь добавим пункт типа разделителя. Нажмем на кнопку Separator около правого верхнего угла.
7. Щелкнем Apply, чтобы получить заданный по умолчанию стиль разделителя, который изображен.
8. Теперь добавим пункт Quit. Нажмем командную кнопку, затем определим Quit как текст пункта и file_quit как имя обработчика.
9. Закончим пока с этим модулем меню, нажав на Done. Модуль отображает пункты, которые Вы только что создали:
10. Давайте сохраним этот модуль и займемся следующей задачей. Для этого нажмите кнопку свертывания окна модуля (левая кнопка в правой стороне области заголовка), или выберите кнопку меню Work (левый верхний угол) и выберите Minimize.
Создание модуля Help
Используя полученные навыки создания модуля меню, сделаем следующее:
1. Создаим ваш модуль Help и дадим ему имя helpmenu.
2. В этом модуле, разместите единственный пункт команды по имени About Demo и дадим ему имя Help_about. Когда Вы закончите, сверните модуль. Если один из ваших модулей меню, "исчезает" (Вы, возможно, случайно закрыли его или поместили позади другого модуля), просто надо вернуть модуль в пункте главного меню Viev.
Присоединение callback вызовов
Давайте вернемся к кнопкам меню, которые Вы создавали ранее и прикрепим callback вызовы так, чтобы кнопки могли вызывать ваши модули меню.
Присоединение callback вызова типа модуля
1. Выбираем кнопку меню File, затем переключаемся к панели управления callback вызовов. Вы увидите список callback вызовов кнопки File:
2. Чтобы модуль меню File выскакивал, когда Вы нажимаете кнопку File, Вы должны прикрепить callback вызов Arm к кнопке. Прикрепляя callback вызов Arm, Вы можете открыть меню, используя или «щелчок-перемещение-щелчок», или « нажатие- перетаскивание-отпускание» (click-move-click or press-drag-release).
Нажмите Arm, чтобы вывести редактор callback вызовов.
3. Область Module Types редактора позволяет Вам выбирать тип модуля, с которым Вы желаете связаться. Поскольку Вы хотите связать кнопку File с модулем меню, нажмите Menu. 4. Нажимаем список Name и печатаем filemenu (или выберем filemenu от списка), который является именем, которое Вы дали вашему модулю меню File. Это связывает кнопку меню с этим модулем. Вы можете также выбрать filemenu из всплывающего списка доступных модулей. Чтобы отобразить список, нажмите значок справа от поля Name.
5. Щелкнем Apply, чтобы добавить callback, затем нажимаем Done, чтобы закрыть редактор callback вызовов.
6. Повторим вышеупомянутые шаги, чтобы связать кнопку меню Help с модулем меню Help.
Присоединение callback вызова типа кода
Давайте теперь прикрепим callback вызов типа кода к пункту Quit из меню File так, чтобы он мог завершать работу приложения.
1. Дважды щелкаем иконку модуля filemenu. Она открывает и выбирает модуль.
2. Переключаемся в панель управления Ресурсов, затем нажимаем ресурс Menu Items.
3. Выбираем пункт Quit из списка пунктов меню.
4. Нажимаем значок рядом с полем Callback, чтобы открыть редактор callback вызовов:
5. Когда редактор открывается, заданный по умолчанию тип callback вызова - Code. Так как это тот тип, который Вы хотите, все, что Вы должны сделать, это определить имя функции, которую Вы хотите вызвать. Функция должна иметь понятное имя, поэтому печатаем quit в поле Function.
6. Щелкаем Apply для обновления списка вызовов Callbacks, затем нажимаем Done, чтобы закрыть редактор.
7 Щелкаем Done, снова, чтобы закрыть редактор меню.
Установка кода
Теперь сгенерируем код для приложения и отредактируем сгенерированную заглушку кода так, чтобы пункт Quit заставил ваше приложение завершаться.
1. Выберем Build>Generate UI. При этом сгенерируются необходимые прикладные файлы.
2. После того, как процесс генерации закончится, откроем Browse Files, выберем Window>Show Project. Просмотрим список, пока не найдем файл quit.c. Это - универсальный шаблон кода, который PhAB генерировал для вашей quit() функции.
3. Вы должны создать функцию выхода из программы. Чтобы сделать это, выберите quit.c в списке файлов, нажмите кнопку Edit, или дважды щелкните quit.c, затем замените текст функции quit() на следующий:
int
quit( PtWidget t *widget, ApInfo t *apinfo,
PtCallbackInfo t *cbinfo )
{
/* eliminate ’unreferenced’ warnings */
widget = widget,
apinfo = apinfo,
cbinfo = cbinfo;
PtExit( EXIT SUCCESS );/*Необходимо вставить эту строку*/
/* Эта инструкция никогда не будет достигнута */
return( Pt CONTINUE );
}
PtExit () - функция, которая очищает среду Фотона и затем выходит из приложения. Если Вы используете интегрированную среду разработки.
Вы можете также редактировать quit.c, или любой другой файл исходного текста, из редактора интегрированной среды разработки, дважды нажимая файл в проектном дереве навигатора.
4. После того, как Вы отредактировали, код, сохраним изменения, и закроем редактор, сформируем и выполним ваше приложение.
5. При выполнении приложения, нажмем на кнопку File, чтобы вызвать меню File. Выберем пункт меню Quit. Приложение немедленно закончится, и все окна закроются.
Обучающая программа 4. — создание диалогов
Эта обучающая программа описывает, как создать диалог. Она также является хорошим примером того, как Вы можете использовать установку кода, чтобы изменить ресурсы виджета прежде, чем виджет станет экранным. Эта обучающая программа использует приложение, которое Вы создавали в Обучающей программе 3.
В этой обучающей программе, Вы будете:
_ редактировать пункт About Demo в Help меню диалога
_ добавлять метки, и кнопку Done к новому диалогу
_ определять функцию установки, которая изменяет текст одной из меток, чтобы отобразить номер версии, когда диалог реализован
О диалогах
Модули диалога предназначены, чтобы позволить Вам получать дополнительную информацию от пользователя. Как правило, Вы используете эту информацию, чтобы выполнить специфическую команду или задачу. Так как Вы обычно не должны получать ту же самую информацию дважды, диалоги - модули единственного образца. То есть Вы не можете реализовать тот же самый диалог многократно в то же самое время. Если Вы попробуете, создать второй образец диалога, PhAB просто выносит существующий диалог на передний план и переносит его в фокус. Если Вы нуждаетесь в создании окна, которое поддерживает множественные образцы, используйте оконный модуль. Вы узнаете о модулях окна в следующей обучающей программе.
Больше об именах образца
Чтобы облегчить для Вас, обращение к виджетам изнутри вашего прикладного кода, PhAB генерирует глобальную переменную и декларацию. Каждая из них основаны на имени образца виджета. Глобальная переменная, которая имеет префикс ABN_, представляет имя виджета. Декларация, которая имеет префикс ABW_, представляет указатель образца виджета. Например, Вам назвали виджет about_version. PhAB использует этоимя, чтобы генерировать глобальную переменную по имени ABN_about_version и декларации по имени ABW_about_version. В этой обучающей программе Вы узнаете, как использовать эти сгенерированные имена.
Значение переменной ABN_... виджета уникально во всем приложении.
Присоединение модуля диалога
1. Делаем копию приложения tut3, которое Вы создавали и переименовываем на tut4:
_ Из IDE — выбираем Prodject, выбираем Edit> Copy, и затем выбираем Edit> Paste. Вы можете дать новое имя для проекта в диалоге, который здесь появляется.
_ Из автономного PhAB — открываем приложение tut3. и используем из меню File, пункт Save As, чтобы сохранить приложение как tut4.
2. Открываем модуль Help, который Вы создавали (это может все еще быть iconified).
3. Нажимают ресурс Пунктов меню в панели управления Ресурсов, чтобы открыть редактор, меню.
4. Выбираем About Demo, затем нажимают значок рядом с полем Callback, чтобы открыть редактор callback вызовов:
5. Когда редактор открывается, заданный по умолчанию тип callback вызова - Код. Идите к группе Module Types, и измените тип callback вызова на Диалог.
6. В Поле имени, напечатайте aboutdlg как имя модуля диалога, с которым Вы хотите связаться. (Этот диалог еще не существует, но PhAB будет просить, чтобы Вы позже создали его .)
7 В поле Setup Function, напечатаем установку aboutdlg. Это - имя, которое мы даем функции установки, которую будем вызывать прежде, чем диалог реализован. Используя эту функцию, мы изменим содержание виджета метки в пределах диалога, чтобы отобразить номер версии.
8. Так как Вы хотите, чтобы функция aboutdlg setup была вызванная перед диалогом, реализована, удостоверьтесь, что кнопка Prerealize доступна.
9. Нажимают значок Location, чтобы определить, где Вы хотите, чтобы диалог появился, когда он будет реализовываться. (Среднее Экранное местоположение - хороший выбор.) Нажмите Done. Ваша информация callback вызова должна теперь смотреть как-то подобно этому (в зависимости от местоположения, которое Вы выбрали):
10. Нажимаем Apply в группе Actions, чтобы добавить callback вызов. Как только вы хотите связаться с не существующем модулем диалога, PhAB просит, чтобы Вы выбрали стиль; выберите Plain, и нажмите Done. Вы будете видеть новый диалог в рабочей области. Вы будете также видеть новый callback вызов в списке Callbacks в редакторе callback вызовов.
11. Щелкнем Done , чтобы закрыть редактор callback вызовов, затем нажмем Done снова, чтобы закрыть редактор меню.
Добавление виджетов к диалогу
1. Открывает aboutdlg модуль диалога.
2. Видим два PtLabel виджета в верхней половине диалога, и PtButton около основания:
3. Выбирают вершину PtLabel виджет и изменяют его ресурс текста метки на to About this Demo. Тогда измените его горизонтальное выравнивание на Pt_CENTER.
4. Выбираем другой PtLabel виджети изменяют его текст метки на пустую строку. При этом изменим его горизонтальное выравнивание на Pt_CENTER. Позже, Вы заполните в aboutdlg setup() функцию так, чтобы она изменила пустой текст этой метки, чтобы отобразить номер версии.
5. Вы должны дать этому пустому PtLabel виджету имя образца, по которому Вы будете обращаться к нему в коде. Поэтому измените его имя образца на about version.