1 /* Mail Summary tree widget for Claws Mail */
3 #ifndef __GTK_SCTREE_H__
4 #define __GTK_SCTREE_H__
7 #include "gtk/gtkcmctree.h"
9 /* This code is based on "gtkflist.{h,c}" from mc-4.5.42 .*/
11 #define TYPE_GTK_SCTREE (gtk_sctree_get_type ())
12 #define GTK_SCTREE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_GTK_SCTREE, GtkSCTree))
13 #define GTK_SCTREE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_GTK_SCTREE, GtkSCTreeClass))
14 #define GTK_IS_SCTREE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_GTK_SCTREE))
15 #define GTK_IS_SCTREE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_GTK_SCTREE))
18 typedef struct _GtkSCTree GtkSCTree;
19 typedef struct _GtkSCTreeClass GtkSCTreeClass;
24 /* The anchor row for range selections */
25 GtkCMCTreeNode *anchor_row;
27 /* Mouse button and position saved on button press */
28 gint dnd_press_button;
29 gint dnd_press_x, dnd_press_y;
31 /* Delayed selection information */
32 gint dnd_select_pending;
33 guint dnd_select_pending_state;
34 gint dnd_select_pending_row;
38 /* (dis)allow fancy color stripes */
39 gboolean show_stripes;
40 #if !GTK_CHECK_VERSION(2,12,0)
41 GtkTooltips *tooltips;
43 gboolean always_expand_recursively;
44 gboolean force_additive_sel;
48 struct _GtkSCTreeClass {
49 GtkCMCTreeClass parent_class;
51 /* Signal: invoke the popup menu for rows */
52 void (* row_popup_menu) (GtkSCTree *sctree, GdkEventButton *event);
54 /* Signal: invoke the popup menu for empty areas */
55 void (* empty_popup_menu) (GtkSCTree *sctree, GdkEventButton *event);
57 /* Signal: open the file in the selected row */
58 void (* open_row) (GtkSCTree *sctree);
60 /* Signal: initiate a drag and drop operation */
61 void (* start_drag) (GtkSCTree *sctree, gint button, GdkEvent *event);
65 GType gtk_sctree_get_type (void);
67 GtkWidget *gtk_sctree_new_with_titles (gint columns,
70 void gtk_sctree_select (GtkSCTree *sctree,
71 GtkCMCTreeNode *node);
72 void gtk_sctree_select_with_state (GtkSCTree *sctree,
75 void gtk_sctree_unselect_all (GtkSCTree *sctree);
77 void gtk_sctree_set_anchor_row (GtkSCTree *sctree,
78 GtkCMCTreeNode *node);
80 void gtk_sctree_remove_node (GtkSCTree *sctree,
81 GtkCMCTreeNode *node);
83 void gtk_sctree_set_stripes(GtkSCTree *sctree, gboolean show_stripes);
84 void gtk_sctree_set_recursive_expand(GtkSCTree *sctree, gboolean rec_exp);
86 /***********************************************************
87 * Tree sorting functions *
88 ***********************************************************/
90 void gtk_sctree_sort_node (GtkCMCTree *ctree, GtkCMCTreeNode *node);
92 void gtk_sctree_sort_recursive (GtkCMCTree *ctree, GtkCMCTreeNode *node);
94 GtkCMCTreeNode* gtk_sctree_insert_node (GtkCMCTree *ctree,
95 GtkCMCTreeNode *parent,
96 GtkCMCTreeNode *sibling,
99 GdkPixbuf *pixbuf_closed,
100 GdkPixbuf *pixbuf_opened,
103 void gtk_sctree_set_node_info (GtkCMCTree *ctree,
104 GtkCMCTreeNode *node,
107 GdkPixbuf *pixbuf_closed,
108 GdkPixbuf *pixbuf_opened,
112 gtk_sctree_insert_gnode (GtkCMCTree *ctree,
113 GtkCMCTreeNode *parent,
114 GtkCMCTreeNode *sibling,
116 GtkCMCTreeGNodeFunc func,
119 void gtk_sctree_set_column_tooltip (GtkSCTree *sctree,
122 void gtk_sctree_set_use_markup (GtkSCTree *sctree,
126 gtk_sctree_is_hot_spot (GtkSCTree *ctree,
129 #endif /* __GTK_SCTREE_H__ */