GtkTreeSelection

GtkTreeSelection — Objet de sélection pour GtkTreeView

Synopsis

#include <gtk/gtk.h>


GtkTreeSelection;
gboolean (*GtkTreeSelectionFunc) (GtkTreeSelection *selection,
GtkTreeModel *model,
GtkTreePath *path,
gboolean path_currently_selected,
gpointer data);
void (*GtkTreeSelectionForeachFunc) (GtkTreeModel *model,
GtkTreePath *path,
GtkTreeIter *iter,
gpointer data);
void gtk_tree_selection_set_mode (GtkTreeSelection *selection,
GtkSelectionMode type);
GtkSelectionMode gtk_tree_selection_get_mode (GtkTreeSelection *selection);
void gtk_tree_selection_set_select_function
(GtkTreeSelection *selection,
GtkTreeSelectionFunc func,
gpointer data,
GtkDestroyNotify destroy);
gpointer gtk_tree_selection_get_user_data (GtkTreeSelection *selection);
GtkTreeView* gtk_tree_selection_get_tree_view (GtkTreeSelection *selection);
gboolean gtk_tree_selection_get_selected (GtkTreeSelection *selection,
GtkTreeModel **model,
GtkTreeIter *iter);
void gtk_tree_selection_selected_foreach (GtkTreeSelection *selection,
GtkTreeSelectionForeachFunc func,
gpointer data);
GList* gtk_tree_selection_get_selected_rows
(GtkTreeSelection *selection,
GtkTreeModel **model);
gint gtk_tree_selection_count_selected_rows
(GtkTreeSelection *selection);
void gtk_tree_selection_select_path (GtkTreeSelection *selection,
GtkTreePath *path);
void gtk_tree_selection_unselect_path (GtkTreeSelection *selection,
GtkTreePath *path);
gboolean gtk_tree_selection_path_is_selected (GtkTreeSelection *selection,
GtkTreePath *path);
void gtk_tree_selection_select_iter (GtkTreeSelection *selection,
GtkTreeIter *iter);
void gtk_tree_selection_unselect_iter (GtkTreeSelection *selection,
GtkTreeIter *iter);
gboolean gtk_tree_selection_iter_is_selected (GtkTreeSelection *selection,
GtkTreeIter *iter);
void gtk_tree_selection_select_all (GtkTreeSelection *selection);
void gtk_tree_selection_unselect_all (GtkTreeSelection *selection);
void gtk_tree_selection_select_range (GtkTreeSelection *selection,
GtkTreePath *start_path,
GtkTreePath *end_path);
void gtk_tree_selection_unselect_range (GtkTreeSelection *selection,
GtkTreePath *start_path,
GtkTreePath *end_path);

Hiérarchie de l'Objet

  GObject
+----GtkTreeSelection

Signaux

  "changed"                                        : Run First

Description

L'objet GtkTreeSelection est utilisé pour gérer la sélection dans un widget  GtkTreeView. L'objet GtkTreeSelection est automatiquement créé  en même temps qu'un nouveau widget  GtkTreeView, et il ne peut pas exister indépendemment de ce widget. La propreté du code et de l'Api est la raison principale de l'éxistance des l'objets GtkTreeSelection. Ainsi, il n'y a pas de raison conceptuelle pour que toutes ces fonctions ne soient pas des méthodes du widget  GtkTreeView au lieu d'être des fonctions séparées.

L'objet GtkTreeSelection est obtenu à parir d' un  GtkTreeView en appelant gtk_tree_view_get_selection(). Il peut être manipulé pour contrôler les status de sélection d'un arbre, aussi bien pour sélectionner ou désélectionner des lignes. La sélection dépend entièrement de la partie visualiseur. Par conséquent, des visualisateurs multiples peuvent afficher une sélections totalement différente pour le même magasin. En revanche, vous ne pourrez pas changer la sélection d'une rangée d'un magasin qui n'est pas affichée par un visualisateur sans d'abord déployer ses parents. 

Une chose importante à se rappeler quand on gère une sélection de visualisateur est que le signal  "changed" est plutôt une "marque". En effet, le signal peut être émis quand la rangée sélectionnée change, mais "::changed" peut également être émis quand rien ne se passe (la plupart du temps, c'est le résultat d'un appel de select_row par les programmateurs sur une rangée déjà sélectionnée).

Détails

GtkTreeSelection

typedef struct _GtkTreeSelection GtkTreeSelection;

GtkTreeSelectionFunc ()

gboolean            (*GtkTreeSelectionFunc)             (GtkTreeSelection *selection,
GtkTreeModel *model,
GtkTreePath *path,
gboolean path_currently_selected,
gpointer data);

Fonction utilisée par  gtk_tree_selection_set_select_function() pour déterminer si oui ou non une rangée peut être sélectionnée. Elle est appelée chaque fois que l'état d'une rangée doit changer. Si  TRUE est retournée cela indique à la selection que la voie est libre pour changer la sélection.

selection : Une GtkTreeSelection
model : Un GtkTreeModel sui sera visualisé.
path : The GtkTreePath of the row in question
path_currently_selected : TRUE, si le chemin est la sélection courante.
data : données utilisateur
Retourne : TRUE,  si l'état de la sélection de la rangé peut être basculé.

GtkTreeSelectionForeachFunc ()


void                (*GtkTreeSelectionForeachFunc)      (GtkTreeModel *model,
GtkTreePath *path,
GtkTreeIter *iter,
gpointer data);

Fonction utilisée par  gtk_tree_selection_selected_foreach()pour répertorier toutes les rangées sélectionnées. Elle peut être appelée sur toutes les rangées sélectionnées dans le visualiseur.

model :  GtkTreeModel qui sera visualisé
path :  GtkTreePath de la rangée sélectionnée.
iter :  GtkTreeIter pointant sur la rangée sélectionnée.
data : données utilisateur.

gtk_tree_selection_set_mode ()

void                gtk_tree_selection_set_mode         (GtkTreeSelection *selection,
GtkSelectionMode type);

Définit le mode de sélection. Si le type précédent était GTK_SELECTION_MULTIPLE, alors l'ancre ?(anchor)  reste sélectionnée si elle est déjà sélectionnée.

selection : Une GtkTreeSelection.
type : Mode de sélection.

gtk_tree_selection_get_mode ()

GtkSelectionMode    gtk_tree_selection_get_mode         (GtkTreeSelection *selection);

Donne le mode de sélection pour selection. Voir gtk_tree_selection_set_mode().

selection : une GtkTreeSelection
Retourne : Le mode de sélection courant.

gtk_tree_selection_set_select_function ()

void                gtk_tree_selection_set_select_function
(GtkTreeSelection *selection,
GtkTreeSelectionFunc func,
gpointer data,
GtkDestroyNotify destroy);

Définit la fonction de sélection. Si elle est définie, cette fonction est appelée avant toute sélection ou désélection d'embranchement  et permettant ainsi un contrôle des embranchement choisis. La focntion de sélection doit retourner TRUE  si l'état de l'embranchement peut être basculé et  FALSE si cet état doit rester inchangé.

selection : Une GtkTreeSelection.
func : La fonction de sélection.
data : Données de la fonction de sélection.
destroy : Fonction de déstruction pour les données utilisateur. Peut être NULL.

gtk_tree_selection_get_user_data ()

gpointer            gtk_tree_selection_get_user_data    (GtkTreeSelection *selection);

Retourne les données utilisateur de la fonction de sélection.

selection : Une GtkTreeSelection.
Retourne : Données utilisateur.

gtk_tree_selection_get_tree_view ()


GtkTreeView*        gtk_tree_selection_get_tree_view    (GtkTreeSelection *selection);

Retourne le visualisateur de l'arbre associé à selection.

selection : Une GtkTreeSelection
Retourne : Un GtkTreeView

gtk_tree_selection_get_selected ()

gboolean            gtk_tree_selection_get_selected     (GtkTreeSelection *selection,
GtkTreeModel **model,
GtkTreeIter *iter);

Définit l' iter de l'embranchement courant sélectionné si  selection est défini à GTK_SELECTION_SINGLE ou GTK_SELECTION_BROWSE. iter peut être  NULL si vous voulez seulement tester si selection  comprends des embranchement sélectionnés. modelest complété  avec le magasin courant comme il se doit. Cette fnction ne fonctionne pas si vous utilisez  selection défini à GTK_SELECTION_MULTIPLE.

selection : Une GtkTreeSelection.
model : Pointeur pour définir le GtkTreeModel, ou NULL.
iter : Le GtkTreeIter, ou NULL.
Retourne : TRUE, si il n'y a pas d'embranchement sélectionné.

gtk_tree_selection_selected_foreach ()


void                gtk_tree_selection_selected_foreach (GtkTreeSelection *selection,
GtkTreeSelectionForeachFunc func,
gpointer data);

Appelle un fonction pour chaque embranchement sélectionné. Notez que vous ne pouvez pas modifier l'arbre ou une de ses sélections à partir de cette fonction. Pour cela gtk_tree_selection_get_selected_rows() peut être plus utile.

selection : Une GtkTreeSelection.
func : Fonction à appeler pour chaque embranchement sélectionné.
data : Données utilisateur passées à la fonction.

gtk_tree_selection_get_selected_rows ()


GList*              gtk_tree_selection_get_selected_rows
(GtkTreeSelection *selection,
GtkTreeModel **model);

Crée la liste des chemins de chaque rangée sélectionnée. De plus, si vous avez plannifié de modifier le magasin après l'appelle de cette fonction, vous désirerez peut être convertir la liste retournée en liste de GtkTreeRowReferences. Vous pourrez faire cela en utilisant gtk_tree_row_reference_new().

Pour libérer la valeur retournée utilisez :

g_list_foreach (list, gtk_tree_path_free, NULL);
g_list_free (list);
selection : Un  GtkTreeSelection.
model : Pointeur pour définir le  GtkTreeModel, ou NULL.
Retourne : Une  GList contenant un  GtkTreePath pour chaque rangée sélectionnée.

Depuis 2.2


gtk_tree_selection_count_selected_rows ()


gint                gtk_tree_selection_count_selected_rows
(GtkTreeSelection *selection);

Retourne le nombre de rangées qui sont sélectionnées dans l'arbre  tree.

selection : Une GtkTreeSelection.
Retourne : Nombre de rangées sélectionnées.

Depuis 2.2


gtk_tree_selection_select_path ()


void                gtk_tree_selection_select_path      (GtkTreeSelection *selection,
GtkTreePath *path);

Sélectionne la rangée du chemin  path.

selection : Une GtkTreeSelection.
path : Le GtkTreePath qui doit être sélectionné.

gtk_tree_selection_unselect_path ()


void                gtk_tree_selection_unselect_path    (GtkTreeSelection *selection,
GtkTreePath *path);

Déséelctionne la rangée du chemin  path.

selection : Une GtkTreeSelection.
path : Le GtkTreePath qui doit être désélectionné.

gtk_tree_selection_path_is_selected ()


gboolean            gtk_tree_selection_path_is_selected (GtkTreeSelection *selection,
GtkTreePath *path);

Retourne  TRUE si la rangée désignée par le chemin  path est sélectionnée. Si path ne pointe pas sur une localisation valide alors FALSE sera retourné.

selection : Une GtkTreeSelection.
path : Une GtkTreePath pour contrôler la sélection.
Retourne : TRUE si path est sélectionné.

gtk_tree_selection_select_iter ()


void                gtk_tree_selection_select_iter      (GtkTreeSelection *selection,
GtkTreeIter *iter);

Sélectionne un itérateur précis.

selection : Une GtkTreeSelection.
iter : Le GtkTreeIter qui doit être sélectionné.

gtk_tree_selection_unselect_iter ()


void                gtk_tree_selection_unselect_iter    (GtkTreeSelection *selection,
GtkTreeIter *iter);

Désélectionne un itérateur précis.

selection : Une GtkTreeSelection.
iter : Le GtkTreeIter qui doit être désélectionné.

gtk_tree_selection_iter_is_selected ()


gboolean            gtk_tree_selection_iter_is_selected (GtkTreeSelection *selection,
GtkTreeIter *iter);

Retourne   TRUE  si la rangée de iter est sélectionnée.

selection : Une GtkTreeSelection
iter : Un GtkTreeIter valide
Retourne : TRUE, si iter est sélectionné.

gtk_tree_selection_select_all ()


void                gtk_tree_selection_select_all       (GtkTreeSelection *selection);

Sélectionne tous les embranchements. selection doit être défini au mode GTK_SELECTION_MULTIPLE.

selection : Une GtkTreeSelection.

gtk_tree_selection_unselect_all ()


void                gtk_tree_selection_unselect_all     (GtkTreeSelection *selection);

Désélectionne tous les ambranchements.

selection : Une GtkTreeSelection.

gtk_tree_selection_select_range ()


void                gtk_tree_selection_select_range     (GtkTreeSelection *selection,
GtkTreePath *start_path,
GtkTreePath *end_path);

Sélectionne l'ensemble des embranchements inclus entre un chemin de début  start_path et un chemin de fin inclusif end_path. selection doit être défini au mode  GTK_SELECTION_MULTIPLE.

selection : Une GtkTreeSelection.
start_path : Embranchement initial de la rangée.
end_path : Embranchement final de la rangée.

gtk_tree_selection_unselect_range ()


void                gtk_tree_selection_unselect_range   (GtkTreeSelection *selection,
GtkTreePath *start_path,
GtkTreePath *end_path);

Désélectionne l'ensemble des embranchements  inclus entre un chemin de début  start_path et un chemin de fin inclusif end_path.

selection : Une GtkTreeSelection.
start_path : Embranchement initial de la rangée.
end_path : Embranchement final de la rangée.

Depuis 2.2

Détails des signaux

Le signal "changed" 


void                user_function                      (GtkTreeSelection *treeselection,
gpointer user_data) : Run First

Est émis chaque fois que la sélection a (potentiellement) changée. Notez que ce signal est plus une "marque". Il est émis quand un ensemble de rangées est sélectionné ùais peut être occasionnellement émis quand rien ne s'est passé.

treeselection : Objet qui reçoit le signal
user_data : données utilisateur définies quand le gestionnaire de signal est connecté.

Voir Aussi

GtkTreeView, GtkTreeViewColumn, GtkTreeDnd, GtkTreeMode, GtkTreeSortable, GtkTreeModelSort, GtkListStore, GtkTreeStore, GtkCellRenderer, GtkCellEditable, GtkCellRendererPixbuf, GtkCellRendererText, GtkCellRendererToggle