Widget that displays any object that implements the GtkTreeModel interface. Please refer to the tree widget conceptual overview for an overview of all the objects and data types related to the tree widget and how they work together. Tree coordinates: Coordinates relative to the entire scrollable area of GtkTreeView. These coordinates start at 0, 0 for row 0 of the tree. Several functions are available for converting between the different coordinate systems. The most common translations are between widget and bin window coordinates and between bin window and tree coordinates.
|Published (Last):||24 June 2017|
|PDF File Size:||16.83 Mb|
|ePub File Size:||2.40 Mb|
|Price:||Free* [*Free Regsitration Required]|
The GTK TreeView widget is used to display data in one of the most basic and intuitive ways possible: a list. Each row in the list can be separated into multiple columns, and rows in the list can contain child rows to create an expandable-list, or tree. The TreeView can be extremely intimidating at first, but it is extremely powerful - especially when compared to the ListBox and ListView controls from the Windows Forms toolkit. Components of the TreeView are separated into these three categories: The Model, which stores data to be displayed, the View, which controls how to display the data, and the controller, which controls what data is displayed, how it is sorted, etc.
The TreeView has two basic models: ListStore, which stores a flat set of data, and TreeStore, which stores data that can contain sub-items used for creating a Tree. All TreeView Models implement the Gtk. TreeModel interface. The View is made up of three different parts as well - The column, the cell renderers, and the widget itself. The TreeView widget is responsible for laying out the columns and rows of data, as well as providing all the basic user-interaction functionality such as selecting items, etc.
Cell renderers are what actually display the data - items in the model are mapped to cell renderers. CellRenderers are separate from TreeViewColumns for added flexibility, allowing you to have an extremely fine-tuned treeview tailored to your application.
For example you can pack an image and text into the same column, which often makes much more sense than creating a separate column for each.
Controllers modify how the data in the model is passed off to the View, and let you do things such as sorting and filtering the data. Here is a basic example of how to use the TreeView and all its related components. In our example, we will show a simple list of song titles and artist names:. So we have our TreeView displaying our two desired columns, now lets add some data in there. This inserts a new row into the Model.
We specify the same number of arguments here as we defined when we constructed the Gtk. ListStore above. Text in our case , and the third argument specifies the position in the Model that the value should be obtained from. Above when we added a row to the model, we specified the artist first, then the song title, so we use that here.
Remember the order of items in the Model is not automatically linked to the order of your columns in the TreeView in any way, so while keeping everything in the same order makes things a lot easier to manage and understand, it is not required.
You are not limited to assigning one property to the store per CellRenderer, you can call AddAttribute for the same CellRenderer as many times as you would like, to control the different properties of the CellRenderer. The TreeView makes it very easy to prevent certain rows from being displayed, without having to remove them from the model.
We then create the FilterTree method, which determines which rows are visible and which are hidden:. Here is a complete example demonstrating how you can use a text entry widget to control the filter. The TreeView allows you write methods that extract specific data from your Model, and link your CellRenderers to them, rather than directly to the model.
This is one of the extremely useful features of TreeModel because it means you can store a reference any. In the preveous examples we inserted both the song and artist into each row of the ListStore. If the TreeView is displaying a large amount of data this can use a lot of memory, and if the backend data changes song title changes, etc.
The TreeView doesnt automatically know how to link up the fields in the Song class to the different CellRenderers, so instead of using AddAttribute as we did in our first example, we use SetCellDataFunc :. Both of the example methods above demonstrate how to modify one property of the CellRenderer, but you are certainly not limited to only modifing one.
This example is fairly pointless, but it demonstrates how to modify multiple properties. A more practical use for this would be to change the color based on the state of an object:.
The Gtk TreeView API provides several convinence methods that makes it possible to create a basic tree using much less code than we used above. Here is the same demo as first example on this page, using these methods, note that it is significantly less code:. Making an editable text cell so the user can click on the cell and modify the value is extremely easy.
PyGTK - TreeView Class
The Treeview widget displays contents of a model implementing the gtk. TreeModel interface. ListStore is a list model. When associated with a gtk. TreeView widget, it produces a List box containing the items to be selected from.
GtkSharp TreeView Tutorial
TreeView implements gtk. Object Properties. Widget Properties. Container Properties. Object Signal Prototypes.
ImplementorIface Atk. ImplementorIface Gtk. Widget Gtk. Widget Atk. Widget GObject.