1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| #include <gtk/gtk.h>
/* Structure regroupant tous les éléments de l'interface graphique
* GUI (Graphical User Interface) = IHM (Interface Homme Machine)
* Vos fenêtres quoi :-) */
typedef struct
{
GtkWidget* main_window; /* La fenêtre principale */
GtkWidget* button; /* Un bouton */
} Gui;
/* La fonction de rappel (callback) appelée quand on clique sur le bouton */
static void on_button_clicked (GtkButton *button, gpointer user_data)
{
/* On commence par récuperer le pointeur vers notre interface graphique.
* De cette manière on peut accéder à tout le contenu de la structure.
* Le paramètre user_data correspond au dernier paramètre de
* g_signal_connect */
Gui* gui = user_data;
gchar *title;
/* On copie le titre de la fenêtre, on l'inverse et on remplace
* l'ancien titre */
title = g_strdup (gtk_window_get_title (GTK_WINDOW (gui->main_window)));
g_strreverse (title);
gtk_window_set_title (GTK_WINDOW (gui->main_window), title);
g_free (title);
}
/* Fonction qui crée tous les éléments de notre interface graphique */
Gui * gui_new (void)
{
Gui *gui;
gui = g_new (Gui, 1);
gui->main_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (gui->main_window), "Hello World !");
gtk_window_set_default_size (GTK_WINDOW (gui->main_window), 320, 240);
gui->button = gtk_button_new_with_label ("Cliquez moi !");
gtk_container_add (GTK_CONTAINER (gui->main_window), gui->button);
return gui;
}
int main (int argc, char **argv)
{
Gui *gui;
gtk_init (&argc, &argv);
gui = gui_new ();
g_signal_connect (G_OBJECT (gui->main_window), "delete-event", gtk_main_quit, NULL);
g_signal_connect (G_OBJECT (gui->button), "clicked", G_CALLBACK (on_button_clicked), gui);
gtk_widget_show_all (gui->main_window);
gtk_main ();
return 0;
} |
Partager