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+ Discussion :

Afficher la fin d'un gtk_tree_view au chargement


Sujet :

GTK+

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    sans
    Inscrit en
    Novembre 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Novembre 2011
    Messages : 10
    Par défaut 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
    Fichiers attachés Fichiers attachés

  2. #2
    Membre chevronné
    Inscrit en
    Janvier 2007
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 329
    Par défaut
    Bonjour,

    J'ai pas regardé en détails (je m'y connais presque rien en C) mais globalement tu sembles tenir le bon bout avec l'ajustement.

    Le problème est qu'il faut que le widget ait d'abord été affiché pour pouvoir utiliser correctement les limites de l'ajustement, sinon le programme ne connait pas les dimensions exactet du treeview. Tu peux te connecter au signal 'realize' avec g_signal_connect_after() pour détecter la fin de l'affichage et faire le saut en fin de treeview.

    Concernant les limites, je n'ai pas trouvé d'indication donc je pense que ça se rapporte au moins à un entier 32 bits, soit 4 milliards et des brouettes. À vérifier...


    -

  3. #3
    Membre averti
    Homme Profil pro
    sans
    Inscrit en
    Novembre 2011
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : sans

    Informations forums :
    Inscription : Novembre 2011
    Messages : 10
    Par défaut [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 : 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
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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);

  4. #4
    Membre chevronné
    Inscrit en
    Janvier 2007
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 329
    Par défaut
    En python, j'arrive à avoir le comportement souhaité :
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def ev_realize(tv):
        va = tv.get_vadjustment()
        u = va.get_upper()
        va.set_value(u)
        return
     
    mylistview.connect('realize', ev_realize)

    Essaie de faire la connexion comme cela :
    gtk_signal_connect(GTK_OBJECT(pListView), "realize", G_CALLBACK(finlist), NULL); .

    Au passage, la ligne 25 de ton code me semble inutile.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Bibliographie sur plusieur chapitres mais afficher à la fin de la partie
    Par swagelok dans le forum Bibliographies - Index - Glossaires
    Réponses: 1
    Dernier message: 19/09/2007, 13h11
  2. Afficher l'option d'un select au chargement
    Par philippef dans le forum Langage
    Réponses: 4
    Dernier message: 16/08/2007, 16h19
  3. Réponses: 3
    Dernier message: 29/11/2006, 10h45
  4. afficher message d'alerte sur clic pendant chargement
    Par petitmic dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 17/11/2005, 12h14
  5. [JComboBox] editable avec % affiché en fin de saisie
    Par tomburn dans le forum Composants
    Réponses: 6
    Dernier message: 27/04/2005, 16h41

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