Руководство программиста в Photon (1037671), страница 14
Текст из файла (страница 14)
Поскольку PhAB отображает все модули как порождённые окна внутри рабочей области, Вы можете работать с любым числом модулей одновременно.
Использование селектора модулей
Когда Вы используете меню "Application" для создания или просмотра модуля PhAB любого типа (окна, диалога, меню, прочая), PhAB отображает диалог селектора модулей:
Рис. 4-1. Диалог селектора модулей
В верхней части диалога Вы увидите набор радиокнопок. Они позволяют Вам выбрать, какой тип модуля Вы хотите создать/открыть, удалить или закрыть. Принимаемым по умолчанию типом является тип, определённый пунктом меню, который Вы выбрали при вызове диалога.
Создание нового модуля
Чтобы создать любой новый модуль, следуйте этим простым шагам:
-
Из меню "Application" выберите тип модуля, который Вы хотите создать. Вы увидите селектор модулей.
-
В области "Name" наберите имя экземпляра объекта для нового модуля, затем нажмите <Enter> или щёлкните на "Open".
Имя модуля не должно быть более чем в 48 символов и должно быть применимо к идентификаторам языка С. Если Вы создаёте модуль иконки к основному окну Вашего приложения, Вы должны присвоить модулю иконки имя. Это то имя, которое приложение может использовать для получения иконки.
-
Для модулей окна и диалога PhAB предлагает Вам выбрать стиль из диалога, отображающего возможные варианты выбора.
Для других типов модулей PhAB просто спрашивает, создавать или нет новый модуль. Нажмите <Enter> или щёлкните "Yes". Вы увидите новый модуль в рабочей области PhAB.
-
Щёлкните на "Done".
Для более полной информации по созданию конкретных типов модулей см. раздел по каждому типу модуля в этой главе. Вы можете также импортировать модули из других приложений PhAB. Для получения более полной информации см. раздел "Импортирование файлов" в главе "Работа с приложениями".
Просмотр модулей
Чтобы просто просмотреть любой модуль:
-
В меню "Application" выберите тип модуля, который Вы хотите увидеть. Вы увидите селекор модуля.
-
Щёлкните на имени модуля в скроллируемом списке модулей.
Открытие модулей
Чтобы отобразить модуль в Вашей рабочей области, выберите его из списка модулей в меню "Window" или выполните следующее:
-
Из меню "Application" выберите тип модуля, который Вы хотите открыть. Вы увидите селектор модулей.
-
Выполните следующее:
-
дважды щёлкните на имени модуля
или
-
щёлкните на имени модуля, затем нажмите <Enter> или щёлкните на "Open"
или
-
наберите имя модуля, затем нажмите <Enter> или щёлкните на "Open".
Удаление модуля
Чтобы удалить модуль:
-
В меню "Application" выберите тип модуля, который хотите удалить. Вы увидите селектор модулей.
-
Щёлкните на имени модуля.
-
Щёлкните на кнопке "Delete".
Удаление модуля не приводит к удалению файла модуля; при этом просто удаляется имя из списка. Все ответные реакции, принадлежащие модулю или его потомкам, удаляются.
Сворачивание модулей в иконки
Рабочая область PhAB позволяет Вам работать одновременно с несколькими модулями приложения. Вы можете свернуть модули в иконки для формирования Вашей рабочей области. Чтобы свернуть любой модуль на рабочей области в иконку:
-
Дважды щёлкните на кнопке рабочего меню модуля (верхний левый угол модуля)
или
-
щёлкните на кнопке рабочего меню и выберите "Minimize"
или
-
щёлкните на кнопке минимизации на заголовочной панели модуля.
Свернувшись в иконку, модуль располагается в нижней части рабочей области. Вы можете перетащить его в любое место рабочей области, так, например, Вы можете сгруппировать вместе иконки модулей, которые вместе используются или связаны.
Закрытие модуля
Если Вы желаете остановить работу модуля или удалить его из рабочей области:
-
Щёлкните на кнопке рабочего меню модуля (верхний левый угол модуля).
-
Выберите пункт "Close".
Если Вы хотите просто свернуть модуль в иконку, выберите пункт Minimize".
Чтобы вновь открыть какой-либо закрытый модуль, см. раздел "Селектор модулей" в этой главе.
Отображение модулей в реальном времени
Для Вашего приложения может понадобится отобразить модуль во время его работы. Вы можете:
-
Создать виджет, использующий ответную реакцию, чтобы отображать модуль. Например, Вы можете создать PtButton с ответной рекцией модульного типа, которая отображает модуль. Для получения более полной информации см. раздел "Редактирование ответных реакций" в главе "Редактирование ресурсов и ответных реакций в PhAB".
-
Использовать внутренний линк (internal link) для создания модуля в тексте программы Вашего приложения. См. главу "Доступ к модулям PhAB из программы".
Позиционирование модуля
Вы можете задать, где отображать модуль, когда Вы создаёте связывающую ответную реакцию от виджета к этому модулю. Чтобы выполнить это, используйте диалог расположения – "Location dialog".
Чтобы открыть диалог расположения и выбрать расположение модуля:
-
При создании или редактировании ответной реакции, связанной с модулем, щёлкните на области "Location" или на иконке справа от области. Вы увидите список расположений:
Рис. 4-2. Диалог расположения
Для окон и диалогов принимаемым по умолчанию расположением является (0, 0), при котором окно располагается на следующей доступной позиции, определяемой менеджером окон. Для модулей меню принимаемым по умолчанию расположением является "Below Widget" – под виджетом.
-
Щёлкните на желаемом расположении.
-
Вы можете также задать смещение x и y. Например, если Вы устанавливаете расположение в нижнем правом углу и устанавливаете смещение по х на –100, окно будет отображаться так, что его нижний правый угол будет на 100 пикселей левее нижнего правого угла экрана.
Если Вы выберете расположение по умолчанию, смещения игнорируются.
-
Щёлкните на "Done".
Нахождение потерянных модулей и иконок
Чтобы найти потерянный модуль или иконку:
-
Выберите из меню "Window" пункт "Arrange Modules". PhAB расположит все открытые модули каскадом в рабочей области PhAB.
-
Выберите из меню "Window" пункт "Arrange Icons". PhAB расставит все существующие иконки вдоль нижней кромки рабочей области.
Если вышеприведенные приёмы не сработали, Вы можете "закрыть" модуль. (PhAB позволяет Вам закрывать модуль, удаляя его из рабочей области и уменьшая толкучку). Чтобы узнать, как вновь открыть закрытый модулsь, см. раздел "Открытие модуля" в этой главе.
Модули окон
Класс виджета | Расширение файла | Создание виджета |
PtWindow | .wgtw | Непосредственно из палитры виджетов |
Обычно Вы используете модули окон как основные активные сущности Вашего приложения. Так как большинство приложений использует модуль окна для своего основного окна, PhAB автоматически генерирует модуль окна с именем "base", когда Вы впервые создаёте какое-либо приложение. Он также предустанавливает информацию запуска приложения, делая базовое окно открывающимся при запуске приложения. (См. раздел "Задание информации запуска приложения" в главе "Работа с приложениями").
Иконка модуля окна
Модули окон могут поддерживать множественность экземпляров. Это означает, что одновременно может отображаться две и более копий одного и того же модуля окна. В результате Вам необходимо хранить жизненный путь каждого указателя на экземпляр окна, генерируемого при создании окна. Благодаря этому Вы всегда знаете, с каким окном имеете дело, когда обрабатываете ответную реакцию. Для получения более полной информации см. раздел "Обработка множественных экземпляров окна" в главе "Работа с кодом".
Даже несмотря на то, что базовое окно Вашего приложения является модулем окна, Вы обычно отображаете его только однажды, при запуске. Так что пока Вашему приложению не понадобится отобразить более одной копии базового окна одновременно, Вы не храните трассировку указателя на экземпляр базового окна.
Как пример кода обработки множества экземпляров модулей окна см. раздел "Создание окон" в главе "Уроки".
Изменение размера модуля окна
Когда Вы устанавливаете в PhAB размеры модуля окна, это и будут его размеры при запуске приложения.
Модули диалога
класс виджета | расширение файла | создание виджета |
PtWindow | .wgtd | Непосредственно из палитры виджета |
Модули диалога позволяют Вам получать дополнительную информацию от пользователей. Обычно Вы используете эту информацию для осуществления конкретной команды или задачи.
Иконка модуля диалога
Большинство модулей диалогов включают следующие кнопки:
-
"Done" – позволяет пользователю указать, что он завершил ввод информации
-
"Cancel" или "Close" – позволяют пользователю закрыть диалог без ответа.
С точки зрения PhAB модули диалогов почти идентичны модулям окна, с одним важным отличием – модуль диалога может иметь только один активный экземпляр. Так что если Вы вызываете диалог, который уже открыт, API PhAB просто выводит существующий экземпляр диалога на передний план. Это свойство связано с природой диалога – Вам редко когда может понадобиться вводить одну и ту же информацию дважды. Если несмотря на все соображения, Вам потребуется диалог, который мог бы поддерживать множественность экземпляров, используйте модуль окна.
Ограничение диалога одним экземпляром упрощает обработку ответной реакции, поскольку Вы можете использовать декларации виджета, генерируемые PhAB, для получения доступа к виджетам внутри диалога. Для получения более полной информации см. раздел "Имена экземпляров" в главе "Создание виджетов в PhAB".
Изменение размеров модуля диалога
Когда Вы устанавливаете размеры модуля диалога в PhAB, это и будут его размеры при запуске приложения.
Предопределённые диалоги
Библиотеки Photon включают удобные функции, определяющие различные полезные диалоги:
ApError() | Отображает диалог сообщения об ошибке |
PtAlert() | Отображает сообщение и требует подтверждения |
PtFileSelection() | Создаёт диалог выбора файла |
PtFontSelection() | Создаёт диалог выбора шрифта |
PtMessageBox() | Вызывает всплывающее табло с сообщением |
PtNotice() | Отображает сообщение и ждёт уведомления |
PtPassword() | Запрашивает пароль |
PtPrintPropSelect() | Изменяет опции печати для выбранного принтера через модальный диалог |
PtPrintSelect() | Отображает модальный диалог настройки для выбора опций печати |
PtPrintSelection() | Отображает модальный диалог для выбора опции настройки |
PtPrompt() | Отображает сообщение и получает текстовый ввод от пользователя |
Модули меню
класс виджета | расширение файла | создание виджета |
PtMenu | .wgtm | Специальный редактор |
Модуль меню предоставляет многоуровневое текстовое меню. В отличие от остальных модулей, модуль меню не позволяет Вам создавать виджеты непосредственно внутри него. Вместо этого Вы используете редактор меню PhAB для создания пунктов меню.
Иконка модуля меню
Открытие редактора меню
Чтобы открыть редактор меню:
-
Выберите модуль меню
-
Щёлкните на "Menu Items" на панели управления ресурсами, и PhAB отобразит редактор меню:
Рис. 4-3. Редактор меню PhAB
В верхнем правом углу Вы можете видеть кнопки, представляющие типы создаваемых Вами меню:
-
Command – вызывает ответную реакцию PhAB
-
Submenu – отображает порождённое меню
-
Separator – вставляет линии или разрядку между другими пунктами меню
-
Toggle или Excl Togg (эксклюзивный переключатель) – изменяет или отображает состояние приложения
-
Function – задаёт функцию приложения, которая может динамически добавлять пункты меню в меню.
Эти кнопки расположены в нижней части диалога:
Когда Вы хотите: | Используйте кнопку: |
Принять все изменения и закрыть редактор | Done |
Принять все изменения и продолжить редактировать меню | Apply |
Отменить все изменения, сделанные с момента открытия редактора | Cancel |
Задание имён экземпляров
Чтобы создать любой командный или переключаемый пункт меню (т.е. любой пункт, который может вызывать ответную реакцию), Вы должны ввести уникальное имя экземпляра – этого требует PhAB. Имя экземпляра позволяет Вам получить доступ к пунктам меню из программного кода Вашего приложения.
Когда PhAB генерирует код Вашего приложения, он генерирует глобальную переменную ABN_... для каждого пункта меню, который требует этого. Вы используете эту переменную в функциях API, связанных с пунктами меню – ApModifyItemState() и ApModifyItemText().