Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Литература / photon_old.doc
Скачиваний:
40
Добавлен:
02.04.2015
Размер:
7.88 Mб
Скачать
    1. Полный пример приложения

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

Вот полный текст программного кода нашего образца программы с этими изменениями:

#include <stdio.h>

#include <stdlib.h>

#include <Pt.h>

int main( int argc, char *argv[] ) {

PtArg_t args[3];

int n;

PtWidget_t *window;

int push_button_cb( PtWidget_t *, void *, PtCallbackInfo_t *);

PtCallback_t callbacks[] = {{push_button_cb, NULL}};

char Helvetica14[MAX_FONT_TAG];

if (PtInit(NULL) = = -1) PtExit(EXIT_FAILURE);

window = PtCreateWidget(PtWindow, Pt_NO_PARENT, 0, NULL);

n = 0;

PtSetArg(&args[n++], Pt_ARG_TEXT_STRING, "Нажмите для выхода", 0);

/* Использовать, если доступен, шрифт 14-пунктовый жирный Helvetica */

if (PfGenerateFontName("Helvetica", 0, 14, Helvetica14) = = NULL) {

perror("Невозможно сгенерировать имя шрифта");

}

else {

PtSetArg(&args[n++], Pt_ARG_TEXT_FONT, Helvetica14, 0);

}

PtSetArg(&args[n++], Pt_CB_ACTIVATE, callbacks, sizeof(callbacks)/sizeof(callbacks[0]));

PtCreateWidget(PtButton, window, n, args);

PtRealizeWidget(window);

PtMainLoop();

return (EXIT_SUCCESS);

} // main()

int push_button_cb(PtWidget_t *w, void *data, PtCallbackInfo_t *cbinfo) {

printf( "Я была нажата\n" );

PtExit( EXIT_SUCCESS );

/* Эта строка никогда не будет исполняться, но она делает счастливым компилятор */

return( Pt_CONTINUE );

}

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

В этом приложении представлен технический обзор архитектуры Photon'а. Он включает:

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

  • События

  • Регионы

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

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

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

  • Регион драйверов

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

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

Важнейшей характерной чертой Photon'а является способ представления графических приложений. Все приложения Photon'а состоят из одного или более прямоугольников, называемых регионами. Эти регионы пребывают в неком абстрактном трёхмерном пространстве событий; пользователь смотрит на это пространство извне.

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

Регионы могут генерировать и собирать объекты, называемые событиями. Эти события могут перемещаться в одном из двух направлений через пространство событий (т.е. либо к пользователю, либо от него). Перемещаясь сквозь пространство событий, события взаимодействуют с другими регионами – таким образом приложения взаимодействуют друг с другом. Процессом, поддерживающим эту простую архитектуру, является менеджер Photon.

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

Соседние файлы в папке Литература