Description
L'outils GtkTreeModel
est une interface générique associant des données
à un arbre, elle est utilisée par le widget GtkTreeView.
C'est une interface abstraite, elle est destinée à
être utilisée de façon appropriée avec
toute structure de données. Le développeur doit
simplement
configurer cette interface pour visualiser
ses propres types de données à l'aide d'un
widget GtkTreeView.
Ce magasin (GtkTreeModel) prend la forme d'un arbre de données hiérarchisées, strongly-typed
mises en colonnes. En d'autres termes, le magasin peut être
visualisé comme un abre où tous les embranchements prennent une
valeur différente pour chaque colonne
considérée. Le type de donnée trouvée dans
une colonne sera défini à l'aide du
système
GType (par exemple G_TYPE_INT, GTK_TYPE_BUTTON, G_TYPE_POINTER,
etc.).
Le type est unique dans une colonne pour tous les embranchements.
Il est important de noter que cette interface fournit seulement une
méthode pour parcourir le magasin et observer des changements.
L'exécution de chaque magasin individuel
décidera comment et si des modifications peuvent être
réalisées.
Pour simplifier le vie des développeurs qui ne veulent pas
écrire leur propre modèle spécifique de
magasin , deux modèles génériques sont
fournis —
GtkTreeStore et GtkListStore.
Pour les utiliser, les développeurs organisent les
données dans ces magasins suivant leurs besoins. Ces magasins
fournissent des structures de données appropriées à toutes les interfaces
d'arbre. En conséquence il sera
aisé d'appliquer une option "glisser déposer", de
faire un tri et de stocker des données. Pour la plupart des
arbres et des listes, ces deux magasins sont suffisants.
Les magasins sont accessibles au niveau embranchement/ colonne de granularity.
Ainsi on peut trouver la valeur du magasin pour un certain
embranchement et une certaine colonne sur cet embranchement. Deux structures sont utilisées pour
référencer un embranchement particulier dans un magasin.
Ce sont GtkTreePath et GtkTreeIter
[4] La plupart des outils utilisent la structure GtkTreeIter.
Un chemin (path) est essentiellement un embranchement potentiel.
C'est une localisation dans un magasin spécifique qui correspond ou non
à un embranchement . La
structure GtkTreePath
peut être convertie soit en tableau d'entiers
non-signés soit en chaîne. La forme chaîne est une
liste de nombres séparés par deux points. Chaque nombre
définit l'offset à ce niveau. Ainsi, le chemin "0"
définit la racine de l'arbre et le chemin "2:4" définit
le cinquième enfant du troisième embranchement.
En opposition, GtkTreeIter est
la référence d'un embranchement précis
dans un magasin spécifique. Elle prend la forme d'une structure
générique composée d'un entier et de pointeurs
génériques pour l'arbre. Le magasin la remplira de
façon appropriée. On peut convertir un chemin en
itérateur en appelant
gtk_tree_model_get_iter()
.
Ces itérateurs forment le mode principal d'accès au magasin et sont semblabes aux itérateurs
employés par
GtkTextBuffer.
Il sont généralement alloués statiquement sur la
pile et sont utilisés uniquement sur une courte période.
L'interface du magasin définit un ensemble d'opérations
utilisées pour naviguer dans le magasin.
Le magasin est amené à compléter
l'itérateur avec des données privées. Par exemple,
le magasin GtkListStore ,
qui est une simple liste liée, stocke un embranchement de la liste dans un des pointeurs. GtkTreeModelSortstocke
un tableau et un offset dans deux des pointeurs. De plus, la structure
de l'itérateur comporte un champs d'entier. Ce champs
contient généralement une
marque unique par magasin. Cette marque sert à gérer les
erreurs résultantes de l'utilisation d'itérateurs
invalides
dans le magasin.
Le cycle de vie d'un itérateur peut paraître un peu
confus
de prime abord. Les itérateurs sont sensés
être valides aussi longtemps que le magasin reste
inchangé
(et n'émet aucun signal). Le magasin est sensé
gérer tous les
itérateurs même inactifs (outstanding ?) et l'utilisateur
ne doit pas
les libérer . De plus, certains magasins garantissent
la validité de l'itérateur aussi longtemps que
l'embranchement reste valide (plus
particulièrement GtkTreeStore et GtkListStore).
Bien que généralement inintéressant, comme
on doit toujours prendre en compte le cas où l'itérateur
ne persiste pas au delà d'un signal, quelques
perfectionnements très importants ont
été apportés pour les magasin de tri. Ainsi le
flag
GTK_TREE_MODEL_ITERS_PERSIST a été ajouté pour configurer ce comportement.
Voici quelques exemples pour présenter les opérations communes sur
le magasin. Le premier exemple montre
trois façons d'obtenir l'iteration de l'endroit “3:2:5”.
Alors que la première méthode exposée est la plus
facile, la seconde est plus commune. En effet, vous rencontrerez le plus
souvent un chemin lors de l'utilisation d'un callbacks.
Exemple 15. Acquérir un GtkTreeIter
/* Façon d'obtenir l'iterateur pointant sur une localisation */ { GtkTreePath *chemin; GtkTreeIter iter; GtkTreeIter parent_iter;
/* obtenir l'itérateur à partir d'une chaîne de caractères*/ gtk_tree_model_get_iter_from_string (magasin, &iter, "3:2:5");
/* obtenir un itérateur à partir d'un chemin */ path = gtk_tree_path_new_from_string ("3:2:5"); gtk_tree_model_get_iter (magasin, &iter, chemin); gtk_tree_path_free (chemin);
/* parcourir l'arbre pour trouver l'itérateur */ gtk_tree_model_iter_nth_child (magasin, &iter, NULL, 3); parent_iter = iter; gtk_tree_model_iter_nth_child (magasin, &iter, &parent_iter, 2); parent_iter = iter; gtk_tree_model_iter_nth_child (magasin, &iter, &parent_iter, 5); }
|
Partie non relue->traduction directe.
Ce second exemple montre une façon rapide de créer une
itération dans une liste et d'obtenir une chaîne de
caractères et un entier pour chaque rangée. La fonction
populate_model
utilisée ci-dessous ne sera pas développée puisqu'elle est spécifique à
GtkListStore. Pour savoir comment écrire une telle fonction, reportez-vous à la documentation de
GtkListStore.
Exemple 16. Lire des données depuis un GtkTreeModel
enum { COLONNE_STRING, COLONNE_INT, N_COLONNES, };
{ GtkTreeModel *magasin_liste; GtkTreeIter iter; gboolean valide; gint compteur_ligne = 0;
/* Créer un nouveau magasion_liste */ magasin_liste = gtk_list_store_new (N_COLONNES, G_TYPE_STRING, G_TYPE_INT);
/* Remplir le magasin avec des données */ populate_model (magasin_liste);
/* Obtenir le premier itérateur de la liste */ valide = gtk_tree_model_get_iter_first (magasin_liste, &iter);
while (valide) { /* Parcourir le magasin en lisant chaque ligne */ gchar *str_data; gint int_data;
/* Assurez-vous de bien terminer l'appelle de gtk_tree_model_get() * par la valeur '-1' */ gtk_tree_model_get (magasin-liste, &iter, COLONNE_STRING, &str_data, COLONNE_INT, &int_data, -1);
/* Faire quelque chose des données recueillies */ g_print ("Rangée %d: (%s,%d)\n", compteur_ligne, str_data, int_data); g_free (str_data);
compteur_ligne ++; valide = gtk_tree_model_iter_next (magasin_liste, &iter); } }
|
Détails
GtkTreeModel
typedef struct _GtkTreeModel GtkTreeModel;
|
GtkTreeIter
typedef struct { gint stamp; gpointer user_data; gpointer user_data2; gpointer user_data3; } GtkTreeIter;
|
GtkTreeIter est une structure primaire
pour accèder au magasin. Les magasins sont sensés placer
un entier unique dans le membre stamp
et mettre des données spécifiques au m agasins dans les membres user_data
de l'arbre.
gint stamp ; |
Une marque unique pour gérer les itérateurs invalides |
gpointer user_data ; |
Données spécifiques au magasin |
gpointer user_data2 ; |
Données spécifiques au magasin |
gpointer user_data3 ; |
Données spécifiques au magasin |
GtkTreePath
typedef struct _GtkTreePath GtkTreePath;
|
GtkTreeRowReference
typedef struct _GtkTreeRowReference GtkTreeRowReference;
|
GtkTreeModelIface
typedef struct { GTypeInterface g_iface;
/* Signals */ void (* row_changed) (GtkTreeModel *tree_model, GtkTreePath *path, GtkTreeIter *iter); void (* row_inserted) (GtkTreeModel *tree_model, GtkTreePath *path, GtkTreeIter *iter); void (* row_has_child_toggled) (GtkTreeModel *tree_model, GtkTreePath *path, GtkTreeIter *iter); void (* row_deleted) (GtkTreeModel *tree_model, GtkTreePath *path); void (* rows_reordered) (GtkTreeModel *tree_model, GtkTreePath *path, GtkTreeIter *iter, gint *new_order);
/* Virtual Table */ GtkTreeModelFlags (* get_flags) (GtkTreeModel *tree_model);
gint (* get_n_columns) (GtkTreeModel *tree_model); GType (* get_column_type) (GtkTreeModel *tree_model, gint index_); gboolean (* get_iter) (GtkTreeModel *tree_model, GtkTreeIter *iter, GtkTreePath *path); GtkTreePath *(* get_path) (GtkTreeModel *tree_model, GtkTreeIter *iter); void (* get_value) (GtkTreeModel *tree_model, GtkTreeIter *iter, gint column, GValue *value); gboolean (* iter_next) (GtkTreeModel *tree_model, GtkTreeIter *iter); gboolean (* iter_children) (GtkTreeModel *tree_model, GtkTreeIter *iter, GtkTreeIter *parent); gboolean (* iter_has_child) (GtkTreeModel *tree_model, GtkTreeIter *iter); gint (* iter_n_children) (GtkTreeModel *tree_model, GtkTreeIter *iter); gboolean (* iter_nth_child) (GtkTreeModel *tree_model, GtkTreeIter *iter, GtkTreeIter *parent, gint n); gboolean (* iter_parent) (GtkTreeModel *tree_model, GtkTreeIter *iter, GtkTreeIter *child); void (* ref_node) (GtkTreeModel *tree_model, GtkTreeIter *iter); void (* unref_node) (GtkTreeModel *tree_model, GtkTreeIter *iter); } GtkTreeModelIface;
|
GtkTreeModelForeachFunc
()
model : |
|
path : |
|
iter : |
|
data : |
|
Returns : |
|
enum
GtkTreeModelFlags
typedef enum { GTK_TREE_MODEL_ITERS_PERSIST = 1 << 0, GTK_TREE_MODEL_LIST_ONLY = 1 << 1 } GtkTreeModelFlags;
|
Ces flags indiquent des propriétés variées pour GtkTreeModel. Ils sont retournés par gtk_tree_model_get_flags()
, et doivent être static pendant la durée de vie de l'objet. Une description plus complète de
GTK_TREE_MODEL_ITERS_PERSIST
est présentée ci-dessus dans le chapitre "description" de cette section.
GTK_TREE_MODEL_ITERS_PERSIST |
Les itérateurs survivent à tous les signaux émis par l'arbre. |
GTK_TREE_MODEL_LIST_ONLY |
Le magasin est une liste simple et ne posséde aucun enfant. |
gtk_tree_path_new
()
Crée un nouveau GtkTreePath.
Cette structure se rapporte à une rangée.
gtk_tree_path_new_from_string
()
Crée un nouveau GtkTreePath initialisé à path
.
path
est une liste de nombres
séparés par deux points. Par exemple la
chaîne "10:4:0" crééra un chemin de profondeur
3 pointant sur le 11ème enfant de la racine de l'arbre , le
5ème enfant de ce 11ème enfant et le premier enfant de ce
5ème enfant. Si une chaîne de chemin invalide
est passée, la fonction retournera NULL
.
path : |
Chaîne représentant le chemin. |
Retourne : |
Un GtkTreePath nouvellement créé, ou NULL |
gtk_tree_path_new_from_indices
()
Créé un nouveau chemin avec first_index
et varargs
en indices.
first_index : |
premier entier |
... : |
liste d'entiers terminée par -1 |
Retourne : |
UnGtkTreePath nouvellement créé.
|
Depuis 2.2
gtk_tree_path_to_string
()
Génére une chaîne pour réprésenter un
chemin. Cette chaîne est une suite de nombres
séparés par un ":". Par exemple, "4:10:0:3"est une valeur
correcte pour cette chaîne.
path : |
Un GtkTreePath |
Retourne : |
Une chaîne nouvellement allouée. Elle doit être libérée avec g_free() . |
gtk_tree_path_new_first
()
Crée un nouveau
GtkTreePath. La chaîne représentant ce chemin est "0"
gtk_tree_path_new_root()
#define gtk_tree_path_new_root() gtk_tree_path_new_first()
|
Attention
gtk_tree_path_new_root
est
déprécié et ne doit plus être
utilisée dans un code nouvellement créé. Utilisez gtk_tree_path_new_first()
à la place.
Alternative est gtk_tree_path_new_first()
fourni pour des raisons de compatibilité.
gtk_tree_path_append_index
()
Ajoute un nouvel index à la fin d'un chemin. Ainsi la profondeur du chemin augmente.
gtk_tree_path_prepend_index
()
Ajoute un nouvel index au début d'un chemin. Ainsi la profondeur du chemin augmente.
gtk_tree_path_get_depth
()
Retourne la profondeur courante d'un chemin path
.
path : |
Un GtkTreePath. |
Retourne : |
La profondeur de path
|
gtk_tree_path_get_indices
()
Retourne les indices courants du chemin path
.
C'est un tableau d'entiers, chaque entier représente un
embranchement de l'arbre. Cette valeur ne doit pas être
libérée.
gtk_tree_path_free
()
Libére un chemin path
.
gtk_tree_path_copy
()
Crée un nouveau GtkTreePath en copiant le chemin
path
.
gtk_tree_path_compare
()
Compare deux chemins. Si a
apparaît avant b
dans un arbre, alors -1 sera retourné. Si b
apparaît avant a
,
alors 1 sera retourné. Si les deux embranchements sont égaux, alors 0 sera retourné.
gtk_tree_path_next
()
Déplace le chemin path
pour qu'il pointe sur l'embranchement suivant à la profondeur courante.
gtk_tree_path_prev
()
Déplace le chemin path
pour qu'il pointe sur l'embranchement précédent à la profondeur courante, si il existe.
path : |
Un GtkTreePath. |
Retourne : |
TRUE si un embranchement précédent existe pour path et que le déplacement a été réalisé. |
gtk_tree_path_up
()
Déplace le chemin path
pour qu'il pointe sur l'embranchement parent si il a un embranchement parent.
path : |
Un GtkTreePath. |
Retourne : |
TRUE si un embranchement parent existe pour path et que le déplacement a été réalisé. |
gtk_tree_path_down
()
Déplace le chemin path
pour qu'il pointe sur le premier enfant du chemin courant.
gtk_tree_path_is_ancestor
()
Retourne TRUE
si descendant
est un descendant du chemin path
.
gtk_tree_path_is_descendant
()
Retourne TRUE
si le chemin path
est un descendant de ancestor
.
gtk_tree_row_reference_new
()
Crée une référence de rangée basée sur le chemin
path
.
Cette référence pointera sur l'embranchement indiqué par le chemin
path
aussi longtemps que cet embranchement existera. Elle sera à
lécoute de tous les signaux émis par le magasin
model
, et mettra à jour ses chemins de façon appropriée. Si le chemin
path
n'est pas un chemin valide dans
model
,
alors
NULL
sera retourné.
gtk_tree_row_reference_new_proxy
()
Vous ne devez pas avoir besoin d'utiliser cette fonction. Elle
crée une référence de rangée basée
sur le chemin
path
.
Cette référence pointera sur l'embranchement indiqué par le chemin path
aussi longtemps que cet embranchement existera. Si path
n'est pas valide dans me magasin model
,alors NULL
sera retourné. Cependant, contrairement aux références créées avec
gtk_tree_row_reference_new()
,
elle ne sera pas à l'écoute des changements du magasin.
Le créateur de la référence de rangée doit
gérer cela explicitement en utilisant
gtk_tree_row_reference_inserted()
,
gtk_tree_row_reference_deleted()
,
gtk_tree_row_reference_reordered()
.
Ces fonctions doivent être appelées exactement une fois par proxy
quand le signal correspondant est émis sur le magasin. Cette
appel unique met à jour toutes les références de
rangée pour ce proxy. Depuis que GTK+ a intégré
des objets comme GtkTreeView
qui utilisent déjà ce mécanisme en interne, les
utiliser comme des objets intermédiaires (proxy) provoque des
résultats imprévisibles. De plus, le passage du
même objet comme magasin model
et comme proxy
ne fonctionne pour des raisons d'exécution interne.
Ce type de référence de rangée a une
signification principalement pour des structures qui ont
besoin
d'être surveillées soigneusement,
précisément quand la référence de
rangée se met à jour elle même. Elle n'est
généralement pas nécessaire à la plupart
des applications.
gtk_tree_row_reference_get_model
()
Retourne le magasin que la référence de rangée surveille.
Depuis 2.8
gtk_tree_row_reference_get_path
()
Retourne un chemin sur lequel la référence de rangée pointe ou NULL
si le chemin pointé n'est plus valide.
gtk_tree_row_reference_valid
()
Retourne TRUE
si la reference
n'est pas NULL
et fait référence à un chemin valide courant.
gtk_tree_row_reference_free
()
Libére la reference
.
reference
peu être NULL
.
gtk_tree_row_reference_inserted
()
Imforme un ensemble de références de rangée créé par gtk_tree_row_reference_new_proxy()
que le magasin a émis un signal "row_inserted".
proxy : |
Un GObject |
path : |
La position de la ligne qui a été insérée |
gtk_tree_row_reference_deleted
()
Informe un ensemble de références de rangées crée par
gtk_tree_row_reference_new_proxy()
qu'un magasin a émit un signal "row_deleted".
proxy : |
Un GObject |
path : |
Position du chemin qui a été supprimé |
gtk_tree_row_reference_reordered
()
Informe un ensemble de références de rangées créé par gtk_tree_row_reference_new_proxy()
que le magasin a émis le signal "rows_reordered".
proxy : |
Un GObject |
path : |
Le chemin parent du signal de réorganisation. |
iter : |
iter pointant sur le parent du signal |
new_order : |
Le nouvel ordonnance des rangées |
gtk_tree_iter_copy
()
Crée un itérateur d'arbre alloué dynamiquement en copiant iter
.
Cette fonction n'est pas prévue pour être utilisée
dans des application parce que vous pouvez copier la structure ainsi (GtkTreeIter
new_iter = iter;
). Vous devez libérer cet itérateur avec gtk_tree_iter_free()
.
iter : |
Un GtkTreeIter. |
Retourne : |
une copie de iter nouvellement allouée.
|
gtk_tree_iter_free
()
Libére un itérateur qui a été alloué
sur le tas. Cette fonction est employée principalement pour des
raccourcis de langages.
(Pas compris)
iter : |
Un itérateur d'arbre alloué dynamiquement. |
gtk_tree_model_get_flags
()
Retourne un ensemble de flags supporté par cet interface. Les flags sont des combinaisons au niveau des bits de GtkTreeModelFlags . Les flags supportés de doivent pas être modifiés pendant le temps de vie deu magasin tree_model
.
tree_model : |
Un GtkTreeModel.
|
Retourne : |
flags supportés par cet interface. |
gtk_tree_model_get_n_columns
()
Retourne le nombre de colonnes supportées pas le magasin
tree_model
.
tree_model : |
Un GtkTreeModel.
|
Retourne : |
Nombre de colonnes . |
gtk_tree_model_get_column_type
()
Retourne le type de la colonne.
tree_model : |
Un GtkTreeModel.
|
index_ : |
Index de la colonne |
Retourne |
Type de la colonne. |
gtk_tree_model_get_iter
()
Définit iter
comme un itérateur valide pointant sur le chemin path
.
gtk_tree_model_get_iter_from_string
()
Définit iter
à un itérateur valide pointant sur path_string
,
si'l existe. Autrement, iter
reste invalide et FALSE
sera retourné.
gtk_tree_model_get_iter_first
()
Initialise
iter
avec le premier itérateur de l'arbre (celui du chemin "0") et retourne
TRUE
. Retourne
FALSE
si l'arbre est vide.
gtk_tree_model_get_iter_root()
#define gtk_tree_model_get_iter_root(tree_model, iter) gtk_tree_model_get_iter_first(tree_model, iter)
|
Attention
gtk_tree_model_get_iter_root
est déprécié et ne doit plus être utilisé dans un nouveau code.
Alternative pour gtk_tree_model_get_iter_first()
foourni
pour des raisons de compatibilité; cette macro sera
désapprouvée dans une prochaine version de GTK+.
gtk_tree_model_get_value
()
Sets initializes and sets value
to that at column
.
(??) Quand vous avez terminé d'utiliser value
,
il faut appeler g_value_unset()
pour libérer toute la mémoire allouée.
gtk_tree_model_iter_next
()
Définit iter
pour qu'il pointe sur l'embranchement qui suit celui du niveau courant. S'il n'est pas suivi par un autre iter
,
FALSE
est retourné et iter
est défini comme étant invalide.
gtk_tree_model_iter_children
()
Définit iter
pour qu'il pointe sur le premier enfant de parent
.
Si parent
n'a pas d'enfant, FALSE
est retourné et
iter
est défini comme invalide. parent
sera toujours un embranchement valide après l'appelle de cette fonction.
Si parent
est NULL
le premier embranchement sera définit, cette fonction est équivalente dans ce cas à
gtk_tree_model_get_iter_first
(tree_model, iter);
gtk_tree_model_iter_has_child
()
Retourne TRUE
si iter
a un ou des enfants, FALSE
autrement.
tree_model : |
Un GtkTreeModel.
|
iter : |
GtkTreeIter que l'on va tester pour trouver des enfants. |
Retourne : |
TRUE si iter a un ou des enfants. |
gtk_tree_model_iter_n_children
()
Retourne le nombre d'enfants que iter
a. Cas particulier, si iter
est NULL
, alors le nombre de niveaux supérieurs sera retourne.
gtk_tree_model_iter_nth_child
()
Définit iter
pour qu'il soit l'enfant de parent
,
en utilisant un index donné. Le premier index est 0. Si n
est trop grand, ou si parent
n'a pas d'enfant, iter
sera définit comme itérateur invalide et FALSE
sera retourné. parent
reste un embranchement valide après que la fonction ait
été appelée. Cas particulier, si parent
est NULL
alors le n
ième embranchement sera définit.
tree_model : |
Un GtkTreeModel.
|
iter : |
GtkTreeIter à définir comme nième enfant |
parent : |
GtkTreeIter dont on va définir l'enfant ou NULL . |
n : |
Index de l'enfant recherché. |
Retourne : |
TRUE , si parent
a un n ième enfant. |
gtk_tree_model_iter_parent
()
Définit iter
pour qu'il soit le parent de l'enfant child
. Si child
est au niveau supérieur et qu'il n'a pas de parent alors iter
sera définit comme itérateur invalide et FALSE
sera retourné. child
restera un embranchement valide après l'appelle de la fonction.
gtk_tree_model_get_string_from_iter
()
Génère une chaîne de caractères
représentant l'itérateur. cette chaîne est une
liste de nombres séparés par ":". Par exemple
"4:10:0:3" serait une valeur correcte pour ce genre de
chaîne.
Depuis 2.2
gtk_tree_model_ref_node
()
L'arbre va référencer l'embranchement. C'est une
méthode facultative pour la mise en application des magasins.
Les magasins peuvent ignorer cet appel (si son existance est
antérieure) ??, ceci pour des questions d'exécution.
Le rôle principal de cette fonction est de donner aux
visualiseurs la possibilité de permettre au model
caché de savoir quand l'embranchement est affiché (et par
conséquent, si oui ou non il faut cacher cet
embranchement.) Par exemple, un systèle de fichiers basé
sur un magasin ne conserve pas la hiérarchie
entière des fichiers en mémoire, il lui suffit de
mémoriser simplement les sections qui sont affichées par
toutes les vues courantes.
Un magasin devrait être prévu pour pouvoir obtenir
un iter indépendant de son état de
référence.
gtk_tree_model_unref_node
()
L'arbre supprime la référence de l'embranchement.
C'est une méthode optionnelle à appliquer. Pour
être plus précis, les magasins peuvent ignorer cet
appel (si son existance est
antérieure) ?? pour des raisons liées à l'exécution.
Pour plus d'informations à ce sujet, voir gtk_tree_model_ref_node()
.
Notez que les embranchements supprimés non sont pas déréférencés.
gtk_tree_model_get
()
Donne la valeur d'une ou plusieures cellules de la rangée référencée par iter
.
La liste à nombre variable d'arguments doit contenir
l'entier remprésentant le numéro descolonnes, chaque
numéro de colonne est suivi par une place où stocker les
valeurs trouvées. Cette liste se termine par -1. Par
exemple, pour trouver la valeur de la colonne 0 qui a le type G_TYPE_STRING
, vous écririez : gtk_tree_model_get (magasin,
iter, 0, &mettez_chaine_ici, -1)
, où mettez_chaine_ici
est un gchar*
contenant la chaîne. Si cela est approprié, les valeurs
retournées doivent être libées ou
déréférencées.
tree_model : |
un GtkTreeModel
|
iter : |
une rangée dans tree_model
|
... : |
paires formées par un numéro de colonne
et un endroit pour stocker la valeur retournée, terminé
par -1. |
gtk_tree_model_get_valist
()
Voir gtk_tree_model_get()
, cette version prend un va_list
(comme raccourci de langage à utiliser) ?for language bindings to use.
tree_model : |
un GtkTreeModel
|
iter : |
une rangée dans tree_model
|
var_args : |
va_list de colonne/localisation de la paire retournée. |
gtk_tree_model_foreach
()
Appelle une fonction pour chaque embranchement d'un magasin en mode depth-first. Si func
retourne TRUE
, alors l'arbre cesse de fonctionner, et gtk_tree_model_foreach()
retourne.
model : |
Un GtkTreeModel
|
func : |
A function to be called on each row |
user_data : |
User data to passed to func. |
gtk_tree_model_row_changed
()
Emet le signal "row_changed" sur tree_model
.
gtk_tree_model_row_inserted
()
Emet le signal "row_inserted" sur tree_model
gtk_tree_model_row_has_child_toggled
()
Emet le signal "row_has_child_toggled" sur tree_model
.
Elle doit être appelée par les magasins après que
l'état de l'enfant de l'embranchement ait changé.
gtk_tree_model_row_deleted
()
Emet le signal "row_deleted" sur tree_model
.
Elle doit être appelée par les magasins après
qu'une rangée ait été supprimée. L'endroit
sur lequel pointe le chemin path
doit
être l'endroit où la rangée était avant sa
suppression. Ce ne sera jamais une localisation valide.
gtk_tree_model_rows_reordered
()
Emet le signal "rows_reordered" sur tree_model
.
Elle doit être appelée par les magasins quand leurs rangées ont été réorganisée.
tree_model : |
Un GtkTreeModel
|
path : |
Un GtkTreePath pointant sur l'embranchement de l'arbre dont les enfants ont été (ré-)ordonnés. |
iter : |
Un GtkTreeIter valide pointant sur l'embranchement dont les enfants ont été ordonnés, ou NULL si la profondeur du chemin path est 0. |
new_order : |
un tableau d'entiers décrivant la position
courante de chaque enfant par rapport à son ancienne position
avant la réorganisation, par exemple, new_order [newpos] = oldpos . |