GtkCTree a widget displaying a hierarchical tree. The #GtkCTree widget is used for showing a hierarchical tree to the user, for example a directory tree. The tree is internally represented as a set of #GtkCTreeNode structures. The interface has much in common with the #GtkCList widget: rows (nodes) can be selected by the user etc. Positions in the tree are often indicated by two arguments, a parent and a sibling, both #GtkCTreeNode pointers. If the parent is %NULL, the position is at the root of the tree and if the sibling is %NULL, it will be the last child of parent, otherwise it will be inserted just before the sibling. The #GtkCTree-struct contains the following user-accessible fields. These fields should be considered read-only; to set the values, use the methods below. #gint tree_indent; The number of pixels each successive level of the tree is indented in the display. #gint tree_spacing; The space in pixels between the graphical tree and the text in the node. #gint tree_column; The index of the column for which the tree graphics is drawn. #GtkCTreeLineStyle line_style; The style in which the lines in the tree graphics are drawn. #GtkCTreeExpanderStyle expander_style; The style in which the expander buttons are drawn. #GtkCTreeExpanderStyle expander_style; FIXME. @clist: @lines_gc: @tree_indent: @tree_spacing: @tree_column: @line_style: @expander_style: @show_stub: @drag_compare: Used to get the #GtkCTreeRow structure corresponding to the given #GtkCTreeNode. @_node_: @_node_: FIXME @_nnode_: FIXME @_pnode_: @_func_: A value specifying the position of a new node relative to an old one. GTK_CTREE_POS_BEFORE As a sibling, before the specified node. GTK_CTREE_POS_AS_CHILD As a child of the specified node. GTK_CTREE_POS_AFTER As a sibling, after the specified node. @GTK_CTREE_POS_BEFORE: @GTK_CTREE_POS_AS_CHILD: @GTK_CTREE_POS_AFTER: The appearance of the lines in the tree graphics. GTK_CTREE_LINES_NONE No lines. GTK_CTREE_LINES_SOLID Solid lines. GTK_CTREE_LINES_DOTTED Dotted lines. GTK_CTREE_LINES_TABBED FIXME. @GTK_CTREE_LINES_NONE: @GTK_CTREE_LINES_SOLID: @GTK_CTREE_LINES_DOTTED: @GTK_CTREE_LINES_TABBED: The appearance of the expander buttons, i.e. the small buttons which expand or contract parts of the tree when pressed. GTK_CTREE_EXPANDER_NONE No expanders. GTK_CTREE_EXPANDER_SQUARE Square expanders. GTK_CTREE_EXPANDER_TRIANGLE Triangular expanders. GTK_CTREE_EXPANDER_CIRCULAR Round expanders. @GTK_CTREE_EXPANDER_NONE: @GTK_CTREE_EXPANDER_SQUARE: @GTK_CTREE_EXPANDER_TRIANGLE: @GTK_CTREE_EXPANDER_CIRCULAR: How to expand or collapse a part of a tree. GTK_CTREE_EXPANSION_EXPAND Expand this node. GTK_CTREE_EXPANSION_EXPAND_RECURSIVE Expand this node and everything below it in the hierarchy. GTK_CTREE_EXPANSION_COLLAPSE Collapse this node. GTK_CTREE_EXPANSION_COLLAPSE_RECURSIVE Collapse this node and everything below it in the hierarchy. GTK_CTREE_EXPANSION_TOGGLE Toggle this node (i.e. expand if collapsed and vice versa). GTK_CTREE_EXPANSION_TOGGLE_RECURSIVE Toggle this node and everything below it in the hierarchy. @GTK_CTREE_EXPANSION_EXPAND: @GTK_CTREE_EXPANSION_EXPAND_RECURSIVE: @GTK_CTREE_EXPANSION_COLLAPSE: @GTK_CTREE_EXPANSION_COLLAPSE_RECURSIVE: @GTK_CTREE_EXPANSION_TOGGLE: @GTK_CTREE_EXPANSION_TOGGLE_RECURSIVE: A generic callback type to do something with a particular node. @ctree: The #GtkCTree object. @node: The #GtkCTreeNode in the tree. @data: The user data associated with the node. FIXME @ctree: @depth: @gnode: @cnode: @data: @Returns: FIXME @ctree: @source_node: @new_parent: @new_sibling: @Returns: A structure representing a single row in the tree graph. The values inside the structure should be considered read-only. This structure is derived from the #GtkCListRow structure. #GtkCTreeNode *parent; The parent node of the node corresponding to this row. #GtkCTreeNode *sibling; The next sibling node of the node corresponding to this row. #GtkCTreeNode *children; The first child node corresponding to this row; to access the other children, just use the siblings of that node. #GdkPixmap *pixmap_closed; The pixmap to be shown when the node is collapsed. #GdkBitmap *mask_closed; The mask for the above pixmap. #GdkPixmap *pixmap_opened; The pixmap to be shown when the node is expanded. #GdkBitmap *mask_opened; The mask for the above pixmap. #guint16 level; The level of this node in the tree. #guint is_leaf : 1; Whether this row is a leaf. #guint expanded : 1; Whether the children of this row are visible. @row: @parent: @sibling: @children: @pixmap_closed: @mask_closed: @pixmap_opened: @mask_opened: @level: @is_leaf: @expanded: This structure is opaque - you should use the macros #GTK_CTREE_ROW, #GTK_CTREE_NODE_NEXT etc. as well as the functions below to access it. @list: This function is not usually used by users. @ctree: @columns: @tree_column: @titles: Create a new #GtkCTree widget with the given titles for the columns. @columns: Number of columns. @tree_column: Which column has the tree graphic; 0 = leftmost. @titles: The titles for the columns. @Returns: The #GtkCTree widget. Create a new #GtkCTree widget. @columns: Number of columns. @tree_column: Which columns has the tree graphic. @Returns: The new #GtkCTree widget. Insert a new node to the tree. The position is specified through the parent-sibling notation, as explained in the introduction above. @ctree: The #GtkCTree widget. @parent: The parent node to be. @sibling: The sibling node to be. @text: The texts to be shown in each column. @spacing: The extra space between the pixmap and the text. @pixmap_closed: The pixmap to be used when the node is collapsed. Can be %NULL. @mask_closed: The mask for the above pixmap. Can be %NULL. @pixmap_opened: The pixmap to be used when the children are visible. Can be %NULL. @mask_opened: The mask for the above pixmap. Can be %NULL. @is_leaf: Whether this node is going to be a leaf. @expanded: Whether this node should start out expanded or not. @Returns: Remove the node and all nodes underneath it from the tree. @ctree: The widget. @node: The node to be removed. FIXME @ctree: @parent: @sibling: @gnode: @func: @data: @Returns: FIXME @ctree: @parent: @sibling: @node: @func: @data: @Returns: Recursively apply a function to all nodes of the tree at or below a certain node. The function is called for each node after it has been called for that node's children. @ctree: @node: The node where to start. %NULL means to start at the root. @func: The function to apply to each node. @data: A closure argument given to each invocation of the function. Recursively apply a function to nodes up to a certain depth. The function is called for each node after it has been called for that node's children. @ctree: @node: The node where to start. @depth: The maximum absolute depth for applying the function. If depth is negative, this function just calls #gtk_ctree_post_recursive. @func: The function to apply to each node. @data: A closure argument given to each invocation of the function. Recursively apply a function to all nodes of the tree at or below a certain node. The function is called for each node after it has been called for its parent. @ctree: @node: The node where to start. %NULL means to start at the root. @func: The function to apply to each node. @data: A closure argument given to each invocation of the function. Recursively apply a function to nodes up to a certain depth. The function is called for each node after it has been called for that node's children. @ctree: @node: The node where to start. @depth: The maximum absolute depth for applying the function. If depth is negative, this function just calls #gtk_ctree_post_recursive. @func: The function to apply to each node. @data: A closure argument given to each invocation of the function. This function checks whether the given node is viewable i.e. so that all of its parent nodes are expanded. This is different from being actually visible: the node can be viewable but outside the scrolling area of the window. @ctree: @node: @Returns: Whether the node is viewable. Returns the last child of the last child of the last child... of the given node. @ctree: @node: @Returns: Finds the node pointer given a #GtkCTreeRow structure. @ctree: @ctree_row: @Returns: The node pointer. @ctree: @node: The node to start searching from. May be %NULL. @child: @Returns: True if @child is on some level a child (grandchild...) of the @node. @ctree: @node: @child: @Returns: True is @node is an ancestor of @child. Finds a node in the tree under @node that has the given user data pointer. @ctree: @node: @data: @Returns: The node, or %NULL if not found. Finds all nodes in the tree under @node that have the given user data pointer. @ctree: @node: @data: @Returns: A list of nodes that have the given data pointer. Find the first node under @node whose row data pointer fulfills a custom criterion. @ctree: @node: The node where to start searching. @data: User data for the criterion function. @func: The criterion function. @Returns: The first node found. Find all nodes under @node whose row data pointer fulfills a custom criterion. @ctree: @node: The node where to start searching. @data: User data for the criterion function. @func: The criterion function. @Returns: A list of all nodes found. @ctree: @x: @y: @Returns: True if the given coordinates lie on an expander button. Move a node in the tree to another location. @ctree: @node: The node to be moved. @new_parent: The new parent-to-be of the node. @new_sibling: The new sibling-to-be of the node. Expand one node. @ctree: @node: Expand one node and all nodes underneath. @ctree: @node: Expand a node and its children up to the depth given. @ctree: @node: @depth: The (absolute) depth up to which to expand nodes. Collapse one node. @ctree: @node: Collapse one node and all its subnodes. @ctree: @node: Collapse a node and its children up to the depth given. @ctree: @node: @depth: The (absolute) depth up to which to collapse nodes. Toggle a node, i.e. if it is collapsed, expand it and vice versa. @ctree: @node: Toggle the expansion of a node and all its children. @ctree: @node: Cause the given node to be selected and emit the appropriate signal. @ctree: @node: Cause the given node and its subnodes to be selected and emit the appropriate signal(s). @ctree: @node: Unselect the given node and emit the appropriate signal. @ctree: @node: Unselect the given node and its subnodes and emit the appropriate signal(s). @ctree: @node: The function that implements both #gtk_ctree_select_recursive and #gtk_ctree_unselect_recursive. @ctree: @node: @state: True for selecting, false for unselecting. Set the text in a node. @ctree: @node: @column: The column whose text to change. @text: The new text. FIXME @ctree: @node: @column: @pixmap: @mask: FIXME @ctree: @node: @column: @text: @spacing: @pixmap: @mask: Change the information. Most parameters correspond to the parameters of #gtk_ctree_insert_node. @ctree: @node: @text: The text to be in the tree column. @spacing: @pixmap_closed: @mask_closed: @pixmap_opened: @mask_opened: @is_leaf: @expanded: Shift the given cell the given amounts in pixels. @ctree: @node: @column: @vertical: @horizontal: @ctree: @node: @selectable: Whether this node can be selected by the user. @ctree: @node: @Returns: Whether this node can be selected by the user. @ctree: @node: @column: @Returns: The type of the given cell. @ctree: @node: @column: @text: If nonnull, the pointer to the text string is assigned to *@text. @Returns: True if the given cell has text in it. @ctree: @node: @column: @pixmap: If nonnull, the pointer to the pixmap is returned through this. @mask: If nonnull, the pointer to the mask is returned through this. @Returns: True if the given cell contains a pixmap. Get the parameters of a cell containing both a pixmap and text. @ctree: @node: @column: @text: @spacing: @pixmap: @mask: @Returns: Get information corresponding to a node. Any of the return parameters can be null. @ctree: @node: @text: @spacing: @pixmap_closed: @mask_closed: @pixmap_opened: @mask_opened: @is_leaf: @expanded: @Returns: Set the style of a row. @ctree: @node: @style: Get the style of a row. @ctree: @node: @Returns: Set the style of an individual cell. @ctree: @node: @column: @style: Get the style of an individual cell. @ctree: @node: @column: @Returns: @ctree: @node: @color: @ctree: @node: @color: Set the custom data associated with a node. @ctree: @node: @data: This is the full interface to setting row data, so that a destructor can be given for the data. @ctree: @node: @data: @destroy: The routine to be called when @data is no longer needed. @ctree: @node: @Returns: This function makes the given column of the given node visible by scrolling. @ctree: @node: The node to be made visible. @column: The column to be made visible. @row_align: Where in the window the row should appear. @col_align: Where in the window the column should appear. @ctree: @node: @Returns: True if the node is currently inside the bounds of the window. Note that this function can return true even if the node is not viewable, if the node's ancestor is visible. @ctree: @indent: The number of pixels to shift the levels of the tree. The spacing between the tree graphic and the actual node content. @ctree: @spacing: @t: @r: @ctree: @line_style: @ctree: @expander_style: FIXME @ctree: @cmp_func: Sort the children of a node. See #GtkCList for how to set the sorting criteria etc. @ctree: @node: Sort the descendants of a node. See #GtkCList for how to set the sorting criteria etc. @ctree: @node: @ctree: @row: @Returns: The node corresponding to the @row th row. @ctree: @show_stub: Emitted when a row is selected. @ctree: the object which received the signal. @node: The node corresponding to the selected row. @column: The column which was selected. Emitted when a node is unselected. @ctree: the object which received the signal. @node: The node corresponding to the selected row. @column: Emitted when a node is expanded. @ctree: the object which received the signal. @node: Emitted when a node is collapsed. @ctree: the object which received the signal. @node: Emitted when a node is moved. @ctree: the object which received the signal. @node: The node that is moved. @new_parent: The new parent of the node. @new_sibling: The new sibling of the node. The row which has the focus is either collapsed or expanded or toggled. @ctree: the object which received the signal. @expansion: What is being done. The number of columns in the tree. The column in which the actual tree graphic appears. The number of pixels to indent the tree levels. The number of pixels between the tree and the columns. FIXME The style of the lines in the tree graphic. The style of the expander buttons.