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
   | #include <gtk/gtk.h>
 
/*------------------------------------------------------------------------------
  Type
 -----------------------------------------------------------------------------*/
 typedef struct {
   GtkWidget *fen;
   GtkWidget *TextView;
   GtkTextBuffer *TextBuf;
   GtkTextIter iter;
 }  App;
 
/*------------------------------------------------------------------------------
  Prototypes
 -----------------------------------------------------------------------------*/
 App 	*creer_App();
 void	Ajouter_Texte	(App *a, gchar *msg, gchar *couleur);
 
/* =============================================================================
 * Point d' entrée *************************************************************
==============================================================================*/
int main(int argc, char **argv)
{
  App *a;
 
  gtk_init(&argc, &argv);
 
  a = creer_App();
 
  Ajouter_Texte(a, "Texte bleu\n"  , "#2B3D51");
  Ajouter_Texte(a, "Texte orange\n", "#E1B232");
 
  gtk_main();
 
  return 0;
}
 
/* =============================================================================
 * Ajoute du texte en couleur au TextView **************************************
==============================================================================*/
void Ajouter_Texte(App *a, gchar *msg, gchar *couleur)
{
  GdkColor color;
  gdk_color_parse (couleur, &color);
 
  gtk_text_buffer_insert (a->TextBuf, &a->iter, msg, -1);
 
/*
  GtkTextIter deb, fin;
  GtkTextTag *tag;
 
  tag = gtk_text_buffer_create_tag (a->TextBuf, NULL,"foreground", couleur, NULL);  
  //gtk_text_buffer_get_iter_at_offset (pTx, &iStart, 7);
  //gtk_text_buffer_get_iter_at_offset (pTx, &end, 12);
 
  gtk_text_buffer_get_start_iter(a->TextBuf, &deb);
  gtk_text_buffer_insert (a->TextBuf, &a->iter, msg, -1);
  gtk_text_buffer_get_end_iter(a->TextBuf, &fin);
 
  //gtk_text_buffer_get_end_iter(pTx, &iStart);
  //gtk_text_buffer_get_end_iter(pTx, &end);
  gtk_text_buffer_apply_tag (a->TextBuf, tag, &deb, &fin);
*/
}
 
/* =============================================================================
 * Crée l'interface ************************************************************
==============================================================================*/
App *creer_App()
{
  App *x;
  GdkColor color;
 
  x = (App *)g_malloc (sizeof(App));
 
  x->fen = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  gtk_window_set_title (GTK_WINDOW(x->fen), "Ajout de texte en couleur");
  gtk_window_set_default_size(GTK_WINDOW(x->fen), 400, 400);
  g_signal_connect(G_OBJECT(x->fen), "destroy", G_CALLBACK(gtk_main_quit), NULL);
 
  x->TextView = gtk_text_view_new();
    gtk_container_add (GTK_CONTAINER(x->fen), x->TextView);
    x->TextBuf = gtk_text_view_get_buffer(GTK_TEXT_VIEW(x->TextView));
    gtk_text_buffer_get_end_iter(x->TextBuf, &x->iter);
    // Couleur du fond: orange
    gdk_color_parse ("#E87F3B", &color);
    gtk_widget_modify_base (x->TextView, GTK_STATE_NORMAL, &color);
 
  gtk_widget_show_all(x->fen);
 
  return x;
} | 
Partager