# Programmation GTK2 en Pascal/GtkButton

* Programmation GTK2 en Pascal
* Introduction
* Pré-requis
* Logiciels nécessaires
* Installation sous Linux
* Installation sous Windows
* Installation sous Mac/OS
* Une application minimale
* Les bases
* La notion d'objet
* La gestion des évènements
* Le placement des contrôles
* Les contrôles (widgets) Gtk
* Les fenêtres
* Les conteneurs
* Les visuels
* Les boutons
* La saisie de données
* Les listes déroulantes
* Les menus
* Les décorations
* La barre d'outils
* Les sélections
* Les zones de texte
* Les listes et arbres
* La Glib : objets et fonctions
* Dessiner avec le Gdk
* Conclusion
* Bibliographie

## Présentation

Élément essentiel d'une interface graphique, le contrôle GtkButton est un bouton de base, une zone rectangulaire mis en valeur par un relief et un label. Gtk+ permet néanmoins d'aller plus loin, en pouvant lui ajouter des éléments comme des images « pixmap » ou autres.

### Hiérarchie

* Hiérarchie
* GObject
* └─GtkObject
* └─GtkWidget
* └─GtkContainer
* └─GtkBin
* └─GtkButton

## Utilisation de base
### Création d'un bouton

Pour créer un bouton, Gtk+ permet l'utilisation de quatre fonctions différentes :
La première fonction permet de créer un bouton vide. Cela permet de personnaliser complètement le bouton car GtkButton dérive de GtkContainer. On peut donc inclure n'importe quel type de contrôle dans le bouton (GtkLabel, GtkImage, etc.). Comme il dérive également de GtkBin, il ne peut contenir qu'un seul contrôle, il faudra donc passer par un GtkBox pour inclure plusieurs contrôles.
La deuxième fonction s'occupe en plus d'insérer un label à l'intérieur du bouton. Le paramètre _label (le caractère souligné permet d'éviter d'utiliser « label » directement qui est un mot réservé en Pascal) correspond au texte à afficher. Comme pour le contrôle GtkLabel, si un caractère accentué est utilisé, il faudra appeler la fonction g_locale_to_utf8 pour avoir un affichage correct du texte.
La troisième fonction ajoute à cela une nouvelle fonctionnalité. Elle permet, en plus d'afficher un label, de faire réagir le bouton à l'aide d'un raccourci clavier. La touche servant de raccourci est spécifiée dans le paramètre label. Il suffit de mettre « _ » devant la lettre souhaitée pour que la combinaison Atl+Touche active le bouton.
La quatrième fonction permet de créer un bouton avec un label, un raccourci clavier et une image. Cependant, pour faire cela, Gtk+ utilise les GtkStockItem qui est une structure contenant les informations sur le label et l'image à afficher. Gtk+ comporte déjà beaucoup de GtkStockItem prédéfinis (en tout cas les plus courant). Le paramètre stock_id est donc l'identifiant du GtkStockItem à utiliser.
Une fois le bouton créé, il ne reste plus qu'à l'inclure dans une fenêtre et de connecter le signal clicked, pour qu'un clic de souris sur le bouton corresponde à une action précise.

### Modifier le texte d'un bouton

À tout moment pendant l'exécution du programme, nous pouvons connaître ou modifier le texte d'un bouton à l'aide d'une de ces deux fonctions :
La première fonction renvoie le texte du bouton button (premier paramètre), tandis que la deuxième modifie le texte du bouton par la valeur du deuxième paramètre _label.

## Programme exemple

Pour ce chapitre, notre objectif sera de créer une application contenant trois boutons qui permettront de quitter l'application, un avec un label simple, un autre avec un label muni d'un raccourci clavier et le troisième avec une image issu du stock de bouton.
Voilà le fichier gtk020.pas :
Voilà ce que donne l'exécution du programme gtk020 :
* Boutons :
* GtkButton ~
* GtkToggleButton ~
* GtkCheckButton ~
* GtkRadioButton