Liste gtk

iex Messages postés 6 Date d'inscription mercredi 13 septembre 2006 Statut Membre Dernière intervention 20 octobre 2006 - 19 oct. 2006 à 10:56
iex Messages postés 6 Date d'inscription mercredi 13 septembre 2006 Statut Membre Dernière intervention 20 octobre 2006 - 20 oct. 2006 à 09:58
Bonjour,

j'ai créer une liste en gtk elle s'affiche bien mais le probleme c'est que je ne sait pas comment faire pour qu'elle se "rafraichisse".
j'ai essayé tout un tas de trucs mais rien n'as marché. j'ai essayé d'appeler la fonction liste dans une otre fonction en plus d ici pour "rafraichir" la liste mais ca ne marche pas
merci de bien voulir m'aider.

voici le code

 mw->pVBox1 = gtk_vbox_new(FALSE, 0);
 gtk_container_add(GTK_CONTAINER(mw->MainWin), mw->pVBox1)

 mw->pFrame = gtk_frame_new("Liste");
 gtk_box_pack_start(GTK_BOX(mw->pHBox1), mw->pFrame, TRUE, TRUE, 0);

 mw->pVBox1Frame = gtk_vbox_new(TRUE, 0);
 gtk_container_add(GTK_CONTAINER(mw->pFrame), mw->pVBox1Frame);

liste(mw);

///////////////////

void         list(MainWindow *mw)
{
    GtkWidget *pListView;
    GtkWidget *pScrollbar;
    GtkListStore *pListStore;
    GtkTreeViewColumn *pColumn;
    GtkCellRenderer *pCellRenderer;

    pListStore = gtk_list_store_new(N_COLUMN, G_TYPE_STRING, G_TYPE_BOOLEAN);


rempli_liste(:::::);




    pListView = gtk_tree_view_new_with_model(GTK_TREE_MODEL(pListStore));


  
    pCellRenderer = gtk_cell_renderer_text_new();
    pColumn = gtk_tree_view_column_new_with_attributes("Titre",
        pCellRenderer,
        "text", TEXT_COLUMN,
        NULL);




    gtk_tree_view_append_column(GTK_TREE_VIEW(pListView), pColumn);




    pCellRenderer = gtk_cell_renderer_toggle_new();
    pColumn = gtk_tree_view_column_new_with_attributes("CheckBox",
        pCellRenderer,        "active", TOGGLE_COLUMN,        NULL);

    gtk_tree_view_append_column(GTK_TREE_VIEW(pListView), pColumn);

    pScrollbar = gtk_scrolled_window_new(NULL, NULL);
    gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(pScrollbar),
        GTK_POLICY_AUTOMATIC,        GTK_POLICY_AUTOMATIC);
    gtk_container_add(GTK_CONTAINER(pScrollbar), pListView);
    gtk_container_add(GTK_CONTAINER(mw->pVBox1Frame), pScrollbar);
}

4 réponses

luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
19 oct. 2006 à 13:13
C'est la merde les liste en gtk. Moi ce que je faisais au début, c'est je vidais la liste entièrement et je la recontruisais.

Donc je maintiens une liste (std::list) en mémoire a jour et des que je la modifie, j'appelle une fonction refresh:


  "GtkListStore * client_liststore;" fait partie du la classe à laquelle la fonction appartient.


    gtk_list_store_clear(this->client_liststore);

   

    GtkTreeIter iter;
  

    for (std::list<TES_DONNEES>::const_iterator _it = TA_LISTE.begin()

          _it !=  TA_LISTE.end(); _it++)

          {

            gtk_list_store_append(this->client_liststore, &iter);

           
gtk_list_store_set(this->client_liststore, &iter, 0,
_it->Get_name().c_str(), 1, _it->Get_ip().c_str(), -1);

          }


Donc ca, c'est la méthode brutale. Si tes listes sont pas trop grande
ca va. Le petit défaut est que si tu avais une ligne de sélectionner,
le fait de refresh la déselectionne.
0
iex Messages postés 6 Date d'inscription mercredi 13 septembre 2006 Statut Membre Dernière intervention 20 octobre 2006
19 oct. 2006 à 13:51
hum ok ca devrais aller mes listes sont limitées a 10 ou 20 eléments.

mais ton code il est en C++ !
t'orais pas la "traduction" en C
merci.

Un autre truc, comment fait on pour obtenir (la valeur, le numero ou un truc comme ca) de la ligne selectionné.
re-merci
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
19 oct. 2006 à 22:17
En C, ya rien qui change, juste tu utilises des listes liées de la glib ou artisanale.


Et puis ca dépend des données de ton tableau, dans mon cas c'était des STRING:

_it->Get_name().c_str() <-> _it->Get_ip().c_str() de type (char*)


Pour récupérer les données : tu trouveras tout la dessus:

http://developer.gnome.org/doc/API/2.0/gtk/


Juste a fouiller entre listview, liststore, treeview, etc ...
0
iex Messages postés 6 Date d'inscription mercredi 13 septembre 2006 Statut Membre Dernière intervention 20 octobre 2006
20 oct. 2006 à 09:58
ok merci
je vais essayer
0
Rejoignez-nous