Grafisch programmeren met GTK - Deel 3

Vergelijkbare documenten
Grafisch programmeren met GTK

Grafisch programmeren met GTK - Deel 2

De MySQL C API. Variabelen in C Functies in C Pointers in C

Ontdek het universum. Wat is Celestia? LinuxFocus article number door Katja Socher <katja/at/linuxfocus.

Dia, een programma voor het maken van diagrammen

Globale kennismaking

Gnome applicaties ontwikkelen met Python (deel 2)

Linux op de desktop: een computer voor mam

Applicaties op afstand draaien met X11

DocBook XML documenten bewerken

WebSite Director Gebruikersgids

Formulieren maken met Dreamweaver CS 4

Programmeren onder RISC OS: de snelstart. in BBC-Basic

Handleiding JEvents 1.0

IMP Uitwerking week 13

Handleiding. Look & Feel. RIE Manager. Versie 1 maart IT&Care B.V.

Handleiding IrfanView. IrfanView is een applicatie om grafische bestanden te bekijken, te bewerken en opnieuw op te slaan.

Een eerste applicatie

(X)dialog: Pratende shells

Examen Programmeren 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar juni, 2010

Formulieren maken met Dreamweaver CS 4/CS 5

Waar pas je een WordPress menu aan?

VBA voor doe-het-zelvers

HANDLEIDING PROGRAMMEREN IN PASCAL (LAZARUS)

6. Reeksen

Handleiding Programmeren en bewerken CAM (graveermachine) Aan de slag. in beroep en bedrijf. Handleiding Programmeren en bewerken CAM (graveermachine)

Evenwijdig programmeren - Bericht wachtrijen (2)

HD44780 compatibele LCD-displays begrijpen

1 Uw persoonlijke labels - stap voor stap

Informatie Voor algemene vragen/opmerkingen omtrent de inhoud van deze site kunt u bellen of en met: Cargo Data Systems BV

Symbol for Windows BlissEditor

Tips en tricks. Hoe te werken met Qualtrics. Ilonka van Meenen

Handleiding Wordpress CMS

AN0021-NL. Een trigger- en actieregel maken. Overzicht. Een Trigger- en actieregel creëren

Handleiding Meet-Me Conferencing

Handleiding website beheer

Introductie testtooling Wink

VEELGESTELDE VRAGEN. 1. Hoe start de FixMeStick voor Mac? 2. Hoe start de FixMeStick voor Windows? 3. Hoe start de FixMeStick vanuit BIOS?

Handleiding CMS Joomla 3.2 v1.2


Lync 2010 korte gebruikershandleiding

eerste voorbeelden in Java

Gentoo linux. Introductie. Gentoo is anders. LinuxFocus article number door Guido Socher (homepage) Over de auteur:

Handleiding tabel binnen Tridion

Hoe te werken met Word en SmarTeam?

Head Pilot v Gebruikershandleiding

JSN UniForm-Joomla 3 handleiding

Voeler ingang van de ilog recorder. Stop de temperatuurvoeler

De tekstverwerker. Afb. 1 de tekstverwerker

Siemens Industry Mall. Handleiding. Winkelwagenbeheer

PhotoworkZ pop-up website handleiding

Handleiding: Gebruikersomgeving

Hoofdstuk 4: Nieuwe objecten

Automail voor fli4l. Korte beschrijving van de Omgeving. Het Probleem. LinuxFocus article number 308

Arduino Cursus, Deel 2 Programmeren. Simon Pauw, ZB45, Amsterdam

Programmeren met Grafische Objecten. Inleiding Programmeren II Hoorcollege 1 prof. dr. van Noord en dr. L.M. Bosveld-de Smet

Handleiding PratoFlex. Change Controls. Making HR Processes Flow

3D met Blender: de eerste stapjes

Handleiding administrator

HANDLEIDING INFOGRAPHIC SOFTWARE Versie 2.3 / jan 2014

PROS1E1 Handleiding ( ) Kf/Dd/Bd

Handleiding (v2).

Thema s. 1. Thema kiezen

Programmeermethoden. Pointers. Walter Kosters. week 10: november kosterswa/pm/

Voeler ingang van de ilog recorder. Stop de temperatuurvoeler

Microsoft Word 365. Kennismaken AAN DE SLAG MET DIGITALE VAARDIGHEDEN TRAINING: MICROSOFT WORD 365

Welkom bij Digicel Online Top Up

Auteur : MM-Pro Datum : Versie : Handleiding Beheer Standaard Website

Rapportages instellen

Inhoudsopgave Voorwoord 5 Nieuwsbrief 5 Introductie Visual Steps 6 Wat heeft u nodig? 6 De volgorde van lezen 7 Uw voorkennis

Scratch voor mobiel: AppInventor

Gebruikershandleiding 123OPSLAAN.NL. Gebruikershandleiding. Pagina 1

Handleiding blog Sjibke. Waar kan ik de blog vinden? Hoe kan ik iets op de blog zetten?

Gebruikershandleiding CEN Editor

Programmeerstructuren met App Inventor

WERKING TEKENPROGRAMMA

Teksten op je WordPress site zetten of aanpassen

A. Voor het lettertype te kiezen ga je naar het tabblad Start. B. Daarna ga je naar lettertype, als volgt klik je op het pijltje ernaast.

Evenementen publiceren en bewerken

Handleiding website FMS-spaarnwoude.nl

PhPlist Gebruikers Handleiding

Hippo-handleiding Dossier Inhoudsopgave

INDESIGN CS2 EEN KALENDER AUTOMATISCH OPMAKEN IN ADOBE INDESIGN CS2

Parallelle Poort Aansturen Met Visual Basic

Quick Guide VivianCMS

Handleiding sms verzending uit Jack Plus

Les19 Schaaktornooi (les Greenstuff)

2. Een adressenbestand maken in Excel

Tentamen Programmeren in C (EE1400)

Gebruikershandleiding Inleiding

Javascript oefenblad 1

Voorzie iedere pagina van een titel. Je kan de titel uit het menu aanhouden. Een titel voeg je toe als volgt: 1. Klik op Element toevoegen.

# seetut_20 $ De Sjabloon Editor Toepassen + seetut:0370 K Sjablonen;Algemeen;Naam Wijzigen Sjabloon;Ontwerp;Sjabloon Editor;Sjabloon Openen

Kennismaking. Versies. Text. Graph: Word Logo voorbeelden verschillende versies. Werkomgeving

Kempische steenweg 293, bus Hasselt Belgium. Euro-Twice N.V. Handleiding: Registratie. van defecte toestellen Versie 1.

Handicom. Symbol for Windows. Image Manager. (Versie 3) Handicom, 2006, Nederland

Examen Programmeren I 2e Bachelor Elektrotechniek en Computerwetenschappen Faculteit Ingenieurswetenschappen Academiejaar juni 2011

Inhoud. Handleiding Dododent. Beste tandarts of praktijkmanager,

Transcriptie:

LinuxFocus article number 332 http://linuxfocus.org Grafisch programmeren met GTK - Deel 3 door Özcan Güngör <ozcangungor(at)netscape.net> Over de auteur: Op het ogenblik doe ik mijn legerdienst als Linux- en Oracle beheerder en webprogrammeur. Vertaald naar het Nederlands door: Samuel Derous <Zenodotus/at/linux.be> Kort: In deze serie artikelen zullen we leren hoe we graphical user interfaces (GUIs) kunnen schrijven door gebruik te maken van GTK. Ik heb er geen idee van hoe lang deze serie zal duren. Om deze artikelen te begrijpen zou je de volgende mogelijkheden van de C-talen moeten kennen: Variabelen Functies Pointers Het is aanbevolgen de vorige artikelen te lezen: Grafisch programmeren met GTK Grafisch programmeren met GTK - Deel 2. Dit artikel is wat korter dan de vorige daar ik momenteel mijn legerdienst doe. Toggle Button Deze knop lijkt op een normale knop maar heeft twee toestanden: ingedrukt of niet. Om een indrukknop te maken wordt één van de volgende functies gebruikt: GtkWidget *toggle=gtk_toggle_button_new(void); GtkWidget *toggle=gtk_toggle_button_new_with_label(const gchar *label); De eerste functie maakt een indrukknop zonder tekstlabel, terwijl de tweede één creëert met de string

label erop. Zijn status kun je met volgende functie aanpassen: gtk_toggle_button_set_active (GtkToggleButton *toggle_button, gboolean is_active); Hier is toggle_button de knop wiens status je wenst aan te passen en active is de status (0 of 1). Wanneer het 0 is, is de knop niet ingedrukt; wanneer het 1 is, is de knop wel ingedrukt. Om de status van de knop te verkrijgen kan volgende functie gebruikt worden: gboolean gtk_toggle_button_get_active(gtktogglebutton *button); Het "toggled" event kan verbonden worden met een indrukknop. Hier is een voorbeeld: void togg(gtkwidget *widget, gpointer *data) if (gtk_toggle_button_get_active(gtk_toggle_button(data))) g_print("state is 1\n"); else g_print("state is 0\n"); int main( int argc,char *argv[] ) gtk_window_set_title (GTK_WINDOW (window), "Toggle Button"); /* Verbind een vernietigingsevent aan het venster. */ GTK_SIGNAL_FUNC(gtk_main_quit), NULL); /* Maak een toggle knop */ button=gtk_toggle_button_new_with_label("i m a toggle button"); /* Voeg de knop toe aan het venster */ gtk_container_add(gtk_container(window),button); /* Verbind het "toggled" event aan de knop */ gtk_signal_connect (GTK_OBJECT (button), "toggled", GTK_SIGNAL_FUNC(togg),(gpointer *)button); gtk_widget_show (window); Het keuzevakje

Het keuzevakje is een subklasse van de toggle knop. Het kan gebruikt worden om opties te (de)selecteren. Om een keuzevakje te maken wordt volgende functie gebruikt: GtkWidget* gtk_check_button_new (void); GtkWidget* gtk_check_button_new_with_label (const gchar *label); De uitleg is dezelfde als voor de indrukknop. Het voorbeeld: void togg(gtkwidget *widget, gpointer *data) if (gtk_toggle_button_get_active(gtk_toggle_button(data))) g_print("state is 1\n"); else g_print("state is 0\n"); int main( int argc,char *argv[] ) gtk_window_set_title (GTK_WINDOW (window), "Check Button"); /* Verbind een vernietigingsevent aan het venster. */ GTK_SIGNAL_FUNC(gtk_main_quit), NULL); /* Maak een keuzevakje */ button=gtk_check_button_new_with_label("i m a check button"); /* Voeg het vakje toe aan het venster */ gtk_container_add(gtk_container(window),button); /* Verbind het "toggled" event aan de knop */ gtk_signal_connect (GTK_OBJECT (button), "toggled", GTK_SIGNAL_FUNC(togg), (gpointer *)button); gtk_widget_show (window); Label Labels laten je toe om waar dan ook in een venster tekst te plaatsen. Om een label te maken gebruik je gewoon de volgende functie: GtkWidget* gtk_label_new(const gchar *text);

Met de functie gtk_label_set_text(gtklabel *label, gchar *text); kun je ten allen tijde de string op een label aanpassen. gtk_label_set_justify(gtklabel *label, GtkJustification jtype); De gtk_label_set_justify functie wordt gebruik om de tekst op een label uit te vullen. jtype kan de volgende waarden aannemen: GTK_JUSTIFY_LEFT om de tekst links uit te vullen GTK_JUSTIFY_RIGHT om de tekst rechts te plaatsen GTK_JUSTIFY_CENTER om de tekst te centreren GTK_JUSTIFY_FILL om de tekst het gehele label te laten vullen. gtk_label_set_line_wrap (GtkLabel *label,gboolean wrap); wordt gebruikt om de tekst verdeelbaar te maken (ook wel terugloop genoemd), zodat het verdeeld kan worden in verschillende stukken wanneer de tekst langer is dan de plaats die het moet innemen. De rest van de regel gaat dan verder op de volgende lijn. Wanneer wrap 1 is, zal de tekst overgebracht worden naar de volgende lijn, anders niet. gtk_label_get(gtklabel *label, gchar **str) wordt gebruikt om de tekst op het label als str te krijgen. ToolTips Een Tooltip is een tekst die verschijnt wanneer de muis over een widget beweegt. Je kunt bijvoorbeeld een tip op een knop plaatsen en wanneer je de muis over die knop beweegt dan verschijnt bijvoorbeeld de tekst "verstuur de informatie". Om dit te doen dient eerst een GtkToolTips widget gemaakt te worden: GtkToolTips* gtk_tooltips_new(); Vervolgens wordt de tooltip aan een bestaande widget gehecht: gtk_tooltips_set_tip(gtktooltips *tooltips, GtkWidget *widget, const gchar *tip_text,const gchar *tip_private); Een klein voorbeeldje: int main( int argc,char *argv[] ) GtkTooltips *tip;

gtk_window_set_title (GTK_WINDOW (window), "Tooltips"); /* Verbind een vernietigingsevent aan het venster */ GTK_SIGNAL_FUNC (gtk_main_quit), NULL); /* Maak een knop */ button=gtk_button_new_with_label("i m a Button"); /* Voeg de knop toe aan het venster */ gtk_container_add(gtk_container(window),button); /* Maak een tooltips aan*/ tip=gtk_tooltips_new(); /* Verbind deze tooltip aan de knop met tekst */ gtk_tooltips_set_tip(tip, button, "Click me!",null); gtk_widget_show(window); Nog enkele andere functies: gtk_tooltips_enable (GtkTooltips *tooltips); stelt de tooltips in werking. gtk_tooltips_disable (GtkTooltips *tooltips); Stelt de tooltips buiten werking. Om welke tooltipdata van een widget dan ook te verkrijgen, hebben we het volgende nodig GtkTooltipsData* gtk_tooltips_get_data(gtkwidget *widget); GtkTooltipsData is een struct die er als volgt uitziet: struct _GtkTooltipsData GtkTooltips *tooltips; GtkWidget *widget; gchar *tip_text; gchar *tip_private; GdkFont *font; gint width; GList *row; ; Om de vertraging van de verschijnende tekst aan te passen: gtk_tooltips_set_delay (GtkTooltips *tip, guint delay) Combo Box

Een combo box is een aanpasbaar tekstveld gecombineerd met een pull-down menu. Je kunt een waarde ingeven of er één selecteren uit een uitklapbare lijst. Een combo box kan gemaakt worden met GtkWidget *gtk_combo_new(); En we hebben een lijst met opties nodig in de vorm van een GList struct. GList *glist=null; De opties kunnen op volgende manier aan de lijst worden toegevoegd GList *g_list_append(glist *list, gchar *option); Dan dient de lijst aan de combo box toegevoegd te worden gtk_combo_set_popdown_strings(gtkcombo *combo, GList *List); De combo box is klaar. Om de geselecteerde opties te lezen gebruik je: gchar *gtk_entry_get_text(gtkentry *entry); entry is in dit geval GTK_ENTRY(GTK_COMBO(combo)->entry)). gtk_combo_set_use_arrows(gtkcombo *combo,gint val); Deze functie wordt gebruikt om ervoor te zorgen dat de opwaartse/neerwaartse pijltjestoetsen op het toetsenbord de geselecteerde waarde in een combo box kunnen wijzigen. Wanneer val 0 is, zullen deze toetsen niet werken, anders zullen deze toetsen de waarde wijzigen. Maar waneer de waarde in de combo box nieuw is (niet in de lijst staat), dan zullen deze toetsen niet werken. gtk_combo_set_use_arrows_always(gtkcombo *combo,gint val); Deze functie is dezelfde als gtk_combo_set_use_arrows maar deze versie zorgt ervoor dat ook bij een nieuwe waarde, de pijltjestoetsen blijven werken. gtk_combo_set_value_in_list(gtkcombo *combo, gboolean val, gboolean ok_if_empty); Wanneer val 1 is, kun je een waarde in de lijst ingegeven. Wanneer ok_if_empty 1 is mag de waarde leeg gelaten worden. void act(gtkwidget *widget, gpointer *data) g_print((gchar *)data); int main( int argc,char *argv[] ) GtkWidget *combo; GtkWidget *box; GList *list=null; list=g_list_append(list,"slackware");

list=g_list_append(list,"redhat"); list=g_list_append(list,"suse"); gtk_window_set_title (GTK_WINDOW (window), "Combo Box"); /* Verbind een vernietigingsevent aan het venster */ GTK_SIGNAL_FUNC(gtk_main_quit), NULL); /* Maak een horizontaal vak */ box=gtk_hbox_new(1,0); gtk_container_add(gtk_container(window),box); /* Maak een combo box */ combo=gtk_combo_new(); /* Stel de lijst in */ gtk_combo_set_popdown_strings(gtk_combo(combo),list); /* Zorg ervoor dat de pijltjestoetsen werken */ gtk_combo_set_use_arrows_always(gtk_combo(combo),1); gtk_box_pack_start(gtk_box(box), combo,1,1,1); button=gtk_button_new_with_label("write it"); gtk_signal_connect(gtk_object(button),"clicked",gtk_signal_func(act), gtk_entry_get_text(gtk_entry(gtk_combo(combo)->entry))); gtk_box_pack_start(gtk_box(box), button,1,1,1); gtk_widget_show(box); gtk_widget_show(combo); gtk_widget_show (window); Commentaren zijn altijd welkom. Site onderhouden door het LinuxFocus editors team Özcan Güngör "some rights reserved" see linuxfocus.org/license/ http://www.linuxfocus.org Vertaling info: tr --> -- : Özcan Güngör <ozcangungor(at)netscape.net> en --> tr: Özcan Güngör <ozcangungor%28at%29netscape.net> en --> nl: Samuel Derous <Zenodotus/at/linux.be> 2005-01-14, generated by lfparser_pdf version 2.51