| 12
 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
 85
 86
 87
 88
 89
 90
 91
 92
 93
 
 |  
#include <stdlib.h>
#include <gtk/gtk.h>
 
  struct sImage
  {
      GtkWidget *pImage1;
      GtkWidget *pImage2;
  };
 
  typedef struct sImage *Image;
 
void on_pButton_clicked(GtkWidget* widget, Image data);
 
int main(int argc, char **argv)
{
  GtkWidget *pWindow;
  GtkWidget *pVBox;
  GtkWidget *pButton;
 
 
  Image i;
  i = malloc(sizeof(struct sImage));
 
  gtk_init(&argc, &argv);
 
  /* Creation de la fenetre */
  pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  gtk_window_set_title(GTK_WINDOW(pWindow), "3D Cartographe");
  gtk_window_set_default_size(GTK_WINDOW(pWindow), 800, 600);
  g_signal_connect(G_OBJECT(pWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL);
 
  /* Creation de la GtkVBox */
  pVBox = gtk_vbox_new(FALSE, 0);
  gtk_container_add(GTK_CONTAINER(pWindow), pVBox);
 
 
  /* Creation de l'image 1*/
  i->pImage1 = gtk_image_new_from_file(NULL);
  gtk_box_pack_start(GTK_BOX(pVBox),i->pImage1,TRUE,TRUE,1);
 
  /* Creation de l'iamge 2*/
  i->pImage2 = gtk_image_new_from_file(NULL);
  gtk_box_pack_start(GTK_BOX(pVBox),i->pImage2,TRUE,TRUE,2);
 
  /* Creation du bouton */
  pButton = gtk_button_new_from_stock ("gtk-open");
  gtk_box_pack_start(GTK_BOX(pVBox),pButton,FALSE,FALSE,0);
  g_signal_connect ((gpointer) pButton, "clicked",
                    G_CALLBACK (on_pButton_clicked),
                    i);
 
 
  /* Affichage de tous les widget */
  gtk_widget_show_all(pWindow);
  gtk_main();
 
  return EXIT_SUCCESS;
}
 
void on_pButton_clicked(GtkWidget* widget,Image data)
{
  GtkWidget *pFileSelection;
  GtkWidget *pParent;
  gchar *sChemin;
 
  pParent = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  pFileSelection = gtk_file_chooser_dialog_new("Ouvrir...",
                                               GTK_WINDOW(pParent),
                                               GTK_FILE_CHOOSER_ACTION_OPEN,
                                               GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
                                               GTK_STOCK_OPEN, GTK_RESPONSE_OK,
                                               NULL);
 
 
  gtk_window_set_modal(GTK_WINDOW(pFileSelection), TRUE);
  switch(gtk_dialog_run(GTK_DIALOG(pFileSelection)))
  {
    case GTK_RESPONSE_OK:
 
      sChemin = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(pFileSelection));
 
      gtk_image_set_from_file(GTK_IMAGE(data->pImage1),sChemin);
      gtk_image_set_from_file(GTK_IMAGE(data->pImage2),sChemin);
 
      g_free(sChemin);
      break;
    default:
      break;
  }
  gtk_widget_destroy(pFileSelection);
 
} |