## GtkCTree

GtkCTree — A widget displaying a hierarchical tree

## Functions

#define | GTK_CTREE_ROW ()
#define | GTK_CTREE_NODE ()
#define | GTK_CTREE_NODE_NEXT ()
#define | GTK_CTREE_NODE_PREV ()
#define | GTK_CTREE_FUNC ()
void | ( *GtkCTreeFunc ) ()
gboolean | ( *GtkCTreeGNodeFunc ) ()
gboolean | ( *GtkCTreeCompareDragFunc ) ()
#define | GTK_TYPE_CTREE_NODE
GtkWidget * | gtk_ctree_new_with_titles ()
GtkWidget * | gtk_ctree_new ()
GtkCTreeNode * | gtk_ctree_insert_node ()
void | gtk_ctree_remove_node ()
GtkCTreeNode * | gtk_ctree_insert_gnode ()
GNode * | gtk_ctree_export_to_gnode ()
void | gtk_ctree_post_recursive ()
void | gtk_ctree_post_recursive_to_depth ()
void | gtk_ctree_pre_recursive ()
void | gtk_ctree_pre_recursive_to_depth ()
gboolean | gtk_ctree_is_viewable ()
GtkCTreeNode * | gtk_ctree_last ()
GtkCTreeNode * | gtk_ctree_find_node_ptr ()
gboolean | gtk_ctree_find ()
gboolean | gtk_ctree_is_ancestor ()
GtkCTreeNode * | gtk_ctree_find_by_row_data ()
GList * | gtk_ctree_find_all_by_row_data ()
GtkCTreeNode * | gtk_ctree_find_by_row_data_custom ()
GList * | gtk_ctree_find_all_by_row_data_custom ()
gboolean | gtk_ctree_is_hot_spot ()
void | gtk_ctree_move ()
void | gtk_ctree_expand ()
void | gtk_ctree_expand_recursive ()
void | gtk_ctree_expand_to_depth ()
void | gtk_ctree_collapse ()
void | gtk_ctree_collapse_recursive ()
void | gtk_ctree_collapse_to_depth ()
void | gtk_ctree_toggle_expansion ()
void | gtk_ctree_toggle_expansion_recursive ()
void | gtk_ctree_select ()
void | gtk_ctree_select_recursive ()
void | gtk_ctree_unselect ()
void | gtk_ctree_unselect_recursive ()
void | gtk_ctree_real_select_recursive ()
void | gtk_ctree_node_set_text ()
void | gtk_ctree_node_set_pixmap ()
void | gtk_ctree_node_set_pixtext ()
void | gtk_ctree_set_node_info ()
void | gtk_ctree_node_set_shift ()
void | gtk_ctree_node_set_selectable ()
gboolean | gtk_ctree_node_get_selectable ()
GtkCellType | gtk_ctree_node_get_cell_type ()
gboolean | gtk_ctree_node_get_text ()
gboolean | gtk_ctree_node_get_pixmap ()
gboolean | gtk_ctree_node_get_pixtext ()
gboolean | gtk_ctree_get_node_info ()
void | gtk_ctree_node_set_row_style ()
GtkStyle * | gtk_ctree_node_get_row_style ()
void | gtk_ctree_node_set_cell_style ()
GtkStyle * | gtk_ctree_node_get_cell_style ()
void | gtk_ctree_node_set_foreground ()
void | gtk_ctree_node_set_background ()
void | gtk_ctree_node_set_row_data ()
void | gtk_ctree_node_set_row_data_full ()
gpointer | gtk_ctree_node_get_row_data ()
void | gtk_ctree_node_moveto ()
GtkVisibility | gtk_ctree_node_is_visible ()
void | gtk_ctree_set_indent ()
void | gtk_ctree_set_spacing ()
#define | gtk_ctree_set_reorderable ()
void | gtk_ctree_set_line_style ()
void | gtk_ctree_set_expander_style ()
void | gtk_ctree_set_drag_compare_func ()
void | gtk_ctree_sort_node ()
void | gtk_ctree_sort_recursive ()
GtkCTreeNode * | gtk_ctree_node_nth ()
void | gtk_ctree_set_show_stub ()

## Properties

GtkCTreeExpanderStyle | expander-style | Read / Write
guint | indent | Read / Write
GtkCTreeLineStyle | line-style | Read / Write
guint | n-columns | Read / Write / Construct Only
gboolean | show-stub | Read / Write
guint | spacing | Read / Write
guint | tree-column | Read / Write / Construct Only

## Signals

void | change-focus-row-expansion | Action
void | tree-collapse | Run Last
void | tree-expand | Run Last
void | tree-move | Run Last
void | tree-select-row | Run First
void | tree-unselect-row | Run First

## Types and Values

struct | GtkCTree
enum | GtkCTreePos
enum | GtkCTreeLineStyle
enum | GtkCTreeExpanderStyle
enum | GtkCTreeExpansionType
struct | GtkCTreeRow
struct | GtkCTreeNode

## Object Hierarchy

        GObject
        ╰── GInitiallyUnowned
            ╰── GtkObject
                ╰── GtkWidget
                    ╰── GtkContainer
                        ╰── GtkCList
                            ╰── GtkCTree

## Implemented Interfaces

GtkCTree implements AtkImplementorIface and GtkBuildable.

## Includes

    #include <gtk/gtk.h>

## Description

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.

GtkCTree has been deprecated since GTK+ 2.0 and should not be used in newly written code. Use GtkTreeView instead.

## Functions

### GTK_CTREE_ROW()

    #define GTK_CTREE_ROW(_node_) ((GtkCTreeRow *)(((GList *)(_node_))->data))

`GTK_CTREE_ROW` is deprecated and should not be used in newly-written code.

Used to get the GtkCTreeRow structure corresponding to the given GtkCTreeNode.

### GTK_CTREE_NODE()

    #define GTK_CTREE_NODE(_node_) ((GtkCTreeNode *)((_node_)))

`GTK_CTREE_NODE` is deprecated and should not be used in newly-written code.

### GTK_CTREE_NODE_NEXT()

    #define GTK_CTREE_NODE_NEXT(_nnode_) ((GtkCTreeNode *)(((GList *)(_nnode_))->next))

`GTK_CTREE_NODE_NEXT` is deprecated and should not be used in newly-written code.

FIXME

### GTK_CTREE_NODE_PREV()

    #define GTK_CTREE_NODE_PREV(_pnode_) ((GtkCTreeNode *)(((GList *)(_pnode_))->prev))

`GTK_CTREE_NODE_PREV` is deprecated and should not be used in newly-written code.

FIXME

### GTK_CTREE_FUNC()

    #define GTK_CTREE_FUNC(_func_) ((GtkCTreeFunc)(_func_))

`GTK_CTREE_FUNC` is deprecated and should not be used in newly-written code.

### GtkCTreeFunc ()

    void
    (*GtkCTreeFunc) (GtkCTree *ctree,
                     GtkCTreeNode *node,
                     gpointer data);

`GtkCTreeFunc` is deprecated and should not be used in newly-written code.

A generic callback type to do something with a particular node.

#### Parameters

ctree | The GtkCTree object. |
node | The GtkCTreeNode in the tree. |
data | The user data associated with the node. |

### GtkCTreeGNodeFunc ()

    gboolean
    (*GtkCTreeGNodeFunc) (GtkCTree *ctree,
                          guint depth,
                          GNode *gnode,
                          GtkCTreeNode *cnode,
                          gpointer data);

`GtkCTreeGNodeFunc` is deprecated and should not be used in newly-written code.

FIXME

#### Returns

### GtkCTreeCompareDragFunc ()

    gboolean
    (*GtkCTreeCompareDragFunc) (GtkCTree *ctree,
                                GtkCTreeNode *source_node,
                                GtkCTreeNode *new_parent,
                                GtkCTreeNode *new_sibling);

`GtkCTreeCompareDragFunc` is deprecated and should not be used in newly-written code.

FIXME

#### Returns

### GTK_TYPE_CTREE_NODE

    #define GTK_TYPE_CTREE_NODE (gtk_ctree_node_get_type ())

`GTK_TYPE_CTREE_NODE` is deprecated and should not be used in newly-written code.

### gtk_ctree_new_with_titles ()

    GtkWidget *
    gtk_ctree_new_with_titles (gint columns,
                               gint tree_column,
                               gchar *titles[]);

`gtk_ctree_new_with_titles` is deprecated and should not be used in newly-written code.

Create a new GtkCTree widget with the given titles for the columns.

#### Parameters

columns | Number of columns. |
tree_column | Which column has the tree graphic; 0 = leftmost. |
titles | The titles for the columns. |

#### Returns

The GtkCTree widget.

### gtk_ctree_new ()

    GtkWidget *
    gtk_ctree_new (gint columns,
                   gint tree_column);

`gtk_ctree_new` is deprecated and should not be used in newly-written code.

Create a new GtkCTree widget.

#### Parameters

columns | Number of columns. |
tree_column | Which columns has the tree graphic. |

#### Returns

The new GtkCTree widget.

### gtk_ctree_insert_node ()

    GtkCTreeNode *
    gtk_ctree_insert_node (GtkCTree *ctree,
                           GtkCTreeNode *parent,
                           GtkCTreeNode *sibling,
                           gchar *text[],
                           guint8 spacing,
                           GdkPixmap *pixmap_closed,
                           GdkBitmap *mask_closed,
                           GdkPixmap *pixmap_opened,
                           GdkBitmap *mask_opened,
                           gboolean is_leaf,
                           gboolean expanded);

`gtk_ctree_insert_node` is deprecated and should not be used in newly-written code.

Insert a new node to the tree. The position is specified through the parent-sibling notation, as explained in the introduction above.

#### Parameters

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 | . | [allow-none]
mask_closed | . | [allow-none]
pixmap_opened | . | [allow-none]
mask_opened | . | [allow-none]
is_leaf | Whether this node is going to be a leaf. |
expanded | Whether this node should start out expanded or not. |

#### Returns

### gtk_ctree_remove_node ()

    void
    gtk_ctree_remove_node (GtkCTree *ctree,
                           GtkCTreeNode *node);

`gtk_ctree_remove_node` is deprecated and should not be used in newly-written code.

Remove the node and all nodes underneath it from the tree.

#### Parameters

ctree | The widget. |
node | The node to be removed. |

### gtk_ctree_insert_gnode ()

    GtkCTreeNode *
    gtk_ctree_insert_gnode (GtkCTree *ctree,
                            GtkCTreeNode *parent,
                            GtkCTreeNode *sibling,
                            GNode *gnode,
                            GtkCTreeGNodeFunc func,
                            gpointer data);

`gtk_ctree_insert_gnode` is deprecated and should not be used in newly-written code.

FIXME

#### Returns

### gtk_ctree_export_to_gnode ()

    GNode *
    gtk_ctree_export_to_gnode (GtkCTree *ctree,
                               GNode *parent,
                               GNode *sibling,
                               GtkCTreeNode *node,
                               GtkCTreeGNodeFunc func,
                               gpointer data);

`gtk_ctree_export_to_gnode` is deprecated and should not be used in newly-written code.

FIXME

#### Returns

### gtk_ctree_post_recursive ()

    void
    gtk_ctree_post_recursive (GtkCTree *ctree,
                              GtkCTreeNode *node,
                              GtkCTreeFunc func,
                              gpointer data);

`gtk_ctree_post_recursive` is deprecated and should not be used in newly-written code.

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.

#### Parameters

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. |

### gtk_ctree_post_recursive_to_depth ()

    void
    gtk_ctree_post_recursive_to_depth (GtkCTree *ctree,
                                       GtkCTreeNode *node,
                                       gint depth,
                                       GtkCTreeFunc func,
                                       gpointer data);

`gtk_ctree_post_recursive_to_depth` is deprecated and should not be used in newly-written code.

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.

#### Parameters

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. |

### gtk_ctree_pre_recursive ()

    void
    gtk_ctree_pre_recursive (GtkCTree *ctree,
                             GtkCTreeNode *node,
                             GtkCTreeFunc func,
                             gpointer data);

`gtk_ctree_pre_recursive` is deprecated and should not be used in newly-written code.

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.

#### Parameters

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. |

### gtk_ctree_pre_recursive_to_depth ()

    void
    gtk_ctree_pre_recursive_to_depth (GtkCTree *ctree,
                                      GtkCTreeNode *node,
                                      gint depth,
                                      GtkCTreeFunc func,
                                      gpointer data);

`gtk_ctree_pre_recursive_to_depth` is deprecated and should not be used in newly-written code.

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.

#### Parameters

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. |

### gtk_ctree_is_viewable ()

    gboolean
    gtk_ctree_is_viewable (GtkCTree *ctree,
                           GtkCTreeNode *node);

`gtk_ctree_is_viewable` is deprecated and should not be used in newly-written code.

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.

#### Returns

Whether the node is viewable.

### gtk_ctree_last ()

    GtkCTreeNode *
    gtk_ctree_last (GtkCTree *ctree,
                    GtkCTreeNode *node);

`gtk_ctree_last` is deprecated and should not be used in newly-written code.

Returns the last child of the last child of the last child... of the given node.

#### Returns

### gtk_ctree_find_node_ptr ()

    GtkCTreeNode *
    gtk_ctree_find_node_ptr (GtkCTree *ctree,
                             GtkCTreeRow *ctree_row);

`gtk_ctree_find_node_ptr` is deprecated and should not be used in newly-written code.

Finds the node pointer given a GtkCTreeRow structure.

#### Returns

The node pointer.

### gtk_ctree_find ()

    gboolean
    gtk_ctree_find (GtkCTree *ctree,
                    GtkCTreeNode *node,
                    GtkCTreeNode *child);

`gtk_ctree_find` is deprecated and should not be used in newly-written code.

#### Parameters

node | The node to start searching from. May be `NULL`. |

#### Returns

True if `child` is on some level a child (grandchild...) of the `node` .

### gtk_ctree_is_ancestor ()

    gboolean
    gtk_ctree_is_ancestor (GtkCTree *ctree,
                           GtkCTreeNode *node,
                           GtkCTreeNode *child);

`gtk_ctree_is_ancestor` is deprecated and should not be used in newly-written code.

#### Returns

True is `node` is an ancestor of `child` .

### gtk_ctree_find_by_row_data ()

    GtkCTreeNode *
    gtk_ctree_find_by_row_data (GtkCTree *ctree,
                                GtkCTreeNode *node,
                                gpointer data);

`gtk_ctree_find_by_row_data` is deprecated and should not be used in newly-written code.

Finds a node in the tree under `node` that has the given user data pointer.

#### Returns

The node, or `NULL` if not found.

### gtk_ctree_find_all_by_row_data ()

    GList *
    gtk_ctree_find_all_by_row_data (GtkCTree *ctree,
                                    GtkCTreeNode *node,
                                    gpointer data);

`gtk_ctree_find_all_by_row_data` is deprecated and should not be used in newly-written code.

Finds all nodes in the tree under `node` that have the given user data pointer.

#### Returns

A list of nodes that have the given data pointer.

### gtk_ctree_find_by_row_data_custom ()

    GtkCTreeNode *
    gtk_ctree_find_by_row_data_custom (GtkCTree *ctree,
                                       GtkCTreeNode *node,
                                       gpointer data,
                                       GCompareFunc func);

`gtk_ctree_find_by_row_data_custom` is deprecated and should not be used in newly-written code.

Find the first node under `node` whose row data pointer fulfills a custom criterion.

#### Parameters

node | The node where to start searching. |
data | User data for the criterion function. |
func | The criterion function. |

#### Returns

The first node found.

### gtk_ctree_find_all_by_row_data_custom ()

    GList *
    gtk_ctree_find_all_by_row_data_custom (GtkCTree *ctree,
                                           GtkCTreeNode *node,
                                           gpointer data,
                                           GCompareFunc func);

`gtk_ctree_find_all_by_row_data_custom` is deprecated and should not be used in newly-written code.

Find all nodes under `node` whose row data pointer fulfills a custom criterion.

#### Parameters

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.

### gtk_ctree_is_hot_spot ()

    gboolean
    gtk_ctree_is_hot_spot (GtkCTree *ctree,
                           gint x,
                           gint y);

`gtk_ctree_is_hot_spot` is deprecated and should not be used in newly-written code.

#### Returns

True if the given coordinates lie on an expander button.

### gtk_ctree_move ()

    void
    gtk_ctree_move (GtkCTree *ctree,
                    GtkCTreeNode *node,
                    GtkCTreeNode *new_parent,
                    GtkCTreeNode *new_sibling);

`gtk_ctree_move` is deprecated and should not be used in newly-written code.

Move a node in the tree to another location.

#### Parameters

node | The node to be moved. |
new_parent | . | [allow-none]
new_sibling | . | [allow-none]

### gtk_ctree_expand ()

    void
    gtk_ctree_expand (GtkCTree *ctree,
                      GtkCTreeNode *node);

`gtk_ctree_expand` is deprecated and should not be used in newly-written code.

Expand one node.

### gtk_ctree_expand_recursive ()

    void
    gtk_ctree_expand_recursive (GtkCTree *ctree,
                                GtkCTreeNode *node);

`gtk_ctree_expand_recursive` is deprecated and should not be used in newly-written code.

Expand one node and all nodes underneath.

### gtk_ctree_expand_to_depth ()

    void
    gtk_ctree_expand_to_depth (GtkCTree *ctree,
                               GtkCTreeNode *node,
                               gint depth);

`gtk_ctree_expand_to_depth` is deprecated and should not be used in newly-written code.

Expand a node and its children up to the depth given.

#### Parameters

depth | The (absolute) depth up to which to expand nodes. |

### gtk_ctree_collapse ()

    void
    gtk_ctree_collapse (GtkCTree *ctree,
                        GtkCTreeNode *node);

`gtk_ctree_collapse` is deprecated and should not be used in newly-written code.

Collapse one node.

### gtk_ctree_collapse_recursive ()

    void
    gtk_ctree_collapse_recursive (GtkCTree *ctree,
                                  GtkCTreeNode *node);

`gtk_ctree_collapse_recursive` is deprecated and should not be used in newly-written code.

Collapse one node and all its subnodes.

### gtk_ctree_collapse_to_depth ()

    void
    gtk_ctree_collapse_to_depth (GtkCTree *ctree,
                                 GtkCTreeNode *node,
                                 gint depth);

`gtk_ctree_collapse_to_depth` is deprecated and should not be used in newly-written code.

Collapse a node and its children up to the depth given.

#### Parameters

depth | The (absolute) depth up to which to collapse nodes. |

### gtk_ctree_toggle_expansion ()

    void
    gtk_ctree_toggle_expansion (GtkCTree *ctree,
                                GtkCTreeNode *node);

`gtk_ctree_toggle_expansion` is deprecated and should not be used in newly-written code.

Toggle a node, i.e. if it is collapsed, expand it and vice versa.

### gtk_ctree_toggle_expansion_recursive ()

    void
    gtk_ctree_toggle_expansion_recursive (GtkCTree *ctree,
                                          GtkCTreeNode *node);

`gtk_ctree_toggle_expansion_recursive` is deprecated and should not be used in newly-written code.

Toggle the expansion of a node and all its children.

### gtk_ctree_select ()

    void
    gtk_ctree_select (GtkCTree *ctree,
                      GtkCTreeNode *node);

`gtk_ctree_select` is deprecated and should not be used in newly-written code.

Cause the given node to be selected and emit the appropriate signal.

### gtk_ctree_select_recursive ()

    void
    gtk_ctree_select_recursive (GtkCTree *ctree,
                                GtkCTreeNode *node);

`gtk_ctree_select_recursive` is deprecated and should not be used in newly-written code.

Cause the given node and its subnodes to be selected and emit the appropriate signal(s).

### gtk_ctree_unselect ()

    void
    gtk_ctree_unselect (GtkCTree *ctree,
                        GtkCTreeNode *node);

`gtk_ctree_unselect` is deprecated and should not be used in newly-written code.

Unselect the given node and emit the appropriate signal.

### gtk_ctree_unselect_recursive ()

    void
    gtk_ctree_unselect_recursive (GtkCTree *ctree,
                                  GtkCTreeNode *node);

`gtk_ctree_unselect_recursive` is deprecated and should not be used in newly-written code.

Unselect the given node and its subnodes and emit the appropriate signal(s).

### gtk_ctree_real_select_recursive ()

    void
    gtk_ctree_real_select_recursive (GtkCTree *ctree,
                                     GtkCTreeNode *node,
                                     gint state);

`gtk_ctree_real_select_recursive` is deprecated and should not be used in newly-written code.

The function that implements both gtk_ctree_select_recursive and gtk_ctree_unselect_recursive.

#### Parameters

state | True for selecting, false for unselecting. |

### gtk_ctree_node_set_text ()

    void
    gtk_ctree_node_set_text (GtkCTree *ctree,
                             GtkCTreeNode *node,
                             gint column,
                             const gchar *text);

`gtk_ctree_node_set_text` is deprecated and should not be used in newly-written code.

Set the text in a node.

#### Parameters

column | The column whose text to change. |
text | The new text. |

### gtk_ctree_node_set_pixmap ()

    void
    gtk_ctree_node_set_pixmap (GtkCTree *ctree,
                               GtkCTreeNode *node,
                               gint column,
                               GdkPixmap *pixmap,
                               GdkBitmap *mask);

`gtk_ctree_node_set_pixmap` is deprecated and should not be used in newly-written code.

FIXME

#### Parameters

mask | . | [allow-none]

### gtk_ctree_node_set_pixtext ()

    void
    gtk_ctree_node_set_pixtext (GtkCTree *ctree,
                                GtkCTreeNode *node,
                                gint column,
                                const gchar *text,
                                guint8 spacing,
                                GdkPixmap *pixmap,
                                GdkBitmap *mask);

`gtk_ctree_node_set_pixtext` is deprecated and should not be used in newly-written code.

FIXME

#### Parameters

mask | . | [allow-none]

### gtk_ctree_set_node_info ()

    void
    gtk_ctree_set_node_info (GtkCTree *ctree,
                             GtkCTreeNode *node,
                             const gchar *text,
                             guint8 spacing,
                             GdkPixmap *pixmap_closed,
                             GdkBitmap *mask_closed,
                             GdkPixmap *pixmap_opened,
                             GdkBitmap *mask_opened,
                             gboolean is_leaf,
                             gboolean expanded);

`gtk_ctree_set_node_info` is deprecated and should not be used in newly-written code.

Change the information. Most parameters correspond to the parameters of gtk_ctree_insert_node.

#### Parameters

text | The text to be in the tree column. |
pixmap_closed | . | [allow-none]
mask_closed | . | [allow-none]
pixmap_opened | . | [allow-none]
mask_opened | . | [allow-none]

### gtk_ctree_node_set_shift ()

    void
    gtk_ctree_node_set_shift (GtkCTree *ctree,
                              GtkCTreeNode *node,
                              gint column,
                              gint vertical,
                              gint horizontal);

`gtk_ctree_node_set_shift` is deprecated and should not be used in newly-written code.

Shift the given cell the given amounts in pixels.

### gtk_ctree_node_set_selectable ()

    void
    gtk_ctree_node_set_selectable (GtkCTree *ctree,
                                   GtkCTreeNode *node,
                                   gboolean selectable);

`gtk_ctree_node_set_selectable` is deprecated and should not be used in newly-written code.

#### Parameters

selectable | Whether this node can be selected by the user. |

### gtk_ctree_node_get_selectable ()

    gboolean
    gtk_ctree_node_get_selectable (GtkCTree *ctree,
                                   GtkCTreeNode *node);

`gtk_ctree_node_get_selectable` is deprecated and should not be used in newly-written code.

#### Returns

Whether this node can be selected by the user.

### gtk_ctree_node_get_cell_type ()

    GtkCellType
    gtk_ctree_node_get_cell_type (GtkCTree *ctree,
                                  GtkCTreeNode *node,
                                  gint column);

`gtk_ctree_node_get_cell_type` is deprecated and should not be used in newly-written code.

#### Returns

The type of the given cell.

### gtk_ctree_node_get_text ()

    gboolean
    gtk_ctree_node_get_text (GtkCTree *ctree,
                             GtkCTreeNode *node,
                             gint column,
                             gchar **text);

`gtk_ctree_node_get_text` is deprecated and should not be used in newly-written code.

#### Parameters

text | If nonnull, the pointer to the text string is assigned to *`text` . |

#### Returns

True if the given cell has text in it.

### gtk_ctree_node_get_pixmap ()

    gboolean
    gtk_ctree_node_get_pixmap (GtkCTree *ctree,
                               GtkCTreeNode *node,
                               gint column,
                               GdkPixmap **pixmap,
                               GdkBitmap **mask);

`gtk_ctree_node_get_pixmap` is deprecated and should not be used in newly-written code.

#### Parameters

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.

### gtk_ctree_node_get_pixtext ()

    gboolean
    gtk_ctree_node_get_pixtext (GtkCTree *ctree,
                                GtkCTreeNode *node,
                                gint column,
                                gchar **text,
                                guint8 *spacing,
                                GdkPixmap **pixmap,
                                GdkBitmap **mask);

`gtk_ctree_node_get_pixtext` is deprecated and should not be used in newly-written code.

Get the parameters of a cell containing both a pixmap and text.

#### Returns

### gtk_ctree_get_node_info ()

    gboolean
    gtk_ctree_get_node_info (GtkCTree *ctree,
                             GtkCTreeNode *node,
                             gchar **text,
                             guint8 *spacing,
                             GdkPixmap **pixmap_closed,
                             GdkBitmap **mask_closed,
                             GdkPixmap **pixmap_opened,
                             GdkBitmap **mask_opened,
                             gboolean *is_leaf,
                             gboolean *expanded);

`gtk_ctree_get_node_info` is deprecated and should not be used in newly-written code.

Get information corresponding to a node. Any of the return parameters can be null.

#### Returns

### gtk_ctree_node_set_row_style ()

    void
    gtk_ctree_node_set_row_style (GtkCTree *ctree,
                                  GtkCTreeNode *node,
                                  GtkStyle *style);

`gtk_ctree_node_set_row_style` is deprecated and should not be used in newly-written code.

Set the style of a row.

### gtk_ctree_node_get_row_style ()

    GtkStyle *
    gtk_ctree_node_get_row_style (GtkCTree *ctree,
                                  GtkCTreeNode *node);

`gtk_ctree_node_get_row_style` is deprecated and should not be used in newly-written code.

Get the style of a row.

#### Returns

### gtk_ctree_node_set_cell_style ()

    void
    gtk_ctree_node_set_cell_style (GtkCTree *ctree,
                                   GtkCTreeNode *node,
                                   gint column,
                                   GtkStyle *style);

`gtk_ctree_node_set_cell_style` is deprecated and should not be used in newly-written code.

Set the style of an individual cell.

### gtk_ctree_node_get_cell_style ()

    GtkStyle *
    gtk_ctree_node_get_cell_style (GtkCTree *ctree,
                                   GtkCTreeNode *node,
                                   gint column);

`gtk_ctree_node_get_cell_style` is deprecated and should not be used in newly-written code.

Get the style of an individual cell.

#### Returns

### gtk_ctree_node_set_foreground ()

    void
    gtk_ctree_node_set_foreground (GtkCTree *ctree,
                                   GtkCTreeNode *node,
                                   const GdkColor *color);

`gtk_ctree_node_set_foreground` is deprecated and should not be used in newly-written code.

### gtk_ctree_node_set_background ()

    void
    gtk_ctree_node_set_background (GtkCTree *ctree,
                                   GtkCTreeNode *node,
                                   const GdkColor *color);

`gtk_ctree_node_set_background` is deprecated and should not be used in newly-written code.

### gtk_ctree_node_set_row_data ()

    void
    gtk_ctree_node_set_row_data (GtkCTree *ctree,
                                 GtkCTreeNode *node,
                                 gpointer data);

`gtk_ctree_node_set_row_data` is deprecated and should not be used in newly-written code.

Set the custom data associated with a node.

### gtk_ctree_node_set_row_data_full ()

    void
    gtk_ctree_node_set_row_data_full (GtkCTree *ctree,
                                      GtkCTreeNode *node,
                                      gpointer data,
                                      GDestroyNotify destroy);

`gtk_ctree_node_set_row_data_full` is deprecated and should not be used in newly-written code.

This is the full interface to setting row data, so that a destructor can be given for the data.

#### Parameters

destroy | The routine to be called when `data` is no longer needed. |

### gtk_ctree_node_get_row_data ()

    gpointer
    gtk_ctree_node_get_row_data (GtkCTree *ctree,
                                 GtkCTreeNode *node);

`gtk_ctree_node_get_row_data` is deprecated and should not be used in newly-written code.

#### Returns

### gtk_ctree_node_moveto ()

    void
    gtk_ctree_node_moveto (GtkCTree *ctree,
                           GtkCTreeNode *node,
                           gint column,
                           gfloat row_align,
                           gfloat col_align);

`gtk_ctree_node_moveto` is deprecated and should not be used in newly-written code.

This function makes the given column of the given node visible by scrolling.

#### Parameters

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. |

### gtk_ctree_node_is_visible ()

    GtkVisibility
    gtk_ctree_node_is_visible (GtkCTree *ctree,
                               GtkCTreeNode *node);

`gtk_ctree_node_is_visible` is deprecated and should not be used in newly-written code.

#### 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.

### gtk_ctree_set_indent ()

    void
    gtk_ctree_set_indent (GtkCTree *ctree,
                          gint indent);

`gtk_ctree_set_indent` is deprecated and should not be used in newly-written code.

#### Parameters

indent | The number of pixels to shift the levels of the tree. |

### gtk_ctree_set_spacing ()

    void
    gtk_ctree_set_spacing (GtkCTree *ctree,
                           gint spacing);

`gtk_ctree_set_spacing` is deprecated and should not be used in newly-written code.

The spacing between the tree graphic and the actual node content.

### gtk_ctree_set_reorderable()

    #define gtk_ctree_set_reorderable(t,r)                    gtk_clist_set_reorderable((GtkCList*) (t),(r))

`gtk_ctree_set_reorderable` is deprecated and should not be used in newly-written code.

### gtk_ctree_set_line_style ()

    void
    gtk_ctree_set_line_style (GtkCTree *ctree,
                              GtkCTreeLineStyle line_style);

`gtk_ctree_set_line_style` is deprecated and should not be used in newly-written code.

### gtk_ctree_set_expander_style ()

    void
    gtk_ctree_set_expander_style (GtkCTree *ctree,
                                  GtkCTreeExpanderStyle expander_style);

`gtk_ctree_set_expander_style` is deprecated and should not be used in newly-written code.

### gtk_ctree_set_drag_compare_func ()

    void
    gtk_ctree_set_drag_compare_func (GtkCTree *ctree,
                                     GtkCTreeCompareDragFunc cmp_func);

`gtk_ctree_set_drag_compare_func` is deprecated and should not be used in newly-written code.

FIXME

### gtk_ctree_sort_node ()

    void
    gtk_ctree_sort_node (GtkCTree *ctree,
                         GtkCTreeNode *node);

`gtk_ctree_sort_node` is deprecated and should not be used in newly-written code.

Sort the children of a node. See GtkCList for how to set the sorting criteria etc.

### gtk_ctree_sort_recursive ()

    void
    gtk_ctree_sort_recursive (GtkCTree *ctree,
                              GtkCTreeNode *node);

`gtk_ctree_sort_recursive` is deprecated and should not be used in newly-written code.

Sort the descendants of a node. See GtkCList for how to set the sorting criteria etc.

### gtk_ctree_node_nth ()

    GtkCTreeNode *
    gtk_ctree_node_nth (GtkCTree *ctree,
                        guint row);

`gtk_ctree_node_nth` is deprecated and should not be used in newly-written code.

#### Returns

The node corresponding to the `row` th row.

### gtk_ctree_set_show_stub ()

    void
    gtk_ctree_set_show_stub (GtkCTree *ctree,
                             gboolean show_stub);

`gtk_ctree_set_show_stub` is deprecated and should not be used in newly-written code.

## Types and Values

### struct GtkCTree

    struct GtkCTree;

`GtkCTree` is deprecated and should not be used in newly-written code.

The GtkCTree 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.

### enum GtkCTreePos

`GtkCTreePos` is deprecated and should not be used in newly-written code.

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.

#### Members

GTK_CTREE_POS_BEFORE |  |
GTK_CTREE_POS_AS_CHILD |  |
GTK_CTREE_POS_AFTER |  |

### enum GtkCTreeLineStyle

`GtkCTreeLineStyle` is deprecated and should not be used in newly-written code.

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.

#### Members

GTK_CTREE_LINES_NONE |  |
GTK_CTREE_LINES_SOLID |  |
GTK_CTREE_LINES_DOTTED |  |
GTK_CTREE_LINES_TABBED |  |

### enum GtkCTreeExpanderStyle

`GtkCTreeExpanderStyle` is deprecated and should not be used in newly-written code.

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.

#### Members

GTK_CTREE_EXPANDER_NONE |  |
GTK_CTREE_EXPANDER_SQUARE |  |
GTK_CTREE_EXPANDER_TRIANGLE |  |
GTK_CTREE_EXPANDER_CIRCULAR |  |

### enum GtkCTreeExpansionType

`GtkCTreeExpansionType` is deprecated and should not be used in newly-written code.

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.

#### Members

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 |  |

### struct GtkCTreeRow

    struct GtkCTreeRow {
      GtkCListRow row;

      GtkCTreeNode *parent;
      GtkCTreeNode *sibling;
      GtkCTreeNode *children;

      GdkPixmap *pixmap_closed;
      GdkBitmap *mask_closed;
      GdkPixmap *pixmap_opened;
      GdkBitmap *mask_opened;

      guint16 level;

      guint is_leaf  : 1;
      guint expanded : 1;
    };

`GtkCTreeRow` is deprecated and should not be used in newly-written code.

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.

### struct GtkCTreeNode

    struct GtkCTreeNode {
      GList list;
    };

`GtkCTreeNode` is deprecated and should not be used in newly-written code.

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.

## Property Details

### The `“expander-style”` property

      “expander-style”           GtkCTreeExpanderStyle

The style of the expander buttons.

Flags: Read / Write

Default value: GTK_CTREE_EXPANDER_NONE

### The `“indent”` property

      “indent”                   guint

The number of pixels to indent the tree levels.

Flags: Read / Write

Default value: 0

### The `“line-style”` property

      “line-style”               GtkCTreeLineStyle

The style of the lines in the tree graphic.

Flags: Read / Write

Default value: GTK_CTREE_LINES_NONE

### The `“n-columns”` property

      “n-columns”                guint

The number of columns in the tree.

Flags: Read / Write / Construct Only

Default value: 0

### The `“show-stub”` property

      “show-stub”                gboolean

Flags: Read / Write

Default value: FALSE

### The `“spacing”` property

      “spacing”                  guint

The number of pixels between the tree and the columns.

Flags: Read / Write

Default value: 0

### The `“tree-column”` property

      “tree-column”              guint

The column in which the actual tree graphic appears.

Flags: Read / Write / Construct Only

Default value: 0

## Signal Details

### The `“change-focus-row-expansion”` signal

    void
    user_function (GtkCTree             *ctree,
                   GtkCTreeExpansionType arg1,
                   gpointer              user_data)

The row which has the focus is either collapsed or expanded or toggled.

#### Parameters

ctree | the object which received the signal. |
expansion | What is being done. |
user_data | user data set when the signal handler was connected. |

Flags: Action

### The `“tree-collapse”` signal

    void
    user_function (GtkCTree     *ctree,
                   GtkCTreeNode *arg1,
                   gpointer      user_data)

Emitted when a node is collapsed.

#### Parameters

ctree | the object which received the signal. |
user_data | user data set when the signal handler was connected. |

Flags: Run Last

### The `“tree-expand”` signal

    void
    user_function (GtkCTree     *ctree,
                   GtkCTreeNode *arg1,
                   gpointer      user_data)

Emitted when a node is expanded.

#### Parameters

ctree | the object which received the signal. |
user_data | user data set when the signal handler was connected. |

Flags: Run Last

### The `“tree-move”` signal

    void
    user_function (GtkCTree     *ctree,
                   GtkCTreeNode *arg1,
                   GtkCTreeNode *arg2,
                   GtkCTreeNode *arg3,
                   gpointer      user_data)

Emitted when a node is moved.

#### Parameters

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. |
user_data | user data set when the signal handler was connected. |

Flags: Run Last

### The `“tree-select-row”` signal

    void
    user_function (GtkCTree     *ctree,
                   GtkCTreeNode *arg1,
                   gint          arg2,
                   gpointer      user_data)

Emitted when a row is selected.

#### Parameters

ctree | the object which received the signal. |
node | The node corresponding to the selected row. |
column | The column which was selected. |
user_data | user data set when the signal handler was connected. |

Flags: Run First

### The `“tree-unselect-row”` signal

    void
    user_function (GtkCTree     *ctree,
                   GtkCTreeNode *arg1,
                   gint          arg2,
                   gpointer      user_data)

Emitted when a node is unselected.

#### Parameters

ctree | the object which received the signal. |
node | The node corresponding to the selected row. |
user_data | user data set when the signal handler was connected. |

Flags: Run First