| 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
 94
 95
 96
 97
 98
 99
 
 | #include <stdlib.h>
#include <stdio.h>
#include <gtk/gtk.h>
 
 
static void cb (GtkWidget * p_wid, gpointer data)
{
   GtkWidget      *  pBoite      = NULL;
   GtkTextBuffer  *  pTextBuffer = NULL;
   GtkWidget      *  pEntry      = NULL;
   GtkWidget      *  pTextView   = data;
   const gchar    *  sNom        = NULL;
 
 
 
   /* Creation de la boite de dialogue */
   /* 1 bouton Valider */
   /* 1 bouton Annuler */
   pBoite = gtk_dialog_new_with_buttons("Saisie du nom",
      NULL, /* - Franck.H - Ici plus de fenetre en parametre donc on met NULL. */
      GTK_DIALOG_MODAL,
      GTK_STOCK_OK,GTK_RESPONSE_OK,
      GTK_STOCK_CANCEL,GTK_RESPONSE_CANCEL,
      NULL);
 
   /* Creation de la zone de saisie */
   pEntry = gtk_entry_new();
   gtk_entry_set_text(GTK_ENTRY(pEntry), "Saisissez votre nom");
   /* Insertion de la zone de saisie dans la boite de dialogue */
   /* Rappel : paramètre 1 de gtk_box_pack_start de type GtkBox */
   gtk_box_pack_start(GTK_BOX(GTK_DIALOG(pBoite)->vbox), pEntry, TRUE, FALSE, 0);
 
   /* Affichage des elements de la boite de dialogue */
   gtk_widget_show_all(GTK_DIALOG(pBoite)->vbox);
 
   /* On lance la boite de dialogue et on recupere la reponse */
   switch (gtk_dialog_run(GTK_DIALOG(pBoite)))
   {
      /* L utilisateur valide */
      case GTK_RESPONSE_OK:
         sNom = gtk_entry_get_text(GTK_ENTRY(pEntry));
 
         /*Création du buffer*/
         /* - Franck.H - Ici oublie 2 fois d'utiliser la macro GTK_TEXT_VIEW. */
         pTextBuffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW (pTextView));
         gtk_text_buffer_set_text(pTextBuffer, sNom,-1);
         gtk_text_view_set_buffer(GTK_TEXT_VIEW (pTextView),pTextBuffer);
         break;
 
      /* L utilisateur annule */
      case GTK_RESPONSE_CANCEL:
      case GTK_RESPONSE_NONE:
      default:
         break;
   }
 
   /* Destruction de la boite de dialogue */
   gtk_widget_destroy(pBoite);
   (void) p_wid;
}
 
 
int main (int argc, char ** argv)
{
   GtkWidget * p_win    = NULL;
   GtkWidget * p_vbox   = NULL;
   GtkWidget * p_btn    = NULL;
   GtkWidget * p_text   = NULL;
 
 
   gtk_init (& argc, & argv);
 
 
   p_win = gtk_window_new           (GTK_WINDOW_TOPLEVEL);
   gtk_window_set_default_size      (GTK_WINDOW (p_win), 640, 480);
   gtk_container_set_border_width   (GTK_CONTAINER (p_win), 5);
   gtk_window_set_position          (GTK_WINDOW (p_win), GTK_WIN_POS_CENTER);
   g_signal_connect                 (p_win, "destroy", gtk_main_quit, NULL);
 
 
   p_vbox = gtk_vbox_new   (FALSE, 5);
   gtk_container_add       (GTK_CONTAINER (p_win), p_vbox);
 
 
   p_text  = gtk_text_view_new ();
   p_btn   = gtk_button_new_with_label ("Envoyer...");
 
   gtk_box_pack_start (GTK_BOX (p_vbox), p_text, TRUE, TRUE, 0);
   gtk_box_pack_start (GTK_BOX (p_vbox), p_btn, TRUE, TRUE, 0);
 
   g_signal_connect (G_OBJECT (p_btn), "clicked", G_CALLBACK (cb), p_text);
 
 
   gtk_widget_show_all (p_win);
   gtk_main ();
 
 
   return EXIT_SUCCESS;
} | 
Partager