[GTK+] show_all trop long

Salut,
la partie graphique de mon projet est maintenant fonctionelle. Je peux lire et sauvegarder des fichiers. J’ai pu relier la partie graphique avec la base de mon programme, j’ai donc facilement accès à mes fonctions basiques (tri, calcule sur les données, création de données aléatoire pour les tests, etc…).

Pour rappel, mon interface graphique peut se résumer à un tableur. J’ai utilisé une box avec orientation verticale. Chaque case de cette box contient elle même une box horizontale de 8 entries_with_buffer (date,lieu,groupe,etc…) représentant un gig.
Mon programme affiche donc plusieurs gigs les uns sur les autres.
Lorsque je crée un gig, je l’initialise puis je le “pack” dans la première box.
J’appelle ensuite [mono]gtk_widget_show_all(ma_fenetre);[/mono] pour rafraichir l’affichage.

Mon problème:
Lorsque je veux afficher plus de 50gigs ça devient long (4sec). 100 gigs c’est l’enfer. Si je veux ajouter un 101 ième gig, il lui faut 1 sec.
Avec des printf, j’ai isolé le problème à la fonction [mono]gtk_widget_show_all()[/mono].
Sans elle, je peux créer 10000 gigs aléatoirement, les trier, faire des calculs. C’est très réactif.

Est ce normal que pour afficher 50*8 entries ça prenne 10sec?

Il me semble que tu l’utilise mal. C’est une fonction assez lourde de ce que je vois et tu lui demande à chaque fois de redessiner tout de manière récursive. Je sais pas si c’est normal que ça prenne tant de temps mais ça ne me choque pas qu’elle soit longue. Pourquoi ne l’applique-tu pas uniquement à ton gig ?

Je viens d’essayer, ça ne change pas grd chose. En fait la création et insertion d’un nouveau gig n’est pas très grave et apparement ce qui prend le plus de tps c’est juste avant le packing du gig dans la box principale.
Qu’est ce qu’il existe pour mesurer le temps que met une instruction à s’éxécuter?

Ce qui me pose problème c’est le temps d’affichage du tableau complet (suite à l’ouverture d’un fichier).
La lecture du fichier, création des widgets et le packing sont quasi-instantanné.
Par contre, le show_all est long.

Peut être que le fait d’utiliser des entries (8 caractères) plombe le truc.
Je ne vois pas que je pourrais prendre d’autre.

Petite question mais peut être que je n’ai pas bien compris ton besoin… pourquoi tu n’utilises pas de TreeView avec plusieurs colonnes ?

J’ai juste jeté un oeil.
Ca à l’air de correspondre exactement à ce que je veux faire mais en plus simple.
Dès que j’ai un peu le temps, je teste tout ça.

Je viens d’écrire un programme qui affiche 500 gigs sous forme de treeview.
C’est beaucoup plus rapide! Ca commence à prendre un peu de temps à 5000 gigs mais c’est très raisonnable et je n’ai même pas testé les “collapse” du modèle “tree”.

Pour avoir un tree qui s’affiche, ça demande un peu plus de boulot (modèle, renderer, colonnes) mais une fois que c’est fait ça devient très simple d’ajouter ou virer une ligne par rapport à mon ancien système.
Il y a un truc qu’il faut que je règle c’est l’édition d’une entrée. Il faut que je teste en situation et je passerai en résolu.

Bon les TreeView c’est exactement ce qu’il me fallait.
C’est réactif et avac pas mal de possibilités intégrées comme la possibilités d’avoir des ComboBox.
Merci Raum!