talons

Fork of Claws Mail https://www.claws-mail
Log | Files | Refs | README | LICENSE

gtksctree.h (4706B)


      1 /* Mail Summary tree widget for Claws Mail */
      2 
      3 #ifndef __GTK_SCTREE_H__
      4 #define __GTK_SCTREE_H__
      5 
      6 #include <gtk/gtk.h>
      7 #include "gtkcmctree.h"
      8 
      9 /* This code is based on "gtkflist.{h,c}" from mc-4.5.42 .*/
     10 
     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))
     16 
     17 
     18 typedef struct _GtkSCTree GtkSCTree;
     19 typedef struct _GtkSCTreeClass GtkSCTreeClass;
     20 
     21 struct _GtkSCTree {
     22 	GtkCMCTree ctree;
     23 
     24 	/* The anchor row for range selections */
     25 	GtkCMCTreeNode *anchor_row;
     26 
     27 	/* Mouse button and position saved on button press */
     28 	gint dnd_press_button;
     29 	gint dnd_press_x, dnd_press_y;
     30 
     31 	/* Delayed selection information */
     32 	gint dnd_select_pending;
     33 	guint dnd_select_pending_state;
     34 	gint dnd_select_pending_row;
     35 	gint selecting_range;
     36 	gboolean sorting;
     37 
     38 	/* (dis)allow fancy color stripes */
     39 	gboolean show_stripes;
     40 	gboolean always_expand_recursively;
     41 	gboolean force_additive_sel;
     42 	gboolean *use_markup;
     43 };
     44 
     45 struct _GtkSCTreeClass {
     46     	GtkCMCTreeClass parent_class;
     47 
     48     	/* Signal: invoke the popup menu for rows */
     49     	void (* row_popup_menu) (GtkSCTree *sctree, GdkEventButton *event);
     50 
     51     	/* Signal: invoke the popup menu for empty areas */
     52     	void (* empty_popup_menu) (GtkSCTree *sctree, GdkEventButton *event);
     53 
     54 	/* Signal: open the file in the selected row */
     55 	void (* open_row) (GtkSCTree *sctree);
     56 
     57     	/* Signal: initiate a drag and drop operation */
     58     	void (* start_drag) (GtkSCTree *sctree, gint button, GdkEvent *event);
     59 };
     60 
     61 
     62 GType gtk_sctree_get_type (void);
     63 
     64 GtkWidget *gtk_sctree_new_with_titles	(gint		 columns,
     65 					 gint		 tree_column,
     66 					 gchar		*titles[]);
     67 void gtk_sctree_select			(GtkSCTree	*sctree,
     68 					 GtkCMCTreeNode	*node);
     69 void gtk_sctree_select_with_state	(GtkSCTree	*sctree,
     70 					 GtkCMCTreeNode	*node,
     71 					 int		 state);
     72 void gtk_sctree_unselect_all		(GtkSCTree	*sctree);
     73 
     74 void gtk_sctree_set_anchor_row		(GtkSCTree	*sctree,
     75 					 GtkCMCTreeNode	*node);
     76 
     77 void gtk_sctree_remove_node		(GtkSCTree	*sctree,
     78 					 GtkCMCTreeNode	*node);
     79 
     80 void gtk_sctree_set_stripes(GtkSCTree  *sctree, gboolean show_stripes);
     81 void gtk_sctree_set_recursive_expand(GtkSCTree  *sctree, gboolean rec_exp);
     82 
     83 /***********************************************************
     84  *             Tree sorting functions                      *
     85  ***********************************************************/
     86 
     87 void gtk_sctree_sort_node (GtkCMCTree *ctree, GtkCMCTreeNode *node);
     88 
     89 void gtk_sctree_sort_recursive (GtkCMCTree *ctree, GtkCMCTreeNode *node);
     90 
     91 GtkCMCTreeNode* gtk_sctree_insert_node        (GtkCMCTree *ctree,
     92                                              GtkCMCTreeNode *parent,
     93                                              GtkCMCTreeNode *sibling,
     94                                              gchar *text[],
     95                                              guint8 spacing,
     96                                              GdkPixbuf *pixbuf_closed,
     97                                              GdkPixbuf *pixbuf_opened,
     98                                              gboolean is_leaf,
     99                                              gboolean expanded);
    100 void        gtk_sctree_set_node_info        (GtkCMCTree *ctree,
    101                                              GtkCMCTreeNode *node,
    102                                              const gchar *text,
    103                                              guint8 spacing,
    104                                              GdkPixbuf *pixbuf_closed,
    105                                              GdkPixbuf *pixbuf_opened,
    106                                              gboolean is_leaf,
    107                                              gboolean expanded);
    108 GtkCMCTreeNode *
    109 gtk_sctree_insert_gnode 		    (GtkCMCTree          *ctree,
    110 					     GtkCMCTreeNode      *parent,
    111 					     GtkCMCTreeNode      *sibling,
    112 					     GNode             *gnode,
    113 					     GtkCMCTreeGNodeFunc  func,
    114 					     gpointer           data);
    115 
    116 void gtk_sctree_set_column_tooltip	    (GtkSCTree		*sctree,
    117 					     int		 column,
    118 					     const gchar 	*tip);
    119 void gtk_sctree_set_use_markup		    (GtkSCTree		*sctree,
    120 					     int		 column,
    121 					     gboolean		 markup);
    122 
    123 /* This assumes that x and y coordinates are inside the clist_window.
    124  * Returns true if the coordinates are inside a tree expander on
    125  * one of the rows. */
    126 gboolean
    127 gtk_sctree_is_hot_spot (GtkSCTree *ctree,
    128 		       gint      x,
    129 		       gint      y);
    130 #endif /* __GTK_SCTREE_H__ */