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+ avec C & C++ Discussion :

Evènement de sélection GtkTreeView


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Géomaticien
    Inscrit en
    Février 2010
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Géomaticien

    Informations forums :
    Inscription : Février 2010
    Messages : 63
    Par défaut Evènement de sélection GtkTreeView
    Salut à toute la communauté,

    Je suis toujours sur mon GtkTreeView, ça avance bien, mais j'ai un petit souci. J'ai crée dans mon interface un bouton qui servira à supprimer les lignes sélectionnées. Le souci est que je veux désactiver le bouton quand aucune ligne n'est sélectionnée. J'ai essayé de gérer l'event "cursor-changed" et même "unselect-all" cela ne fonctionne pas (ils sont bien connectés j'ai testé avec g_print).

    Voici mon code actuellement :

    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
     
    void
    on_trvwList_cursor_changed(GtkTreeView *tree_view, gpointer user_data)
    {
        if (gtk_tree_model_iter_n_children (GTK_TREE_MODEL(Interface->lstList), NULL) > 0)
        {
    	gtk_widget_set_sensitive (GTK_WIDGET(Interface->btnApplyList), TRUE);
    	gtk_widget_set_sensitive (GTK_WIDGET(Interface->btnDelList), TRUE);
        }
        else
        {
    	gtk_widget_set_sensitive (GTK_WIDGET(Interface->btnApplyList), FALSE);
    	gtk_widget_set_sensitive (GTK_WIDGET(Interface->btnDelList), FALSE);
        }
    }
     
    void
    on_trvwList_unselect_all (GtkTreeView *treeview, gpointer user_data)
    {
        gtk_widget_set_sensitive (GTK_WIDGET(Interface->btnApplyList), FALSE);
        gtk_widget_set_sensitive (GTK_WIDGET(Interface->btnDelList), FALSE);
    }

  2. #2
    Membre éclairé
    Profil pro
    Retraité
    Inscrit en
    Novembre 2009
    Messages
    331
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2009
    Messages : 331
    Par défaut gtk_tree_selection_count_selected_rows ()
    Semble être la fonction pour savoir si la sélection est vide.

  3. #3
    Membre averti
    Homme Profil pro
    Géomaticien
    Inscrit en
    Février 2010
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Géomaticien

    Informations forums :
    Inscription : Février 2010
    Messages : 63
    Par défaut
    En fait j'avais ajouté la fonction unselect_all pour contraindre à changer le sensitive en false au cas où, quand tout est désélectionné, j'ai essayé d'être prévoyant face à un éventuel bug

    Bon j'ai abandonné, je ne suis pas le seul à avoir cherché à le faire, mais cela semble compliqué. cursor_changed n'est pas adapté à l'utilisation que je souhaite faire. Je crois que c'est une limitation de GTK+, si vous regardez bien tous les programmes GTK+, il y en a peu qui propose ce dont j'essaye de faire. Peut-être parce que c'est un truc assez typique de Windows et pas vraiment Linux... Tant pis. En attendant, il faut tout gérer pour empêcher le programme de planter si l'utilisateur fait une mauvaise manip.

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Tu dois pouvoir utiliser le signal GtkTreeSelection::changed pour détecter ce que tu veux.

  5. #5
    Membre averti
    Homme Profil pro
    Géomaticien
    Inscrit en
    Février 2010
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Géomaticien

    Informations forums :
    Inscription : Février 2010
    Messages : 63
    Par défaut
    Apparemment, il n'y a plus d'évènement changed. J'ai regardé sous Glade3 il n'y a plus que cursor-changed et column-changed qui sont géré, ou bien c'est caché ?

  6. #6
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    Il est surement possible de passer par les GtkTreeSelection pour résoudre le problème.
    Il existe la fonction gtk_tree_selection_count_selected_rows(); qui renvoie le nombre de lignes sélectionnées. Si la valeur est égale 0 alors on désactive le bouton.

    A tester...

  7. #7
    Membre averti
    Homme Profil pro
    Géomaticien
    Inscrit en
    Février 2010
    Messages
    63
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Géomaticien

    Informations forums :
    Inscription : Février 2010
    Messages : 63
    Par défaut
    Oui gerald, j'ai tenté ainsi aussi, ce n'est pas la méthode qui ne marche pas, mais le moment où cela doit être effectué, donc l'évènement, cela reste flou. cursor-changed ne marche que lorsque le widget a récupéré le focus. Je vais voir par mailing-list.

  8. #8
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 308
    Billets dans le blog
    5
    Par défaut
    En effet. En relisant ta question je m'aperçois que je réponds à côté!

Discussions similaires

  1. GtkTreeView, menu contextuel et sélection multiple
    Par Slookeur dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 17/08/2011, 18h50
  2. Réponses: 1
    Dernier message: 03/04/2010, 11h51
  3. Réponses: 4
    Dernier message: 18/01/2005, 18h49
  4. [CR] Problème de sélection sur un champ date
    Par noluc dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 21/11/2003, 16h56
  5. Evènement sur clic droit !?
    Par soccersoft dans le forum Composants VCL
    Réponses: 6
    Dernier message: 26/12/2002, 21h39

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