home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2007 September / PCWSEP07.iso / Software / Linux / Linux Mint 3.0 Light / LinuxMint-3.0-Light.iso / casper / filesystem.squashfs / usr / include / gnt / gnttree.h < prev    next >
Encoding:
C/C++ Source or Header  |  2007-05-04  |  4.7 KB  |  156 lines

  1. #ifndef GNT_TREE_H
  2. #define GNT_TREE_H
  3.  
  4. #include "gntwidget.h"
  5. #include "gnt.h"
  6. #include "gntcolors.h"
  7. #include "gntkeys.h"
  8. #include "gnttextview.h"
  9.  
  10. #define GNT_TYPE_TREE                (gnt_tree_get_gtype())
  11. #define GNT_TREE(obj)                (G_TYPE_CHECK_INSTANCE_CAST((obj), GNT_TYPE_TREE, GntTree))
  12. #define GNT_TREE_CLASS(klass)        (G_TYPE_CHECK_CLASS_CAST((klass), GNT_TYPE_TREE, GntTreeClass))
  13. #define GNT_IS_TREE(obj)            (G_TYPE_CHECK_INSTANCE_TYPE((obj), GNT_TYPE_TREE))
  14. #define GNT_IS_TREE_CLASS(klass)    (G_TYPE_CHECK_CLASS_TYPE((klass), GNT_TYPE_TREE))
  15. #define GNT_TREE_GET_CLASS(obj)    (G_TYPE_INSTANCE_GET_CLASS((obj), GNT_TYPE_TREE, GntTreeClass))
  16.  
  17. #define GNT_TREE_FLAGS(obj)                (GNT_TREE(obj)->priv.flags)
  18. #define GNT_TREE_SET_FLAGS(obj, flags)        (GNT_TREE_FLAGS(obj) |= flags)
  19. #define GNT_TREE_UNSET_FLAGS(obj, flags)    (GNT_TREE_FLAGS(obj) &= ~(flags))
  20.  
  21. typedef struct _GntTree            GntTree;
  22. typedef struct _GntTreePriv        GntTreePriv;
  23. typedef struct _GntTreeClass        GntTreeClass;
  24.  
  25. typedef struct _GntTreeRow        GntTreeRow;
  26. typedef struct _GntTreeCol        GntTreeCol;
  27.  
  28. struct _GntTree
  29. {
  30.     GntWidget parent;
  31.  
  32.     GntTreeRow *current;    /* current selection */
  33.  
  34.     GntTreeRow *top;        /* The topmost visible item */
  35.     GntTreeRow *bottom;     /* The bottommost visible item */
  36.     
  37.     GntTreeRow *root;       /* The root of all evil */
  38.     
  39.     GList *list;            /* List of GntTreeRow s */
  40.     GHashTable *hash;       /* We need this for quickly referencing the rows */
  41.     guint (*hash_func)(gconstpointer);
  42.     gboolean (*hash_eq_func)(gconstpointer, gconstpointer);
  43.     GDestroyNotify key_destroy;
  44.     GDestroyNotify value_destroy;
  45.  
  46.     int ncol;               /* No. of columns */
  47.     struct _GntTreeColInfo
  48.     {
  49.         int width;
  50.         char *title;
  51.         gboolean invisible;
  52.     } *columns;             /* Would a GList be better? */
  53.     gboolean show_title;
  54.     gboolean show_separator; /* Whether to show column separators */
  55.  
  56.     GString *search;
  57.     int search_timeout;
  58.  
  59.     GCompareFunc compare;
  60. };
  61.  
  62. struct _GntTreeClass
  63. {
  64.     GntWidgetClass parent;
  65.  
  66.     void (*selection_changed)(GntTreeRow *old, GntTreeRow * current);
  67.     void (*toggled)(GntTree *tree, gpointer key);
  68.  
  69.     void (*gnt_reserved1)(void);
  70.     void (*gnt_reserved2)(void);
  71.     void (*gnt_reserved3)(void);
  72.     void (*gnt_reserved4)(void);
  73. };
  74.  
  75. G_BEGIN_DECLS
  76.  
  77. GType gnt_tree_get_gtype(void);
  78.  
  79. GntWidget *gnt_tree_new(void);      /* A tree with just one column */
  80.  
  81. GntWidget *gnt_tree_new_with_columns(int columns);
  82.  
  83. void gnt_tree_set_visible_rows(GntTree *tree, int rows);
  84.  
  85. int gnt_tree_get_visible_rows(GntTree *tree);
  86.  
  87. void gnt_tree_scroll(GntTree *tree, int count);
  88.  
  89. GntTreeRow *gnt_tree_add_row_after(GntTree *tree, void *key, GntTreeRow *row, void *parent, void *bigbro);
  90.  
  91. GntTreeRow *gnt_tree_add_row_last(GntTree *tree, void *key, GntTreeRow *row, void *parent);
  92.  
  93. gpointer gnt_tree_get_selection_data(GntTree *tree);
  94.  
  95. /* Returned string needs to be freed */
  96. char *gnt_tree_get_selection_text(GntTree *tree);
  97.  
  98. GList *gnt_tree_get_selection_text_list(GntTree *tree);
  99.  
  100. const GList *gnt_tree_get_rows(GntTree *tree);
  101.  
  102. void gnt_tree_remove(GntTree *tree, gpointer key);
  103.  
  104. void gnt_tree_remove_all(GntTree *tree);
  105.  
  106. /* Returns the visible line number of the selected row */
  107. int gnt_tree_get_selection_visible_line(GntTree *tree);
  108.  
  109. void gnt_tree_change_text(GntTree *tree, gpointer key, int colno, const char *text);
  110.  
  111. GntTreeRow *gnt_tree_add_choice(GntTree *tree, void *key, GntTreeRow *row, void *parent, void *bigbro);
  112.  
  113. void gnt_tree_set_choice(GntTree *tree, void *key, gboolean set);
  114.  
  115. gboolean gnt_tree_get_choice(GntTree *tree, void *key);
  116.  
  117. void gnt_tree_set_row_flags(GntTree *tree, void *key, GntTextFormatFlags flags);
  118.  
  119. void gnt_tree_set_selected(GntTree *tree , void *key);
  120.  
  121. GntTreeRow *gnt_tree_create_row(GntTree *tree, ...);
  122.  
  123. GntTreeRow *gnt_tree_create_row_from_list(GntTree *tree, GList *list);
  124.  
  125. void gnt_tree_set_col_width(GntTree *tree, int col, int width);
  126.  
  127. void gnt_tree_set_column_titles(GntTree *tree, ...);
  128.  
  129. void gnt_tree_set_show_title(GntTree *tree, gboolean set);
  130.  
  131. void gnt_tree_set_compare_func(GntTree *tree, GCompareFunc func);
  132.  
  133. void gnt_tree_set_expanded(GntTree *tree, void *key, gboolean expanded);
  134.  
  135. void gnt_tree_set_show_separator(GntTree *tree, gboolean set);
  136.  
  137. void gnt_tree_sort_row(GntTree *tree, void *row);
  138.  
  139. /* This will try to automatically adjust the width of the columns in the tree */
  140. void gnt_tree_adjust_columns(GntTree *tree);
  141.  
  142. void gnt_tree_set_hash_fns(GntTree *tree, gpointer hash, gpointer eq, gpointer kd);
  143.  
  144. /* This can be useful when, for example, we want to store some data
  145.  * which we don't want/need to display. */
  146. void gnt_tree_set_column_visible(GntTree *tree, int col, gboolean vis);
  147.  
  148. G_END_DECLS
  149.  
  150. /* The following functions should NOT be used by applications. */
  151.  
  152. /* This should be called by the subclasses of GntTree's in their _new function */
  153. void _gnt_tree_init_internals(GntTree *tree, int col);
  154.  
  155. #endif /* GNT_TREE_H */
  156.