/*
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));
}