/* StatusBar http://www.gtk-fr.org/wakka.php?wiki=LaBarreDEtat gcc `pkg-config --cflags --libs gtk+-2.0` -o 13b 13b.c &&./13b */ #include <stdlib.h> #include <gtk/gtk.h> static GtkWidget *pStatusBar; void OnExitBtnEnter(GtkWidget *pButton, gpointer iContextId); void OnAboutBtnEnter(GtkWidget *pButton, gpointer iContextId); void ClearStatus(GtkWidget *pButton, gpointer iContextId); int main(int argc, char **argv) { GtkWidget* pWindow; GtkWidget* pVBox; GtkWidget* pExitButton; GtkWidget *pAboutButton; guint iContextId1; guint iContextId2; gtk_init(&argc, &argv); pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_default_size(GTK_WINDOW(pWindow), 320, 200); gtk_window_set_title(GTK_WINDOW(pWindow), "GtkStatusbar"); g_signal_connect(G_OBJECT(pWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL); pVBox=gtk_vbox_new(FALSE,5); gtk_container_add(GTK_CONTAINER(pWindow), pVBox); pExitButton=gtk_button_new_with_label("Quitter"); gtk_box_pack_start(GTK_BOX(pVBox), pExitButton, TRUE, FALSE, 5); g_signal_connect(G_OBJECT(pExitButton), "clicked", G_CALLBACK(gtk_main_quit), NULL); pAboutButton=gtk_button_new_with_label("A propos..."); gtk_box_pack_start(GTK_BOX(pVBox), pAboutButton, TRUE, FALSE, 5); /* Creation de la barre d'etat */ pStatusBar = gtk_statusbar_new(); gtk_box_pack_end(GTK_BOX(pVBox), pStatusBar, FALSE, FALSE, 0); /* Creation des contextes */ iContextId1 = gtk_statusbar_get_context_id(GTK_STATUSBAR(pStatusBar), "ExitMsg"); iContextId2 = gtk_statusbar_get_context_id(GTK_STATUSBAR(pStatusBar), "AboutMsg"); g_signal_connect(G_OBJECT(pExitButton), "enter", G_CALLBACK(OnExitBtnEnter), GINT_TO_POINTER(iContextId1)); g_signal_connect(G_OBJECT(pAboutButton), "enter", G_CALLBACK(OnAboutBtnEnter), GINT_TO_POINTER(iContextId2)); g_signal_connect(G_OBJECT(pExitButton), "leave", G_CALLBACK(ClearStatus), GINT_TO_POINTER(iContextId1)); g_signal_connect(G_OBJECT(pAboutButton), "leave", G_CALLBACK(ClearStatus), GINT_TO_POINTER(iContextId2)); gtk_widget_show_all(pWindow); gtk_main(); return EXIT_SUCCESS; } void OnExitBtnEnter(GtkWidget *pButton, gpointer iContextId) { /* Ajout d'un message */ gtk_statusbar_push (GTK_STATUSBAR (pStatusBar), GPOINTER_TO_INT(iContextId), "Quitter l'application"); } void OnAboutBtnEnter(GtkWidget *pButton, gpointer iContextId) { /* Ajout d'un message */ gtk_statusbar_push (GTK_STATUSBAR (pStatusBar), GPOINTER_TO_INT(iContextId), "Informations"); } void ClearStatus(GtkWidget *pButton, gpointer iContextId) { /* Suppression d'un message */ gtk_statusbar_pop(GTK_STATUSBAR(pStatusBar), GPOINTER_TO_INT(iContextId)); }