1 pièce(s) jointe(s)
Afficher la fin d'un gtk_tree_view au chargement
Impossible d'initialiser l'affichage d'une liste par la dernière page dans un gtk_tree_view.
Le programme de test affiche 50 lignes, je voudrais que la fenêtre liste les dernières lignes à l'ouverture.
Autre question liée: volume limite de gtk_list_store et gtk_tree_view ?
Comment le détecter ?
Merci d'avance.
Si vous souhaitez voir (ou utiliser) mon logiciel de comptabilité
Téléchargement à cette page:
http://www.pouillyfuisse-delorme.com/mdcpt/cc.html
[RESOLU en partie] Afficher la fin d'un gtk_tree_view au chargement
monnomamoi
Bingo tu as parfaitement raison, il faut afficher la fenêtre avant d'accéder à l'ajustement. Grand merci.
Lignes modifiées de mon pgm de test listviewderpag.c avec beaucoup de lignes supprimées car inutiles.
Code:
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 28
|
/* Ajout de la vue a la fenetre */
GtkAdjustment *vadj;
//GtkObject *vadjo;
// (gdouble value, lower, upper, step_increment, page_increment, page_size);
//vadjo = gtk_adjustment_new(0, 0, 256, 1, 10, 16);
//pScrollbar = gtk_scrolled_window_new(NULL,GTK_ADJUSTMENT (vadjo));
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(pWindow), pScrollbar);
gtk_container_add(GTK_CONTAINER(pScrollbar), pListView);
gtk_widget_show_all(pWindow); // avant l'acces a l'adjustement
// affiche derniere page
double dd,ddu,ddps;
vadj = gtk_scrolled_window_get_vadjustment((GtkScrolledWindow*) pScrollbar);
ddu = GTK_ADJUSTMENT(vadj)->upper;
ddps = GTK_ADJUSTMENT(vadj)->page_size;
dd = GTK_ADJUSTMENT(vadj)->upper - GTK_ADJUSTMENT(vadj)->page_size;
printf(" ddu=%lf ddps=%lf dd=%lf\n",ddu, ddps, dd);
gtk_adjustment_set_value(GTK_ADJUSTMENT(vadj),dd);
gtk_scrolled_window_set_vadjustment((GtkScrolledWindow*) pScrollbar,(GtkAdjustment*) vadj);
//gtk_adjustment_value_changed (GTK_ADJUSTMENT(vadj));
// gtk_widget_show_all(pWindow); deplacer avant l'acces a l'adjustement |
Pour les limites je pensais mémoire.
j'ai mis 50000 lignes à mon prog de test, sans protestation de ma machine.
Elles semblent toutes accessibles.
Par contre pour revenir au problème de la dernière page, je n'ai pas réussis à le faire accepter à mon logiciel pour le moment.
J'ai une fenêtre contenant
--> une vbox contenant
------> un notebook contenant
--------------> La scrollwindow contenant la listview
J'affiche tout
Je récupère bien le widget de la scrollwindow mais avec un adjustement nul.
Si je le fais dans un signal il ne se déclanche pas.
test de :
Code:
1 2 3 4
| g_signal_connect_after(G_OBJECT(fenetre), "realize", G_CALLBACK(finlist), NULL);
g_signal_connect_after(G_OBJECT(notebook), "realize", G_CALLBACK(finlist), NULL);
g_signal_connect_after(G_OBJECT(scrollwindow), "realize", G_CALLBACK(finlist), NULL);
g_signal_connect_after(G_OBJECT(notebook), "focus-tab", G_CALLBACK(finlist), NULL); |