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 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;
} |