Föreläsning 5: Grafiska användargränssnitt

Relevanta dokument
F5: Grafiska användargränssnitt (kap. 9 10)

Föreläsning 12: Datastrukturer & filer

Examensarbete på grundnivå

Beijer Electronics AB 2000, MA00336A,

Komma igång med Adobe Presenter ver.7

Perceptuell Tonhöjd. Sammanfattning

electiaprotect GSM SEQURITY SYSTEM Vesta EZ Home Application SMART SECURITY SYSTEMS! SVENSKA ios Android

Modeller och teknik Grundl program och gränssnitt. Matlab-tips

Windows Forms Winstrand Development

2.1 Installation of driver using Internet Installation of driver from disk... 3

Support Manual HoistLocatel Electronic Locks

Styrteknik 7.5 hp distans: E-1000 och E-Designer

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås

Idag: Centrerad utskrift. Granskning. DD1311 Programmeringsteknik med PBL. Granskning Felhantering GUI. Föreläsning 15.

Ökad lokal nytta av förnyelsebar energiproduktion med hybridkraftverk

Annonsformat desktop. Startsida / områdesstartsidor. Artikel/nyhets-sidor. 1. Toppbanner, format 1050x180 pxl. Format 1060x180 px + 250x240 pxl.

Michael Q. Jones & Matt B. Pedersen University of Nevada Las Vegas

Grafisk produktion och tryckkvalitet TNM015

Laboration 1 Introduktion till Visual Basic 6.0

Paneler - VCPXX.2. Programmeringsmanual för VCP-paneler. Revision 2

Webbregistrering pa kurs och termin

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Användarbeskrivning för Anvisningstjänsten

Bilaga 4, Skapa grafiskt användargränssnitt med guide

Grafiska användargränssnitt i Java

Visa/Dolj knappar i Webeditor 8

Skolan för Datavetenskap och kommunikation PROGRAMMERINGSTEKNIK FÖRELÄSNING 15

Recitation 4. 2-D arrays. Exceptions

Denna vecka. Idag. Grafiskt användarsnitt. Vi kommer att se

GU / Chalmers Campus Lindholmen Tentamen Programutveckling LEU 482 / TIG167

Quick Start Guide Snabbguide

Schenker Privpak AB Telefon VAT Nr. SE Schenker ABs ansvarsbestämmelser, identiska med Box 905 Faxnr Säte: Borås


Exempelsamling Assemblerprogrammering


Guide för pdf-formulär

Webbreg öppen: 26/ /

Föreläsning 4 IS1300 Inbyggda system

Från Excel laddningar till web arbetsflöden

Objektorienterad Programkonstruktion. Föreläsning 2 2 nov 2016

Retrieve a set of frequently asked questions about digital loans and their answers

Python. Datatyper. Mer om datatyper. Heltal - 3 Flyttal - 2,456 Listor - [1,2,3,4] Strängar - spam!

Lösenordsportalen Hosted by UNIT4 For instructions in English, see further down in this document

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

LOG/iC2. Introduction

Isometries of the plane

FactoryCast HMI. Premium & Quantum PLC. MySQL Server och FactoryCast HMI databastjänst

Release notes for Permobil R-net PC-programmer ver Dealer access level

Malmö högskola 2007/2008 Teknik och samhälle

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Visa stora ikoner utan text i Command Manager = Större arbetsyta

Funktioner forts. F3: Funktioner (kap. 5) Parametrar. findgear.m forts

Föreläsning 3. Stack

Vässa kraven och förbättra samarbetet med hjälp av Behaviour Driven Development Anna Fallqvist Eriksson

Viktig information för transmittrar med option /A1 Gold-Plated Diaphragm

Grafiska användargränssnitt i Java

InstalationGuide. English. MODEL:150NHighGain/30NMiniUSBAdapter

Telia Connect för Windows

Alternativet är iwindows registret som ni hittar under regedit och Windows XP 32 bit.

BILAGA 5 Fi2Utrymmen Bilaga till CAD-kravspecifikation med förvaltningsinformation Version 1.0

Simulering med ModelSim En kort introduktion

Boiler with heatpump / Värmepumpsberedare

Modern webbutveckling. av Robert Welin-Berger

Skolan för Datavetenskap och kommunikation. Programmeringsteknik. Föreläsning 16

PROGRAMMERING A VC# 2008 EXPRESS UTVECKLINGSVERKTYGET VISUAL C#

Quick Start. English Svenska. Moca


Sammanfattning. Listor. List-manipulering. Matris. /home/lindahlm/activity-phd/teaching/11dd1310/exercise3/exercise3.py September 13, 20111

Föreläsning 8. Designmönster

Programmeringsteknisk översiktskurs för yrkeshögskoleprogram

Styrteknik: Binära tal, talsystem och koder D3:1

DVG C01 TENTAMEN I PROGRAMSPRÅK PROGRAMMING LANGUAGES EXAMINATION :15-13: 15

Mer till P-uppgiften: Dokumentation. Nyheter. Algoritm för sökning. Mer hjälp. DD1311 Programmeringsteknik med PBL

Scratch Junior. makeandshape.com. by MIT. Gränssnitt Scratch Junior

Every visitor coming to the this website can subscribe for the newsletter by entering respective address and desired city.

Detta dokument är ett exempel, cirka andra hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling

Att skriva till och läsa från terminalfönstret

MySQL - testmiljöer på minuter. Thomas Johansson IT-avdelningen

Programutveckling med Java Development Kit. (JDK 1.1.x) och Programmers File Editor (PFE 7.02)

v. 42 Python HT17 En introduktion Oscar Bergqvist

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

Quick Start. English Svenska PRIMACY. Printing settings and winsign

Manuell installation av SQL Server 2008 R2 Express för SSF Timing

Grafiska användargränssnitt i Java

Fakulteten för ekonomi, kommunikation och IT. Corba. Datum: Mathias Andersson

DOTNETNUKE SKOLNING Skapat: den 20 november 2012

CADS Data- Manager. Användarhandbok. CAD Studion AB

Mayas UI. Grundläggande UI. Dag Stensson 2009

1. FORMULÄR. A. Skapa formulär

Beskrivning av gesällprov RMI Chat Mikael Rydmark

Lappskrivningen som redovisning av Lab.2

Får endast utföras av behörig personal. May only be carried out by authorized electrician

Installation av F13 Bråvalla

Datorövning 2 Matlab/Simulink. Styr- och Reglerteknik för U3/EI2

Tentamen Grundläggande programmering

Exemple på Tentauppgifter Webbprogrammering

Filsäkerhet i Windows NT (NTFS)

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT Lars Larsson Algoritmer 1

Gränssnitt för FakeGranska. Lars Mattsson

Objektorienterad programmering Föreläsning 15. Grafiska användargränssnitt (GUI Graphical User Interface)

Transkript:

Magnus Rosell rosell@csc.kth.se 2D1212 NumProg för M1, VT2006 A Föreläsning 5: Grafiska användargränssnitt Innehåll: Kap 9,10 i PEng Grafiska objekt/komponenter Handtag (handles) Grafiska användargränssnitt Grafik och handtag All grafik i matlab är uppbyggd av komponenter. Med hjälp av variabler, som innehåller sk handtag (handle), håller man reda på dessa komponenter. Grafiska komponenter har en massa egenskaper man kan manipulera. >> x=0:pi/100:2*pi; >> y=sin(x); >> h=plot(x,y); h är ett handtag till kurvan >> set(h, LineWidth, 15); LineWidth är en egenskap hos... >> get(h, LineWidth )... komponenten som h håller koll på Med get(h) får man reda på alla egenskaper för komponenten som handtaget h håller reda på. Grafiska användargränssnitt GUI - Graphical User Interface Vanliga program körs från början till slut. GUI-program styrs istället av användarens musklickningar och andra händelser orsakade av användaren. Därför pratar man om händelsehantering och säger att programmen är händelsestyrda (event driven). Knappar, menyer med mera kallas för GUI-komponenter. Varje gång användaren klickar på en GUI-komponent anropas dess Callback-funktion. Hur gör man? Öppna genom att i File-menyn välja New och sedan GUI Gör layouten: Placera ut alla GUI-komponenter och justera deras egenskaper med Property Inspector (dubbelklicka på komponenten). Egenskaper är t ex String (texten på komponenten) och Tag (komponentens namn i programmet)

Spara, t ex under namnet tamagochi så får du två filer: tamagochi.fig, en fil som beskriver layouten (mat-format) tamagochi.m, en funktionsfil med färdiga Callback-funktioner för varje komponent du lagt upp i din layout Modifiera funktionerna i filen tamagochi.m Callback-funktioner Inuti komponentens Callback-funktion skriver du vad som ska hända när man klickar på den. Använd parametern handles för att få handtaget till en GUI-komponent. Texgerhandles.mata handtaget till komponenten med namnet mata Komponenternas egenskaper kan modifieras med set set(handles.mata, String, Mums );... och läsas av med get storlek = get(handles.mata, Position ); Alla komponenter går att ändra från varje Callback-funktion. Exempel på GUI-komponenter Text Field, Pushbutton, Radio Button, List Box Kapitel 10.4 i PEng tar upp fler komponenter. Celltabeller Om en egenskap kan bestå av flera värden är den troligen en celltabell. Listan i en List Box är en celltabell, exempel: celltabell{1} = första raden ; celltabell{2} = andra raden ; celltabell{3} = tredje raden ; set(handles.listbox1, String,celltabell); Meddelanden Meddelanden (t ex om fel) kan fås med en Dialog Box, se s 479 i PEng. Exempel: warndlg( Rabarber bör inte ätas rå., Rabarberfel, modal ); Sista parametern kan vara modal (kräver uppmärksamhet) eller non-modal Bibliotek med GUI När programmet startas kommer ett nytt fönster. Där finns fem GUI-komponenter Rubriken Bibliotek (en TextField) Listan med böcker (en ListBox) Knapparna Låna, Återlämna och Spara (alla Pushbutton)

function varargout = bibliotek(varargin) BIBLIOTEK M-file for bibliotek.fig BIBLIOTEK, by itself, creates a new BIBLIOTEK or raises the existing singleton*. H = BIBLIOTEK returns the handle to a new BIBLIOTEK or the handle to the existing singleton*. BIBLIOTEK( Property, Value,...) creates a new BIBLIOTEK using the given property value pairs. Unrecognized properties are passed via varargin to bibliotek_openingfcn. This calling syntax produces a warning when there is an existing singleton*. BIBLIOTEK( CALLBACK ) and BIBLIOTEK( CALLBACK,hObject,...) call the local function named CALLBACK in BIBLIOTEK.M with the given input arguments. *See GUI Options on GUIDE s Tools menu. Choose "GUI allows only one instance to run (singleton)". See also: GUIDE, GUIDATA, GUIHANDLES Edit the above text to modify the response to help bibliotek Last Modified by GUIDE v2.5 17-Feb-2006 11:41:52 Begin initialization code - DO NOT EDIT gui_singleton = 1; gui_state = struct( gui_name, mfilename,... gui_singleton, gui_singleton,... gui_openingfcn, @bibliotek_openingfcn,... gui_outputfcn, @bibliotek_outputfcn,... gui_layoutfcn, [],... gui_callback, []); if nargin && ischar(varargin{1})

gui_state.gui_callback = str2func(varargin{1}); if nargout [varargout{1:nargout}] = gui_mainfcn(gui_state, varargin{:}); else gui_mainfcn(gui_state, varargin{:}); End initialization code - DO NOT EDIT --- Executes just before bibliotek is made visible. function bibliotek_openingfcn(hobject, eventdata, handles, varargin) This function has no output args, see OutputFcn. hobject handle to figure varargin unrecognized PropertyName/PropertyValue pairs from the command line (see VARARGIN) Choose default command line output for bibliotek handles.output = hobject; Update handles structure guidata(hobject, handles); Här har magnus lagt till 060217 lasinbocker( bocker.txt ); listboxkomponenten = handles.listbox1; set(listboxkomponenten, String,boklistaSomCelltabell()); knapp1 = handles.pushbutton1; set(knapp1, String, Låna ); knapp2 = handles.pushbutton2; set(knapp2, String, Återlämna ); knapp3 = handles.pushbutton3; set(knapp3, String, Spara ); UIWAIT makes bibliotek wait for user response (see UIRESUME) uiwait(handles.figure1); --- Outputs from this function are returned to the command line. function varargout = bibliotek_outputfcn(hobject, eventdata, handles) varargout cell array for returning output args (see VARARGOUT); hobject handle to figure

Get default command line output from handles structure varargout{1} = handles.output; --- Executes on selection change in listbox1. function listbox1_callback(hobject, eventdata, handles) hobject handle to listbox1 (see GCBO) Hints: contents = get(hobject, String ) returns listbox1 contents as cell array contents{get(hobject, Value )} returns selected item from listbox1 --- Executes during object creation, after setting all properties. function listbox1_createfcn(hobject, eventdata, handles) hobject handle to listbox1 (see GCBO) handles empty - handles not created until after all CreateFcns called Hint: listbox controls usually have a white background on Windows. See ISPC and COMPUTER. if ispc && isequal(get(hobject, BackgroundColor ), get(0, defaultuicontrolbackgroundcolor )) set(hobject, BackgroundColor, white ); --- Executes on button press in pushbutton1. function pushbutton1_callback(hobject, eventdata, handles) hobject handle to pushbutton1 (see GCBO) Här har magnus lagt till 060217 listboxkomponenten = handles.listbox1; boknr = get(listboxkomponenten, Value ); lana(boknr); set(listboxkomponenten, String,boklistaSomCelltabell()); --- Executes on button press in pushbutton2. function pushbutton2_callback(hobject, eventdata, handles) hobject handle to pushbutton2 (see GCBO) Här har magnus lagt till 060217 listboxkomponenten = handles.listbox1; boknr = get(listboxkomponenten, Value ); returnera(boknr); set(listboxkomponenten, String,boklistaSomCelltabell());

--- Executes on button press in pushbutton3. function pushbutton3_callback(hobject, eventdata, handles) hobject handle to pushbutton3 (see GCBO) Här har magnus lagt till 060217 sparabocker( bocker.txt ); Här har magnus lagt till 060217. Följande är funktioner som anropas från Callback-funktionerna function lasinbocker(filnamn) Läser in böckerna från fil infil = fopen(filnamn, r ); nr = 1; while ~feof(infil) boklista(nr).titel = fgetl(infil); boklista(nr).forfattare = fgetl(infil); boklista(nr).lanadav = fgetl(infil); fgetl(infil); nr = nr + 1; ; fclose(infil); function sparabocker(filnamn) Sparar den ändrade boklistan på fil utfil = fopen(filnamn, w ); for nr = 1:length(boklista) fprintf(utfil, s\n, boklista(nr).titel); fprintf(utfil, s\n, boklista(nr).forfattare); fprintf(utfil, s\n, boklista(nr).lanadav); fprintf(utfil, \n ); fclose(utfil); function lana(boknr) Hanterar utlåning av bok Ändrar boklista if strcmp(boklista(boknr).lanadav, ingen ) anvandare = inputdlg( Ge ditt användarnamn:, Vem är du? ); if length(anvandare)>0 boklista(boknr).lanadav = anvandare{1}; else warndlg( Boken är redan utlånad, Tyvärr, modal );

function returnera(boknr) Hanterar återlämning av bok Ändrar boklista questdlg( Du har återlämnat boken! Gillade du den? ); boklista(boknr).lanadav = ingen ; function celltabell = boklistasomcelltabell() Konverterar boklistan från struct till celltabell för visning i listboxen for nr = 1:length(boklista) if strcmp(boklista(nr).lanadav, ingen ) pre = ; else pre = ---UTLÅNAD ; celltabell{nr} = strcat(boklista(nr).titel, ---,... boklista(nr).forfattare,pre);