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.
14.3.1. Créer un TreeView
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.
14.3.2. Récupérer et spécifier le modèle du TreeView
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é.
14.3.3. Les propriétés du TreeView
Le TreeView dispose de plusieurs propriétés ainsi que de méthodes pour traiter ces dernières :
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.