IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

GTK+ par l'exemple


précédentsommairesuivant

XIII. Les barres d'outils

XIII-A. Aperçu

Image non disponible
Cliquez pour agrandir

XIII-B. Création d'une barre d'outils

La création d'une barre d'outils ressemble fort à celle d'un menu, en plus simple puisqu'il n'y a pas de sous-menu : on crée notre barre d'outils (gtk_toolbar_new) puis les éléments de la barre, pour cela on utilise des boutons (gtk_tool_button_new_from_stock), que l'on insère dans la barre (gtk_toolbar_insert). Pas conséquent notre fichier barreoutils.c ressemble à menu.c :

barreoutils.c
Sélectionnez
#include <gtk/gtk.h>
#include "callback.h"
#include "barreoutils.h"

static void toolbar_item_new (GtkToolbar *, const gchar *, GCallback, gpointer);

GtkToolbar *toolbar_new (gpointer user_data)
{
  GtkWidget *p_toolbar = NULL;

  p_toolbar = gtk_toolbar_new ();
  /* ... */
  toolbar_item_new (GTK_TOOLBAR (p_toolbar), GTK_STOCK_NEW, G_CALLBACK (cb_new), user_data);
  toolbar_item_new (GTK_TOOLBAR (p_toolbar), GTK_STOCK_OPEN, G_CALLBACK (cb_open), user_data);
  toolbar_item_new (GTK_TOOLBAR (p_toolbar), GTK_STOCK_SAVE, G_CALLBACK (cb_save), user_data);
  toolbar_item_new (GTK_TOOLBAR (p_toolbar), GTK_STOCK_SAVE_AS, G_CALLBACK (cb_saveas), user_data);
  toolbar_item_new (GTK_TOOLBAR (p_toolbar), GTK_STOCK_CLOSE, G_CALLBACK (cb_close), user_data);
  toolbar_item_new (GTK_TOOLBAR (p_toolbar), GTK_STOCK_QUIT, G_CALLBACK (cb_quit), user_data);
  return GTK_TOOLBAR (p_toolbar);
}

static void toolbar_item_new (GtkToolbar *p_toolbar, const gchar *stock_id, GCallback callback, gpointer user_data)
{
  GtkToolItem *p_tool_item = NULL;

  p_tool_item = gtk_tool_button_new_from_stock (stock_id);
  g_signal_connect (G_OBJECT (p_tool_item), "clicked", callback, user_data);
  gtk_toolbar_insert (p_toolbar, p_tool_item, -1);
}

Le code n'est pas complet, car lorsque j'exécute le programme, GTK+ affiche, en plus des icônes, le texte sous les boutons. Pour modifier cela, il suffit d'ajouter une ligne de code :

barreoutils.c
Sélectionnez
  gtk_toolbar_set_style (GTK_TOOLBAR (p_toolbar), GTK_TOOLBAR_ICONS);

Pourquoi gtk_tool_button_new_from_stock retourne un GtkToolItem et non un GtkWidget comme nous avons été habitués jusqu'à présent. Il s'agit d'une bizarrerie de GTK+ dont je ne connais pas la raison.

Pour anticiper un changement d'interface (dans GTK+ 3.0 peut être ?), nous aurions pu écrire :

 
Sélectionnez
Gtkwidget *p_tool_item = NULL;

p_tool_item = GTK_WIDGET (gtk_tool_button_new_from_stock (stock_id));
g_signal_connect (G_OBJECT (p_tool_item), "clicked", callback, user_data);
gtk_toolbar_insert (p_toolbar, GTK_TOOL_ITEM (p_tool_item), -1);

XIII-C. Code source


précédentsommairesuivant

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2006-2008 Nicolas Joseph. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.