| 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
 
 | #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