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 :

remplissage textview sous glade


Sujet :

GTK+ avec C & C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 40
    Par défaut remplissage textview sous glade
    Bonsoir je travaille sur GLADE et je souhaite imprimer des lignes dans un textview à partir d'un fichier.
    Le problème est que le programme plante à l'exécution au moment où il s'agit de remplir le textview.
    Je suis sûre que le problème vient de lui, car j'ai fait une version où je lis une ligne et que je la stocke dans l'entry. Ensuite j'essaye de faire passer dans le textview. Ca ne marche pas.

    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
    on_button4_clicked                     (GtkButton       *button,
                                            gpointer         user_data)
    {
        FILE*fichierliste;
        char buffer[N],texte_entry[N];
        GtkTextBuffer *pBuffer; //Pointeur du buffer du TextView
        GtkTextIter debut; //Début du corps du Mémo dans le TextView
        GtkTextIter fin; //Fin du corps du Mémo dans le TextView
     
        GtkWidget *tviewliste = lookup_widget(GTK_WIDGET(button),"textview1");
        GtkWidget *entry = lookup_widget(GTK_WIDGET(button),"entry1");
     
        //On récupère l'adresse du buffer du TextView
         pBuffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(tviewliste));
         //On récupère l'origine du buffer
          gtk_text_buffer_get_start_iter(pBuffer, &debut);
     
         if(fichierliste=fopen("fichier.txt","r")){
                  while(fgets(buffer,N,fichierliste){
                       gtk_text_buffer_get_end_iter(pBuffer, &fin);
                       // on l'ajoute dans le tviewliste
                      gtk_text_buffer_insert(pBuffer, &fin, tviewliste, strlen(nom));
                  }
         }     
        /*Fermeture du fichier*/ 
        fclose(fichierliste);    
    }

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Lire ton code suffit pour trouver l'erreur, tu aurais dû la trouver:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gtk_text_buffer_insert(pBuffer, &fin, tviewliste, strlen(nom));
    Ici tu passes un pointeur sur ton GtkTextView alors qu'il faut mettre ton buffer donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gtk_text_buffer_insert(pBuffer, &fin, buffer, strlen(nom))
    Dans la suite, je ne vois pas de pointeur de ce nom donc met plutôt:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gtk_text_buffer_insert(pBuffer, &fin, buffer, strlen(buffer))
    C'est plus évident ainsi non ?

    Par ailleurs, ceci ne te sert strictement à rien dans ton code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gtk_text_buffer_get_start_iter(pBuffer, &debut)
    Tu peux donc tranquillement le supprimer. En effet, uniquement le GtkTextIter de fin te sert ici !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 40
    Par défaut ooooops
    Merci beaucoup, c vrai que c'était une erreur facile à repérer. Faut savoir bien prendre du recul.
    Sinon, j'ai un autre problème mais par rapport aux combobox.
    Je voudrais savoir comment connaître le nombre d'items de la combobox.
    En effet, je vais être amenée à en supprimer au cours de l'exécution.
    Donc je pense qu'il va falloir que j'utilise une boucle while, avec deux expressions. La deuxième est celle qui me perturbe: tant qu'on n'a pas parcouru toute la listecombo. Pour moi je peux régler ça avec un compteur. Tant que le compteur est<=nb_items, incrémentation.
    C'est juste? Pourquoi je ne trouve pas de fonction qui retourne le nombre d'items? Il faut faire autrement?
    Je vous remercie

  4. #4
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    On peut pas effectivement connaître le nombre d'enregistrement dans un GtkComboBox directement. Il faudrait voir pour passer par le biais d'un objet qui est implémenté comme les GtkCellLayout.
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 40
    Par défaut ok
    Merci beaucoup en tout cas.
    Je vais retourner sur une liste (GtkListStore) alors.
    Je suis sur GLADE:
    Je voudrais savoir, si les fonctions qui n'utiliseraient pas les widgets pouvaient être déclarées dans le callback.h. Comme ça elles seraient accessibles à tous les fichiers source?
    Pour qu'un évènement se produise à la création de ma liste, c bien le callback on_listnumero_add qui est préférable?
    Merci

  6. #6
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    On peu éventuellement récupérer un GtkListStore d'un GtkComboBox, désolé de ne pas y avoir pensé, voir les techniques employées: http://franckh.developpez.com/tutori...k/gtkcombobox/
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

Discussions similaires

  1. Comment faire appel à une boîte de dialogue sous GLADE
    Par Nates dans le forum GTK+ avec C & C++
    Réponses: 3
    Dernier message: 18/06/2008, 12h16
  2. Remplissage de sous formulaires
    Par biloute13 dans le forum IHM
    Réponses: 6
    Dernier message: 24/08/2007, 10h43
  3. [Glade]Récupérer données sous glade
    Par JeromeTheH dans le forum GTK+
    Réponses: 2
    Dernier message: 30/05/2007, 22h38
  4. [Glade]Récupérer données sous glade
    Par JeromeTheH dans le forum C
    Réponses: 0
    Dernier message: 29/05/2007, 03h10
  5. remplissage tableau sous condition
    Par gauguin dans le forum C
    Réponses: 6
    Dernier message: 15/02/2007, 17h06

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