
- •Руководство программиста в Photon
- •Перевод выполнен Владимиром Зайцевым, г.Харьков Редактирование текста выполнено Михаилом Поспеловым, г.Калуга
- •Глава 1. Уроки 34
- •Глава 2. Окружение PhAb 63
- •Глава 3. Работа с приложениями 75
- •Глава 4. Работа с модулями 83
- •Глава 5. Создание виджетов в PhAb 98
- •Глава 6. Редактирование ресурсов и ответных реакций в PhAb 114
- •Глава 7. Управление геометрией 134
- •Глава 8. Генерирование, компилирование и запуск программного кода на исполнение 146
- •Глава 9. Работа с программным кодом 158
- •Глава 10. Манипулирование ресурсами в коде приложения 175
- •Глава 11. Управление виджетами в исходном коде приложения 186
- •Глава 12. Поверхности управления 196
- •Глава 13. Доступ к модулям PhAb из программного кода 202
- •Глава 14. Поддержка международных языков 209
- •Глава 15. Контекстно-чувствительная помощь 219
- •Глава 16. Межпроцессные связи 224
- •Глава 17. Параллельные операции 239
- •Глава 18. Необработанное рисование и мультипликация 249
- •Глава 19. Шрифты 286
- •Глава 20. Печать 297
- •Глава 21. "Тащить и бросать" 306
- •Глава 22. Регионы 319
- •Глава 23. События 328
- •Глава 24. Управление окнами 340
- •Глава 25. Программирование в Photon'е без PhAb'а 350
- •Небольшое пояснение переводчика
- •Введение
- •Обзор архитектурыPhoton'а
- •Построитель Photon'овских приложений – PhAb
- •Получение немедленных результатов
- •Концентрация на функциональности
- •Создание прототипов без написания кода
- •Сокращение размера кода
- •Создание последовательных приложений
- •Создание всех разновидностей приложений
- •Концепции виджетов
- •Жизненный цикл виджета
- •Геометрия виджета
- •Парадигма (система понятий) программирования
- •Приложение текстового режима
- •PhAb приложение
- •БиблиотекиPhoton'а
- •Обзор построения приложений подPhAb
- •Шаг 1. Создание модулей
- •Шаг 2. Добавление виджетов
- •Шаг 3. Прикрепление ответных реакций
- •Шаг 4. Генерация кода
- •Шаг 5. Запуск Вашего приложения на выполнение
- •Шаг 6. Повторение любого предыдущего шага
- •Написание приложений без PhAb
- •Глава 1. Уроки
- •Перед тем как Вам начать...
- •Урок 1 – Привет, мир
- •Создание приложения
- •Генерирование кода
- •Хотите больше информации?
- •Урок 2. Редактирование ресурсов
- •Добавление виджета "Кнопка"
- •Изменение ширины фаски
- •Изменение шрифта
- •Изменение выравнивания текста
- •Установка флагов
- •Изменение цвета заполнения
- •Редактирование пиксельной карты
- •Редактирование многострочного текста
- •Редактирование списка текстовых параграфов
- •Создание шаблона
- •Желаете узнать побольше?
- •Урок 3. Создание меню и панелей меню
- •О присоединении ответных реакций
- •Об именах экземпляров
- •Создание панели меню
- •Создание модуля меню "File"
- •Добавление пунктов меню
- •Создание модуля меню "Help"
- •Присоединение ответных реакций
- •Присоединение ответной реакции модульного типа
- •Присоединение ответной реакции кодового типа
- •Подготовка кода
- •Хотите узнать больше?
- •Урок 4. Создание диалогов
- •О диалогах
- •Ещё об именах экземпляров
- •Прикрепление модуля диалога
- •Добавление виджетов в диалог
- •Добавление ответной реакции к кнопке Done
- •Модификация сгенерированного кода функции
- •Компиляция и запуск на выполнение
- •Желаете узнать больше?
- •Урок 5. Создание окон
- •Создание окна
- •Прикрепление ответной реакции
- •Добавление виджетов
- •Генерирование и модификация кода
- •Генерирование кода
- •Модификация функции установки
- •Модификация функции изменения цвета
- •Модификация функции закрытия окна
- •Компиляция и запуск
- •Хотите узнать больше?
- •Глава 2. Окружение PhAb
- •Меню "File"
- •Меню "Edit"
- •Меню "View"
- •Меню "Options"
- •Меню "Application"
- •Меню "Window"
- •Меню "Help"
- •Панели инструментов
- •Инструмент корректировки положения
- •Панели управления
- •Палитра виджетов
- •Режимы (создание или выбор)
- •Панель ответных реакций
- •Панель дерева модулей
- •Панель связей модуля
- •Панель поиска
- •Подгонка Вашего окружения PhAb
- •Общие предпочтения ("General preferences")
- •Предпочтение цвета ("Color preferences")
- •Предпочтение по перетаскиванию (Dragging preferences)
- •Предпочтения сетки
- •Глава 3. Работа с приложениями
- •Создание приложения
- •Открытие приложения
- •Сохранение приложения
- •Именование и переименование приложения
- •Сохранение существующего приложения
- •Переписывание существующего приложения
- •Закрытие приложения
- •Задание стартовой информации приложения
- •Задание глобального заголовочного файла
- •Функция инициализации
- •Опции командной строки
- •Включение имён экземпляров
- •Окна запуска
- •Добавление окна запуска
- •Модификация окна запуска
- •Удаление окна запуска
- •Импортирование файлов
- •Импортирование модулей PhAb из других приложений
- •Импортирование графических образов
- •Глава 4. Работа с модулями
- •Типы модулей
- •Анатомия модуля
- •Выбор модуля
- •Как сохраняются модули
- •Изменение ресурсов модуля
- •Использование селектора модулей
- •Создание нового модуля
- •Просмотр модулей
- •Открытие модулей
- •Удаление модуля
- •Сворачивание модулей в иконки
- •Закрытие модуля
- •Отображение модулей в реальном времени
- •Позиционирование модуля
- •Нахождение потерянных модулей и иконок
- •Модули окон
- •Изменение размера модуля окна
- •Модули диалога
- •Изменение размеров модуля диалога
- •Предопределённые диалоги
- •Модули меню
- •Открытие редактора меню
- •Задание имён экземпляров
- •Создание "горячих клавиш" и "кнопок быстрого доступа" (hotkeys and shortcuts)
- •Изменение размеров модуля меню
- •Создание командных пунктов меню
- •Создание пунктов подменю
- •Создание разделителей пунктов
- •Создание пунктов-переключателей
- •Создание пунктов-функций
- •Перемещение пунктов меню
- •Использование модуля меню
- •Модули картинок
- •Отображение картинки
- •Использование картинок как баз данных виджетов
- •Изменение размера модуля картинки
- •Модули иконок
- •Задание размеров и имён экземпляров
- •Глава 5. Создание виджетов в PhAb
- •Типы виджетов
- •Имена экземпляров
- •Принимаемое по умолчанию имя экземпляра
- •Когда назначать уникальное имя
- •Имена экземпляров и переводы
- •Дублированные имена
- •Создание виджета
- •Создание нескольких виджетов
- •Несколько виджетов
- •Использование охватывающего прямоугольника
- •Использование панелей управления
- •Виджеты внутри группы
- •Использование панели "Module Tree"
- •Использование кнопок "Следующая" и "Предыдущая"
- •Скрытые виджеты
- •Выравнивание виджетов
- •По другому виджету
- •По родительскому контейнеру
- •Общепользовательский доступ (сиа) и управление фокусом
- •Изменение фокусировки через клавиатуру
- •Управление фокусом
- •Ответные реакции фокусировки
- •Функции обработки фокусировки
- •Упорядочивание виджетов
- •Перетаскивание виджетов
- •Предустановки перетаскивания
- •Установка координатxиyвиджетов
- •Перемещение виджетов между контейнерами
- •Изменение размеров виджетов и модулей
- •Буфер обмена
- •Вырезание и копирование
- •Вклеивание
- •Просмотр буфера обмена
- •Редактирование буфера обмена
- •Дублирование виджетов и контейнеров
- •Удаление виджетов
- •Импортирование графических файлов
- •Изменение класса виджета
- •Шаблоны
- •Создание шаблонов
- •Добавление подогнанного виджета
- •Редактирование шаблонов
- •Удаление шаблонов
- •Глава 6. Редактирование ресурсов и ответных реакций в PhAb
- •Редактирование ресурсов виджета
- •Попиксельный редактор
- •Установка размеров попиксельного образа
- •Рисование линий, прямоугольников и кругов
- •Заполнение замкнутой области
- •Выбор области
- •"Подталкивание" области
- •Использование панели инструментов попиксельного образа
- •Другие средства управления попиксельным образом
- •Редактор цвета
- •Полный редактор цвета
- •Быстрый редактор цвета
- •Редактор списка
- •Редактирование существующих пунктов списка
- •Удаление пунктов списка
- •Редактор чисел
- •Текстовые редакторы
- •Редактор функций
- •Ответные реакции
- •Редактирование ответных реакций:
- •Модульные ответные реакции
- •Предреализационная установочная функция
- •Постреализационная установочная функция
- •Установочные функции хранятся в заготовочных файлах
- •Ответные реакции кодового типа
- •Функции ответных реакций хрянятся в заготовочных файлах
- •Ответные реакции горячих клавиш
- •Горячие клавиши – основы
- •Задание метки горячей клавиши
- •Задание ответной реакции
- •Где должен появиться модуль
- •Какой виджет Вам нужен в функции ответной реакции
- •Куда идти пользователю, чтобы нажать горячую клавишу
- •Обработка горячих клавиш
- •Отключение горячих клавиш
- •Обработчики событий – необработанные и отфильтрованные ответные реакции
- •Глава 7. Управление геометрией
- •Контейнер виджетов
- •Согласование геометрии
- •Политика изменения размеров
- •Установка политики изменения размеров в PhAb
- •Установка политики изменения размеров в программном коде приложения
- •Абсолютное позиционирование
- •Выравнивание виджетов с использованием групп
- •Объединение виджетов в группу
- •Получение доступа к виджетам в группе
- •Горизонтальное или вертикальное выравнивание виджетов
- •Использование флагов групп
- •Расщепление группы на составляющие
- •Управление привязкой с использованием анкеров – средств привязки
- •Ресурсы анкеров
- •Установка флагов анкеров в PhAb
- •Установка флагов анкеров в программном коде Вашего приложения
- •Установка ограничений по размерам или позиционированию без анкеров
- •Глава 8. Генерирование, компилирование и запуск программного кода на исполнение
- •Генерирование программного кода приложения
- •Что генерирует PhAb
- •Управление версиями
- •Некоторые рекомендации по использованию cvs
- •Прототипы функций
- •Потенциальные проблемы с генерированием proto.H
- •Как организовать файлы приложения
- •Многоплатформенные приложения
- •Одноплатформенные приложения
- •Преобразование к мультиплатформенности
- •Редактирование исходного кода
- •Выбор редактора или броузера
- •Создание модуля с исходным кодом
- •Изменение отображения файлов
- •Компилирование и линковка
- •Выбор библиотек
- •Запуск команды make
- •Модифицирование команды make
- •Запуск приложения на исполнение
- •Отладка
- •Модифицирование команды отладчика
- •Включение в Ваше приложение не-PhABфайлов
- •Мультиплатформенные приложения
- •Одноплатформенные приложения
- •Добавление библиотек
- •Создание результирующей dll как приложения PhAb
- •Компилирование и линковка
- •Инициализация dll
- •Выгрузка Вашей dll
- •Глава 9. Работа с программным кодом
- •Переменные и декларации
- •Переменные и декларации виджетов
- •Использование глобальной переменной и декларация виджета
- •Обработка множества экземпляров окна
- •Декларация внутренних связей
- •Декларации иконок
- •Глобальный хеадер-файл
- •Имена функций и имена файлов
- •Функция инициализации
- •Обработка опций командной строки
- •Установочные функции модуля
- •Функции ответных реакций кодового типа
- •Типы данных геометрии
- •Таймеры
- •Использование PtTimer
- •Функции RtTimer*
- •Меню инициализации
- •Включение, отключение или переключение пунктов меню
- •Изменение текста пунктов меню
- •Генерирование пунктов меню
- •Создание подменю
- •Задержка и принудительное обновление изображения на экране
- •Глобально
- •Для конкретного контейнера
- •Принудительное обновление
- •Глава 10. Манипулирование ресурсами в коде приложения
- •Список аргументов
- •Установка ресурсов
- •Списки аргументов для установки ресурсов
- •Ресурсы scalar и color
- •Ресурсы string
- •Ресурсы alloc
- •Ресурсы image
- •Ресурсы array
- •Ресурсы flag
- •Ресурсы function
- •Ресурсы pointer
- •Ресурсы Link
- •Ресурсы struct
- •Ресурсы boolean
- •Вызов PtSetResources()
- •Установка одного ресурса
- •Получение ресурсов
- •Не используя указатели
- •Ресурсы scalar и flags (безуказательный метод)
- •Ресурс string (безуказательный метод)
- •Ресурс boolean (безуказательный метод)
- •Использование указателей
- •Ресурсы scalar и flag (указательный метод)
- •Ресурсы string (указательный метод)
- •Ресурсы alloc (указательный метод)
- •Ресурсы image (указательный метод)
- •Ресурсы array (указательный метод)
- •Ресурсы pointer (указательный метод)
- •Ресурсы link (указательный метод)
- •Ресурсы struct (указательный метод)
- •Ресурсы boolean (указательный метод)
- •Вызов функции PtGetResources()
- •Получение одного ресурса
- •Глава 11. Управление виджетами в исходном коде приложения
- •Создание виджетов
- •Задание порядка виджетов
- •Работа с семейством виджетов
- •Ответные реакции
- •Добавление ответных реакций
- •Вызов ответной реакции
- •Удаление ответных реакций
- •Просмотр ответных реакций
- •Обработчики событий
- •Добавление обработчиков событий
- •Удаление обработчиков событий
- •Запуск обработчика событий
- •Стили виджетов
- •Глава 12. Поверхности управления
- •Что такое поверхности управления?
- •Ограничения
- •Привязка действий к поверхностям управления
- •Ссылка на поверхности управления
- •ApIповерхностей управления
- •Создание и уничтожение поверхностей управления
- •Нахождения идентификаторов для поверхностей управления
- •Вычисление геометрии для поверхностей управления
- •Прорисовка поверхностей управления
- •Активация поверхностей управления
- •Включение и отключение поверхностей управления
- •Нахождение поверхностей управления
- •Скрытие и демонстрирование поверхностей управления
- •Установление порядка поверхностей управления
- •Размещение пользовательских данных вместе с поверхностями управления
- •Глава 13. Доступ к модулям PhAb из программного кода
- •Создание внутренних связей
- •Использование внутренних связей в Вашем программном коде
- •Декларации
- •Функции внутренней связи
- •Пример – отображение меню
- •Использование базы данных виджетов
- •Создание базы данных
- •Предварительно прикреплённые ответные реакции
- •Назначение уникального имени экземпляра
- •Создание динамической базы данных
- •Функции базы данных виджетов
- •Глава 14. Поддержка международных языков
- •Соображения о проектировании приложения
- •Размер виджетов, основанных на тексте
- •Выравнивание
- •Высота шрифта
- •Жёстко закодированные строки
- •Использование символа "@" в именах экземпляров
- •Двуязычные приложения
- •Общие строки
- •Генерация языковой базы данных
- •Базы данных сообщений
- •Редактор языка
- •Запуск языкового редактора из PhAb
- •Запуск языкового редактора как автономного приложения
- •Создание нового файла перевода
- •Редактирование существующего файла перевода
- •Перевод текста
- •Горячие клавиши
- •Ресурсы help'a
- •Функции перевода
- •Запуск Вашего приложения на исполнение
- •Распространение Вашего приложения
- •Глава 15. Контекстно-чувствительная помощь
- •Создание текста помощи
- •Файлы помощи
- •Файлы таблиц содержания
- •Ссылки на темы помощи
- •Унифицированный указатель информационного ресурса (url)
- •Маршрут тем
- •Связывание помощи с виджетами
- •Отображение помощи в просмотрщике помощи
- •Отображение помощи во всплывающем баллоне
- •Помощь без иконки "?"
- •Получение доступа к помощи из Вашего программного кода
- •Глава 16. Межпроцессные связи
- •Коннекции
- •Создание коннектора
- •Асинхронные клиентские вызовы
- •Соглашения по именам
- •ОтсылкаQnx-сообщений
- •Приём qnx-сообщений
- •Добавление обработчика ввода
- •Функции name_attach и PtAppAddInput()
- •Удаление обработчика ввода
- •Размер буфера сообщений
- •Пример – регистрация сообщений об ошибках
- •ИмпульсыPhoton'а
- •Приложение Photon'а, получающее импульсы
- •Создание импульса
- •Взведение импульса
- •Пересылка сообщения импульса испускателю импульсов
- •Регистрация обработчика ввода
- •Посылка импульса самому себе
- •Удаление импульса
- •Пример – очередь сообщений
- •Приложение Photon, отправляющее импульсы
- •Обработка сигналов
- •Добавление функции обработки сигналов
- •Удаление функции обработки сигналов
- •Другие механизмы ввода/вывода
- •Глава 17. Параллельные операции
- •Фоновое исполнение
- •Рабочие процедуры
- •Запирание библиотеки Photon'а
- •Несколько потоков, обрабатывающих события
- •Потоки реального времени
- •Модальные операции и потоки
- •Завершение многопоточной программы
- •Потоки и рабочие процедуры
- •Глава 18. Необработанное рисование и мультипликация
- •ВиджетPtRaw
- •Функция необработанного рисования
- •Определение холста необработанного виджета
- •Преобразование координат
- •Отсечение
- •Использование повреждённых черепиц (tiles)
- •Использование модели для более сложного рисования
- •Примеры простых функций прорисовки PtRaw
- •Атрибуты рисования
- •Общие атрибуты
- •Текстовые атрибуты
- •Атрибуты заполнения
- •Атрибуты черты (линии)
- •Дуги, эллипсы, многоугольники и прямоугольники
- •Прямоугольники
- •Прямоугольники со скруглёнными углами
- •Прямоугольники с фасками, прямоугольники и стрелки
- •Многоугольники
- •Перекрытие многоугольников
- •Дуги, круги, хорды и сектора
- •Спэны – сложные кривые
- •Линии, пиксели и массивы пикселей
- •Побитовые образы (bitmaps)
- •Образы (images)
- •Образы на основе палитры
- •Образы в непосредственных цветах
- •Образы в градиентных цветах
- •Создание образов
- •Кэширование образов
- •Прозрачность в образах
- •Использование хромоключа
- •Использование маски прозрачности
- •Отображение образов
- •Управление образами
- •Освобождение образов
- •Мультипликация
- •Создание серии кадров
- •Использование базы данных виджетов
- •Использование файла
- •Циклическая прокрутка кадров
- •Исключение мерцания в мультипликации
- •Функции контекста памяти
- •Режим рисования с прямым доступом
- •Внеэкранная видеопамять
- •Внеэкранные замки
- •Поддержка альфа-сопряжения
- •Поддержка хроматического ключа
- •Операции расширенного растра
- •Видеорежимы
- •Градиенты
- •Градиенты уровня драйвера
- •Градиенты уровня приложения
- •Видеоверлей
- •Поверхности
- •Окна просмотра
- •Api слоев
- •Глава 19. Шрифты
- •Метрики символа
- •Имена шрифтов
- •Запрос доступных шрифтов
- •Структура FontDetails
- •Генерирование имён шрифтов
- •Написание текста в прямоугольной области
- •Исправление повреждений в случае пропорционального шрифта текста
- •Глава 20. Печать
- •Контекст печати
- •Создание контекста печати
- •Модифицирование контекста печати
- •Запуск процесса печати
- •Печать требуемых виджетов
- •Печать новой страницы
- •Печать скроллирующихся виджетов
- •Приостановка и возобновление работы печати
- •Завершение работы печати
- •Освобождение контекста печати
- •Глава 21. "Тащить и бросать"
- •Механизм транспортировки
- •Использование "тащи и бросай"
- •Запуск операции "тащи и бросай"
- •Получение событий "тащи и бросай"
- •Виджет-источник
- •Виджет-адресат
- •Отмена операции "тащи и бросай"
- •Регистрация новых транспортных типов
- •Простая структура данных
- •Более сложная структура
- •Список ссылок на очистку
- •Эндиан-список
- •Fixup-список
- •Элемент реестра
- •Транспортные функции
- •Оба приложения
- •Приложение-источник
- •Приложение-адресат
- •Глава 22. Регионы
- •Координатное пространствоPhoton'а
- •Координаты региона
- •Начало координат региона
- •Начальные размеры и расположение
- •Начало координат в (0,0) и начальный прямоугольник в (0,0)
- •Начало координат в (0,0) и начальный прямоугольник не в (0,0)
- •Начало координат не в (0,0) и начальный прямоугольник не в (0,0)
- •О регионах потомка
- •Регионы и отсечение событий
- •Месторасположение и иерархия Иерархия регионов:
- •Родительский регион
- •Братские регионы
- •Месторасположение по умолчанию
- •ФлагPh_force_front
- •Задаваемое месторасположение
- •Использование регионов
- •Открытие региона
- •Размещение регионов
- •Изменение месторасположения региона
- •Изменение родителя
- •Задаваемые братья
- •Системная информация
- •Глава 23. События
- •События мыши
- •Нажатие кнопки
- •Отпускание кнопки
- •Несколько щелчков
- •Клавиши-модификаторы
- •Генерирование событий
- •Нацеливание на определённые регионы
- •Неисключительное событие
- •Направленное событие
- •Нацеливание на определённые виджеты
- •События, генерируемые клавиатурными клавишами
- •Координаты события
- •Обработчики события – необработанные и отфильтрованные ответные реакции
- •Накопление событий
- •Сжатие событий
- •Перетаскивание
- •Инициализация перетаскивания
- •Контурное перетаскивание
- •Непрозрачное перетаскивание
- •Обработка событий перетаскивания
- •Контурное перетаскивание
- •Непрозрачное перетаскивание
- •Глава 24. Управление окнами
- •Флаги управления окнами
- •Флаги отображения окна
- •Флаги управления окном
- •Оконные флаги уведомления
- •Ответная реакция уведомления
- •Пример: проверка закрытия окна
- •Получение и установка состояния окна
- •Управление несколькими окнами
- •Функции управления окнами
- •Запуск самостоятельного приложения
- •Модальные диалоги
- •Глава 25. Программирование в Photon'е без PhAb'а
- •Основные шаги
- •Компилирование и линковка неPhAb'овского приложения
- •Образец приложения
- •Что происходит
- •PtCreateWidget() – первый вызов
- •PtCreateWidget() – второй вызов
- •Подсоединение программного кода приложения к виджету
- •Ответные реакции
- •Обработка событий
- •Полный пример приложения
- •Приложение 1. Архитектура Photon'а
- •Пространство событий
- •Регионы и события
- •События
- •Начальный набор прямоугольников
- •Накопленный набор прямоугольников
- •Регионы
- •Чувствительность
- •Непрозрачность
- •Краткая сводка атрибутов
- •Регистрация событий (event logging)
- •Типы событий
- •Как владельцы регионов уведомляются о событиях
- •Упорядоченный опрос
- •Синхронное уведомление
- •Асинхронное уведомление
- •Регион устройств
- •Фокусировка указателя
- •Фокусировка клавиатуры
- •События перетаскивания
- •Событие "тащи и бросай"
- •Драйверы фотона
- •Драйверы ввода
- •Драйвер мыши
- •Драйвер клавиатуры
- •Драйверы вывода
- •Графический драйвер
- •Несколько графических драйверов
- •Драйверы, использующие отдельные регионы
- •Драйверы, использующие перекрывающиеся регионы
- •Инкапсуляция драйверов
- •Оконный менеджерPhoton'а
- •Регионы оконных рамок
- •Регион фокусировки
- •Регион рабочей области
- •Регион фона
- •Приложение 2. Обзор виджетов
- •Приложение 3. Поддержка многоязычности Unicode
- •Широкие и многобайтовые символы
- •Функции преобразования
- •Другие кодировки
- •Драйверы клавиатуры
- •Пример: текстовые виджеты
- •Слепые клавиши (deadkeys) и скомпонованные последовательности
- •Скомпонованные последовательностиPhoton'а
- •Приложение 4. Photon во встроенных системах
- •Принимаемые допущения
- •Введение
- •Шаги по загрузке Photon'а
- •Шаг 1. Экспорт переменной окруженияPhoton_path
- •Шаг 2. Запуск сервераPhoton'а
- •Шаг 3. Запуск драйверов ввода
- •Шаг 4. Запуск менеджера шрифтов
- •Конфигурирование шрифтов
- •Запуск сервера шрифтов
- •Шаг 5. Переключение в графический режим
- •Установка карты в правильный режим
- •Шаг 6. Запуск графического драйвера
- •Шаг 7. Запуск оконного менеджера
- •Необходимые файлы
- •Графика
- •Требуемые бинарные файлы
- •Требующиеся библиотеки
- •Требуемые шрифты
- •Службы шрифтов
- •Сборка всего этого в единое целое
- •Полезные советы
- •Приложение 5. Использование PhAb под Microsoft Windows
- •Photonв одиночном окне
- •ЗавершениеPhAb
- •Дополнительные опции
- •Файловые имена с буквами в обоих регистрах
- •Строка запуска отладчика
- •Функциональность панели управления ресурсами
- •Разработка индивидуальных виджетов иPhAb
- •Статическое линкование Ваших индивидуальных виджетов
- •Глоссарий
- •Ненеобходимое послесловие переводчика.
Построитель Photon'овских приложений – PhAb
microGUI (микроГрафический Пользовательский Интерфейс) включает очень мощный инструмент разработки, называемый Построитель Приложений Photon'а (Photon Application Builder, сокращённо PhAB или appBuilder). Это инструмент визуального проектирования, генерирующий базовый код С и/или С++, обеспечивающий пользовательский интерфейс для Ваших приложений. С помощью PhAB Вы можете в чрезвычайной степени уменьшить объём программирования, требуемый для построения Вашего приложения. Вы можете сэкономить не только время, необходимое для написания части Вашего кода, относящегося к пользовательскому интерфейсу, но также время на отладку и тестирование. PhAB поможет Вам получить Ваши приложения более быстро продаваемыми и с более профессиональными результатами.
PhAB берёт на себя задачу о проектировании и создании окон, меню, диалогов, иконок, виджетов (кнопок, меток и прочая), и обратной реакции виджетов со многими расширениями. PhAB даёт Вам возможность получить доступ и создавать модули PhAB внутри Вашего собственного кода. Он также предоставляет набор функций-утилит для установки базы данных виджетов, которые Вы сможете использовать многократно столько раз, сколько потребуется, а не создавать виджеты с нуля.
Получение немедленных результатов
PhAB позволяет Вам избежать процесса создания пользовательского интерфейса вручную методом проб и ошибок. Вместо написания кода для каждой кнопки, окна и иных виджетов, Вы создаёте желаемые вам виджеты просто "указав и кликнув1".
Как только вы создали виджет, PhAB отображает его на экране вместе со всеми ресурсами, управляющими тем, как данный виджет выглядит и ведёт себя. Изменить любой ресурс виджета легко – просто щёлкните на ресурсе, выберите новое значение, и дело сделано. Так же легко переместить виджет или изменить его размеры – просто укажите на виджет и перетащите его мышкой.
Концентрация на функциональности
Подобно другим средам разработки GUI (Графическим Пользовательским Интерфейсам), PhAB позволяет Вам прикрепить коды функций к ответным реакциям виджетов (callback – ответная реакция в вольном переводе, это термин PhAB, особая вкладка в PhAB. Прим. пер.), обеспечивая Вашему приложению функциональность. Например, Вы можете прикрепить код функции к кнопке, так что функция будет вызываться каждый раз, когда пользователь щёлкнет на кнопке.
Далее, PhAB не принуждает Вас писать и прикреплять код, необходимый для "склеивания" вместе различных частей Вашего интерфейса. Вместо этого Вы можете прикрепить ответные реакции виджетов непосредственно к любому окну, диалогу или меню. Единственный код, о котором Вам придётся беспокоится – это код, специфический для Вашего приложения.
Создание прототипов без написания кода
Как только Вы завершили любую часть пользовательского интерфейса, Вы можете, имея PhAB, сгенерировать весь С и/или С++ код, требуемый для того, чтобы оживить интерфейс, что означает, что Вы можете создать полностью прототип, не написав ни строчки кода.
После того, как Вы сгенерировали и откомпилировали код, Вы можете запустить прототип на выполнение, чтобы посмотреть, как интерфейс функционирует. Например, если Вы связали с диалогом кнопку, щелчок на кнопке приведёт к всплытию диалогового окна. Вы немедленно почувствуете, как интерфейс будет "ощущать" пользователя. Фактически PhAB делает процесс построения и тестирования настолько эффективным, что Вы можете даже сидеть с Вашими пользователями и проектировать прототипы вместе.
После завершения проектирования прототипа, Вы можете встроить его в Ваше действующее приложение. Или Вы можете в любой момент остановить разработку прототипа, написать какие-то функции обратной связи, поэкспериментировать, как они работают, и затем вернуться к проектированию прототипа. Вы всегда можете провести тонкую регулировку всех аспектов Вашего приложения и делать всё, что пожелаете, пока приложение работает.