• Nenhum resultado encontrado

uigetfile() e uiputfile() Como o próprio nome sugere, essas funções abrem as janelas para selecionar um arquivo

No documento INTRODUÇÃO AO SOFTWARE MATLAB (páginas 79-86)

para leitura - uigetfile() - ou escrita - uiputfile(). Essas funções não realizam o processamento, ou seja, não são elas quem realizam o processo de leitura ou de escrita no arquivo, elas apenas retornam o caminho para o arquivo e seu nome, sem realizar qualquer operação. Assim sendo, seu funcionamento é básico e extremamente simples. A sintaxe básica é apresentada abaixo:

[nome,caminho,indFiltro] = uigetfile(filtroExtensão,'título',nomePredefinido) [nome,caminho,indFiltro] = uiputfile(filtroExtensão,'título',nomePredefinido)

Todos os argumentos são opcionais. O primeiro argumento possibilita adicionar filtros às extensões apresentadas pela janela de diálogo (por exemplo, mostrar apenas arquivos .bmp). O argumento 'título', a exemplo de outras janelas, nomeia a caixa de diálogo. O argumento nomePredefinido já abre a caixa de diálogo com o nome especificado para o arquivo. Com muito cuidado, utilize as funções seguindo os exemplos de aula. Não esqueça de ler o texto de ajuda de

ambas as funções para compreender perfeitamente os pormenores. Alguns exemplos serão, agora, apresentados. close all clear all clc A = eye(5); [arq,cam] = uiputfile; if (arq ~= 0)

arqt = [cam arq]; %concatena caminho e nome do arquivo.

save(char(arqt),'A');

else

disp('problemas')

end

Observe o teste lógico. Caso as funções encontrem problemas (como fechamento da caixa de diálogo), retornam valores nulos. Nesse exemplo, se a função for executada corretamente retorna caminho e nome do arquivo com extensão. Perceba que não é uiputfile() quem salva, e sim a função save(), utilizando as strings retornadas pela função. Execute o mesmo código alterando a linha da função uiputfile() pela linha abaixo.

[arq,cam] = uiputfile('*.xls','Salvando Arquivo...');

Nesta sintaxe, o filtro é alterado, e na abertura da janela apenas arquivos .xls são apresentados. É possível adicionar mais extensões ao filtro. Observe o exemplo:

[arq,cam] = uiputfile('*.xls; *.xls; *.doc','Salvando Arquivo...'); É possível, finalmente, vários filtros distintos, bastando utilizar uma célula como argumento da função.

[arq,cam] = uiputfile({'*.xls; *.xls';'*.m';'*.mat'},'Salvando...'); As mesmas regras podem ser utilizadas para a função uigetfile().

1 AULA 18 – INTERFACES GRÁFICAS

GUIDE

Esta aula irá abordar o GUIDE (Graphical User Interface Design Environment), plataforma desenvolvida para criar interfaces gráficas complexas - não somente baseadas em caixas de diálogo - nas quais o usuário, interagindo com objetos gráficos, transmite e recebe informações para o programa.

Basicamente, a interface visual se baseia em um arquivo do tipo figura (*.fig) que irá operar em conjunto com o código desenvolvido em um arquivo *.m. Usualmente, o desenvolvedor somente necessita implementar as funções de resposta aos eventos desencadeados pelos objetos da figura (como botões e caixas de texto). A maioria do código que cria o objeto figura e dispõe os objetos gráficos é automaticamente criada pelo MATLAB em conjunto com o GUIDE. Isso faz com que se tenha grande nível de abstração, focando apenas nas atividades desencadeadas pelas ações do usuário na interface.

Além da estrutura básica do código, o GUIDE fornece templates prontos para as funções de resposta, o que facilita e agiliza muito o desenvolvimento da aplicação.

O GUIDE também fornece uma ferramenta que permite o desenvolvimento de menus para a aplicação (como as abas: Arquivo, Editar, Ajuda em programas visuais), o que com certeza torna a aplicação versátil e poderosa.

Para iniciar a ferramenta GUIDE, basta escrever guide na janela de comandos. A janela abaixo será apresentada.

Nesta janela é possível utilizar templates prontos de GUI (Graphical User Interface - Interface Gráfica de Usuário). Ou inclusive abrir uma interface já existente. Para nosso primeiro exemplo, selecione Blank GUI. E pressione OK.

Nesta janela, a interface gráfica será desenvolvida (projetada). Na barra da esquerda, estão dispostos os vários objetos gráficos que podem ser utilizados para criar as mais diversas aplicações. Esses objetos são apresentados na imagem abaixo, com exceção dos controles ActiveX.

3 AULA 18 – INTERFACES GRÁFICAS

Esses objetos são chamados objetos de controle de interface de usuário (ver mais em

uicontol). Tais objetos gráficos serão abordados em pormenores na seqüência dos materiais da disciplina.

Pode-se modificar as propriedades da interface acessando Tools > GUI Options...

Nessa janela é possível modificar algumas propriedades da interface, como permitir ou não redimensionamento a janela. No momento, aconselha-se que outras propriedades não sejam modificadas, mantendo as opções como na figura acima.

O GUIDE possui uma barra de ferramentas muito útil para desenvolvimento de menus e para adicionar uma barra de ferramentas para a própria aplicação, como será visto adiante.

Da esquerda para a direita:

Nova Figura; Abrir; Salvar; Recortar; Copiar; Colar; Desfazer; Refazer; Alinhar Objetos; Editor de Menus; Editor da Ordem do botão Tab; Editor da Barra de Ferramentas; Editor do M-File; Inspetor de Propriedades; Navegador de Objetos; Rodar Figura.

Algumas ferramentas são auto-explicativas. Uma menção especial ao Editor de Menus e ao Editor de Ferramentas, os quais permitem inserir menus e uma barra de ferramentas às aplicações, e serão estudados em pormenor nas próximas aulas.

Para entender como desenvolver uma aplicação gráfica e como o MATLAB fornece meios para manipular os objetos no código, desenvolveremos uma aplicação extremamente simples, que imprime no terminal uma frase quando um botão é pressionado.

Para iniciar, crie uma pasta para salvar os arquivos da aplicação, e selecione-a como a pasta corrente. Após, abra o GUIDE e crie uma nova figura como abaixo, adicionando apenas um botão na janela. É possível modificar o nome do botão, manipulando as propriedades através do inspetor de propriedades .

Perceba agora uma diferença fundamental: O objeto botão adicionado possui nome

pushbutton1, enquanto o texto apresentado ao usuário na aplicação é dado pela propriedade

String do objeto. Modifique algumas propriedades utilizando o inspetor de propriedades. Após terminar a figura, salve-a com o nome teste.fig.

Perceba que ao salvar a figura, um código foi automaticamente gerado em um arquivo .m com o nome da figura (no caso, teste.m é gerado na pasta corrente). Esse código (é uma função) será responsável por criar o objeto figura além de executar as funções de resposta aos eventos disparados pelos objetos da figura, que nesse caso é apenas um botão. Verifique isso clicando na ferramenta Object Browser .

No código gerado, atente para:

% --- Executes on button press in pushbutton1.

function pushbutton1_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA)

Trata-se da função de callback do evento associado ao ato de pressionar o botão na interface criada. O nome da função é gerada automaticamente, e sempre terá o nome do objeto seguido pela palavra Callback separadas pelo caractere underline. Existem outras callbacks associadas aos objetos que possuem outros nomes, como veremos adiante.

Os argumentos da função é que possibilitam a manipulação de toda a interface gráfica. • hObject é o objeto fonte da interrupção. No caso, o botão pushbutton1.

• eventdata trás informações sobre o evento acionado.

• handles é uma estrutura que contém referencias a todas os objetos utilizados na figura. Isso obviamente permite alteração das propriedades de qualquer objeto em tempo de execução. O usuário pode adicionar outras variáveis à estrutura

handles, o que permite que callbacks diferentes tenham acesso à essas informações. A estrutura handles é automaticamente passada como argumento quando se utiliza o guide.

5 AULA 18 – INTERFACES GRÁFICAS

Porém, nossa aplicação apenas irá imprimir algo na janela do comando. Para tanto adicione à função a linha: disp('Ali está!'); logo após os comentários. Perceba que não é necessário o

comando end nesse caso.

Rode, agora, a aplicação, chamando a função na janela de comando ou pressionando no GUIDE. Pressione o botão na janela que abre e verifique o que acontece.

No documento INTRODUÇÃO AO SOFTWARE MATLAB (páginas 79-86)