Главная » Все файлы » Просмотр файлов из архивов » Документы » Руководство программиста в Photon

Руководство программиста в Photon, страница 2

2013-09-22СтудИзба

Описание файла

Документ из архива "Руководство программиста в Photon", который расположен в категории "". Всё это находится в предмете "программное обеспечение управляющих комплексов (поук)" из 9 семестр (1 семестр магистратуры), которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "поук" в общих файлах.

Онлайн просмотр документа "Руководство программиста в Photon"

Текст 2 страницы из документа "Руководство программиста в Photon"

Освобождение контекста печати 294

Пример 294

Глава 21. "Тащить и бросать" 297

Механизм транспортировки 297

Использование "тащи и бросай" 298

Запуск операции "тащи и бросай" 298

Получение событий "тащи и бросай" 300

Отмена операции "тащи и бросай" 302

Регистрация новых транспортных типов 303

Простая структура данных 303

Более сложная структура 305

Транспортные функции 308

Глава 22. Регионы 310

Координатное пространство Photon'а 310

Координаты региона 311

Начало координат региона 311

Начальные размеры и расположение 311

О регионах потомка 312

Регионы и отсечение событий 313

Месторасположение и иерархия 313

Использование регионов 316

Открытие региона 316

Размещение регионов 317

Системная информация 318

Глава 23. События 319

События мыши 319

Генерирование событий 321

Нацеливание на определённые регионы 322

Нацеливание на определённые виджеты 322

События, генерируемые клавиатурными клавишами 322

Координаты события 323

Обработчики события – необработанные и отфильтрованные ответные реакции 324

Накопление событий 325

Сжатие событий 326

Перетаскивание 326

Инициализация перетаскивания 326

Контурное перетаскивание 327

Непрозрачное перетаскивание 328

Обработка событий перетаскивания 328

Глава 24. Управление окнами 331

Флаги управления окнами 331

Флаги отображения окна 331

Флаги управления окном 332

Оконные флаги уведомления 332

Ответная реакция уведомления 333

Получение и установка состояния окна 334

Управление несколькими окнами 336

Функции управления окнами 336

Запуск самостоятельного приложения 336

Модальные диалоги 337

Глава 25. Программирование в Photon'е без PhAB'а 341

Основные шаги 341

Компилирование и линковка не PhAB'овского приложения 341

Образец приложения 342

Что происходит 342

Подсоединение программного кода приложения к виджету 344

Ответные реакции 345

Обработка событий 345

Полный пример приложения 345

Приложение 1. Архитектура Photon'а 347

Пространство событий 347

Регионы и события 348

События 348

Начальный набор прямоугольников 348

Накопленный набор прямоугольников 348

Регионы 349

Чувствительность 350

Непрозрачность 350

Краткая сводка атрибутов 350

Регистрация событий (event logging) 350

Модификация событий 351

Взаимосвязь родитель/потомок 351

Координатное пространство Photon'а 351

Корневой регион 351

Типы событий 351

Как владельцы регионов уведомляются о событиях 352

Упорядоченный опрос 352

Синхронное уведомление 352

Асинхронное уведомление 352

Регион устройств 353

Фокусировка указателя 353

Фокусировка клавиатуры 353

События перетаскивания 353

Событие "тащи и бросай" 353

Драйверы фотона 354

Драйверы ввода 354

Драйверы вывода 354

Оконный менеджер Photon'а 355

Регионы оконных рамок 356

Регион фокусировки 356

Регион рабочей области 356

Регион фона 356

ПРИЛОЖЕНИЕ 2. ОБЗОР ВИДЖЕТОВ 357

Приложение 3. Поддержка многоязычности Unicode 360

Широкие и многобайтовые символы 360

Unicode 360

UTF-8 кодирование 361

Функции преобразования 362

Другие кодировки 362

Драйверы клавиатуры 363

Слепые клавиши (dead keys) и скомпонованные последовательности 363

Скомпонованные последовательности Photon'а 364

Приложение 4. Photon во встроенных системах 367

Принимаемые допущения 367

Введение 367

Шаг 1. Экспорт переменной окружения PHOTON_PATH 368

Шаг 2. Запуск сервера Photon'а 369

Шаг 3. Запуск драйверов ввода 369

Шаг 4. Запуск менеджера шрифтов 370

Конфигурирование шрифтов 370

Запуск сервера шрифтов 371

Шаг 5. Переключение в графический режим 372

Установка карты в правильный режим 372

Шаг 6. Запуск графического драйвера 373

Шаг 7. Запуск оконного менеджера 374

Необходимые файлы 374

Шаг 8. Запуск Вашего приложения 374

Необходимые файлы 374

Пояснения 374

Флэш-файловая система 375

Графика 375

Пример 376

Требуемые бинарные файлы 376

Требующиеся библиотеки 377

Требуемые шрифты 378

Службы шрифтов 379

Сборка всего этого в единое целое 380

Полезные советы 382

Приложение 5. Использование PhAB под Microsoft Windows 383

Photon в одиночном окне 383

Завершение PhAB 383

Дополнительные опции 384

Файловые имена с буквами в обоих регистрах 384

DDD – Отладчик Отображения Данных 384

Строка запуска отладчика 385

Функциональность панели управления ресурсами 385

Разработка индивидуальных виджетов и PhAB 386

Статическое линкование Ваших индивидуальных виджетов 386

Глоссарий 388

Ненеобходимое послесловие переводчика. 398

Небольшое пояснение переводчика

Это «Руководство программиста в Photon» представляет собой ну очень черновой вариант перевода, осуществлённый исключительно в ДСП-целях. Перевод писался, во-первых, в спешке, во-вторых, урывками. Поэтому читатель не найдёт здесь ни выверенных формулировок, ни корректного соответствия оригиналу, ни точности в терминах, ни… В общем, это просто “stub”, как выражаются в этой книге. Когда переводчик не понимал того, что написано, он не пытался вникать в суть, а, махнув рукой, писал что-то полувнятное и мчался дальше.

Кроме того, читатель вправе спросить, почему такие странные рисунки. Отвечаю: да, конечно, можно было просто скопировать в документ рисунки из оригинала, которые, в свою очередь, являются просто съёмками с экрана. Но. Такие рисунки плохо обрабатываются матричным принтером (счастливым обладателем какового является переводчик) – медленно и грязно. Поэтому оригинальные рисунки и заменены тем, что можно было бы назвать карикатурами, если бы не явное отсутствие таланта вышеупомянутого переводчика. Впрочем, мне кажется, произвести замену этих рисунков на оригинальные достаточно легко и быстро выполнимо. Было бы желание.

В заключение прошу прощения у всех тех, кому придётся читать это. Не надо ругать переводчика, ибо это даже не случай «не стреляйте в тапёра – он играет как может»: пресловутый переводчик совсем не может. Просто нужда заставила, соображения, что программистам, не владеющим английским, лучше прочитать это, чем вообще ничего.

Очень черновой перевод by Зайцев В.

От того, кто правил

Я постарался сделать этот текст более удобным для чтения как с экрана, так и в отпечатанном виде. Кроме того, где это было необходимо привел текст в соответствие с текущей редакцией на сайте QSSL. Для лучшего восприятия текста я все-таки заменил большую часть картинок в тексте на оригинальные – думаю так проще людям, впервые увидившим PhAB и иже с ним разобраться что к чему.

Горе-редактор Попелов М.

Введение

Итак, Вы уже, вероятно, увидели и испытали различные приложения Photon'а – оконный менеджер, просмотрщик Help'ов, игры и прочая – и готовы разрабатывать свои собственные приложения. Эта глава знакомит Вас с базовыми понятиями и концепциями, которые Вы будете использовать при разработке Photon'овских приложений.

В неё включены:

  • обзор архитектуры Photon'а;

  • построитель Photon'овских приложений – PhAB;

  • концепции виджетов;

  • образец программирования;

  • библиотеки Photon'а;

  • обзор построения приложений с помощью PhAB;

  • написание приложений без PhAB.

Обзор архитектуры Photon'а

Менеджер Photon'а функционирует, как маленький сервер-процесс, включающий лишь несколько основных примитивов. Он создаёт трёхмерное пространство событий, заполненное областями и событиями. Этот менеджер не способен рисовать что-либо или работать с мышью, клавиатурой, пером.

Внешние, необязательные процессы – включая драйверы устройств, оконный менеджер или другие менеджеры – обеспечивают высокоуровневое функционирование оконной системы. Они связываются путём генерации событий в Photon'овском пространстве событий. Приложение Photon'а состоит из одной или более плоских, прямоугольных областей, которые действуют как "агенты" приложений в пространстве событий. Приложение рисует внутри области. Области сложены одна поверх другой в пространстве событий Photon'а. Область может иметь родительскую область и область одного с ней уровня (сёстры-области). Пользователь пребывает вовне пространства событий, наблюдая его спереди. Глубоко сзади в пространстве событий расположена особая область, называемая корневой областью (см. рис. 1).

Когда Вы запускаете приложение, Вы взаимодействуете с ним, и оно взаимодействует с другими приложениями и Photon'ом различным образом:

  • Вы нажимаете клавиши и кнопки мыши;

  • приложение выполняет графические операции;

  • и т.д.

Эти взаимодействия называются событиями, и они перемещаются между областями в пространстве событий подобно фотонам света.

Пространство событий

Рис. 1. Пространство событий Photon'а с точки зрения пользователя

Например:

Когда Вы нажимаете кнопку мыши, драйвер устройства генерирует событие и отсылает его назад через пространство событий (в сторону корневой области). Область, которая интересуется событием, может его перехватить и обработать, например, активизировав нажатие кнопки.

Когда Ваше приложение желает что-либо нарисовать, оно генерирует событие и отсылает его вперёд (в сторону пользователя). Драйвер может перехватить событие и сформировать изображение на экране.

Каждая область может определить, в каких областях она заинтересована, путём установки своей чувствительности и непрозрачности:

Область, чувствительная к определённому типу событий, уведомляет приложение всякий раз, когда такое событие пройдёт сквозь неё.

Область, непрозрачная к определённому типу событий, блокирует его путём отсечения своей собственной зоны от области событий.

Для получения более полной информации см. приложение к Архитектуре Photon'а.

Построитель 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 делает процесс построения и тестирования настолько эффективным, что Вы можете даже сидеть с Вашими пользователями и проектировать прототипы вместе.

После завершения проектирования прототипа, Вы можете встроить его в Ваше действующее приложение. Или Вы можете в любой момент остановить разработку прототипа, написать какие-то функции обратной связи, поэкспериментировать, как они работают, и затем вернуться к проектированию прототипа. Вы всегда можете провести тонкую регулировку всех аспектов Вашего приложения и делать всё, что пожелаете, пока приложение работает.

Сокращение размера кода

Вашему приложению может понадобиться использовать в различных частях его интерфейса одни и те же виджеты. С PhAB Вам не понадобится устанавливать их каждый раз, когда в этом появится нужда. Вместо этого Вы однажды определяете виджеты, помещаете их в базу данных виджетов и затем, используя функции языка С, обеспечиваемые PhAB, используете эти виджеты, когда Вам понадобится. Применяя такой подход, Вы можете уменьшить размер кода, требуемого для создания виджета, до одной строки.

Создание последовательных приложений

С PhAB Вам редко понадобится разрабатывать приложение с нуля. Например, если Вы уже создали окна и диалоги в существующем приложении, вы можете свободно перебросить их в новое приложение. Вы можете также создать центральную базу данных виджетов, чтобы импортировать их во все Ваши приложения для создания единообразного вида и реагирования.

Создание всех разновидностей приложений

С PhAB вы можете ускорить разработку без ухудшения функциональности. Вы можете создавать все разновидности приложений. Например, мы использовали PhAB для разработки почти всех приложений, поставляемых с Photon'ом, включая просмотрщик файлов помощи (Helpviewer), терминал (Terminal application), менеджер рабочего стола (Desktop Manager), копировщик экрана (Snapshot), все игры и “демки” – даже, собственно, сам PhAB!

Лучшим введением в PhAB является использование его, так что начинайте работать, используя руководства. Через очень короткое время Вы будете способны собрать воедино очень специализированные прототипы. Когда Вы будете готовы начать программирование своего приложения, Вы сможете прочитать разделы, имеющие отношение к тем виджетам, которые Вы захотите использовать. Мы снабдили полными исходными кодами все “демки” и игры, созданные с помощью PhAB. Вы можете загрузить любой из них в PhAB и изучить для использования идей в Ваших собственных приложениях. Хорошим примером, использующим большую часть возможностей PhAB, является приложение ВидеоПокер.

Концепции виджетов

При создании нового пользовательского интерфейса (UI), проще собрать интерфейс из набора стандартных компонентов, таких как ползунки, списки, меню и кнопки, нежели реализовывать каждый из элементов UI с нуля. Каждый стандартный компонент, включённый в UI, является объектом, называемым виджетом.

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5209
Авторов
на СтудИзбе
430
Средний доход
с одного платного файла
Обучение Подробнее