Graphische Benutzeroberfläche mit libforms

Slides:



Advertisements
Ähnliche Präsentationen
Vorbereitung: struct knoten { int x; struct knoten *l, *r; } *b, *bh, **bp; b: Zeiger auf Wurzel bh: Hilfszeiger bp: Zeiger auf Zeiger auf knoten b bp.
Advertisements

Klassen - Verkettete Liste -
Funktionen, Felder und Parameter-übergabe
C Tutorium – Fehlerbehandlung – Knut Stolze. 2 Grundsatz Also ist auch nach jedem Funktionsaufruf auf Fehler zu prüfen!! Jeder(!) Funktionsaufruf kann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (13 – Offenes Hashing) Prof. Th. Ottmann.
Vers. 6: Der Konfigurationsdialog Quelle: Spieleprogrammierung mit DirectX und C++, U. Kaiser und P. Lensing, Galileo Computing (2007)
V03 Laden und Speichern von Spielfeldern und der Spielfeldeditor.
1 Named Pipes alias FIFO Haben einen Eintrag im Dateisystem und sind somit durch Zugriffsrechte identifizierbar Ermöglichen die Kommunikation zwischen.

EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 7 Claudio Moraga, Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 10 Claudio Moraga; Gisbert Dittrich FBI Unido
Objektorientierte Programmierung JDK-Klassenbibliothek
Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit.
Hochschule Fulda – FB ET Sommersemester 2010
Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
Objektorientierte Programmierung
Der C-Präprozessor EDV1 - 04Präprozessor.
Einführung in Visual C++
1EDV 1 - Java Native Interface Java mit eingebundenen (native) C-Programme Vortrag: Rolf Heitzenröder am
Modulare Programmierung
14StrukturKlasse1 Von der Struktur zur Klasse von C zu C++ Von Jens Hoffmann
Der C-Präprozessor 08-CPräprozessor.
Weiteres Programm Studium des Breitendurchlaufs Hierzu
Wir müssen also überlegen: Implementierung der Knoten, Implementierung der Kanten, daraus: Implementierung des Graphen insgesamt. Annahme: die Knoteninhalte.
Struktur-Funktions-Modelle von Pflanzen - Sommersemester Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik.
Einfach verkettete Listen
Einfach verkettete Listen (OOP)
Objektorientierte Modellierung
Rekursive Funktionen (Fakultät)
Informatik I for D-MAVT
Erste Schritte mit Eclipse Neues Projekt erstellen (1)
Informatik 1 Übung 8. NACHBESPRECHUNG Übung 8 Rekursion Existiert Weg von A nach B?
© Roland Angst, 2010Institute of Visual Computing Informatik I for D-MAVT Exercise Session 1.
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmiersprache C 4
Portabilität Seminar aus Softwareentwicklung: Programmierstil Christine Schiestl WS 02 / 03.
MMIX-Edit Felix Albrecht.
Dynamische Datentypen
C-Einstieg. Agenda 1Vorbereitung 2Aufbau eines Programms 2.1Header 2.2 Methoden 2.3Main 3Datentypen & Variablen 4Operatoren(+, -, *, /) 5Logik 5.1IF 5.2Switch.
Vorlesung 5. #include double fv(double x) { return sin(x); } int main(){ int i,N=10; double a=1,b=2,del,x,sum,f,integral; for(i=1,sum=0.0,del = (b-a)/N;i
Programmiervorkurs WS 2014/15 Methoden
A) Erklären Sie den Datentyp char. b) Erklären Sie den Datentyp Struct c) Erklären Sie die Wirkungsweise des Operators & bei Anwendung im Zusammenhang.
1 // Laengste Zeile bestimmen // // Liest die Eingabe Zeichen fuer Zeichen, bis // das erscheint. // Die laengste Zeile wird ausgegeben (bei.
Java-Kurs Übung Benutzeroberflächen und Graphik Frames (Fenster)
1 // 6_1_KKarte als Struct // // demonstriert structs // Bei Behandlung von "Randfällen" nicht robust. // Fehlerhaft !? #include const char ZeilenEnde.
1 // Verkettete Liste 3 // demonstriert verkettete Listen und // Rekursion // (mit Entfernen eines Listenelementes) // #include struct Liste { int Element;
Funktionen. Aufgabe : Eingabe zweier Zahlen ---> Minimum bestimmen Dann nochmals Eingabe zweier Zahlen ---> Minimum bestimmen.
1 // 9_1_Datei_IO //Elementare Verwendung von Dateien // Vorsicht: nicht robust, #include const int maxLen = 70; void Schreiben(char *, ofstream *); void.
1 // Verkettete Liste 2 // demonstriert verkettete Listen und // Rekursion // (Einfügen am "Fuß") // #include struct Liste { int Element; Liste *weiter;
Tutorium Software-Engineering SS14 Florian Manghofer.
Pointer, Arrays und verkettete Listen. Mehrdimensionale Arrays  Pointer auf ein Array von Pointern  int32 **matrix = new int32*[3];  matrix: Zeiger.
Funktionen (Zweck und Eigenschaften) Funktionen sind Unterprogramme, die einen bestimmten Zweck erfüllen Sie zerlegen Probleme in kleine, abgeschlossene.
Inhalte der Übungen 1.Grundlagen, Ein- und Ausgabe 2.Kontrollstrukturen (Projekt 1) 3.Funktionen 4.Zeiger, Felder (Projekt 2) 5.Strings, Strukturen 6.Fileverarbeitung.
Namensliste Teil der semantischen Aktionen
Common Gateway Interface
IOStreamLibrary.
1.Event Queue.
Einführung in Qt Empfohlene Version 4 Empfohlene Pakete: qt4-default
Arguments to main() int main(int argc, char *argv[]) { int i;
IOStreamLibrary.
Einführung in die Programmierung
Test - Beginn Die Verwendung von Unterlagen ist nicht zulässig. Entfernen Sie daher alle Unterlagen und sonstigen Utensilien. Tragen Sie Ihren Namen, Ihre.
Einführung in die Programmierung
Implementieren von Klassen
Arrays of Objects, a 3 part process
 Präsentation transkript:

Graphische Benutzeroberfläche mit libforms Relativ einfache Programmierung Überschaubarer Vorrat an Controls Graphischer Designer verfügbar (fdesign) Recht eigenwillige Bedienung Generiert alle notwendigen Quellfiles Eventhandling mit call-back-Funktionen Zu installierende Pakete (.deb) libforms-doc, libforms-bin, libforms-dev Doku unter /usr/share/doc/libforms-doc/html Im Labor: export LD_LIBRARY_PATH=/opt/xforms/lib gcc -I /opt/xforms/include/ -L /opt/xforms/lib myapp*.c -lforms

Der Designer

Voreinstellungen Zu Beginn im Hauptfenster unter Options selektieren: emit Main emit emit Callback emit C UI Code Nach save kann fdesign geschlossen werden. Soll an der Oberfläche nachträglich geändert werden, so sollten nachfolgende Optionen wieder deselektiert werden.

Arbeitsschritte 1. new Form TheApp ( Name eintragen in Dialogfeld), Das Hauptfenster wird sichtbar. Doppelclick rechts!! Dialog öffnet sich: Name eintragen (theApp) REZIZE_ALL auswählen Fontgröße wählen

Dialog öffnet sich nach Doppelclick rechte Maustaste im rot umrandeten Bereich unten Name Hauptfenster Im Designer

Einfügen weiterer Controls/ Widgets 2. input selektieren in Objects Click in Form Designer Aufziehen input Control Doppelclick re (oder Button F1 Attribs) Name eintragen Callback eintragen ev. Font eintragen 3. Browser selektieren in Objects 4. Button selektieren in Objects Einfügen weiterer Controls/ Widgets

#include "v1.h" FD_MainWidget *fd_MainWidget; int main( int argc, char * argv[ ] ) { fl_initialize( &argc, argv, 0, 0, 0 ); fd_MainWidget = create_form_MainWidget( ); /* Fill-in form initialization code */ /* Show the first form */ fl_show_form( fd_MainWidget->MainWidget, . . . . . "MainWidget" ); fl_do_forms( ); if ( fl_form_is_visible( fd_MainWidget->MainWidget ) ) fl_hide_form( fd_MainWidget->MainWidget ); fl_free( fd_MainWidget ); fl_finish( ); return 0; }

/* Header file generated by fdesign on Mon Jan 30 17:07:12 2012 */ #ifndef FD_MainWidget_h_ #define FD_MainWidget_h_ #include <forms.h> /* Callbacks, globals and object handlers */ extern void callIn1( FL_OBJECT *, long ); extern void callButt1( FL_OBJECT *, long ); /* Forms and Objects */ typedef struct { FL_FORM * MainWidget; void * vdata; char * cdata; long ldata; FL_OBJECT * Mywidget; FL_OBJECT * In1; FL_OBJECT * Butt1; FL_OBJECT * MyBrowser; } FD_MainWidget; extern FD_MainWidget * create_form_MainWidget( void ); extern FD_MainWidget *fd_MainWidget; #endif /* FD_MainWidget_h_ */ ergänzen!

/* Form definition file generated by fdesign */ #include <stdlib.h> #include "v1.h" /*************************************** ***************************************/ FD_MainWidget * create_form_MainWidget( void ) { FL_OBJECT *obj; FD_MainWidget *fdui = fl_malloc( sizeof *fdui ); fdui->vdata = fdui->cdata = NULL; fdui->ldata = 0; fdui->MainWidget = fl_bgn_form( FL_NO_BOX, 627, 284 ); fdui->Mywidget = obj = fl_add_box( FL_UP_BOX, 0, 0, 627, 284, "" ); fl_set_object_color( obj, FL_ANTIQUEWHITE, FL_BISQUE ); fdui->In1 = obj = fl_add_input( FL_NORMAL_INPUT, 90, 60, 500, 40, "Eingabe" ); fl_set_object_callback( obj, callIn1, 0 ); fl_set_object_return( obj, FL_RETURN_END_CHANGED ); fdui->Butt1 = obj = fl_add_button( FL_NORMAL_BUTTON, 400, 230, 180, 40, "All OK" ); fl_set_object_lalign( obj, FL_ALIGN_CENTER ); fl_set_object_callback( obj, callButt1, 0 ); fdui->MyBrowser = obj = fl_add_browser( FL_NORMAL_BROWSER, 50, 120, 540, 90, "" ); fl_set_object_return( obj, FL_RETURN_CHANGED | FL_RETURN_SELECTION | FL_RETURN_DESELECTION ); fl_end_form( ); fdui->MainWidget->fdui = fdui; return fdui; }

/usr/share/doc/libforms-doc #include <stdlib.h> #include "v1.h" /* Callbacks and freeobj handles for form MainWidget */ /*************************************** ***************************************/ void callIn1( FL_OBJECT * ob, long data ) { /* Fill-in code for callback here */ const char * p=fl_get_input(ob); printf("callIn1 called: %s\n",p); fl_add_browser_line(fd_MainWidget->MyBrowser,p); fl_set_input(ob,""); } void callButt1( FL_OBJECT * ob, exit(0); Doku unter: /usr/share/doc/libforms-doc