27
1 SUIT - S imple U ser I nterface T oolkit Maria Alice Grigas Varella Ferreira EP-USP Abril 2003

1 SUIT - Simple User Interface Toolkit Maria Alice Grigas Varella Ferreira EP-USP Abril 2003

Embed Size (px)

Citation preview

Page 1: 1 SUIT - Simple User Interface Toolkit Maria Alice Grigas Varella Ferreira EP-USP Abril 2003

1

SUIT - Simple User Interface Toolkit

Maria Alice Grigas Varella FerreiraEP-USP

Abril 2003

Page 2: 1 SUIT - Simple User Interface Toolkit Maria Alice Grigas Varella Ferreira EP-USP Abril 2003

2Maria Alice Grigas Varella Ferreira – EP-USP

SUIT - Simple User Interface Toolkit

Biblioteca de procedimentos que ajuda os programadores a aprenderem a criação de interfaces gráficas (visa o aprendizado)UNIX, DOS e WindowsImplementa a habilidade de mover janelas e redimensioná-las em tempo de execução da aplicaçãoOrientação a objeto (porém não é orientada a objetos, realmente)

Page 3: 1 SUIT - Simple User Interface Toolkit Maria Alice Grigas Varella Ferreira EP-USP Abril 2003

3Maria Alice Grigas Varella Ferreira – EP-USP

Orientação a objetos

Segundo Rambaugh (1991) um objeto é “um elemento que combina estruturação de dados com procedimentos”.

ProcessosDados

métodos (procedimentos)

Page 4: 1 SUIT - Simple User Interface Toolkit Maria Alice Grigas Varella Ferreira EP-USP Abril 2003

4Maria Alice Grigas Varella Ferreira – EP-USP

Vantagens da orientação a objetos

Encapsulamento de dados – os dados são manipulados somente através dos métodos definidos para eles

ProcessosDados

Métodos (procedimentos)

Page 5: 1 SUIT - Simple User Interface Toolkit Maria Alice Grigas Varella Ferreira EP-USP Abril 2003

5Maria Alice Grigas Varella Ferreira – EP-USP

Vantagens da orientação a objetos

Abstração – não é necessário conhecer o interior do objeto; é preciso conhecer só o seu funcionamento

Processos

Page 6: 1 SUIT - Simple User Interface Toolkit Maria Alice Grigas Varella Ferreira EP-USP Abril 2003

6Maria Alice Grigas Varella Ferreira – EP-USP

Vantagens da orientação a objetos

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 herdadosHierarquia de objetos - conjunto dos objetos antigos (ancestrais) e novos (descendentes)

Page 7: 1 SUIT - Simple User Interface Toolkit Maria Alice Grigas Varella Ferreira EP-USP Abril 2003

7Maria Alice Grigas Varella Ferreira – EP-USP

Hierarquia de objetos

Sim Não

Tem certeza?

Finalizar

RAIZ

Caixa de diálogo Botão Finalizar

Botão Sim Botão Não Mensagem

Page 8: 1 SUIT - Simple User Interface Toolkit Maria Alice Grigas Varella Ferreira EP-USP Abril 2003

8Maria Alice Grigas Varella Ferreira – EP-USP

Widgets – objetos de telaBounded value - potenciômetroMenu - coleção de botõesScrollable list - scroll barRadio buttons - seleção de apanas uma opção dentro de um conjunto de opçõesText editor - padrão EmacsColor chips - para seleção de uma cor atualType in box - texto de uma linhaOn / Off switchButtons – botões

Page 9: 1 SUIT - Simple User Interface Toolkit Maria Alice Grigas Varella Ferreira EP-USP Abril 2003

9Maria Alice Grigas Varella Ferreira – EP-USP

Que são widgets

Cada widget caracteriza uma classeCada elemento que aparece na tela, e que é de um determinado tipo de widget é uma instância da classeCada objeto possui um conjunto de propriedades

Sim Não

Tem certeza?

Duas instâncias da classe Button

Page 10: 1 SUIT - Simple User Interface Toolkit Maria Alice Grigas Varella Ferreira EP-USP Abril 2003

10Maria Alice Grigas Varella Ferreira – EP-USP

Quem são os widgets

O sistema fornece uma Biblioteca de Objetos já definidos: menus, caixas de diálogo, scroll bars, botões, etc.

A Biblioteca contém além dos objetos de interface os elementos gráficos mais comuns em Computação Gráfica bidimensional, tais como linhas, pontos, círculos e ícones, importados da SRGP.

Para ser um bom projetista, utilizador de toolkits, deve-se, antes de mais nada, conhecer muito bem a biblioteca de objetos.

Page 11: 1 SUIT - Simple User Interface Toolkit Maria Alice Grigas Varella Ferreira EP-USP Abril 2003

11Maria Alice Grigas Varella Ferreira – EP-USP

Page 12: 1 SUIT - Simple User Interface Toolkit Maria Alice Grigas Varella Ferreira EP-USP Abril 2003

12Maria Alice Grigas Varella Ferreira – EP-USP

Page 13: 1 SUIT - Simple User Interface Toolkit Maria Alice Grigas Varella Ferreira EP-USP Abril 2003

13Maria Alice Grigas Varella Ferreira – EP-USP

Como manipular os Widgets

Cada classe de objeto apresenta um conjunto de atributos particulares (propriedades) , bem como de métodos, os quais se acham ligados às características de funcionamento de cada classe. Assim, para que o programador possa instanciar um objeto, ele deve antes de mais nada saber como esta classe funciona e quais os atributos do protótipo.

Não é fácil conhecer todos os procedimentos e atributos de todas as classes!

Page 14: 1 SUIT - Simple User Interface Toolkit Maria Alice Grigas Varella Ferreira EP-USP Abril 2003

14Maria Alice Grigas Varella Ferreira – EP-USP

Como usar os widgets

Os objetos que comparecem em um programa podem ter sua aparência e funcionamento definidos através da atribuição de valores conveniente aos seus parâmetros, e da chamada adequada de seus procedimentos.

Page 15: 1 SUIT - Simple User Interface Toolkit Maria Alice Grigas Varella Ferreira EP-USP Abril 2003

15Maria Alice Grigas Varella Ferreira – EP-USP

Construção da interface

A interface do aplicativo é construída através da colocação dos widgets sobre uma tela.Cada elemento que compõe a tela é criado por meio de uma primitiva de criação; ele é incorporado a um conjunto que caracteriza a interface do programa, e que é armazenado em um arquivo denominado suit.sui.Os objetos podem, então, ser reposicionados e redimensionados dinamicamente na tela, sendo os seus atributos correntes armazenados neste arquivo

Page 16: 1 SUIT - Simple User Interface Toolkit Maria Alice Grigas Varella Ferreira EP-USP Abril 2003

16Maria Alice Grigas Varella Ferreira – EP-USP

Construção da interfaceO programador pode instanciar quantos objetos quiser de cada classe, dentro dos limites impostos pelo ambiente utilizado, e capacidades de sua máquina.Após a instanciação do objeto, o programador deverá "moldá-lo" às necessidades do aplicativo; para isso ele deverá:

1. atribuir valores apropriados aos atributos e 2. utilizar os métodos particulares de cada

classe.

Page 17: 1 SUIT - Simple User Interface Toolkit Maria Alice Grigas Varella Ferreira EP-USP Abril 2003

17Maria Alice Grigas Varella Ferreira – EP-USP

SUIT EditorPermite alterar as propriedades das widgetsColocando o cursor sobre a widget e teclar SUIT-e, chama este editorAs propriedades podem ser do objeto, da classe e globais (!)

Objeto:“bounded value Grau”

Classe: Todos os “bounded values”

Globais: para todas as janelas

Como o sistema procura a propriedade

Page 18: 1 SUIT - Simple User Interface Toolkit Maria Alice Grigas Varella Ferreira EP-USP Abril 2003

18Maria Alice Grigas Varella Ferreira – EP-USP

Criação de uma interface

/* Programa básico para criação de interfaces - o “loop” principal – fornecido na forma de template */

#include "suit.h“

void main (int argc, char *argv[]) { SUIT_init(argv[0]); /* inicializa o sistema */ /* define os objetos de tela */ SUIT_beginStandardApplication();}

Page 19: 1 SUIT - Simple User Interface Toolkit Maria Alice Grigas Varella Ferreira EP-USP Abril 2003

19Maria Alice Grigas Varella Ferreira – EP-USP

Comando SUIT_beginStandardApplication(); Equivale a:

SUIT_beginDisplay(); /* cria os objetos na tela, inicia o

sistema e desenha todos os objetos na tela */while (TRUE){ SUIT_checkAndProcessInput(INDEFINITE) /* verifica mouse e teclado e envia os eventos para os

“widgets apropriados *}

Page 20: 1 SUIT - Simple User Interface Toolkit Maria Alice Grigas Varella Ferreira EP-USP Abril 2003

20Maria Alice Grigas Varella Ferreira – EP-USP

Categorias de Rotinas

Inicialização do sistemaFinalização e “limpeza” do sistemaFunções geométricasAtribuição de valores às propriedades dos objetosLeitura dos valores das propriedades dos objetosFunções de exibição

Page 21: 1 SUIT - Simple User Interface Toolkit Maria Alice Grigas Varella Ferreira EP-USP Abril 2003

21Maria Alice Grigas Varella Ferreira – EP-USP

Categorias de Rotinas

Tratamento de eventosFunções de criação das widgetsFunções de HierarquizaçãoFunções de draggingManipulação de cadeiasMiscelâneaFunções gráficas (da SRGP)Biblioteca de widgets

Page 22: 1 SUIT - Simple User Interface Toolkit Maria Alice Grigas Varella Ferreira EP-USP Abril 2003

22Maria Alice Grigas Varella Ferreira – EP-USP

Programa 3cell - calculadora

34 34+ = 68

GO

DONE

num1 num2 result

Page 23: 1 SUIT - Simple User Interface Toolkit Maria Alice Grigas Varella Ferreira EP-USP Abril 2003

23Maria Alice Grigas Varella Ferreira – EP-USP

Programa 3cellAo todo, existem 7 objetos na tela:

6

34 34+ = 68

GO

DONE

num1 num2 result

1

1

7

5

43

2

Page 24: 1 SUIT - Simple User Interface Toolkit Maria Alice Grigas Varella Ferreira EP-USP Abril 2003

24Maria Alice Grigas Varella Ferreira – EP-USP

Programa 3cell

Três objetos possuem nomes (num1, num2 e result); os demais são anônimos. Os objetos anônimos não serão “alterados” pelo programa.1 e 2 são caixas de texto (Type in the box)5 é do tipo Label; Label exibe valores na tela, mas não pode ser manipulado pelo usuário.6 e 7 são botões; 7 é um botão especial: ele encerra o funcionamento do programa.

Page 25: 1 SUIT - Simple User Interface Toolkit Maria Alice Grigas Varella Ferreira EP-USP Abril 2003

25Maria Alice Grigas Varella Ferreira – EP-USP

Criação de objetos em 3cellvoid main (int argc, char *argv[]) { SUIT_init(argv[0]);

// criação dos objetos num1 = SUIT_createTypeInBox("num 1",NULL); num2 = SUIT_createTypeInBox("num 2",NULL); SUIT_createLabel("+"); SUIT_createLabel("="); result = SUIT_createLabel("result"); SUIT_createButton("GO", PerformAddition); SUIT_createDoneButton(NULL);

caption

Rotina de callback

Page 26: 1 SUIT - Simple User Interface Toolkit Maria Alice Grigas Varella Ferreira EP-USP Abril 2003

26Maria Alice Grigas Varella Ferreira – EP-USP

Rotina de Callback de 3cellvoid PerformAddition(SUIT_object button) { double temp1, temp2; char buffer[100]; temp1 = atof(SUIT_getText(num1,"current value")); temp2 = atof(SUIT_getText(num2,"current value")); sprintf(buffer, "%f", temp1 + temp2); SUIT_setText(result, "label", buffer); } Atributo de Label que recebe o

conteúdo de buffer

Atributo de Type in the Box que recebe o valor fornecido pelo usuário

Page 27: 1 SUIT - Simple User Interface Toolkit Maria Alice Grigas Varella Ferreira EP-USP Abril 2003

27Maria Alice Grigas Varella Ferreira – EP-USP

Referências bibliográficas

Documentos da SUIT – manual está no site. Há uma cópia para consulta na bibliotecaFoley, J. D. et al. Computer Graphics Principles and Practices. Addison-Wesley, Reading, 1990. Cap. 8-10.