Руководство программиста в Photon (953920), страница 16
Текст из файла (страница 16)
Иконка модуля картинки
Как и окна, модули картинок поддерживают множественность экземпляров. Поэтому Вы должны хранить "путь" (track) указателя экземпляра для контейнера, в котором хранится каждая картинка. При таком способе Вы будете всегда знать, с какой картинкой имеете дело, когда обрабатываете ответную реакцию. Если Вы уверены, что Ваше приложение будет использовать только один экземпляр картинки в каждый данный момент, Вам нет необходимости хранить путь указателей экземпляров. Вместо этого Вы можете использовать генерируемые PhAB декларации для получения доступа к виджетам картинки.
Отображение картинки
Вы всегда имеете доступ к модулям картинок из программного кода Вашего приложения. Чтобы получить доступ к картинке, Вы должны создать к ней внутреннюю связь. Это укажет PhAB'у генерировать декларацию, которую Вы можете использовать с функциями PhAB, такими как ApCreateModule(), чтобы получить доступ к картинке.
Для получения более полной информации см. главу "Получение доступа к модулям PhAB из программного кода".
Использование картинок как баз данных виджетов
Вы можете использовать модуль картинки как базу данных виджетов. База данных виджетов содержит предопределённые виджеты, которые Вы можете в любой момент скопировать в окно, диалог или контейнер.
Используя базу данных виджетов, Вам не придётся беспокоиться об обработке множественных экземпляров, поскольку сгенерированные PhAB декларации виджетов не применяются к базам данных виджетов: каждый создаваемый Вами виджет является новым экземпляром. Указатель на экземпляр возвращается Вам, когда Вы создаёте виджет, используя ApCreateWidget(). Если Вам понадобится в будущем получить доступ к виджету, Вам придётся вручную сохранять путь этого указателя.
Для получения более полной информации см. раздел "Базы данных виджетов" в главе "Получение доступа к модулям PhAB из программного кода".
Изменение размера модуля картинки
Не имеет значение, насколько большим или малым Вы сделали модуль картинки. Это потому, что он не ассоциирован с классом виджетов. Используются только виджеты внутри модуля.
Модули иконок
класс виджета | расширение файла | создание виджета |
Не применим | .wgti | Виджеты являются предопределёнными |
Модули иконок позволяют Вам проектировать Ваши иконки приложения. PhAB гарантирует, что эти иконки будут автоматически поддерживаться панелью задач PhAB и плагинами запуска (launcher plugins).
Иконка модуля иконки
Модули иконок состоят из двух виджетов иконок:
-
больших
-
малых, предназначенных для системных панелей (shelf) и плагинов запуска.
PhAB автоматически предоставляет примитивы этих иконок, когда Вы создаёте модуль. В любой момент Вы можете использовать попиксельный редактор PhAB, описанный в главе "Редактирование ресурсов и ответных реакций в PhAB", чтобы перерисовать эти примитивы в нечто более соответствующее Вашему приложению. Вы даже можете использовать попиксельный редактор, чтобы импортировать существующую графику.
Вы можете свободно изменять размер модуля иконки по Вашему желанию – это не будет использоваться при отображении иконок.
Задание размеров и имён экземпляров
Виджеты в модуле иконки могут быть любого класса, но они должны иметь следующие размеры и имена экземпляров:
Имя экземпляра | размер |
LIcon | 43*43 пикселя |
SIcon | 15*15 пикселей |
Два простых виджета иконки, обеспечиваемых PhAB, являются виджетами PtLabel с ресурсами "Label Type", установленными в Pt_IMAGE. Эти имена предварительно поименованы и их размеры предварительно заданы, чтобы соответствовать спецификации. За исключением случаев, когда у Вас есть специфические требования к иконкам, мы рекомендуем Вам использовать эти примитивы и редактировать их с помощью попиксельного редактора.
Глава 5. Создание виджетов в PhAB
Как только Вы создали или открыли приложение, Вы, вероятно, захотите добавить, удалить или модифицировать виджеты. Эта глава описывает, как работать с виджетами. Она включает:
-
Типы виджетов
-
Имена экземпляров
-
Создание виджета
-
Выбор виджетов
-
Выравнивание виджетов
-
Общепользовательский доступ (CUA) и обработка фокусирования
-
Выстраивание виджетов
-
Перетаскивание виджетов
-
Установка x и y координат для виджетов
-
Перемещение виджетов между контейнерами
-
Изменение размеров виджетов и модулей
-
Буфер обмена
-
Дублирование виджетов и контейнеров
-
Удаление виджетов
-
Импортирование графических файлов
-
Изменение классов виджетов
-
Шаблоны
Для получения более полной информации по использованию специфических классов виджетов, см.
-
Приложение "Обзор виджетов" в этом руководстве
-
"Справочник по виджетам".
Поскольку виджеты наследуют кучу свойств от своих родительских классов, Вам стоит познакомиться с фундаментальными классами: PtWidget, PtBasic, PtContainer и прочая.
Типы виджетов
Существуют два основных типа виджетов:
-
Контейнерные виджеты, такие как PtWindow и PtScrollContainer
-
Неконтейнерные виджеты, такие как PtButton и PtText.
Виджеты контейнерного класса могут содержать другие виджеты, в том числе другие контейнеры. Виджеты, расположенные внутри контейнера, известны как порождённые виджеты; иерархия, возникающая в результате такой компоновки, называется семейством виджетов. Контейнерные виджеты могут заботиться о задании размеров и позиционировании своих потомков, как описано в главе "Управление геометрией".
Работая с виджетами контейнерного класса в PhAB, помните следующее:
-
если Вы перемещаете контейнер, все виджеты, порождённые контейнером, также перемещаются
-
если Вы помещаете указатель внутрь контейнера, когда создаёте новый виджет, этот виджет иерархически будет размещён внутри контейнера
-
если Вы хотите использовать для выбора виджетов в контейнере метод ограничивающего прямоугольника, Вы должны:
-
нажать <Alt> перед тем как начать окаймлять
-
начать окаймление внутри контейнера.
Для получения более полной информации см. раздел "Выбор виджетов" в этой главе.
Имена экземпляров
Если Ваша программа взаимодействует с виджетом, этот виджет должен иметь уникальное имя экземпляра. Используя это имя, PhAB генерирует глобальную переменную и декларацию, позволяющую Вам легко получить доступ к виджету из Вашего программного кода.
Чтобы просмотреть или отредактировать имя экземпляра виджета, используйте область "Widget Instance Name" в верхней части панели управления ресурсами или ответными реакциями:
Редактирование имени экземпляра виджета
|
|
|
Вы можете (что необязательно) включить имя экзепляра в память виджета. См. раздел "Включение имён экземпляров" в главе "Работа с приложениями".
Принимаемое по умолчанию имя экземпляра
Когда Вы создаёте виджет, PhAB автоматически присваивает ему имя экземпляра, даваемое по умолчанию. Обычно это имя по умолчанию является именем класса виджета. Например, если Вы создаёте виджет класса PtButton, панели управления ресурсами и ответными реакциями отобразят PtButton как имя экземпляра.
Если виджет служит просто надписью или декором окна, к нему не будет выполняться доступ из программного кода приложения. Таким образом, Вы можете указать PhAB игнорировать имя экземпляра виджета во время генерирования кода. Чтобы сделать это:
-
оставьте имя экземпляра эквивалентным имени класса (то есть оставьте его таким, каким принято по умолчанию)
или
-
установите пустое имя экземпляра.
Когда назначать уникальное имя
Вы можете дать виджету уникальное имя, если:
-
к виджету должна быть прикреплена ответная реакция
-
приложению необходимо изменять виджет установкой ресурса
-
приложению необходимо извлечь из виджета информацию.
Чтобы держать число глобальных переменных на минимуме, не присваивайте виджету уникального имени до тех пор, пока Вам действительно не понадобится получить доступ к виджету из программного кода приложения. Если Вы присвоили имя виджету и позже решили, что Вам не нужно имя, просто измените это имя обратно к имени класса виджета или сделайте это имя пустым.
Имена экземпляров и переводы
Как описано в главе "Поддержка международных языков", Вам понадобится имя экземпляра для каждой текстовой строки в интерфейсе пользователя Вашего приложения. Чтобы указать, что для генерации кода не требуется имя экземпляра, начните имя с символа @. PhAB опознает такое имя, генерируя базу данных текста языка, но пропустит его при генерировании кода. Если Вы не желаете создавать уникальное имя экземпляра для строки, которая будет переводиться, задайте одиночный символ @ в качестве имени экземпляра; PhAB добавит внутренний очередной номер в конце.
Если Вы не хотите создавать уникальное имя экземпляра, но хотите организовать текст для перевода (скажем, модулями), Вы можете присвоить строкам одно и то же имя экземпляра, и PhAB добавит к нему последовательный номер. Например, если Вы присвоили имя экземпляра "@label" нескольким строкам, PhAB сгенерирует в качестве имён экземпляров "@label", "@label0", "@label1" и т.д.
Дублированные имена
PhAB переустанавливает имя экземпляра виджета обратно в имя класса виджета, если обнаруживает дубликат имени, когда Вы:
-
копируете и вставляете виджет (см. "Буфер обмена")
-
импортируете виджет из другого приложения (см. раздел "Импортирование модулей PhAB из других приложений" в главе "Работа с приложениями".
-
дублируете виджет (см. "Дублирование виджетов и контейнеров".
Создание виджета
Для создания виджета:
-
Щёлкните на иконке палитры виджетов на том типе виджета, который Вы хотите создать (см. приложение "Обзор виджетов" для идентификации иконок палитры виджетов).
-
Переместите указатель туда, где Вы хотите создать виджет. Указатель изменит свой вид, показывая, что делать дальше:
-
если указатель – крестик, и Вы создаёте виджет PtPolygon или PtBezier, удерживайте нажатой кнопку мыши и протащите указатель до тех пор, пока линия не протянется туда, куда Вы желаете. Чтобы добавить точки, Вы должны начать следующую линию в вершине последней. Чтобы замкнуть полигон, поместите последнюю точку в вершине первой линии.
-
если указатель – крестик и Вы создаёте виджет какого-либо другого типа, щёлкните кнопкой мыши.
-
если указатель представляет из себя стрелку с двумя наконечниками, удерживайте нажатой кнопку мыши и перетащите указатель, пока виджет не станет того размера, который Вы хотите.
Виджеты "цепляются" на сетке, если это включено. См. "Предустановки сетки" в главе об окружении PhAB. Чтобы улучшить производительность Вашего приложения, избегайте перекрытия виджетов, которые часто обновляются.