29
Maria Alice G. V. Ferreira – EP – USP - 2003 Motif Maria Alice G. V. Ferreira 2003

Maria Alice G. V. Ferreira – EP – USP - 2003 Motif Maria Alice G. V. Ferreira 2003

Embed Size (px)

Citation preview

Page 1: Maria Alice G. V. Ferreira – EP – USP - 2003 Motif Maria Alice G. V. Ferreira 2003

Maria Alice G. V. Ferreira – EP – USP - 2003

Motif

Maria Alice G. V. Ferreira2003

Page 2: Maria Alice G. V. Ferreira – EP – USP - 2003 Motif Maria Alice G. V. Ferreira 2003

Maria Alice G. V. Ferreira – EP – USP - 2003

MOTIF - Padrão para interfaces

“Mecanismo e não política” - critério de projeto do X-Windows fornece um mecanismo para a implementação de interfaces Homem-máquina, mas não força a aparência dos programas que utilizam o padrão.• portabilidade• “look and feel” próprio de cada projetista não tolhe a

criatividade. X Intrinsics (Xt) - introduz o conceito de “widget”: um

objeto auto-suficiente, que fornece algum tipo de funcionalidade de interface (produzido pelo X Consortium)

Page 3: Maria Alice G. V. Ferreira – EP – USP - 2003 Motif Maria Alice G. V. Ferreira 2003

Maria Alice G. V. Ferreira – EP – USP - 2003

Arquitetura do MOTIF

Desenvolvimento por camadas

X-Protocol

Aplicativo

MOTIF (Xm)

X Intrinsics (Xt)

Xlib

Page 4: Maria Alice G. V. Ferreira – EP – USP - 2003 Motif Maria Alice G. V. Ferreira 2003

Maria Alice G. V. Ferreira – EP – USP - 2003

Xlib, Xt e Xm Xlib - fornece a interface em linguagem C que permite ao

aplicativo se comunicar com o X-Protocol Xt - fornece elementos de nível mais alto que o Xlib para o

programador: Objetos, que são as widgets Manipulação da geometria dos widgets Tratamento dos eventos: identificação e despacho

Xm – Aspectos de nível de abstração mais alto: aspecto visual tridimensional, drag and drop, gerenciador de janelas etc

UIL – User Interface Language

Page 5: Maria Alice G. V. Ferreira – EP – USP - 2003 Motif Maria Alice G. V. Ferreira 2003

Maria Alice G. V. Ferreira – EP – USP - 2003

Vantagens da orientação a objetos Classe e instância Herança - novos objetos podem ser gerados a partir de

objetos já existentes, de forma organizada:• os programas que usavam os objetos “antigos”

continuam usando estes objetos• os programas que necessitam dos novos objetos utilizam

somente os “novos” objetos - os herdados Hierarquia de objetos - conjunto dos objetos antigos

(ancestrais) e novos (descendentes) --> facilita a reuti-lização das classes

Valem todos os termos definidos para objetos. Cada “widget” do Motif é um objeto.

Page 6: Maria Alice G. V. Ferreira – EP – USP - 2003 Motif Maria Alice G. V. Ferreira 2003

Maria Alice G. V. Ferreira – EP – USP - 2003

Figura 2.1. - Programming Motif - Keith D. Gregory- Springer-Verlag, New York, 1992

RectObj Object

Core XmGadget

Composite XmPrimitive

Constraint Shell

XmManager

Page 7: Maria Alice G. V. Ferreira – EP – USP - 2003 Motif Maria Alice G. V. Ferreira 2003

Maria Alice G. V. Ferreira – EP – USP - 2003

Árvore de Classes do Motif A árvore de classe baseia-se no conceito de Herança, central à

implementação do Motif: classes de suporte classes instanciáveis

RectObj, Object, Core - raiz dos conjuntos de widgets. Fornecem funções de instanciação e manutenção do nível básico do sistema de janelas.

Xm Primitive - classe que suporta as widgets primitivas, ou seja, as que não são superclasses para outras classes. Fornecem detalhes de aparência às primitivas.

Composite - widgets que podem dar origem a outras widgets - definidas por Xt.

Page 8: Maria Alice G. V. Ferreira – EP – USP - 2003 Motif Maria Alice G. V. Ferreira 2003

Maria Alice G. V. Ferreira – EP – USP - 2003

Algumas implementações para MOTIF

Fonte: User Interface Software Tools - Brad A. Myers - Submitted for Publication, 1994.

Motif

Motif MotifMotif

AthenaOpenLook

Xt Intrinsics

Xt Interviews Garnet

Page 9: Maria Alice G. V. Ferreira – EP – USP - 2003 Motif Maria Alice G. V. Ferreira 2003

Maria Alice G. V. Ferreira – EP – USP - 2003

Conceitos

Modelo centrado no usuário – o usuário detém o controle da interface.

Separação entre aplicação e interface Mecanismo de “callback” típico “Widgets” com restrições (constraints) – objetos

que estão “amarrados” aos objetos-pai por compromissos especificados.

Page 10: Maria Alice G. V. Ferreira – EP – USP - 2003 Motif Maria Alice G. V. Ferreira 2003

Maria Alice G. V. Ferreira – EP – USP - 2003

Conceitos Recursos (atributos) - interface entre o programador e o

código interno da “widget”. Recursos possuem valores associados. Uma “widget” típica possui dúzias de recursos, mas a maioria é herdada da superclasse-mãe. Os recursos são identificados por nomes (ex: topShadowColor). Para se atribuir ou consultar um recurso em um programa é necessário conhecer-se o seu nome.

Valor Default - é o valor atribuído ao recurso caso o projetista não atribua um valor próprio, no programa.

Arquivos de recursos - arquivos em formato texto, que especificam os valores iniciais para os recursos das “widgets” de um programa (similares aos *.sui da SUIT).

Page 11: Maria Alice G. V. Ferreira – EP – USP - 2003 Motif Maria Alice G. V. Ferreira 2003

Maria Alice G. V. Ferreira – EP – USP - 2003

Exemplo

Label_2

Label_1

Label_1

Label_2

Form_1

Form_2

TheProg

Form_1

Form_2 Label_1

Label_1 Label_2

Label_2

TheProgTheProg.Form_1TheProg.Form_1.Label_1TheProg.Form_1.Label_2

TheProg.Form_1.Form_2TheProg.Form_1.Form_2.Label_1TheProg.Form_1.Form_2.Label_2

Page 12: Maria Alice G. V. Ferreira – EP – USP - 2003 Motif Maria Alice G. V. Ferreira 2003

Maria Alice G. V. Ferreira – EP – USP - 2003

Resource file – corresponde a figura anterior (trecho)

! Sample resource file to produce output of figure 3.3!*.foreground: Black*.background: White

TheProg.Form_1.height: 200TheProg.Form_1.width: 300TheProg.Form_1.background: Gray25

*Form_2.height: 100*Form_2.width: 300*Form_2.background: Gray50

*XmLabel1.height: 50*XmLabel1.width: 100

*.Label_1.fontList: -*-times-medium-r-*--*-180-*

*.Form_1.Label_2.fontList: -*-times-medium-r-*--*-180-**.Form_1.Label_1.alignment: ALIGNMENT_BEGINNING*.Form_1.Label_2.alignment: ALIGNMENT_END

Page 13: Maria Alice G. V. Ferreira – EP – USP - 2003 Motif Maria Alice G. V. Ferreira 2003

Maria Alice G. V. Ferreira – EP – USP - 2003

Eventos tratados no sentido da programação por eventos o programador deve especificar funções a serem execu-tadas

quando da ocorrência de um evento e a “widget” é responsável em chamá-las “callback functions”

XtMainLoop - é a função responsável pelo gerenciamento dos eventos e seu encaminhamento apropriado às “widgets” responsáveis pelo seu tratamento.

o evento de mouse é encaminhado a janela de menor prioridade na hierarquia, localizada na posição em que ocorre o evento. Determina-se se esta janela deseja tratar o evento, o que é feito através de “event mask”.

o evento de teclado é encaminhado à janela que possui o focus do teclado.

Page 14: Maria Alice G. V. Ferreira – EP – USP - 2003 Motif Maria Alice G. V. Ferreira 2003

Maria Alice G. V. Ferreira – EP – USP - 2003

Eventos (cont)

“timestamp” - contagem em milisegundos a partir do início de operação do servidor (32 bits); reiniciado a cada 49,71 dias, aproximadamente.

A maioria dos eventos são manipulados pelas próprias “widgets”. Os programas recebem os eventos registrando um gerenciador de eventos para cada “widget”. O nome do evento é especificado, juntamente com o nome da rotina que irá manipulá-lo. Cada “widget” mantém uma lista destes gerenciadores para cada tipo de evento.

Os eventos são registrados através de XtAddEventHandler; esta função adiciona um gerenciador de eventos à lista de cada “widget”; se existem vários gerenciadores para um determinado evento, eles são chamados sem ordem pré-estabelecida.

Page 15: Maria Alice G. V. Ferreira – EP – USP - 2003 Motif Maria Alice G. V. Ferreira 2003

Maria Alice G. V. Ferreira – EP – USP - 2003

Tipos de Eventos

Categoria EventosClient Communications ClientMessage

PropertyNotifySelectionClearSelectionNotifySelectionRequest

Colormap State ColormapNotifyExposure Expose

GraphicsExposeNoExpose

Keyboard Focus FocusInFocusOut

Keyboard Input KeyPressKeyRelease

Page 16: Maria Alice G. V. Ferreira – EP – USP - 2003 Motif Maria Alice G. V. Ferreira 2003

Maria Alice G. V. Ferreira – EP – USP - 2003

Tipos de Eventos (cont)

Categoria EventosPointer / Button ButtonPress

ButtonReleaseEnterNotifyLeaveNotifyMotionNotify

Keymap State KeymapNotifyStructure Control CirculateRequest

ConfigureRequestMapRequestResizeRequest

Page 17: Maria Alice G. V. Ferreira – EP – USP - 2003 Motif Maria Alice G. V. Ferreira 2003

Maria Alice G. V. Ferreira – EP – USP - 2003

Tipos de EventosCategoria EventosWindow State CirculateNotify

ConfigureNotify CreateNotifyDestroyNotifyGravityNotifyMapNotifyMappingNotifyReparentNotifyUnmapNotifyVisibilityNotify

Page 18: Maria Alice G. V. Ferreira – EP – USP - 2003 Motif Maria Alice G. V. Ferreira 2003

Maria Alice G. V. Ferreira – EP – USP - 2003

Máscaras de Eventos(na forma: Máscara/Evento/Comentário)

ButtonMotionNotify / MotionNotify / informa se algum botão do mouse foi pressionado enquanto o mouse se movimenta

Button1MotionMask / MotionNotify / informa se o botão 1 do mouse foi pressionado enquanto o mouse se movimenta

Idem para os demais botões ButtonPressMask / ButtonPress / informa se algum botão

do mouse foi pressionado ButtonReleaseMask / ButtonRelease / informa se algum

botão do mouse foi soltoetc..........

Page 19: Maria Alice G. V. Ferreira – EP – USP - 2003 Motif Maria Alice G. V. Ferreira 2003

Maria Alice G. V. Ferreira – EP – USP - 2003

Árvore de classe de Botões do Motif

RectObj Object

Core XmGadget

Composite XmPrimitive

XmArrowButton XmLabel

XmDrawnButton XmToggleButton

XmCascadeButton XmPushButton

Page 20: Maria Alice G. V. Ferreira – EP – USP - 2003 Motif Maria Alice G. V. Ferreira 2003

Maria Alice G. V. Ferreira – EP – USP - 2003

XmPushButton - atributos

Page 21: Maria Alice G. V. Ferreira – EP – USP - 2003 Motif Maria Alice G. V. Ferreira 2003

Maria Alice G. V. Ferreira – EP – USP - 2003

XmPushButton – atributos(herdados – parcial)

Page 22: Maria Alice G. V. Ferreira – EP – USP - 2003 Motif Maria Alice G. V. Ferreira 2003

Maria Alice G. V. Ferreira – EP – USP - 2003

XmPushButton – atributos(herdados – parcial)

Page 23: Maria Alice G. V. Ferreira – EP – USP - 2003 Motif Maria Alice G. V. Ferreira 2003

Maria Alice G. V. Ferreira – EP – USP - 2003

XmPushButton – atributos(herdados – parcial)

Page 24: Maria Alice G. V. Ferreira – EP – USP - 2003 Motif Maria Alice G. V. Ferreira 2003

Maria Alice G. V. Ferreira – EP – USP - 2003

XMotion Event

typedef struct {int type;unsigned long serial;Boolean send_event;Display *display;Window window;Window root;Window subwindow;Time time; //timestampint x,y; // da janela onde ocorre o eventoint x_root, y_root;unsigned int_state; //estado dos modificadores, ao //ocorrer o eventochar is_hint;Boolean same_screen;} XMotionEvent;

Page 25: Maria Alice G. V. Ferreira – EP – USP - 2003 Motif Maria Alice G. V. Ferreira 2003

Maria Alice G. V. Ferreira – EP – USP - 2003

Program Template

#include <Xm/Xm.h>widget appshell;

void main(argc,argv)int argc;char *argv[];

{appshell = XtInitialize argv[0],”Example_template”,NULL,0,&argc,&argv);// Incluir código do programa

XtRealizeWidget (appshell);XtMainLoop();

}

Carrega X11/Intrinsic.h

Realiza a captura de eventos

Page 26: Maria Alice G. V. Ferreira – EP – USP - 2003 Motif Maria Alice G. V. Ferreira 2003

Maria Alice G. V. Ferreira – EP – USP - 2003

Gabarito do programa (comentários)

• Shell - uma “widget que fornece uma ligação entre o programa e a árvore-raiz. Permite a troca de informação entre o programa e o Window Manager

• appshell - o shell de nível mais alto em torno de um programa

Page 27: Maria Alice G. V. Ferreira – EP – USP - 2003 Motif Maria Alice G. V. Ferreira 2003

Maria Alice G. V. Ferreira – EP – USP - 2003

// inserir código

the_label = XmCreateLabel (appshell,”TheLabel”,NULL,0);XtManageChild (the_label);XtAddEventHandler(the_label,PointerMotionMask|

ButtonPressMask| EnterWindowMask| LeaveWindowMask, False,EvtHandler,NULL);

Eventos a serem notificados

Nome do gerenciador de eventos

Page 28: Maria Alice G. V. Ferreira – EP – USP - 2003 Motif Maria Alice G. V. Ferreira 2003

Maria Alice G. V. Ferreira – EP – USP - 2003

Gerenciador de eventos

void EvtHandler(w,client_data,evt_ptr);widget w;caddr_t client_data;XEvent *evt_ptr;{

switch (evt_ptr->type){case ButtonPress:.....break;case EnterNotify:.....break;case LeaveNotify:.....break;case MotionNotify:....break;default:break;}

}

Page 29: Maria Alice G. V. Ferreira – EP – USP - 2003 Motif Maria Alice G. V. Ferreira 2003

Maria Alice G. V. Ferreira – EP – USP - 2003

Referências bibliográficas

Programming Motif - Keith D. Gregory - Springer-Verlag, New York, 1992.

Links: http://www.opengroup.org/openmotif/