Bonjour,
J'aimerai implémenter un GtkTreeModel qui prends ses données depuis une base de donnée. En effet, le TreeStore ou le ListStore m'obligent a charger toutes les données dans le modèle, et j'ai peur que ça rame beaucoup puisque j'ai plusieurs milliers d'enregistrement à afficher.
J'ai déjà utilisé quelque chose de similaire en Java ( http://www.bouil.org/index.php/ResultSetTableModel(...) ), mais je ne sais pas trop comment faire avec Gtk.
Je suppose qu'il faut également hériter de http://www.gtk.org/api/2.6/gtk/GtkTreeModel.html(...) afin d'implémenter les bonnes méthodes.
Si quelqu'un à déjà fait cela, ou a quelque pistes, dans n'importe quel langage, j'adapterai (mais c'est pour faire en Ada).
Merci
# Construction dynamique
Posté par Pascal Terjan (site web personnel) . Évalué à 2.
[^] # Re: Construction dynamique
Posté par icyfemur . Évalué à 2.
Merci quand même :-)
[^] # Re: Construction dynamique
Posté par TImaniac (site web personnel) . Évalué à 2.
[^] # Re: Construction dynamique
Posté par icyfemur . Évalué à 2.
Et si le Gtk TreeModel est pas trop mal foutu, il ne devrait pas y avoir trop de méthode a implémenter... si ? :-(
[^] # Re: Construction dynamique
Posté par TImaniac (site web personnel) . Évalué à 2.
De plus cela oblige ton code métier à implémenter une interface spécifique à un toolkit graphique, c'est vraiment douteux d'un point de vu méthodologique.
[^] # Re: Construction dynamique
Posté par icyfemur . Évalué à 2.
L'avantage de piocher dans un recordset, c'est que lui fait un tampon transparent vers la base de donnée, en l'interogant si nécessaire. Donc toutes les infos ne seront pas forcement en mémoire.
Mon modèle retournera un RecordSet, que ma vue doit afficher en utilisant Gtk. Je vois pas bien le probleme de créer un nouveau widget à ce niveau.
Ceci dit, je vais quand meme essayer avec le GtkListStore. On verra bien ce que ça donne.
[^] # Re: Construction dynamique
Posté par TImaniac (site web personnel) . Évalué à 2.
Sauf qu'à priori le TreeView va chercher à charger toutes les données, bref il va demander toutes les items et ton recordset sera plein. D'autant plus pleins qu'il y aura dedans pleins d'informations peut être inutile qui ne sont aps afficher. Avec une méthode sans recordset le tampon est uniquement constitué d'une chaîne de caractère.
Je vois pas bien le probleme de créer un nouveau widget à ce niveau.
Qui va implémenter l'interface GtkTreeModel ?
[^] # Re: Construction dynamique
Posté par icyfemur . Évalué à 2.
J'ose espérer qu'il ne fait pas ça, ça serait completement stupide. Imagine un modèle qui contient plusieurs millions de lignes... L'utisation du TreeModel de Java est très facile et le TreeView ne va pas interoger le modele pour obtenir les lignes qu'il n'a pas besoin.
Je vois pas bien le probleme de créer un nouveau widget à ce niveau.
Qui va implémenter l'interface GtkTreeModel ?
Oui, mais j'ai dit widget par erreur. C'est juste l'interface GtkTreeModel.
Enfin bref, je verrai bien ce que ça donne avec le ListStore.
[^] # Re: Construction dynamique
Posté par TImaniac (site web personnel) . Évalué à 2.
Même s'il ne le fait pas en une fois, tôt ou tard l'utilisateur va chercher à scroller et le nombre de requête à ta bdd risque d'augmenter assez rapidement.
Enfin imagine par exemple que ta bdd réponde en 1 seconde (charge réseau, table énorme à fouiller, etc.), t'imagine le joli freeze ?
Thread je te dis, thread :)
[^] # Re: Construction dynamique
Posté par TImaniac (site web personnel) . Évalué à 2.
Le remplissage depuis un thread t'évitera tous ces problèmes, et tu auras forcement besoin d'un tampon, le ListStore sert à ca.
[^] # Re: Construction dynamique
Posté par Pascal Terjan (site web personnel) . Évalué à 2.
[^] # Re: Construction dynamique
Posté par icyfemur . Évalué à 2.
On récupere juste les données demandées depuis le recordset, et le nombre de lignes suffisent pour afficher l'ascenceur correctement.
J'ai trouvé un ou deux trucs dans Rhythmbox ( http://cvs.gnome.org/viewcvs/rhythmbox/rhythmdb/DESIGN?rev=1.4(...) ) qui pourront peut etre m'aider, faut voir, faut que je fouille dans le source...
Sinon, faut que je regarde dans gnome-db, mais bon, j'aimerai quelque chose en gtk, pour que ce soit portable sous Windows.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.