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