IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ avec C & C++ Discussion :

taper du texte en bleu dans un GtkTextView


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 293
    Par défaut taper du texte en bleu dans un GtkTextView
    Bonjour,


    voilà j'aimerais permettre à un utilisateur de taper du texte en bleu, (en faite ce que je veux faire c'est plus complexe, mais il faut que je commence par du simple). J'ai suivi un tuto et j'obtiens ça (suivez les commentaires )



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    /* --------------------------------------------------------------------------
       Mise en forme d'un GtkTextView (couleur)
       -------------------------------------------------------------------------- */
    #include <gtk/gtk.h>
     
    int main (int argc, char **argv)
    {
     
       GtkWidget *p_fenetre = NULL;
       GtkWidget *p_zone_texte = NULL;
       GtkTextBuffer *p_tampon = NULL;
       GtkTextIter start;
       GtkTextIter end;
     
     
       gtk_init (&argc, &argv);
     
       /* on cree la fenetre */
       p_fenetre = gtk_window_new (GTK_WINDOW_TOPLEVEL);
     
       /* 320x200 */
       gtk_window_set_default_size (GTK_WINDOW (p_fenetre), 320, 200);
     
       /* On cree la zone texte */
       p_zone_texte = gtk_text_view_new ();
     
       /* On affecte le buffer de la zone texte */
       p_tampon = gtk_text_view_get_buffer (GTK_TEXT_VIEW (p_zone_texte));
     
       /* on ajoute la zone texte a la fenetre */
       gtk_container_add (GTK_CONTAINER (p_fenetre), p_zone_texte);
     
       /* creation du tag couleur bleue */
       gtk_text_buffer_create_tag (p_tampon, "font-blue", "foreground", "blue", NULL);
     
       /* On selectionne le tampon et on applique le tag */
       gtk_text_buffer_get_bounds (p_tampon, &start, &end);
       gtk_text_buffer_apply_tag_by_name (p_tampon, "font-blue", &start, &end);
     
       /* On affiche tous les widget */
       gtk_widget_show_all (p_fenetre);
     
       g_signal_connect (G_OBJECT (p_fenetre), "delete_event", G_CALLBACK (gtk_main_quit), NULL);
     
       /* Boucle */
       gtk_main ();
     
       return 0;
    }
    et le problème bien sur c'est que quand je tape du texte et bien il n'est ni bleu, ni ne devient bleu.

    Merci

  2. #2
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 293
    Par défaut
    Oui en faite j'avais oublié de mettre g_signal_connect (eh oui je débute )

    Voilà le code que j'ai corrigé :

    ci quelqu'un pouvait me dire si c'est OK.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    /* --------------------------------------------------------------------------
       Mise en forme d'un GtkTextView (couleur et gras)
       -------------------------------------------------------------------------- */
    #include <gtk/gtk.h>
     
     
    void cb_modifier (GtkWidget *p_widget, gpointer donnees_utilisateur)
    {
       GtkTextBuffer *p_tampon = NULL;
       GtkTextIter start;
       GtkTextIter end;
     
       /* On affecte le buffer de la zone texte */
       p_tampon = gtk_text_view_get_buffer (GTK_TEXT_VIEW (donnees_utilisateur));
     
       /* On selectionne le tampon et on applique le tag */
       gtk_text_buffer_get_bounds (p_tampon, &start, &end);
     
       gtk_text_buffer_apply_tag_by_name (p_tampon, "font-blue", &start, &end);
       gtk_text_buffer_apply_tag_by_name (p_tampon, "bold", &start, &end);
     
       (void)p_widget;
     
    }
     
    int main (int argc, char **argv)
    {
     
       GtkWidget *p_fenetre = NULL;
       GtkWidget *p_zone_texte = NULL;
       GtkTextBuffer *p_tampon = NULL;
     
       gtk_init (&argc, &argv);
     
       /* on cree la fenetre */
       p_fenetre = gtk_window_new (GTK_WINDOW_TOPLEVEL);
     
       /* 640 * 480 */
       gtk_window_set_default_size (GTK_WINDOW (p_fenetre), 320, 200);
     
       /* On cree la zone texte */
       p_zone_texte = gtk_text_view_new ();
     
       /* on ajoute la zone texte a la fenetre */
       gtk_container_add (GTK_CONTAINER (p_fenetre), p_zone_texte);
     
       /* On affecte le buffer de la zone texte */
       p_tampon = gtk_text_view_get_buffer (GTK_TEXT_VIEW (p_zone_texte));
     
       /* creation du tag couleur bleue */
       gtk_text_buffer_create_tag (p_tampon, "font-blue", "foreground", "blue", NULL);
       gtk_text_buffer_create_tag (p_tampon, "bold", "weight", 551, NULL);
     
       g_signal_connect (G_OBJECT (p_tampon), "changed", G_CALLBACK (cb_modifier), p_zone_texte);
     
       /* On affiche tous les widget */
       gtk_widget_show_all (p_fenetre);
     
       g_signal_connect (G_OBJECT (p_fenetre), "delete_event", G_CALLBACK (gtk_main_quit), NULL);
     
       /* Boucle */
       gtk_main ();
     
       return 0;
    }

  3. #3
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Bonjour,

    Citation Envoyé par exhortae Voir le message
    voilà j'aimerais permettre à un utilisateur de taper du texte en bleu
    Si tu veux que tout le texte soit bleu, il y a beaucoup plus simple, les tags sont fait pour de la mise en forme ponctuelle. Voici un exemple qui modifie la famille de police :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        PangoFontDescription *font = NULL;
     
        font = GTK_WIDGET (text_view)->style->font_desc;
        pango_font_description_set_family (font, "monospace");
        gtk_widget_modify_font (GTK_WIDGET (text_view), font);
    Mais pour la couleur ce n'est peut être pas aussi simple

  4. #4
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 293
    Par défaut
    Citation Envoyé par gege2061 Voir le message
    Bonjour,


    Si tu veux que tout le texte soit bleu, il y a beaucoup plus simple, les tags sont fait pour de la mise en forme ponctuelle. Voici un exemple qui modifie la famille de police :


    Mais pour la couleur ce n'est peut être pas aussi simple
    Bonsoir,

    En faite le projet que j'ai à faire c'est un editeur d'algorithme avec coloration syntaxique, donc de la mise en forme ponctuelle. Si je comprends bien c'est effectivement les tags que dois utiliser. l'example c'était juste pour commencer

    PS : interdit d'utiliser gtksourceview, c'est pour ça que je dois me familiariser avec les tags

    Merci

  5. #5
    Membre éprouvé
    Avatar de Shugo78
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 119
    Par défaut
    Tu devrais regarder du côté du tag "foreground-gdk" .

  6. #6
    Membre éclairé
    Inscrit en
    Janvier 2007
    Messages
    293
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 293
    Par défaut
    Citation Envoyé par Shugo78 Voir le message
    Tu devrais regarder du côté du tag "foreground-gdk" .
    Bonsoir,

    j'ai cherché sur le net, mais j'ai trouvé aucun example sur ce tag, t'aurais pas quelquechose dessus sous la main ?

    merci

  7. #7
    Membre éprouvé
    Avatar de Shugo78
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 119
    Par défaut
    Un petit code exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    GtkTextBuffer* pBuffer;
    GdkColor* c;
     
    /* Initialisation du buffer et de la couleur */
    gtk_text_buffer_create_tag 
    (pBuffer, "colorBlue", "foreground-gdk", &c, NULL);
    Plus simple encore avec le tag foreground, tu peux utiliser une couleur prédéfini de GTK (le bleu dans ton cas ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    gtk_text_buffer_create_tag 
    (pBuffer, "colorBlue", "foreground", "blue", NULL);

Discussions similaires

  1. Affichage d'un texte dans un gtktextview (glade)
    Par topher dans le forum GTK+ avec Python
    Réponses: 3
    Dernier message: 27/09/2010, 20h00
  2. Mise en forme du texte dans un GtkTextView
    Par Franck.H dans le forum Contribuez
    Réponses: 0
    Dernier message: 21/11/2009, 14h27
  3. Sélection de texte dans un GtkTextView
    Par bit_o dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 25/12/2007, 20h41
  4. Insérer du texte dans un GtkTextView depuis un fichier
    Par cassa dans le forum GTK+ avec C & C++
    Réponses: 6
    Dernier message: 01/05/2007, 15h35
  5. Ajout de texte dans un GtkTextView
    Par youp_db dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 16/02/2006, 21h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo