
- •Руководство программиста в Photon
- •Перевод выполнен Владимиром Зайцевым, г.Харьков Редактирование текста выполнено Михаилом Поспеловым, г.Калуга
- •Глава 1. Уроки 34
- •Глава 2. Окружение PhAb 62
- •Глава 3. Работа с приложениями 74
- •Глава 4. Работа с модулями 82
- •Глава 5. Создание виджетов в PhAb 97
- •Глава 6. Редактирование ресурсов и ответных реакций в PhAb 113
- •Глава 7. Управление геометрией 133
- •Глава 8. Генерирование, компилирование и запуск программного кода на исполнение 145
- •Глава 9. Работа с программным кодом 157
- •Глава 10. Манипулирование ресурсами в коде приложения 174
- •Глава 11. Управление виджетами в исходном коде приложения 185
- •Глава 12. Поверхности управления 195
- •Глава 13. Доступ к модулям PhAb из программного кода 201
- •Глава 14. Поддержка международных языков 208
- •Глава 15. Контекстно-чувствительная помощь 218
- •Глава 16. Межпроцессные связи 223
- •Глава 17. Параллельные операции 238
- •Глава 18. Необработанное рисование и мультипликация 248
- •Глава 19. Шрифты 285
- •Глава 20. Печать 296
- •Глава 21. "Тащить и бросать" 305
- •Глава 22. Регионы 318
- •Глава 23. События 327
- •Глава 24. Управление окнами 339
- •Глава 25. Программирование в Photon'е без PhAb'а 349
- •Небольшое пояснение переводчика
- •Введение
- •Обзор архитектуры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
- •Статическое линкование Ваших индивидуальных виджетов
- •Глоссарий
- •Ненеобходимое послесловие переводчика.
Глава 21. "Тащить и бросать" 305
Механизм транспортировки 305
Рис. 21-1. Упакованные данные и заголовки 305
Использование "тащи и бросай" 306
Запуск операции "тащи и бросай" 306
Пример 307
Получение событий "тащи и бросай" 308
Виджет-источник 308
Виджет-адресат 309
Отмена операции "тащи и бросай" 310
Регистрация новых транспортных типов 311
Простая структура данных 311
Более сложная структура 313
Список ссылок на очистку 313
Эндиан-список 313
Fixup-список 314
Элемент реестра 316
Транспортные функции 316
Оба приложения 316
Приложение-источник 316
Приложение-адресат 317
Глава 22. Регионы 318
Координатное пространство Photon'а 318
Рис. 22-1. Координатное пространство Photon'а 318
Координаты региона 319
Начало координат региона 319
Начальные размеры и расположение 319
Начало координат в (0,0) и начальный прямоугольник в (0,0) 319
Начало координат в (0,0) и начальный прямоугольник не в (0,0) 319
Начало координат не в (0,0) и начальный прямоугольник не в (0,0) 320
О регионах потомка 320
Регионы и отсечение событий 321
Рис. 22-2. Регионы и отсечение событий 321
Месторасположение и иерархия 321
Рис. 22-3. Иерархия регионов типичной системы Photon'а 321
Родительский регион 322
Братские регионы 322
Месторасположение по умолчанию 322
Флаг Ph_FORCE_FRONT 323
Задаваемое месторасположение 324
Использование регионов 324
Открытие региона 324
Размещение регионов 325
Изменение месторасположения региона 325
Изменение родителя 325
Задаваемые братья 325
Системная информация 326
Глава 23. События 327
События мыши 327
Нажатие кнопки 327
Отпускание кнопки 327
Несколько щелчков 327
Клавиши-модификаторы 328
Генерирование событий 329
Нацеливание на определённые регионы 330
Неисключительное событие 330
Направленное событие 330
Нацеливание на определённые виджеты 330
События, генерируемые клавиатурными клавишами 330
Координаты события 331
Обработчики события – необработанные и отфильтрованные ответные реакции 332
Накопление событий 333
Сжатие событий 334
Перетаскивание 334
Инициализация перетаскивания 334
Контурное перетаскивание 335
Непрозрачное перетаскивание 336
Обработка событий перетаскивания 336
Контурное перетаскивание 336
Непрозрачное перетаскивание 337
Глава 24. Управление окнами 339
Флаги управления окнами 339
Флаги отображения окна 339
Флаги управления окном 340
Оконные флаги уведомления 340
Ответная реакция уведомления 341
Пример: проверка закрытия окна 341
Получение и установка состояния окна 342
Управление несколькими окнами 344
Функции управления окнами 344
Запуск самостоятельного приложения 344
Модальные диалоги 344
Глава 25. Программирование в Photon'е без PhAb'а 349
Основные шаги 349
Компилирование и линковка не PhAB'овского приложения 349
Образец приложения 350
Что происходит 350
PtInit() 350
PtCreateWidget() – первый вызов 351
PtSetArg() 351
PtCreateWidget() – второй вызов 351
PtRealizeWidget() 351
PtMainLoop() 352
Подсоединение программного кода приложения к виджету 352
Ответные реакции 352
Обработка событий 353
Полный пример приложения 353
Приложение 1. Архитектура Photon'а 355
Пространство событий 355
Пространство событий 355
Регионы и события 356
События 356
Начальный набор прямоугольников 356
Набор прямоугольников события 356
Накопленный набор прямоугольников 356
Регионы 357
Расщеплённый образ регионов Photon'а 357
Чувствительность 357
Непрозрачность 358
Краткая сводка атрибутов 358
Регистрация событий (event logging) 358
Модификация событий 358
Взаимосвязь родитель/потомок 359
Координатное пространство Photon'а 359
Корневой регион 359
Типы событий 359
Как владельцы регионов уведомляются о событиях 360
Упорядоченный опрос 360
Синхронное уведомление 360
Асинхронное уведомление 360
Регион устройств 360
Фокусировка указателя 361
Фокусировка клавиатуры 361
События перетаскивания 361
Событие "тащи и бросай" 361
Драйверы фотона 362
Драйверы ввода 362
Драйвер мыши 362
Драйвер клавиатуры 362
Драйверы вывода 362
Графический драйвер 362
Несколько графических драйверов 363
Драйверы, использующие отдельные регионы 363
Драйверы, использующие перекрывающиеся регионы 363
Инкапсуляция драйверов 363
Оконный менеджер Photon'а 363
Регионы оконных рамок 364
Регион фокусировки 364
Регион рабочей области 364
Регион фона 364
ПРИЛОЖЕНИЕ 2. ОБЗОР ВИДЖЕТОВ 365
Приложение 3. Поддержка многоязычности Unicode 368
Широкие и многобайтовые символы 368
Unicode 368
UTF-8 кодирование 369
Функции преобразования 369
Другие кодировки 370
Драйверы клавиатуры 371
Пример: текстовые виджеты 371
Слепые клавиши (dead keys) и скомпонованные последовательности 371
Скомпонованные последовательности Photon'а 372
Приложение 4. Photon во встроенных системах 375
Принимаемые допущения 375
Введение 375
Шаги по загрузке Photon'а 376
Шаг 1. Экспорт переменной окружения PHOTON_PATH 376
Шаг 2. Запуск сервера Photon'а 376
Шаг 3. Запуск драйверов ввода 377
Шаг 4. Запуск менеджера шрифтов 377
Конфигурирование шрифтов 378
Запуск сервера шрифтов 379
Шаг 5. Переключение в графический режим 379
Установка карты в правильный режим 380
Шаг 6. Запуск графического драйвера 381
Шаг 7. Запуск оконного менеджера 381
Необходимые файлы 382
Шаг 8. Запуск Вашего приложения 382
Необходимые файлы 382
Пояснения 382
Флэш-файловая система 382
Графика 383
Пример 384
Требуемые бинарные файлы 384
Требующиеся библиотеки 385
Требуемые шрифты 386
Службы шрифтов 387
Сборка всего этого в единое целое 387
Полезные советы 389
Приложение 5. Использование PhAB под Microsoft Windows 391
Photon в одиночном окне 391
Завершение PhAB 391
Дополнительные опции 392
Файловые имена с буквами в обоих регистрах 392
DDD – Отладчик Отображения Данных 392
Строка запуска отладчика 393
Функциональность панели управления ресурсами 393
Разработка индивидуальных виджетов и PhAB 394
Статическое линкование Ваших индивидуальных виджетов 394
Глоссарий 396
Ненеобходимое послесловие переводчика. 406