SUIT - Simple User Interface
Toolkit
Maria Alice Grigas Varella Ferreira
EP-USP
Abril 2003
1
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 Windows
Implementa a habilidade de mover janelas e
redimensioná-las em tempo de execução da
aplicação
Orientação a objeto (porém não é orientada a
objetos, realmente)
Maria Alice Grigas Varella Ferreira – EP-USP
2
Orientação a objetos
Segundo Rambaugh (1991) um objeto é
“um elemento que combina estruturação
de dados com procedimentos”.
Processos
Dados
métodos (procedimentos)
Maria Alice Grigas Varella Ferreira – EP-USP
3
Vantagens da orientação a
objetos
Encapsulamento de dados – os dados são
manipulados somente através dos métodos
definidos para eles
Processos
Dados
Métodos (procedimentos)
Maria Alice Grigas Varella Ferreira – EP-USP
4
Vantagens da orientação a
objetos
Abstração – não é necessário conhecer o
interior do objeto; é preciso conhecer só o
seu funcionamento
Processos
Maria Alice Grigas Varella Ferreira – EP-USP
5
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 herdados
Hierarquia de objetos - conjunto dos objetos
antigos (ancestrais) e novos (descendentes)
Maria Alice Grigas Varella Ferreira – EP-USP
6
Hierarquia de objetos
RAIZ
Tem certeza?
Sim
Não
Caixa de diálogo
Botão Finalizar
Finalizar
Botão Sim
Maria Alice Grigas Varella Ferreira – EP-USP
Botão Não
Mensagem
7
Widgets – objetos de tela
Bounded value - potenciômetro
Menu - coleção de botões
Scrollable list - scroll bar
Radio buttons - seleção de apanas uma opção
dentro de um conjunto de opções
Text editor - padrão Emacs
Color chips - para seleção de uma cor atual
Type in box - texto de uma linha
On / Off switch
Buttons – botões
Maria Alice Grigas Varella Ferreira – EP-USP
8
Que são widgets
Cada widget caracteriza uma classe
Cada elemento que aparece na tela, e que é de um
determinado tipo de widget é uma instância da
classe
Cada objeto possui um conjunto de propriedades
Tem certeza?
Sim
Não
Duas instâncias da
classe Button
Maria Alice Grigas Varella Ferreira – EP-USP
9
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.
Maria Alice Grigas Varella Ferreira – EP-USP
10
Maria Alice Grigas Varella Ferreira – EP-USP
11
Maria Alice Grigas Varella Ferreira – EP-USP
12
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!
Maria Alice Grigas Varella Ferreira – EP-USP
13
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.
Maria Alice Grigas Varella Ferreira – EP-USP
14
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
Maria Alice Grigas Varella Ferreira – EP-USP
15
Construção da interface
O 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.
Maria Alice Grigas Varella Ferreira – EP-USP
16
SUIT Editor
Permite alterar as propriedades das widgets
Colocando o cursor sobre a widget e teclar
SUIT-e, chama este editor
As propriedades podem ser do objeto, da classe
e globais (!)
Globais: para todas as janelas
Objeto:
“bounded value Grau”
Classe:
Todos os “bounded
values”
Como o sistema procura a propriedade
Maria Alice Grigas Varella Ferreira – EP-USP
17
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();
}
Maria Alice Grigas Varella Ferreira – EP-USP
18
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 *
}
Maria Alice Grigas Varella Ferreira – EP-USP
19
Categorias de Rotinas
Inicialização do sistema
Finalização e “limpeza” do sistema
Funções geométricas
Atribuição de valores às propriedades dos
objetos
Leitura dos valores das propriedades dos
objetos
Funções de exibição
Maria Alice Grigas Varella Ferreira – EP-USP
20
Categorias de Rotinas
Tratamento de eventos
Funções de criação das widgets
Funções de Hierarquização
Funções de dragging
Manipulação de cadeias
Miscelânea
Funções gráficas (da SRGP)
Biblioteca de widgets
Maria Alice Grigas Varella Ferreira – EP-USP
21
Programa 3cell - calculadora
GO
34
+
num1
34
num2
=
68
result
DONE
Maria Alice Grigas Varella Ferreira – EP-USP
22
Programa 3cell
Ao todo, existem 7 objetos na tela:
GO
2
1
34
6
+
34
3
num1
5
=
68
4
num2
result
1
7
Maria Alice Grigas Varella Ferreira – EP-USP
DONE
23
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.
Maria Alice Grigas Varella Ferreira – EP-USP
24
Criação de objetos em 3cell
void 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
Maria Alice Grigas Varella Ferreira – EP-USP
25
Rotina de Callback de 3cell
void PerformAddition(SUIT_object button)
{
Atributo de Type in the Box que
double temp1, temp2;
recebe o valor fornecido pelo
usuário
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);
}
Maria Alice Grigas Varella Ferreira – EP-USP
Atributo de Label que recebe o
conteúdo de buffer
26
Referências bibliográficas
Documentos da SUIT – manual está no
site. Há uma cópia para consulta na
biblioteca
Foley, J. D. et al. Computer Graphics
Principles and Practices. Addison-Wesley,
Reading, 1990. Cap. 8-10.
Maria Alice Grigas Varella Ferreira – EP-USP
27
Download

Noções sobre SUIT: Simple User Interface Toolkit