#include <stdlib.h>
#include <gtk/gtk.h> static
GtkWidget *pStatusBar;
void OnAboutBtn(GtkWidget *pButton, GtkWidget
*pWindow);
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);
g_signal_connect(G_OBJECT(pAboutButton), "clicked",
G_CALLBACK(OnAboutBtn), pWindow);
/* 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 OnAboutBtn(GtkWidget *pButton, GtkWidget
*pWindow)
{
GtkWidget *pAboutDlg;
pAboutDlg = gtk_message_dialog_new (GTK_WINDOW(pWindow),
GTK_DIALOG_MODAL,
GTK_MESSAGE_INFO,
GTK_BUTTONS_OK,
"Cours GTK+ 2.0\n"
"GtkStatusbar\n"
"http://gtk.developpez.com");
gtk_dialog_run(GTK_DIALOG(pAboutDlg));
gtk_widget_destroy(pAboutDlg);
}
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));
} |