| Programmation GTK2 en Pascal |
|
Présentation
Le contrôle GtkToolButton permet de gérer un élément de barre d'outils de type bouton.
Hiérarchie
| Hiérarchie |
GObject
└─GtkObject
└─GtkWidget
└─GtkContainer
└─GtkBin
└─GtkToolItem
└─GtkToolButton
├─GtkMenuToolButton
└─GtkToggleToolButton |
Utilisation de base
Création
Pour 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
Nous 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 |