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 :

GtkList et glade


Sujet :

GTK+ avec C & C++

  1. #1
    Membre à l'essai
    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
    Points : 19
    Points
    19
    Par défaut GtkList et glade
    Je crois que cette classe est devenue ancienne, mais vu la version de GLADE que j'utilise, je dois faire avec.
    Est ce que j'ai le droit d'utiliser gtk_list_store_set ()
    void gtk_list_store_set (GtkListStore *list_store,GtkTreeIter *iter,...);
    avec une liste de classe GtkList.
    Parce que je bloque sur le fait que sous GLADE, je peux ajouter un GtkTreeView, mais que tous les tutoriels ne décrivent que: création et remplissage d'une liste store, et création de l'arbre en fonction du modèle de la liste.
    Or si j'ai un treeview dans mon interface, je ne souhaite que remplir ses lignes vu qu'il est créé dans l'interface.c.

  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 : 47
    Localisation : France, Haut Rhin (Alsace)

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Tu ne peux pas mélanger un GtkList et un GtkListStore, cette question ne devrait même pas être posé, l'un étant déprécié je trouve cela tout à fait normal.

    Le fait d'utiliser Glade, comme je le répète très souvent ne doit rien changer dans tes habitude de programmation en C avec GTK+. Glade ne fait que faciliter la tâche ... enfin c'est pas le sentiment qu'il me donne en tout cas et son code est plus que moche, d'ailleur Glade 3 ne fait même plus de code mais juste du XML, encore pire !

    Donc, ce que tu sais de ce que tu programmes toi même en GTK+ est applicable aux fichiers générés par Glade, ni plus ni moins !
    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 à l'essai
    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
    Points : 19
    Points
    19
    Par défaut gtktreeview
    Citation Envoyé par Franck.H
    Donc, ce que tu sais de ce que tu programmes toi même en GTK+ est applicable aux fichiers générés par Glade, ni plus ni moins !
    Resalut. Je ne programme sur gtk que depuis deux mois, on peut pasdire que j'ai de l'expérience.
    En fait avec Glade j'ai déjà placé mon GtkTreeView. Je n'ai pas à repasser par les méthodes gtk qui me permettent de le créer. Je veux juste le remplir. Et selon les méthodes gtk, il faut d'abord définir un modèle avec une liste. C'est ce que j'ai vu dans les tutoriels, mais peut être je me trompe.

  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 : 47
    Localisation : France, Haut Rhin (Alsace)

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Oui il faut que tu créées un modèle, soit un GtkListeStore soit un GtkTreeStore, suivant la vue que tu désire avoir en fait ! C'est ce magasin de données (ou on l'appel aussi ainsi) que tu remplis avec tes données et dont tu paramètres encore d'autres choses.

    Il faut donc créer et au besoin, initialiser avec des données, ce modèle tu l'intègre ensuite à ton GtkTreeView par la fonction gtk_tree_view_set_model

    Il y a un tutoriel assez complet sur la création et utilisation du GtkTreeView et tous les widgets qui en découlent ici: http://gtk.developpez.com/cours/listes-arbres/
    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 à l'essai
    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
    Points : 19
    Points
    19
    Par défaut poursuite
    Je vais réexposer mon problème afin qu'on se comprenne bien.
    Dans l'interface créée sous GLADE, j'ai placé un élément de type GtkTreeView.
    La création de ce composant est faite indépendemment d'intervention humaine. Il est interdit d'éditer le fichier source interface.c
    En voici les instructions de création:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    scrolledwindow3 = gtk_scrolled_window_new (NULL, NULL);
      gtk_widget_show (scrolledwindow3);
      gtk_box_pack_start (GTK_BOX (vbox6), scrolledwindow3, TRUE, TRUE, 0);
     
      treeview1 = gtk_tree_view_new ();
      gtk_widget_show (treeview1);
      gtk_container_add (GTK_CONTAINER (scrolledwindow3), treeview1);
    Dans la discussion "remplissage d'un textview sous glade" du 27/04 j'ai posé une question quant au signal add:
    Citation Envoyé par ladygtk
    [...]Pour qu'un évènement se produise à la création de ma liste, c bien le callback on_liste_add qui est préférable?
    Merci
    (relativement à une GtkList)
    Ainsi si c'est la solution pour intervenir dans la création de mon treeview.
    Je mettrais un callback
    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
    on_treeview1_add(GtkButton       *button,
                                            gpointer         user_data)
    {
    /*Remplissage de la liste*/
    GtkWidget * arbre = lookup_widget(GTK_WIDGET(button),"treeview1");
    GtkWidget *ListStore = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING);
    GtkWidget *pScrollbar;
    GtkTreeViewColumn *pColumn;
    GtkCellRenderer *pCellRenderer;
     
    chaine1 = g_malloc(TAILLE); //sachant que #define TAILLE 20
    chaine2= g_malloc(TAILLE);
    /* Insertion des elements */    
                    GtkTreeIter iter;
                   /* Création de la nouvelle ligne */
                    gtk_list_store_append(ListStore, &iter);
                   /* Insertion d'une ligne */
                    gtk_list_store_set(ListStore, &iter,
                                      TEXT_COLUMN, "Mon pays",
                                      TEXT_COLUMN,"Ma ville",
    				  -1);
    /*Libération de l'espace mémoire*/
    g_free(chaine1);
    g_free(chaine2);
    }
    Jusque là tout me paraît cohérent. Mais ce qui vient après dans une programmation Gtk, est contradictoire avec le fait que mon treeview est déjà créé:
    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
     
    /*Remaniement du Code : seulement pour le nom de la liste et du treeview*/
    /* Création de la vue */
    arbre = gtk_tree_view_new_with_model(GTK_TREE_MODEL(ListStore));
    /* Création de la premiere colonne */
    pCellRenderer = gtk_cell_renderer_text_new();
    pColumn = gtk_tree_view_column_new_with_attributes("Nom",
    pCellRenderer,
    "text", TEXT_COLUMN,
    NULL);
    /* Ajout de la colonne à la vue */
    gtk_tree_view_append_column(GTK_TREE_VIEW(ListStore), pColumn);
    /* Création de la deuxieme colonne */
    pCellRenderer = gtk_cell_renderer_toggle_new();
    pColumn = gtk_tree_view_column_new_with_attributes("CheckBox",
    pCellRenderer,
    "active", TOGGLE_COLUMN,
    NULL);
    /* Ajout de la colonne à la vue */
    gtk_tree_view_append_column(GTK_TREE_VIEW(ListStore), pColumn);
    Je ne suis pas actuellement en possession du matériel nécessaire pour travailler le programme avec mon Dev-Cpp. Mais pour rester active, je travaille sur la théorie. D'après moi, du code précédent, je devrais garder que la partie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    /* Création de la vue */
    arbre = gtk_tree_view_new_with_model(GTK_TREE_MODEL(ListStore));
    Est-ce qu'on mon raisonnement me mène sur la bonne voie?
    Merci pour votre aide.

Discussions similaires

  1. [C] Glade et dev c++
    Par darktears dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 11/12/2006, 16h18
  2. tutoriel ou liste des fonctions pour GLADE
    Par debutanteVB.NET dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 23/11/2005, 16h08
  3. <GLADE + C++> Probleme de Librairies
    Par debutanteVB.NET dans le forum Bibliothèques
    Réponses: 3
    Dernier message: 30/09/2005, 12h40
  4. Installation de Glade?
    Par sali dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 14/01/2005, 17h44
  5. Installation d'Anjuta + Glade
    Par Noki dans le forum Applications et environnements graphiques
    Réponses: 12
    Dernier message: 31/03/2004, 23h17

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