# tree widget #
A [GtkTreeView](http://developer.gnome.org/gtk2/2.24/GtkTreeView.html) packed inside a [GtkScrolledWindow](http://developer.gnome.org/gtk2/2.24/GtkScrolledWindow.html)
---
## Definition ##
```
varnamevaluevalue
command...
command...
command...
filename...
filename...
filename...
stateactivity...
activity...
parameter...
data...
data...
data...
```
"..." denotes acceptance of multiples of the same thing.
## Tag Attributes ##
See the [GtkTreeView](http://developer.gnome.org/gtk2/2.24/GtkTreeView.html#GtkTreeView.object-hierarchy) widget and ancestor class properties.
The following custom tag attributes are available:
| **Name** | **Description** | **Value** | **Since** |
|:---------|:----------------|:----------|:----------|
| space-expand | Pack widget expanding into space | `true` or `false` | 0.7.21 |
| space-fill | Pack widget filling space | `true` or `false` | 0.7.21 |
| block-function-signals | Block signal emissions from functions | `true` or `false` | 0.7.21 |
| file-monitor | Emit signal when input file(s) change | `true` or `false` | 0.8.1 |
| auto-refresh | Auto refresh when input file(s) change | `true` or `false` | 0.8.1 |
| hscrollbar-policy | Policy for the horizontal scrollbar | `0`, `1`, `2` (always, automatic, never) | 0.8.1 |
| vscrollbar-policy | Policy for the vertical scrollbar | `0`, `1`, `2` (always, automatic, never) | 0.8.1 |
| exported-column | The column to export data from | An integer >= `0` | |
| selected-row | The row to select on initialisation and refresh | An integer >= `0` | 0.8.1 |
| column-header-active | Active state of column header(s) | _state0_ `|` _state1_ `|` ... | 0.8.1 |
| column-visible | Visible state of column(s) | _state0_ `|` _state1_ `|` ... | 0.8.1 |
| column-resizeable | Resizeable state of column(s) | _state0_ `|` _state1_ `|` ... | 0.8.4 |
| column-sizing | Sizing mode of column(s) | _mode0_ `|` _mode1_ `|` ... (`0` default, `1` autosize or >= `2` fixed width in pixels) | 0.8.4 |
| auto-sort | Automatically sort after loading data | `true` or `false` | 0.8.1 |
| sort-column | The initial sort column when auto-sorting | An integer >= `0` | 0.8.1 |
| sort-type | The initial sort direction when auto-sorting | `0`, `1` (ascending, descending) | 0.8.1 |
| column-type | Data type of column(s) | _type0_ `|` _type1_ `|` ... (`string`, `int64`, `uint64` or `double`) | 0.8.1 |
| column-sort-function | The sorting algorithm for each column | _func0_ `|` _func1_ `|` ... (`0` default, `1` strnatcmp or `2` strcasenatcmp) | 0.8.1 |
| selection-mode | Selection method | `0`, `1`, `2`, `3` (none, single, browse, multiple) | 0.7.21 |
| icon-name | Default GTK theme icon name for all rows | | |
| stock-id | Default GTK stock icon ID for all rows | `gtk-about`, `gtk-add`, ... ([full list](http://developer.gnome.org/gtk2/2.24/gtk2-Stock-Items.html#GTK-STOCK-ABOUT:CAPS)) | |
## Directives ##
Some of these may have tag attribute equivalents.
| **Name** | **Description** | **Contents** | **Since** |
|:---------|:----------------|:-------------|:----------|
| label | Column header labels | _label0_ `|` _label1_ `|` ... | |
| variable | Variable name | | |
| variable export="false" | Variable name, not exported to shell | | 0.8.3 |
| height[1] | Initial minimum height | An integer > `0` or `-1` to ignore | |
| width[1] | Initial minimum width | An integer > `0` or `-1` to ignore | |
| input | Data input source | Shell command | |
| input icon-column="_index_" | Data input source | Shell command | |
| input stock-column="_index_" | Data input source | Shell command | |
| input file | Data input source | Filename | |
| input file icon-column="_index_" | Data input source | Filename | |
| input file stock-column="_index_" | Data input source | Filename | |
| sensitive | Sensitive state | `true` or `false` | |
| action | Execute command on default signal | Shell command | |
| action | Perform function on default signal | _function_:_parameter_ | |
| action signal="_type_" | Execute command on signal | Shell command | |
| action signal="_type_" | Perform function on signal | _function_:_parameter_ | |
| action function="_type_" | Perform function on default signal | _parameter_ | 0.8.3 |
| action condition="_type_" | Execute command on default signal conditionally | Shell command | 0.8.3 |
| action condition="_type_" | Perform function on default signal conditionally | _function_:_parameter_ | 0.8.3 |
| action signal="_type_" condition="_type_" | Execute command on signal conditionally | Shell command | 0.8.3 |
| action signal="_type_" condition="_type_" | Perform function on signal conditionally | _function_:_parameter_ | 0.8.3 |
| action function="_type_" condition="_type_" | Perform function on default signal conditionally | _parameter_ | 0.8.3 |
| item | Input data | _data0_ `|` _data1_ `|` ... | |
| item icon-name="_image_" | Input data | _data0_ `|` _data1_ `|` ... | |
| item stock-id="_gtk-image_" | Input data | _data0_ `|` _data1_ `|` ... | |
| output file | Data output target | Filename | 0.8.1 |
## Signals ##
The default signal is "[row-activated](http://developer.gnome.org/gtk2/2.24/GtkTreeView.html#GtkTreeView-row-activated)", emitted when the user double-clicks a row and also when a row is selected and one of the keys Space, Shift+Space, Return or Enter is pressed.
The "[changed](http://developer.gnome.org/gtk2/2.24/GtkTreeSelection.html#GtkTreeSelection-changed)" signal is emitted when the selection has changed (please see link about this).
The "[cursor-changed](http://developer.gnome.org/gtk2/2.24/GtkTreeView.html#GtkTreeView-cursor-changed)" signal is emitted when the position of the cursor (focused cell) has changed.
The "file-changed" signal is emitted if file-monitor is true and the input file being monitored has changed.
The following signals are connected-up for all widgets:
[button-press-event](http://developer.gnome.org/gtk2/2.24/GtkWidget.html#GtkWidget-button-press-event), [button-release-event](http://developer.gnome.org/gtk2/2.24/GtkWidget.html#GtkWidget-button-release-event), [configure-event](http://developer.gnome.org/gtk2/2.24/GtkWidget.html#GtkWidget-configure-event), [enter-notify-event](http://developer.gnome.org/gtk2/2.24/GtkWidget.html#GtkWidget-enter-notify-event), [leave-notify-event](http://developer.gnome.org/gtk2/2.24/GtkWidget.html#GtkWidget-leave-notify-event), [focus-in-event](http://developer.gnome.org/gtk2/2.24/GtkWidget.html#GtkWidget-focus-in-event), [focus-out-event](http://developer.gnome.org/gtk2/2.24/GtkWidget.html#GtkWidget-focus-out-event), [hide](http://developer.gnome.org/gtk2/2.24/GtkWidget.html#GtkWidget-hide), [show](http://developer.gnome.org/gtk2/2.24/GtkWidget.html#GtkWidget-show), [realize](http://developer.gnome.org/gtk2/2.24/GtkWidget.html#GtkWidget-realize), [key-press-event](http://developer.gnome.org/gtk2/2.24/GtkWidget.html#GtkWidget-key-press-event), [key-release-event](http://developer.gnome.org/gtk2/2.24/GtkWidget.html#GtkWidget-key-release-event), [map-event](http://developer.gnome.org/gtk2/2.24/GtkWidget.html#GtkWidget-map-event), [unmap-event](http://developer.gnome.org/gtk2/2.24/GtkWidget.html#GtkWidget-unmap-event)
## Functions ##
The following functions can be performed upon this widget by any widget capable of emitting signals:
| **Type** | **Description** | **Parameter** | **Since** |
|:---------|:----------------|:--------------|:----------|
| enable | Sensitise widget | Variable name | |
| disable | Desensitise widget | Variable name | |
| show | Show widget | Variable name | 0.8.1 |
| hide | Hide widget | Variable name | 0.8.1 |
| grabfocus | Grab input focus | Variable name | 0.8.1 |
| refresh | Reload input data | Variable name | |
| save[2] | Save widget data | Variable name | 0.8.1 |
| clear | Remove all widget data | Variable name | 0.7.21 |
| removeselected | Remove selected widget data | Variable name | |
The following general functions can be performed by any widget capable of emitting signals:
| **Type** | **Description** | **Parameter** | **Since** |
|:---------|:----------------|:--------------|:----------|
| break | Break out of actions list | None | 0.8.3 |
| command | Execute command | Shell command | |
| exit | Exit dialog | A value for the `EXIT` variable | |
| closewindow | Close dialog | Variable name | |
| launch | Launch dialog | Variable name | |
| presentwindow | [Present](http://developer.gnome.org/gtk2/2.24/GtkWindow.html#gtk-window-present) dialog | Variable name | 0.8.1 |
## Conditions ##
The following conditions can be used within the condition attribute of action directives:
| **Type** | **Description** | **Argument** | **Since** |
|:---------|:----------------|:-------------|:----------|
| active\_is\_true(_argument_) | Active state of toggle widget | Variable name | 0.8.3 |
| active\_is\_false(_argument_) | Active state of toggle widget | Variable name | 0.8.3 |
| command\_is\_true(_argument_) | Output of shell command | Shell command | 0.8.3 |
| command\_is\_false(_argument_) | Output of shell command | Shell command | 0.8.3 |
| file\_is\_true(_argument_) | Contents of a file | Filename | 0.8.3 |
| file\_is\_false(_argument_) | Contents of a file | Filename | 0.8.3 |
| sensitive\_is\_true(_argument_) | Sensitive state of widget | Variable name | 0.8.3 |
| sensitive\_is\_false(_argument_) | Sensitive state of widget | Variable name | 0.8.3 |
| visible\_is\_true(_argument_) | Visible state of widget | Variable name | 0.8.3 |
| visible\_is\_false(_argument_) | Visible state of widget | Variable name | 0.8.3 |
true means "true", "yes" or a non-zero value, false means "false", "no" or zero, therefore the shell command is expected to echo one of these values to stdout.
## Notes ##
1. This widget has a default dimension of 200x100 which can be overridden with the height and/or width directives.
2. When saving, due to the multiple input data formats, the columns are output in the following raw state: _icon-name_ `|` _stock-id_ `|` _data0_ `|` _data1_ `|` ...
---