Le TreeView
n'est rien de plus qu'un conteneur pour les objets TreeViewColumn
et CellRenderer
, les deux vrais responsables de l'affichage des données du modèle. Il fournit également une interface pour les lignes de données affichées et pour les caractéristiques contrôlant l'affichage des données.
On crée un TreeView en faisant appel à son constructeur :
treeview = gtk.TreeView(model
=None)
...où model
est un objet implémentant l'interface TreeModel
(en général un ListStore
ou un TreeStore
). Si model
vaut None
ou n'est pas spécifié, le TreeView
ne sera associé à aucun modèle.
Le modèle fournissant les données au TreeView
peut être récupéré avec la méthode get_model
() :
modele = treeview.get_model()
Un TreeModel
peut être associé simultanément avec plusieurs TreeView
qui actualiseront automatiquement leur affichage lorsque les données du TreeModel
seront modifiées. Si un TreeView
affiche obligatoirement toutes les lignes de son modèle, il peut en revanche n'afficher que certaines des colonnes de ce dernier. Deux TreeView
associés au même TreeModel
peuvent donc donner deux affichages différents des mêmes données.
Il est également important de savoir qu'il n'y a pas de relation prédéfinie entre les colonnes d'un TreeView
et celles de son TreeModel
. Ainsi, la cinquième colonne de données d'un TreeModel
peut être affichée dans la première colonne d'un TreeView
et dans la troisième d'un autre.
Un TreeView
peut changer de modèle grâce à la méthode set_model
() :
treeview.set_model(model
=None)
...où model
est un objet implémentant l'interface TreeModel (par exemple un ListStore ou un TreeStore). Si model
vaut None
, le modèle courant est abandonné.
Le TreeView
dispose de plusieurs propriétés ainsi que de méthodes pour traiter ces dernières :
"enable-search" | Lecture-écriture | Si elle vaut TRUE , l'utilisateur peut effectuer une recherche interactive dans les colonnes. TRUE par défaut. |
"expander-column" | Lecture-écriture | La colonne où doit apparaitre la flèche de développement pour les lignes mères. Colonne 0 par défaut |
"fixed-height-mode" | Lecture-écriture | Si elle vaut TRUE , toutes les lignes seront de même hauteur (ce qui accélère l'affichage). Disponible à partir de GTK+ 2.4. FALSE par défaut. |
"hadjustment" | Lecture-écriture | L'Adjustment horizontal pour le widget. Un nouveau est créé par défaut. |
"headers-clickable" | Écriture | Si elle vaut TRUE , les en-têtes des colonnes répondront aux clics. FALSE par défaut. |
"headers-visible" | Lecture-écriture | Si elle vaut TRUE , les boutons d'en-tête des colonnes seront visibles. TRUE par défaut. |
"model" | Lecture-écriture | Le modèle du TreeView. None par défaut. |
"reorderable" | Lecture-écriture |
TRUE indique la possibilité de réordonner le TreeView. FALSE par défaut. |
"rules-hint" | Lecture-écriture |
TRUE ordonne au moteur de thèmes d'alterner les couleurs des lignes. FALSE par défaut. |
"search-column" | Lecture-écriture | La colonne du modèle dans laquelle le code de recherche interactive doit effecuer la recherche. -1 par défaut. |
"vadjustment" | Read-Write | L'Adjustment vertical pour le widget. Un nouveau est créé par défaut. |
Les méthodes correspondantes sont les suivantes :
autorise_rechercher = treeview.get_enable_search() treeview.set_enable_search(enable_search
) colonne = treeview.get_expander_column() treeview.set_expander_column(column
) ajustement_horizontal = treeview.get_hadjustment() treeview.set_hadjustment(adjustment
) treeview.set_headers_clickable(active
) entetes_visibles = treeview.get_headers_visible() treeview.set_headers_visible(headers_visible
) reordonner = treeview.get_reorderable() treeview.set_reorderable(reorderable
) alterner_couleurs = treeview.get_rules_hint() treeview.set_rules_hint(setting
) colonne = treeview.get_search_column() treeview.set_search_column(column
) ajustement_vertical = treeview.get_vadjustment() treeview.set_vadjustment(adjustment
)
Si la plupart se passent de description, signalons cependant que pour activer la propriété "enable-search" il est nécessaire d'indiquer un numéro de colonne valide à "search-column". Quand l'utilisateur pressera la combinaison de touches Control+f, une boite de dialogue de recherche apparaitra alors, dans laquelle il pourra saisir le texte à rechercher. La première ligne correspondant sera automatiquement selectionnée pendant la saisie du texte.
La propriété "headers-clickable" ne fait en réalité qu'activer la propriété "clickable" des TreeViewColumn
sous-jacents. Un TreeViewColumn
ne pourra pas être réordonné si le modèle n'implémente pas l'interface TreeSortable
et si la méthode de TreeViewColumn
set_sort_column_id
() n'a pas été appelée avec un numéro de colonne valide.
La propriété "reorderable" permet à l'utilisateur de réordonner le modèle du TreeView
en glissant-déposant les lignes affichées du TreeView
.
La propriété "rules-hint" ne devrait être activée que dans les cas où l'on aurait beaucoup de colonnes et où l'on penserait qu'alterner les couleurs pourrait aider l'utilisateur.