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
| #include <stdlib.h>
#include <gtk/gtk.h>
#define IMAGE1 "./image1.jpg"
#define IMAGE2 "./image2.jpg"
void
gc_button_change (GtkButton *button, GtkWidget *image)
{
static gboolean bascule = FALSE;
if (bascule)
gtk_image_set_from_file (GTK_IMAGE(image), IMAGE1);
else
gtk_image_set_from_file (GTK_IMAGE(image), IMAGE2);
bascule = !bascule;
}
int
main(int argc, char** argv)
{
GtkWidget *window = NULL;
GtkWidget *image=NULL;
GtkWidget *box = NULL;
GtkWidget *button=NULL;
// Initialisation gtk
gtk_init(&argc, &argv);
// Création fenetre
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window), "Test changement d'image");
gtk_window_set_default_size(GTK_WINDOW(window), 400, 200);
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER_ALWAYS);
// Insertion d'une box dans la fenêtre principale
box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
gtk_container_add(GTK_CONTAINER(window), box);
// Connexion du signal "delete-event" pour fermer l'application
g_signal_connect(G_OBJECT(window), "delete-event", G_CALLBACK(gtk_main_quit), NULL);
// Insertion d'une première image
image = gtk_image_new_from_file (IMAGE1);
gtk_box_pack_end (GTK_BOX(box), image, FALSE, FALSE, 0);
// Insertion d'un bouton pour basculer d'une image à l'autre
button = gtk_button_new_with_label ("basculer image");
gtk_box_pack_start (GTK_BOX(box), button, FALSE, FALSE, 0);
g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(gc_button_change), image);
// Affichage du tout
gtk_widget_show_all(window);
gtk_main();
return EXIT_SUCCESS;
} |
Partager