Programmation GTK2 en Pascal/GtkSeparatorToolItem

Un livre de Wikilivres.
Sauter à la navigation Sauter à la recherche
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 doutils');
  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 :

Programmation GTK2 en Pascal - gtk047.png


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