]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtktreesortable.h
put the newly selected row(s) the in the middle of the view,
[~andy/gtk] / gtk / gtktreesortable.h
index 8c7ed59b9efeb00ce2aa965855c364c2b68ac488..dd7282a192876658c2604a7b1c8798cd0863dede 100644 (file)
 #ifndef __GTK_TREE_SORTABLE_H__
 #define __GTK_TREE_SORTABLE_H__
 
+#include <gtk/gtkenums.h>
 #include <gtk/gtktreemodel.h>
+#include <gtk/gtktypeutils.h>
 
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-typedef enum
-{
-  GTK_TREE_SORT_ASCENDING,
-  GTK_TREE_SORT_DESCENDING
-} GtkTreeSortOrder;
+G_BEGIN_DECLS
 
 #define GTK_TYPE_TREE_SORTABLE            (gtk_tree_sortable_get_type ())
 #define GTK_TREE_SORTABLE(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_TREE_SORTABLE, GtkTreeSortable))
+#define GTK_TREE_SORTABLE_CLASS(obj)      (G_TYPE_CHECK_CLASS_CAST ((obj), GTK_TYPE_TREE_SORTABLE, GtkTreeSortableIface))
 #define GTK_IS_TREE_SORTABLE(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_TREE_SORTABLE))
-#define GTK_TREE_SORTABLE_GET_IFACE(obj)  ((GtkTreeSortableIface *)g_type_interface_peek (((GTypeInstance *)GTK_TREE_SORTABLE (obj))->g_class, GTK_TYPE_TREE_SORTABLE))
+#define GTK_TREE_SORTABLE_GET_IFACE(obj)  (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GTK_TYPE_TREE_SORTABLE, GtkTreeSortableIface))
+
+enum {
+  GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID = -1,
+  GTK_TREE_SORTABLE_UNSORTED_SORT_COLUMN_ID = -2
+};
 
 typedef struct _GtkTreeSortable      GtkTreeSortable; /* Dummy typedef */
 typedef struct _GtkTreeSortableIface GtkTreeSortableIface;
 
+typedef gint (* GtkTreeIterCompareFunc) (GtkTreeModel *model,
+                                        GtkTreeIter  *a,
+                                        GtkTreeIter  *b,
+                                        gpointer      user_data);
+
+
 struct _GtkTreeSortableIface
 {
   GTypeInterface g_iface;
 
-  /* This one is a signal */
-  void         (* sort_column_changed) (GtkTreeSortable  *sortable);
+  /* signals */
+  void     (* sort_column_changed)   (GtkTreeSortable        *sortable);
 
-  /* virtual methods */
-  gboolean     (* column_sortable)     (GtkTreeSortable  *sortable,
-                                        gint              column,
-                                        GtkTreeSortOrder  order);
-  void         (* get_sort_column)     (GtkTreeSortable  *sortable,
-                                        gint             *column,
-                                        GtkTreeSortOrder *order);
-  void         (* set_sort_column)     (GtkTreeSortable  *sortable,
-                                        gint              column,
-                                        GtkTreeSortOrder  order);
+  /* virtual table */
+  gboolean (* get_sort_column_id)    (GtkTreeSortable        *sortable,
+                                     gint                   *sort_column_id,
+                                     GtkSortType            *order);
+  void     (* set_sort_column_id)    (GtkTreeSortable        *sortable,
+                                     gint                    sort_column_id,
+                                     GtkSortType             order);
+  void     (* set_sort_func)         (GtkTreeSortable        *sortable,
+                                     gint                    sort_column_id,
+                                     GtkTreeIterCompareFunc  func,
+                                     gpointer                data,
+                                     GtkDestroyNotify        destroy);
+  void     (* set_default_sort_func) (GtkTreeSortable        *sortable,
+                                     GtkTreeIterCompareFunc  func,
+                                     gpointer                data,
+                                     GtkDestroyNotify        destroy);
+  gboolean (* has_default_sort_func) (GtkTreeSortable        *sortable);
 };
 
 
-GType           gtk_tree_sortable_get_type   (void) G_GNUC_CONST;
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
+GType    gtk_tree_sortable_get_type              (void) G_GNUC_CONST;
 
+void     gtk_tree_sortable_sort_column_changed   (GtkTreeSortable        *sortable);
+gboolean gtk_tree_sortable_get_sort_column_id    (GtkTreeSortable        *sortable,
+                                                 gint                   *sort_column_id,
+                                                 GtkSortType            *order);
+void     gtk_tree_sortable_set_sort_column_id    (GtkTreeSortable        *sortable,
+                                                 gint                    sort_column_id,
+                                                 GtkSortType             order);
+void     gtk_tree_sortable_set_sort_func         (GtkTreeSortable        *sortable,
+                                                 gint                    sort_column_id,
+                                                 GtkTreeIterCompareFunc  sort_func,
+                                                 gpointer                user_data,
+                                                 GtkDestroyNotify        destroy);
+void     gtk_tree_sortable_set_default_sort_func (GtkTreeSortable        *sortable,
+                                                 GtkTreeIterCompareFunc  sort_func,
+                                                 gpointer                user_data,
+                                                 GtkDestroyNotify        destroy);
+gboolean gtk_tree_sortable_has_default_sort_func (GtkTreeSortable        *sortable);
+                                                 
+                                                 
+G_END_DECLS
 
 #endif /* __GTK_TREE_SORTABLE_H__ */