]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkctree.h
GtkToolPalette: Change gtk_tool_palette_get_drop_group() return.
[~andy/gtk] / gtk / gtkctree.h
index 7f2fdc33c3cb54e4432586fda5d25995a446e290..a4aa83773bdd4d39e3f3bc67efe9affb634d525f 100644 (file)
@@ -6,43 +6,52 @@
  * Copyright (C) 1998 Lars Hamann and Stefan Jeske
  *
  * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
+ * modify it under the terms of the GNU Lesser General Public
  * License as published by the Free Software Foundation; either
  * version 2 of the License, or (at your option) any later version.
  *
  * This library is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Library General Public License for more details.
+ * Lesser General Public License for more details.
  *
- * You should have received a copy of the GNU Library General Public
+ * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, write to the
  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  * Boston, MA 02111-1307, USA.
  */
 
+/*
+ * Modified by the GTK+ Team and others 1997-2000.  See the AUTHORS
+ * file for a list of people on the GTK+ Team.  See the ChangeLog
+ * files for a list of changes.  These files are distributed with
+ * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
+ */
+
+#if !defined (GTK_DISABLE_DEPRECATED) || defined (__GTK_CLIST_C__) || defined (__GTK_CTREE_C__)
+
 #ifndef __GTK_CTREE_H__
 #define __GTK_CTREE_H__
 
 #include <gtk/gtkclist.h>
 
-#ifdef __cplusplus
-extern "C"
-{
-#endif                         /* __cplusplus */
-
-#define GTK_CTREE(obj) \
-  (GTK_CHECK_CAST ((obj), gtk_ctree_get_type (), GtkCTree))
-#define GTK_CTREE_CLASS(klass) \
-  (GTK_CHECK_CLASS_CAST ((klass), gtk_ctree_get_type (), GtkCTreeClass))
-#define GTK_IS_CTREE(obj) \
-  (GTK_CHECK_TYPE ((obj), gtk_ctree_get_type ()))
-#define GTK_CTREE_ROW(glist) ((GtkCTreeRow *)((glist)->data))
-#define GTK_CTREE_TREE(_ctree_, _glist_) \
-  ((GtkCellTree *) &(((GtkCTreeRow *)((_glist_)->data))->cell[(_ctree_)->tree_col]))
+G_BEGIN_DECLS
 
+#define GTK_TYPE_CTREE            (gtk_ctree_get_type ())
+#define GTK_CTREE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_CTREE, GtkCTree))
+#define GTK_CTREE_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_CTREE, GtkCTreeClass))
+#define GTK_IS_CTREE(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_CTREE))
+#define GTK_IS_CTREE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_CTREE))
+#define GTK_CTREE_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_CTREE, GtkCTreeClass))
+
+#define GTK_CTREE_ROW(_node_) ((GtkCTreeRow *)(((GList *)(_node_))->data))
+#define GTK_CTREE_NODE(_node_) ((GtkCTreeNode *)((_node_)))
+#define GTK_CTREE_NODE_NEXT(_nnode_) ((GtkCTreeNode *)(((GList *)(_nnode_))->next))
+#define GTK_CTREE_NODE_PREV(_pnode_) ((GtkCTreeNode *)(((GList *)(_pnode_))->prev))
 #define GTK_CTREE_FUNC(_func_) ((GtkCTreeFunc)(_func_))
 
+#define GTK_TYPE_CTREE_NODE (gtk_ctree_node_get_type ())
+
 typedef enum
 {
   GTK_CTREE_POS_BEFORE,
@@ -52,295 +61,385 @@ typedef enum
 
 typedef enum
 {
+  GTK_CTREE_LINES_NONE,
   GTK_CTREE_LINES_SOLID,
   GTK_CTREE_LINES_DOTTED,
-  GTK_CTREE_LINES_TABBED,
-  GTK_CTREE_LINES_NONE
+  GTK_CTREE_LINES_TABBED
 } GtkCTreeLineStyle;
 
+typedef enum
+{
+  GTK_CTREE_EXPANDER_NONE,
+  GTK_CTREE_EXPANDER_SQUARE,
+  GTK_CTREE_EXPANDER_TRIANGLE,
+  GTK_CTREE_EXPANDER_CIRCULAR
+} GtkCTreeExpanderStyle;
+
+typedef enum
+{
+  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
+} GtkCTreeExpansionType;
+
 typedef struct _GtkCTree      GtkCTree;
 typedef struct _GtkCTreeClass GtkCTreeClass;
 typedef struct _GtkCTreeRow   GtkCTreeRow;
+typedef struct _GtkCTreeNode  GtkCTreeNode;
 
-typedef void (*GtkCTreeFunc) (GtkCTree *ctree,
-                             GList    *node,
-                             gpointer  data);
+typedef void (*GtkCTreeFunc) (GtkCTree     *ctree,
+                             GtkCTreeNode *node,
+                             gpointer      data);
 
-typedef gint (*GtkCTreeCompareFunc) (GtkCTree    *ctree,
-                                    const GList *node1,
-                                    const GList *node2);
+typedef gboolean (*GtkCTreeGNodeFunc) (GtkCTree     *ctree,
+                                       guint         depth,
+                                       GNode        *gnode,
+                                      GtkCTreeNode *cnode,
+                                       gpointer      data);
+
+typedef gboolean (*GtkCTreeCompareDragFunc) (GtkCTree     *ctree,
+                                             GtkCTreeNode *source_node,
+                                             GtkCTreeNode *new_parent,
+                                             GtkCTreeNode *new_sibling);
 
 struct _GtkCTree
 {
   GtkCList clist;
-
-  GdkGC *xor_gc;
+  
   GdkGC *lines_gc;
-  GdkWindow *drag_icon;
-  gint icon_width;
-  gint icon_height;
-
+  
   gint tree_indent;
+  gint tree_spacing;
   gint tree_column;
-  GList *selection_last;
-  gint drag_row;
-  GList *drag_source;
-  GList *drag_target;
-  gint insert_pos;
-  GtkCTreeCompareFunc node_compare;
-
-  guint auto_sort   : 1;
-  guint reorderable : 1;
-  guint use_icons   : 1;
-  guint in_drag     : 1;
-  guint drag_rect   : 1;
-  guint line_style  : 2;
+
+  guint line_style     : 2;
+  guint expander_style : 2;
+  guint show_stub      : 1;
+
+  GtkCTreeCompareDragFunc drag_compare;
 };
 
 struct _GtkCTreeClass
 {
   GtkCListClass parent_class;
-
-  void (*tree_select_row)   (GtkCTree *ctree,
-                            GList    *row,
-                            gint      column);
-  void (*tree_unselect_row) (GtkCTree *ctree,
-                            GList    *row,
-                            gint      column);
-  void (*tree_expand)       (GtkCTree *ctree,
-                            GList    *node);
-  void (*tree_collapse)     (GtkCTree *ctree,
-                            GList    *node);
-  void (*tree_move)         (GtkCTree *ctree,
-                            GList    *node,
-                            GList    *new_parent,
-                            GList    *new_sibling);
+  
+  void (*tree_select_row)   (GtkCTree     *ctree,
+                            GtkCTreeNode *row,
+                            gint          column);
+  void (*tree_unselect_row) (GtkCTree     *ctree,
+                            GtkCTreeNode *row,
+                            gint          column);
+  void (*tree_expand)       (GtkCTree     *ctree,
+                            GtkCTreeNode *node);
+  void (*tree_collapse)     (GtkCTree     *ctree,
+                            GtkCTreeNode *node);
+  void (*tree_move)         (GtkCTree     *ctree,
+                            GtkCTreeNode *node,
+                            GtkCTreeNode *new_parent,
+                            GtkCTreeNode *new_sibling);
+  void (*change_focus_row_expansion) (GtkCTree *ctree,
+                                     GtkCTreeExpansionType action);
 };
 
 struct _GtkCTreeRow
 {
   GtkCListRow row;
-
-  GList *parent;
-  GList *sibling;
-  GList *children;
-
+  
+  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;
 };
 
+struct _GtkCTreeNode {
+  GList list;
+};
+
 
 /***********************************************************
  *           Creation, insertion, deletion                 *
  ***********************************************************/
 
-GtkType     gtk_ctree_get_type              (void);
-void        gtk_ctree_construct             (GtkCTree     *ctree,
-                                            gint          columns, 
-                                            gint          tree_column,
-                                            gchar        *titles[]);
-GtkWidget * gtk_ctree_new_with_titles       (gint          columns, 
-                                            gint          tree_column,
-                                            gchar        *titles[]);
-GtkWidget * gtk_ctree_new                   (gint          columns, 
-                                            gint          tree_column);
-GList *     gtk_ctree_insert                (GtkCTree     *ctree,
-                                            GList        *parent, 
-                                            GList        *sibling,
-                                            gchar        *text[],
-                                            guint8        spacing,
-                                            GdkPixmap    *pixmap_closed,
-                                            GdkBitmap    *mask_closed,
-                                            GdkPixmap    *pixmap_opened,
-                                            GdkBitmap    *mask_opened,
-                                            gboolean      is_leaf,
-                                            gboolean      expanded);
-void       gtk_ctree_remove                 (GtkCTree     *ctree, 
-                                            GList        *node);
-void       gtk_ctree_clear                  (GtkCTree     *ctree);
+GType   gtk_ctree_get_type                       (void) G_GNUC_CONST;
+GtkWidget * gtk_ctree_new_with_titles            (gint          columns, 
+                                                 gint          tree_column,
+                                                 gchar        *titles[]);
+GtkWidget * gtk_ctree_new                        (gint          columns, 
+                                                 gint          tree_column);
+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);
+void gtk_ctree_remove_node                       (GtkCTree     *ctree, 
+                                                 GtkCTreeNode *node);
+GtkCTreeNode * gtk_ctree_insert_gnode            (GtkCTree          *ctree,
+                                                 GtkCTreeNode      *parent,
+                                                 GtkCTreeNode      *sibling,
+                                                 GNode             *gnode,
+                                                 GtkCTreeGNodeFunc  func,
+                                                 gpointer           data);
+GNode * gtk_ctree_export_to_gnode                (GtkCTree          *ctree,
+                                                 GNode             *parent,
+                                                 GNode             *sibling,
+                                                 GtkCTreeNode      *node,
+                                                 GtkCTreeGNodeFunc  func,
+                                                 gpointer           data);
 
 /***********************************************************
  *  Generic recursive functions, querying / finding tree   *
  *  information                                            *
  ***********************************************************/
 
-void       gtk_ctree_post_recursive         (GtkCTree     *ctree, 
-                                            GList        *node,
-                                            GtkCTreeFunc  func,
-                                            gpointer      data);
-void       gtk_ctree_pre_recursive          (GtkCTree     *ctree, 
-                                            GList        *node,
-                                            GtkCTreeFunc  func,
-                                            gpointer      data);
-gboolean   gtk_ctree_is_visible             (GtkCTree     *ctree, 
-                                            GList        *node);
-GList *    gtk_ctree_last                   (GtkCTree     *ctree,
-                                            GList        *node);
-GList *    gtk_ctree_find_glist_ptr         (GtkCTree     *ctree,
-                                            GtkCTreeRow  *ctree_row);
-gint       gtk_ctree_find                   (GtkCTree     *ctree,
-                                            GList        *node,
-                                            GList        *child);
-gboolean   gtk_ctree_is_ancestor            (GtkCTree     *ctree,
-                                            GList        *node,
-                                            GList        *child);
-GList *    gtk_ctree_find_by_row_data       (GtkCTree     *ctree,
-                                            GList        *node,
-                                            gpointer      data);
-gboolean   gtk_ctree_is_hot_spot            (GtkCTree     *ctree,
-                                            gint          x,
-                                            gint          y);
+void gtk_ctree_post_recursive                    (GtkCTree     *ctree, 
+                                                 GtkCTreeNode *node,
+                                                 GtkCTreeFunc  func,
+                                                 gpointer      data);
+void gtk_ctree_post_recursive_to_depth           (GtkCTree     *ctree, 
+                                                 GtkCTreeNode *node,
+                                                 gint          depth,
+                                                 GtkCTreeFunc  func,
+                                                 gpointer      data);
+void gtk_ctree_pre_recursive                     (GtkCTree     *ctree, 
+                                                 GtkCTreeNode *node,
+                                                 GtkCTreeFunc  func,
+                                                 gpointer      data);
+void gtk_ctree_pre_recursive_to_depth            (GtkCTree     *ctree, 
+                                                 GtkCTreeNode *node,
+                                                 gint          depth,
+                                                 GtkCTreeFunc  func,
+                                                 gpointer      data);
+gboolean gtk_ctree_is_viewable                   (GtkCTree     *ctree, 
+                                                 GtkCTreeNode *node);
+GtkCTreeNode * gtk_ctree_last                    (GtkCTree     *ctree,
+                                                 GtkCTreeNode *node);
+GtkCTreeNode * gtk_ctree_find_node_ptr           (GtkCTree     *ctree,
+                                                 GtkCTreeRow  *ctree_row);
+GtkCTreeNode * gtk_ctree_node_nth                (GtkCTree     *ctree,
+                                                 guint         row);
+gboolean gtk_ctree_find                          (GtkCTree     *ctree,
+                                                 GtkCTreeNode *node,
+                                                 GtkCTreeNode *child);
+gboolean gtk_ctree_is_ancestor                   (GtkCTree     *ctree,
+                                                 GtkCTreeNode *node,
+                                                 GtkCTreeNode *child);
+GtkCTreeNode * gtk_ctree_find_by_row_data        (GtkCTree     *ctree,
+                                                 GtkCTreeNode *node,
+                                                 gpointer      data);
+/* returns a GList of all GtkCTreeNodes with row->data == data. */
+GList * gtk_ctree_find_all_by_row_data           (GtkCTree     *ctree,
+                                                 GtkCTreeNode *node,
+                                                 gpointer      data);
+GtkCTreeNode * gtk_ctree_find_by_row_data_custom (GtkCTree     *ctree,
+                                                 GtkCTreeNode *node,
+                                                 gpointer      data,
+                                                 GCompareFunc  func);
+/* returns a GList of all GtkCTreeNodes with row->data == data. */
+GList * gtk_ctree_find_all_by_row_data_custom    (GtkCTree     *ctree,
+                                                 GtkCTreeNode *node,
+                                                 gpointer      data,
+                                                 GCompareFunc  func);
+gboolean gtk_ctree_is_hot_spot                   (GtkCTree     *ctree,
+                                                 gint          x,
+                                                 gint          y);
 
 /***********************************************************
  *   Tree signals : move, expand, collapse, (un)select     *
  ***********************************************************/
 
-void       gtk_ctree_move                   (GtkCTree     *ctree,
-                                            GList        *node,
-                                            GList        *new_parent, 
-                                            GList        *new_sibling);
-void       gtk_ctree_expand                 (GtkCTree     *ctree,
-                                            GList        *node);
-void       gtk_ctree_expand_recursive       (GtkCTree     *ctree,
-                                            GList        *node);
-void       gtk_ctree_collapse               (GtkCTree     *ctree,
-                                            GList        *node);
-void       gtk_ctree_collapse_recursive     (GtkCTree     *ctree,
-                                            GList        *node);
-void       gtk_ctree_select                 (GtkCTree     *ctree, 
-                                            GList        *node);
-void       gtk_ctree_select_recursive       (GtkCTree     *ctree, 
-                                            GList        *node);
-void       gtk_ctree_unselect               (GtkCTree     *ctree, 
-                                            GList        *node);
-void       gtk_ctree_unselect_recursive     (GtkCTree     *ctree, 
-                                            GList        *node);
-void       gtk_ctree_real_select_recursive  (GtkCTree     *ctree, 
-                                            GList        *node, 
-                                            gint          state);
+void gtk_ctree_move                              (GtkCTree     *ctree,
+                                                 GtkCTreeNode *node,
+                                                 GtkCTreeNode *new_parent, 
+                                                 GtkCTreeNode *new_sibling);
+void gtk_ctree_expand                            (GtkCTree     *ctree,
+                                                 GtkCTreeNode *node);
+void gtk_ctree_expand_recursive                  (GtkCTree     *ctree,
+                                                 GtkCTreeNode *node);
+void gtk_ctree_expand_to_depth                   (GtkCTree     *ctree,
+                                                 GtkCTreeNode *node,
+                                                 gint          depth);
+void gtk_ctree_collapse                          (GtkCTree     *ctree,
+                                                 GtkCTreeNode *node);
+void gtk_ctree_collapse_recursive                (GtkCTree     *ctree,
+                                                 GtkCTreeNode *node);
+void gtk_ctree_collapse_to_depth                 (GtkCTree     *ctree,
+                                                 GtkCTreeNode *node,
+                                                 gint          depth);
+void gtk_ctree_toggle_expansion                  (GtkCTree     *ctree,
+                                                 GtkCTreeNode *node);
+void gtk_ctree_toggle_expansion_recursive        (GtkCTree     *ctree,
+                                                 GtkCTreeNode *node);
+void gtk_ctree_select                            (GtkCTree     *ctree, 
+                                                 GtkCTreeNode *node);
+void gtk_ctree_select_recursive                  (GtkCTree     *ctree, 
+                                                 GtkCTreeNode *node);
+void gtk_ctree_unselect                          (GtkCTree     *ctree, 
+                                                 GtkCTreeNode *node);
+void gtk_ctree_unselect_recursive                (GtkCTree     *ctree, 
+                                                 GtkCTreeNode *node);
+void gtk_ctree_real_select_recursive             (GtkCTree     *ctree, 
+                                                 GtkCTreeNode *node, 
+                                                 gint          state);
 
 /***********************************************************
  *           Analogons of GtkCList functions               *
  ***********************************************************/
 
-void       gtk_ctree_set_text               (GtkCTree     *ctree,
-                                            GList        *node,
-                                            gint          column,
-                                            gchar        *text);
-void       gtk_ctree_set_pixmap             (GtkCTree     *ctree,
-                                            GList        *node,
-                                            gint          column,
-                                            GdkPixmap    *pixmap,
-                                            GdkBitmap    *mask);
-void       gtk_ctree_set_pixtext            (GtkCTree     *ctree,
-                                            GList        *node,
-                                            gint          column,
-                                            gchar        *text,
-                                            guint8        spacing,
-                                            GdkPixmap    *pixmap,
-                                            GdkBitmap    *mask);
-void       gtk_ctree_set_node_info          (GtkCTree     *ctree,
-                                            GList        *node,
-                                            gchar        *text,
-                                            guint8        spacing,
-                                            GdkPixmap    *pixmap_closed,
-                                            GdkBitmap    *mask_closed,
-                                            GdkPixmap    *pixmap_opened,
-                                            GdkBitmap    *mask_opened,
-                                            gboolean      is_leaf,
-                                            gboolean      expanded);
-void       gtk_ctree_set_shift              (GtkCTree     *ctree,
-                                            GList        *node,
-                                            gint          column,
-                                            gint          vertical,
-                                            gint          horizontal);
-GtkCellType gtk_ctree_get_cell_type         (GtkCTree     *ctree,
-                                            GList        *node,
-                                            gint          column);
-gint       gtk_ctree_get_text               (GtkCTree     *ctree,
-                                            GList        *node,
-                                            gint          column,
-                                            gchar       **text);
-gint       gtk_ctree_get_pixmap             (GtkCTree     *ctree,
-                                            GList        *node,
-                                            gint          column,
-                                            GdkPixmap   **pixmap,
-                                            GdkBitmap   **mask);
-gint       gtk_ctree_get_pixtext            (GtkCTree     *ctree,
-                                            GList        *node,
-                                            gint          column,
-                                            gchar       **text,
-                                            guint8       *spacing,
-                                            GdkPixmap   **pixmap,
-                                            GdkBitmap   **mask);
-gint       gtk_ctree_get_node_info          (GtkCTree     *ctree,
-                                            GList        *node,
-                                            gchar       **text,
-                                            guint8       *spacing,
-                                            GdkPixmap   **pixmap_closed,
-                                            GdkBitmap   **mask_closed,
-                                            GdkPixmap   **pixmap_opened,
-                                            GdkBitmap   **mask_opened,
-                                            gboolean     *is_leaf,
-                                            gboolean     *expanded);
-void       gtk_ctree_set_foreground         (GtkCTree     *ctree,
-                                            GList        *node,
-                                            GdkColor     *color);
-void       gtk_ctree_set_background         (GtkCTree     *ctree,
-                                            GList        *node,
-                                            GdkColor     *color);
-void       gtk_ctree_set_selection_mode     (GtkCTree     *ctree,
-                                            GtkSelectionMode  mode);
-void       gtk_ctree_set_row_data           (GtkCTree     *ctree,
-                                            GList        *node,
-                                            gpointer      data);
-void       gtk_ctree_set_row_data_full      (GtkCTree     *ctree,
-                                            GList        *node,
-                                            gpointer      data,
-                                            GtkDestroyNotify destroy);
-gpointer   gtk_ctree_get_row_data           (GtkCTree     *ctree,
-                                            GList        *node);
-void       gtk_ctree_scroll_to              (GtkCTree     *ctree,
-                                            GList        *node,
-                                            gint          column,
-                                            gfloat        row_align,
-                                            gfloat        col_align);
+void gtk_ctree_node_set_text                     (GtkCTree     *ctree,
+                                                 GtkCTreeNode *node,
+                                                 gint          column,
+                                                 const gchar  *text);
+void gtk_ctree_node_set_pixmap                   (GtkCTree     *ctree,
+                                                 GtkCTreeNode *node,
+                                                 gint          column,
+                                                 GdkPixmap    *pixmap,
+                                                 GdkBitmap    *mask);
+void gtk_ctree_node_set_pixtext                  (GtkCTree     *ctree,
+                                                 GtkCTreeNode *node,
+                                                 gint          column,
+                                                 const gchar  *text,
+                                                 guint8        spacing,
+                                                 GdkPixmap    *pixmap,
+                                                 GdkBitmap    *mask);
+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);
+void gtk_ctree_node_set_shift                    (GtkCTree     *ctree,
+                                                 GtkCTreeNode *node,
+                                                 gint          column,
+                                                 gint          vertical,
+                                                 gint          horizontal);
+void gtk_ctree_node_set_selectable               (GtkCTree     *ctree,
+                                                 GtkCTreeNode *node,
+                                                 gboolean      selectable);
+gboolean gtk_ctree_node_get_selectable           (GtkCTree     *ctree,
+                                                 GtkCTreeNode *node);
+GtkCellType gtk_ctree_node_get_cell_type         (GtkCTree     *ctree,
+                                                 GtkCTreeNode *node,
+                                                 gint          column);
+gboolean gtk_ctree_node_get_text                 (GtkCTree     *ctree,
+                                                 GtkCTreeNode *node,
+                                                 gint          column,
+                                                 gchar       **text);
+gboolean gtk_ctree_node_get_pixmap               (GtkCTree     *ctree,
+                                                 GtkCTreeNode *node,
+                                                 gint          column,
+                                                 GdkPixmap   **pixmap,
+                                                 GdkBitmap   **mask);
+gboolean gtk_ctree_node_get_pixtext              (GtkCTree     *ctree,
+                                                 GtkCTreeNode *node,
+                                                 gint          column,
+                                                 gchar       **text,
+                                                 guint8       *spacing,
+                                                 GdkPixmap   **pixmap,
+                                                 GdkBitmap   **mask);
+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);
+void gtk_ctree_node_set_row_style                (GtkCTree     *ctree,
+                                                 GtkCTreeNode *node,
+                                                 GtkStyle     *style);
+GtkStyle * gtk_ctree_node_get_row_style          (GtkCTree     *ctree,
+                                                 GtkCTreeNode *node);
+void gtk_ctree_node_set_cell_style               (GtkCTree     *ctree,
+                                                 GtkCTreeNode *node,
+                                                 gint          column,
+                                                 GtkStyle     *style);
+GtkStyle * gtk_ctree_node_get_cell_style         (GtkCTree     *ctree,
+                                                 GtkCTreeNode *node,
+                                                 gint          column);
+void gtk_ctree_node_set_foreground               (GtkCTree       *ctree,
+                                                 GtkCTreeNode   *node,
+                                                 const GdkColor *color);
+void gtk_ctree_node_set_background               (GtkCTree       *ctree,
+                                                 GtkCTreeNode   *node,
+                                                 const GdkColor *color);
+void gtk_ctree_node_set_row_data                 (GtkCTree     *ctree,
+                                                 GtkCTreeNode *node,
+                                                 gpointer      data);
+void gtk_ctree_node_set_row_data_full            (GtkCTree     *ctree,
+                                                 GtkCTreeNode *node,
+                                                 gpointer      data,
+                                                 GDestroyNotify destroy);
+gpointer gtk_ctree_node_get_row_data             (GtkCTree     *ctree,
+                                                 GtkCTreeNode *node);
+void gtk_ctree_node_moveto                       (GtkCTree     *ctree,
+                                                 GtkCTreeNode *node,
+                                                 gint          column,
+                                                 gfloat        row_align,
+                                                 gfloat        col_align);
+GtkVisibility gtk_ctree_node_is_visible          (GtkCTree     *ctree,
+                                                 GtkCTreeNode *node);
 
 /***********************************************************
  *             GtkCTree specific functions                 *
  ***********************************************************/
 
-void       gtk_ctree_set_indent             (GtkCTree     *ctree, 
-                                             gint          indent);
-void       gtk_ctree_set_reorderable        (GtkCTree     *ctree,
-                                            gboolean      reorderable);
-void       gtk_ctree_set_use_drag_icons     (GtkCTree     *ctree,
-                                            gboolean      use_icons);
-void       gtk_ctree_set_line_style         (GtkCTree     *ctree, 
-                                            GtkCTreeLineStyle line_style);
+void gtk_ctree_set_indent            (GtkCTree                *ctree, 
+                                     gint                     indent);
+void gtk_ctree_set_spacing           (GtkCTree                *ctree, 
+                                     gint                     spacing);
+void gtk_ctree_set_show_stub         (GtkCTree                *ctree, 
+                                     gboolean                 show_stub);
+void gtk_ctree_set_line_style        (GtkCTree                *ctree, 
+                                     GtkCTreeLineStyle        line_style);
+void gtk_ctree_set_expander_style    (GtkCTree                *ctree, 
+                                     GtkCTreeExpanderStyle    expander_style);
+void gtk_ctree_set_drag_compare_func (GtkCTree               *ctree,
+                                     GtkCTreeCompareDragFunc  cmp_func);
 
 /***********************************************************
  *             Tree sorting functions                      *
  ***********************************************************/
 
-void       gtk_ctree_set_auto_sort          (GtkCTree     *ctree,
-                                            gboolean      auto_sort);
-void       gtk_ctree_set_compare_func       (GtkCTree     *ctree,
-                                            GtkCTreeCompareFunc cmp_func);
-void       gtk_ctree_sort                   (GtkCTree     *ctree, 
-                                            GList        *node);
-void       gtk_ctree_sort_recursive         (GtkCTree     *ctree, 
-                                            GList        *node);
+void gtk_ctree_sort_node                         (GtkCTree     *ctree, 
+                                                 GtkCTreeNode *node);
+void gtk_ctree_sort_recursive                    (GtkCTree     *ctree, 
+                                                 GtkCTreeNode *node);
 
-#ifdef __cplusplus
-}
-#endif                         /* __cplusplus */
+
+#define gtk_ctree_set_reorderable(t,r)                    gtk_clist_set_reorderable((GtkCList*) (t),(r))
+
+/* GType for the GtkCTreeNode.  This is a boxed type, although it uses
+ * no-op's for the copy and free routines.  It is defined in order to
+ * provide type information for the signal arguments
+ */
+GType   gtk_ctree_node_get_type                  (void) G_GNUC_CONST;
+
+G_END_DECLS
 
 #endif                         /* __GTK_CTREE_H__ */
+
+#endif /* GTK_DISABLE_DEPRECATED */