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 :

Textview


Sujet :

GTK+ avec C & C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 92
    Par défaut Textview
    Bonjour!

    J'utilise une textviex dans une application GTK et j'aurais voulu savoir s'il était possible (et comment?) , quand j'ajoute du texte à la fin, de pouvoir "scroller" la zone de texte vers le bas?

    En fait j'aimerais que l'utilisateur voit toujours le bas du texte contenu dans ma textview...

    D'avance merci

  2. #2
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 92
    Par défaut
    Tout d'abord, merci!

    Par contre, je n'arrive pas tellement à obtenir des paramètres tip top (en clair ça marche pas ça me plante la programme...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        insert = gtk_text_buffer_get_insert(buffer);
        gtk_text_view_scroll_to_mark(GTK_TEXT_VIEW(textview), insert, 0, FALSE, 1, 1); //// BUG ////
    En fait je comprend pas bien les paramètres margin, x_align, y_align ...
    (http://developer.gnome.org/doc/API/2...scroll-to-mark)

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 92
    Par défaut
    ça marche pas... personne n'aurait déjà utilisé un GtkTextview ?

  5. #5
    Expert confirmé
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Par défaut
    En fait, il faudrait que tu vois ça avec gege2061, il connait bien GTK.

    Mais théoriquement la fonction que je t'ai donné devrait fonctionner. Envoie le code que tu as fait, on pourra peut être t'aider.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 92
    Par défaut
    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
    void interface_print_com(char *str)
    {
        GtkWidget *textview;
        static GtkTextBuffer *buffer = NULL; //static car inutile de le rechercher à chaque fois
        GtkTextIter iter;
        GtkTextMark *insert;
     
        /* On récupère un pointeur vers le buffer de texte 
             sauf si c'est déjà fait (par un précédent appel à la fonction) */
        if(buffer == NULL)
        {
            textview = glade_xml_get_widget(xml_interface, "textview_commandes");
            buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview));
        }
     
        //On insère le texte à la fin de la zone de texte
        gtk_text_buffer_get_end_iter(buffer, &iter);
        gtk_text_buffer_insert(buffer, &iter, str, -1);
     
        insert = gtk_text_buffer_get_insert(buffer);
        gtk_text_view_scroll_to_mark(GTK_TEXT_VIEW(textview), insert, 0, FALSE, 1, 1); //// BUG ////
     
        return ;
    }

  7. #7
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par @drien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void interface_print_com(char *str)
    {
        GtkWidget *textview;
        static GtkTextBuffer *buffer = NULL; //static car inutile de le rechercher à chaque fois
    Je ne connais pas GTK, mais qu'est-ce qui te garantit que c'est la même valeur à chaque fois ? J'éviterais ce genre de micro optimisation avant d'avoir du code qui fonctionne...

    En plus, si j'ai bien compris,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        /* On récupère un pointeur vers le buffer de texte
     
             sauf si c'est déjà fait (par un précédent appel à la fonction) */
        if(buffer == NULL)
        {
            textview = glade_xml_get_widget(xml_interface, "textview_commandes");
            buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview));
        }
    textView (qui n'est pas static) n'est pas chargé les autres fois ? Sa valeur est donc indéterminée : BOUM !

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 92
    Par défaut
    En effet!

    Merci! en fait en réécrivant le code pour mon précédent post, je me suis demandé si ce n'était pas ça, comme d'habitude tu as toujours raison

    Enfin c'est de ma faute là, bien sûr que ce buffer changeait et sous prétexte de faire comme si j'optimisait, je plantais tout...

    Désolé encore et merci à tous de votre précieuse aide!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/03/2007, 11h12
  2. Recupérer le contenu d'un GtkEntry vers un TextView
    Par nh2_93 dans le forum GTK+ avec C & C++
    Réponses: 17
    Dernier message: 23/03/2007, 11h24
  3. Ajouter du texte en couleur dans un TextView
    Par Lunixinclar dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 23/12/2006, 19h51
  4. refresh textview en Gtk2-Perl
    Par scorbo dans le forum GTK+ avec C & C++
    Réponses: 3
    Dernier message: 11/12/2006, 20h09
  5. Réponses: 12
    Dernier message: 04/06/2006, 00h19

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