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 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
|
#include <stdlib.h>
#include <stdio.h>
#include <gtk/gtk.h>
static gboolean cb_double_click (GtkWidget * p_widget,
GdkEventButton * p_event,
gpointer p_data)
{
if (p_widget != NULL)
{
if (GTK_IS_BUTTON (p_widget) && p_event->type == GDK_2BUTTON_PRESS)
{
gtk_button_set_label (GTK_BUTTON (p_widget), "Double clicked !");
printf ("Double clicked !\n");
}
else
{
gtk_button_set_label (GTK_BUTTON (p_widget), "Normal...");
printf ("Normal...\n");
}
}
return FALSE;
}
int main (int argc, char **argv)
{
/* Initialisation de GTK. */
gtk_init (&argc, &argv);
/* Creation de la fenetre principale du programme. */
GtkWidget * p_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
if (p_window != NULL)
{
/* Attributs de bases de la fenetre principale. */
gtk_window_set_title (GTK_WINDOW (p_window), "...");
gtk_window_set_default_size (GTK_WINDOW (p_window), 200, 200);
gtk_window_set_position (GTK_WINDOW (p_window), GTK_WIN_POS_CENTER);
gtk_container_set_border_width (GTK_CONTAINER (p_window), 5);
/* Connexion de l'evenement de destruction de la fenetre. */
g_signal_connect (
G_OBJECT (p_window),
"destroy",
G_CALLBACK (gtk_main_quit),
NULL);
/* Mise en place du container de base. */
GtkWidget * p_vbox = gtk_hbox_new (FALSE, 0);
if (p_vbox != NULL)
{
gtk_container_add (GTK_CONTAINER (p_window), p_vbox);
/* Creation et ajout du bouton. */
GtkWidget * p_button = gtk_button_new_with_label ("Normal...");
if (p_button != NULL)
{
gtk_box_pack_start (GTK_BOX (p_vbox), p_button, TRUE, TRUE, 1);
g_signal_connect (
G_OBJECT (p_button),
"button-press-event",
G_CALLBACK (cb_double_click),
p_button);
/* Affichage des widgets. */
gtk_widget_show_all (p_window);
/* Boucle GTK. */
gtk_main ();
}
}
}
return EXIT_SUCCESS;
} |
Partager