Computação e Programação MEMec - LEAN 1º Semestre 2010-2011 Aula Teórica 17 Instituto Superior Técnico, Dep. de Engenharia Mecânica - ACCAII Alinhamento da AT 17 Exemplo: GUI controlsuite Estrutura da GUI (figure + m-file) Casos de Estudo 2 1
Alinhamento da AT 17 Exemplo: GUI controlsuite Estrutura da GUI (figure + m-file) Casos de Estudo 3 Exemplo: GUI controlsuite Disponível na pasta do MATLAB, subdirectoria "..\help\techdoc\creating_guis\examples" Abrir pela linha de comandos utilizando: guide controlsuite 4 2
Exemplo: GUI controlsuite 5 Exemplo: GUI controlsuite 6 3
Alinhamento da AT 17 Exemplo: GUI controlsuite Estrutura da GUI (figure + m-file) Casos de Estudo 7 Estrutura de uma GUI no MATLAB Figure: simple_gui.fig + M-file: simple_gui.m 8 4
Estrutura padrão da m-file de uma GUI 9 Exemplo: GUI controlsuite Comments 10 5
Exemplo: GUI controlsuite Initialization 11 Opening Function Exemplo: GUI controlsuite 12 6
Output Function Exemplo: GUI controlsuite 13 Exemplo: GUI controlsuite Component and figure callbacks (sample) 14 7
Template de uma callback (push button) Declaração da função de callback para a componente que disparou a chamada Argumentos de entrada. A sequência indicada é fixa. 16 Estrutura de dados dos argumentos OBJECT HANDLE (hobject): estrutura com atributos e propriedades (os mesmos visualizáveis no Property Inspector) da componente que disparou a callback. EVENT DATA (eventdata): estrutura com o histórico da sequência de evento até ao disparo da callback (não é utilizado por todas as componentes). HANDLES STRUCTURE (handles): apontador para uma estrutura com atributos e propriedades (os mesmos visualizáveis no Property Inspector) de todas as componentes existentes na GUI, bem como dados específicos da aplicação 17 8
Exemplo: GUI controlsuite 18 Exemplo: GUI controlsuite Push Button Toggle Button Ver os callbacks dos restantes componentes no ficheiro. 19 9
Alinhamento da AT 17 Exemplo: GUI controlsuite Estrutura da GUI (figure + m-file) Casos de Estudo 20 Casos de Estudo Analisar as seguintes GUIs (abrir pela linha de comandos) Simple GUI (>> guide simple_gui) controlsuite (>> guide controlsuite) Disponíveis na pasta do MATLAB, subdirectoria "..\help\techdoc\creating_guis\examples" Desenvolver uma GUI que implementa uma máquina de somar. 21 10
Pretende-se criar uma aplicação gráfica para calcular a soma de dois números reais. Se o utilizador introduzir caracteres não numéricos, o termo respectivo deverá ser corrigído para 0 (zero). O utilizador escreve o valor de cada termo, sendo o cálculo efectuado quando este clicar num botão Somar. 22 Contexto do Problema Pretende-se uma aplicação gráfica para calcular a soma de dois termos. 23 11
Esquema de processamento Entradas: termos da soma: Termo1, Termo2 evento: clicar no botão Somar Saídas: resultado da soma: Resultado 24 Especificações funcionais e Requisitos Interface gráfica para calcular a soma de dois termos introduzidos pelo utilizador. A soma é calculada apenas quando o utilizador clicar num botão criado para o efeito Os termos são números reais. A introdução de qualquer outro carácter é corrigida para o valor 0. O cálculo só se realiza quando o utilizador clicar num botão para o efeito denominado Somar 25 12
Fluxo de dados Utilizador GUI Introduz Termo1 Introduz Termo2 Evento: clicar no botão Somar Apresenta Resultado 26 Métodos de Processamento Soma dos termos: Resultado = Termo1 + Termo2 27 13
Abordagem Top-Down 28 Lista de tarefas para callback caixa de texto "Termo1" Se Termo1 é inválido Então corrige para 0 Lista de tarefas para callback caixa de texto "Termo2" Se Termo2 é inválido Então corrige para 0 Lista de tarefas para callback botão "Somar" Resultado = Termo1 + Termo2 29 14
Algoritmo da callback para a operação Somar i. Resultado = Termo1 + Termo2 Algoritmo da callback para a caixa de texto Termo1 i. Se Termo1 é inválido a. Então Termo 1 = 0 Algoritmo da callback para a caixa de texto Termo2 i. Se Termo2 é inválido a. Então Termo 2 = 0 30 Esboço do protótipo e lista de componentes Janela do GUI 3 Static text para os termos da adição 1 Static text para o resultado 2 Edit text para os termos da adição 1 Pushbutton para activar a adição 31 15
Desenvolvimento da GUI 32 Desenvolvimento da GUI 33 16
Desenvolvimento da GUI 34 Desenvolvimento da GUI 35 17
Desenvolvimento da GUI 36 Desenvolvimento da GUI 37 18
Desenvolvimento da GUI 38 Gravação da GUI 39 19
Codificação em MATLAB 40 Inicialização da janela da interface 41 20
Inicialização de parâmetros 42 Definição da saída da GUI 43 21
Callback da caixa de texto para o Termo1 44 Callback da caixa de texto para o Termo2 45 22
Callback da pushbutton Somar 46 Execução da GUI 47 23
Testes 48 Testes 49 24
Referências Mathworks: Creating Graphical User Interfaces (buildgui.pdf) http://www.mathworks.com/access/helpdesk/help/pdf_doc/matlab/buildgui.pdf Elementos de estilo: http://www.asktog.com/basics/firstprinciples.html http://www.fast-consulting.com/desktop.htm http://www.usabilitynet.org/management/b_design.htm 50 25