The tools package contains modules that work alongside the ConfigTreeView implementation. The tools package contains:
- dataformatter module
- A tool to convert a row of data that follows the structure defined by the ConfigTreeView implementation into the format that a GtkListStore expects( python list [] format) by mapping the index_map of the ConfigTreeView to the types list defined at ConfigTreeView runtime.
TreeView data coming from the server will come in list of dicts. Each dict represents a row in the treeview. Each key-path in the dict corresponds to an index as defined in the index_map of a ConfigTreeView. Example index_map( mapping a column hierachy to an index in the TreeView row):
{'address': {'markup': 6},
'cell-bg-index': 10,
'comments': {'markup': 7},
'contact': {'markup': 3},
'market': {'pixbuf': 5},
'name': {'markup': 11},
'payment': [{'markup': 8}, {'markup': 9}],
'placed': {'markup': 4},
'shipping': {'markup': 2},
'status': [{'markup': 0}, {'markup': 1}]
}
Sample data(Key-paths will have the same hierarchy as the index_map:
{
'market': {'pixbuf': 'images/pixbufs/my_image.png'},
'name': {'markup': 'Wesley Hansen'},
'cell-bg-index': 'blue',
'address':{'markup': '2336 112th Avenue'}
}
As you can see, the data coming from the server will share the same hierarchy, as this is important to determine which column/renderer and, ultimately, the index in a row to insert the data into.
The DataFormatter will take care of this, creating a simple API to do it. It will be able to, taking in an index_map and a types list(these things are taken from a ConfigTreeView), take in data and generate formatted rows, which are ready for either appending to a liststore, or some other post-formatting function.
Create a new data formatter with the given index_map and types
Parameters: |
|
---|
Returns an empty list with the correct length a gtk.TreeModel with the given index_map (from the constructor) expects.
Example: if the index_map contained 4 different values of type str, then this function would return: [None, None, None, None]
Yields formatted rows of data where data is a list of dicts, where each dict’s key-path has a valid value in index_map...if it doesn’t a warning is printed out, and that value is skipped in that row.
Parameters: | data – The data, whose structure is a list of dicts, as described by the index_map. |
---|