Programmation GTK2 en Pascal/GtkSeparatorMenuItem

Programmation GTK2 en Pascal

Présentation

modifier

Le contrôle GtkSeparatorMenuItem permet de tracer une ligne qui va séparer les différents éléments d'un menu.

Hiérarchie

modifier
Hiérarchie
GObject
  └─GtkObject
      └─GtkWidget
          └─GtkContainer
              └─GtkBin
                  └─GtkItem
                      └─GtkMenuItem
                          ├─GtkImageMenuItem
                          ├─GtkCheckMenuItemGtkRadioMenuItem
                          ├─GtkSeparatorMenuItem
                          └─GtkTearoffMenuItem

Utilisation de base

modifier

Création

modifier

Il n'y a qu'une seule fonction pour ce contrôle, c'est sa fonction de création :

function gtk_separator_menu_item_new : PGtkWidget;

Pour ajouter ce contrôle dans un menu, il faut procéder comme avec tous les autres items, c'est-à-dire utiliser la fonction gtk_menu_shell_append.

Programme exemple

modifier

Nous allons créer un menu dans celui du style de l'exemple gtk034.pas contenant un GtkSeparatorMenuItem.

Voilà le fichier gtk037.pas :

program gtk037;

uses glib2, gtk2;

var
  pFenetre   : PGtkWidget;
  pVBox	     : PGtkWidget;
  pBarreMenu : PGtkWidget;
  pMenuItemFichier : PGtkWidget;
  pMenuFichier     : PGtkWidget;
  pMenuItemOuvrir  : PGtkWidget;
  pMenuItemFermer  : PGtkWidget;
  pMenuItemQuitter : PGtkWidget;
  pMenuSeparateur  : 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), 'Gtk037 : Menu avec séparateur');
  gtk_signal_connect(pGTKOBJECT(pFenetre), 'destroy', GTK_SIGNAL_FUNC(@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 de menu
  pBarreMenu := gtk_menu_bar_new;
  gtk_box_pack_start(GTK_BOX(pVBox), pBarreMenu, FALSE, FALSE, 0);

  // Création de l'item Fichier et rattachement à la barre de menu
  pMenuItemFichier := gtk_menu_item_new_with_label('Fichier');
  gtk_menu_shell_append(GTK_MENU_SHELL(pBarreMenu), pMenuItemFichier);

  // Création du menu Fichier et rattachement à l'item Fichier
  pMenuFichier := gtk_menu_new;
  gtk_menu_item_set_submenu(GTK_MENU_ITEM(pMenuItemFichier), pMenuFichier);

  // Création de l'item Ouvrir et rattachement au menu Fichier
  pMenuItemOuvrir := gtk_image_menu_item_new_from_stock(GTK_STOCK_OPEN, NULL);
  gtk_menu_shell_append(GTK_MENU_SHELL(pMenuFichier), pMenuItemOuvrir);

  // Création de l'item Fermer et rattachement au menu Fichier
  pMenuItemFermer := gtk_image_menu_item_new_from_stock(GTK_STOCK_CLOSE, NULL);
  gtk_menu_shell_append(GTK_MENU_SHELL(pMenuFichier), pMenuItemFermer);

  // Création du séparateur
  pMenuSeparateur := gtk_separator_menu_item_new;
  gtk_menu_shell_append(GTK_MENU_SHELL(pMenuFichier), pMenuSeparateur);

  // Création de l'item Quitter et rattachement au menu Fichier
  pMenuItemQuitter := gtk_image_menu_item_new_from_stock(GTK_STOCK_QUIT, NULL);
  gtk_menu_shell_append(GTK_MENU_SHELL(pMenuFichier), pMenuItemQuitter);
  g_signal_connect(pGTKOBJECT(pMenuItemQuitter), 'activate', G_CALLBACK(@gtk_main_quit), NULL);

  gtk_widget_show_all(pFenetre);
  gtk_main;
end.


Voilà ce que donne l'exécution du programme gtk037.pas après avoir cliqué sur le menu « Fichier » :

 


Menu : GtkMenuBar ~ GtkMenu ~ GtkMenuShellGtkMenuItem ~ GtkImageMenuItem ~ GtkCheckMenuItem ~ GtkRadioMenuItem ~ GtkSeparatorMenuItem ~ GtkTearoffMenuItem