Programmation GTK2 en Pascal/GtkToolButton
Programmation GTK2 en Pascal |
|
Présentation
modifierLe contrôle GtkToolButton permet de gérer un élément de barre d'outils de type bouton.
Hiérarchie
modifierHiérarchie |
GObject └─GtkObject └─GtkWidget └─GtkContainer └─GtkBin └─GtkToolItem └─GtkToolButton ├─GtkMenuToolButton └─GtkToggleToolButton |
Utilisation de base
modifierCréation
modifierPour créer un bouton, Gtk+ permet l'utilisation de deux fonctions différentes :
function gtk_tool_button_new(icon_widget : PGtkWidget; szLabel : Pgchar) : PGtkToolItem; function gtk_tool_button_new_from_stock(stock_id : Pgchar) : PGtkToolItem;
La première fonction permet de créer un bouton avec une image et un label, il faudra pour cela lui fournir l'image dans le paramètre icon_widget
et le label dans szLabel
.
La deuxième fonction permet également de créer un bouton avec un label, un raccourci clavier et une image, en utilisant 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.
Programme exemple
modifierNous allons créer dans une fenêtre une barre d'outils avec deux boutons créés selon les deux méthodes disponibles.
Voilà le fichier gtk043.pas
:
program gtk043; uses glib2, gtk2; procedure gtk_toolbar_insert(toolbar : PGtkToolbar; item : PGtkToolItem; pos : gint); cdecl; external gtklib name 'gtk_toolbar_insert'; var pFenetre : PGtkWidget; pVBox : PGtkWidget; pBarreOutils : PGtkWidget; pBouton1 : PGtkToolItem; pImage : PGtkWidget; pBouton2 : PGtkToolItem; pLabel : PGtkWidget; begin gtk_init(@argc, @argv); pFenetre := gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_position(GTK_WINDOW(pFenetre), GTK_WIN_POS_CENTER); gtk_window_set_default_size(GTK_WINDOW(pFenetre), 320, 200); gtk_window_set_title(GTK_WINDOW(pFenetre), 'Gtk043 : Barre d''outils avec boutons'); gtk_signal_connect(pGTKOBJECT(pFenetre), 'destroy', G_CALLBACK(@gtk_main_quit), NULL); // Création de la GtkVBox pVBox := gtk_vbox_new(FALSE, 5); gtk_container_add(GTK_CONTAINER(pFenetre), pVBox); // Création de la barre d'outils pBarreOutils := gtk_toolbar_new; gtk_box_pack_start(GTK_BOX(pVBox), pBarreOutils, FALSE, FALSE, 0); // Création du premier bouton pImage := gtk_image_new_from_stock(GTK_STOCK_OPEN, GTK_ICON_SIZE_LARGE_TOOLBAR); pBouton1 := gtk_tool_button_new(pImage, 'Ouvrir...'); gtk_toolbar_insert(GTK_TOOLBAR(pBarreOutils), pBouton1, -1); // Création du deuxième bouton pBouton2 := gtk_tool_button_new_from_stock(GTK_STOCK_QUIT); gtk_toolbar_insert(GTK_TOOLBAR(pBarreOutils), pBouton2, -1); g_signal_connect(pGTKOBJECT(pBouton2), 'clicked', G_CALLBACK(@gtk_main_quit), NULL); // Création du label pLabel := gtk_label_new('Label'); gtk_box_pack_start(GTK_BOX(pVBox), pLabel, FALSE, FALSE, 0); gtk_widget_show_all(pFenetre); gtk_main; end.
Voilà ce que donne l'exécution du programme gtk043
:
Barre d'outils : GtkToolbar ~ GtkToolItem ~ GtkToolButton ~ GtkMenuToolButton ~ GtkToggleToolButton ~ GtkRadioToolButton ~ GtkSeparatorToolItem |