Escolar Documentos
Profissional Documentos
Cultura Documentos
Máquina
Parte II
Desenvolvimento de Interfaces
Gráficas
Universidades Estácio de Sá -
10/8/2001 Prof. Antonio L. Apolinário Jr. 1
Introdução
O que é uma GUI ?
Como construir uma GUI ?
Uma ferramenta : FLTK
Interfaces Gráficas 1
Programação
Características desejáveis em uma GUI
Elementos de uma GUI
Teoria
Prática
Aplicações Gráficas
Introdução a OpenGL
Visão geral
Algumas características de uma boa GUI :
Previsível Fácil Complacente
Atrativa leitura
Interfaces Gráficas 2
Elementos de uma GUI
Janela
Da aplicação
MDI (Multiple Document Interface)
Help
Caixas de diálogo
Interfaces Gráficas 3
Menubar
Menus Em Cascata e
Destacáveis
Interfaces Gráficas 4
Elementos de uma GUI
Caixas :
de mensagens
de diálogos
Interfaces Gráficas 5
Elementos de uma GUI
Controles (cont.)
Caixas de :
Verificação (Check Boxes)
Lista (List Boxes)
Interfaces Gráficas 6
Elementos de uma GUI
Controles (cont.)
Botões deslizantes (Scrool Buttons)
Rótulos (Labels)
Interfaces Gráficas 7
Paradigmas de Programação
Interface Textual
Entrada exclusivamente via teclado
Baseado em menus de opções
Uso de terminais
Programação baseada na entrada de dados
Opção do usuário
Em geral um número ou uma tecla de função
Paradigmas de Programação
Interface Gráfica
Entrada via teclado ou mouse
Baseado em componentes diversos
Uso de micros com capacidade gráfica
Programação baseada em eventos
Seleção (clique)
Foco
Arrastar-Soltar (Drag & Drop)
Etc…
Interfaces Gráficas 8
Programação Orientada a
Eventos
Elementos básicos
Fila de eventos
Loop de eventos
Call Backs
Introdução
FLTK => Fast Light Tool Kit
GUI desenvolvida em C++
Multiplataforma
Win32 (NT, 95, 98)
Linux / Unix (Xwindows)
OS/2 (com XFree86)
Freeware (www.fltk.org)
Código aberto
Interfaces Gráficas 9
Introdução
FLUID
Fast Light User Interface Designer
Programa gerador de interface
Interativo
Interface visual
Gera código C++ legivel e editável
Suporte OpenGL/Mesa
Compatibilidade com
XForms
GLUT
Conceitos Básicos
Nomeclatura
Funções
Fl::foo()
Fl_foo()
Classes e tipos
Fl_Foo
Constantes e enumerações
FL_FOO
Interfaces Gráficas 10
Conceitos Básicos
Nomeclatura (cont.)
Arquivos de cabeçalhos (headers)
<FL/foo.H>
Interfaces Gráficas 11
Meu Primeiro Programa
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Box.H>
Análise do Programa
Arquivos de cabeçalho (.h) para cada
componente
Fl_Window.H
Fl_Box.H
Criação das widgets
Operador new (C++)
Interfaces Gráficas 12
Análise do Programa
Criação da janela principal
Fl_Window::Fl_Window(int w, int h, const char *title = 0)
Loop de eventos
static Fl::run()
Makefile
Utilitário make
Controla o processo de compilação de sistemas
Checa dependencias
Gera modulos objeto
Gerência o processo de linkedição
Permite configurar várias formas de compilação
Etc…
Interfaces Gráficas 13
Makefile – Um exemplo
.SUFFIXES: .cpp .cxx .fl .h
# compiler names:
CXX = g++
#CC = gcc
MAKEDEPEND = $(CXX) -M
MAKEINTERFACE = fluid
# flags for C++ compiler:
CFLAGS = # -O2 -Wall
CXXFLAGS = # -O2 -Wall -Wno-return-type
DEFFLAGS = -DHAVE_GL
# libraries to link with:
MATLIB = -lm
FLTKLIB = -lfltk
MESALIBS = #-lMesaGL -lMesaGLU
X11LIBS = -lX11 -lXext -lXmu -lXi
LIBPATH = -L/usr/X11R6/lib
# ***********************************************************************************
all: hello
hello: hello.cpp
@echo "Compiling hello...."
$(CXX) $(CFLAG) $(CPPFLAGS) $(LIBPATH) hello.cpp $(MATLIB) $(FLTKLIB) $(MESALIBS)
$(X11LIBS) -o $@
clean:
@echo "Clearing ..."
rm -f *.o core *~ hello hellobtn hellobtnOut
Modificando Hello
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Box.H>
#include <FL/Fl_Button.H>
btn->labelfont(FL_BOLD+FL_ITALIC);
btn->labelsize(24);
btn->labeltype(FL_SHADOW_LABEL);
window->end();
window->show(argc, argv);
return Fl::run();
}
Interfaces Gráficas 14
Respondendo a um evento
#include <iostream>
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Box.H>
#include <FL/Fl_Button.H>
Interfaces Gráficas 15