Programmation GTK2 en Pascal/GtkSeparatorToolItem

Un livre de Wikilivres.
Programmation GTK2 en Pascal

Présentation[modifier | modifier le wikicode]

Le contrôle GtkSeparatorToolItem permet de gérer un séparateur d'éléments dans une barre d'outils.

Hiérarchie[modifier | modifier le wikicode]

Hiérarchie
GObject
  └─GtkObject
      └─GtkWidget
          └─GtkContainer
              └─GtkBin
                  └─GtkToolItem
                      └─GtkSeparatorToolItem

Utilisation de base[modifier | modifier le wikicode]

Création[modifier | modifier le wikicode]

Pour créer un séparateur, Gtk+ nous donne une fonction simple :

function gtk_separator_tool_item_new : PGtkToolItem;

NB : Contrairement aux fonctions usuelles de Gtk+ de création de contrôles, ces fonctions ne renvoient pas un PGtkWidget mais un PGtkToolItem.

NB 2 : La fonction n'est pas encore définie dans les entêtes Pascal de Gtk+ de la version 1.9.8 de Free Pascal, il faut donc la définir nous-même. Cf le programme d'exemple ci-dessous.

Programme exemple[modifier | modifier le wikicode]

Nous allons créer dans une fenêtre une barre d'outils avec deux boutons encadrant un séparateur.

Voilà le fichier gtk047.pas :

 program gtk047;
 
 uses glib2, gtk2;
 
 procedure gtk_toolbar_insert(toolbar : PGtkToolbar; item : PGtkToolItem; pos : gint); cdecl;
   external gtklib name 'gtk_toolbar_insert';
 function gtk_separator_tool_item_new : PGtkToolItem; cdecl;
   external gtklib name 'gtk_separator_tool_item_new';
 
 var
   pFenetre     : PGtkWidget;
   pVBox        : PGtkWidget;
   pBarreOutils : PGtkWidget;
   pBouton1     : PGtkToolItem;
   pBouton2     : PGtkToolItem;
   pSeparateur  : 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), 'Gtk047 : Barre d''outils');
   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
   pBouton1 := gtk_tool_button_new_from_stock(GTK_STOCK_OPEN);
   gtk_toolbar_insert(GTK_TOOLBAR(pBarreOutils), pBouton1, -1);
 
   // Création du séparateur
   pSeparateur := gtk_separator_tool_item_new;
   gtk_toolbar_insert(GTK_TOOLBAR(pBarreOutils), pSeparateur, -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 gtk047 :


Barre d'outils : GtkToolbar ~ GtkToolItem ~ GtkToolButton ~ GtkMenuToolButton ~ GtkToggleToolButton ~ GtkRadioToolButton ~ GtkSeparatorToolItem