Download

Support

lib/ewl_tree.h

Go to the documentation of this file.
00001 /* vim: set sw=8 ts=8 sts=8 expandtab: */
00002 #ifndef EWL_TREE_H
00003 #define EWL_TREE_H
00004 
00005 #include "ewl_mvc.h"
00006 #include "ewl_row.h"
00007 
00075 #define EWL_TREE_TYPE "tree"
00076 
00081 #define EWL_TREE_IS(w) (ewl_widget_type_is(EWL_WIDGET(w), EWL_TREE_TYPE))
00082 
00087 #define EWL_TREE(t) ((Ewl_Tree *)t)
00088 
00092 typedef struct Ewl_Tree Ewl_Tree;
00093 
00097 struct Ewl_Tree
00098 {
00099         Ewl_MVC mvc;                 
00101         const Ewl_View *content_view;        
00103         Ewl_Widget *header;         
00104         Ewl_Widget *rows;         
00106         unsigned int *rowcache; 
00108         Ewl_Tree_Selection_Type type;         
00110         Ecore_Hash *expansions;        
00112         struct
00113         {
00114                 unsigned int column;        
00115                 Ewl_Sort_Direction direction; 
00116         } sort;                        
00118         unsigned int columns;        
00119         unsigned char fixed:1;    
00120         unsigned char headers_visible:1; 
00121         unsigned char row_color_alternate:1; 
00122 };
00123 
00124 /*
00125  * Tree view/controller manipulation
00126  */
00127 Ewl_Widget         *ewl_tree_new(void);
00128 int                  ewl_tree_init(Ewl_Tree *tree);
00129 
00130 void                 ewl_tree_column_count_set(Ewl_Tree *tree,
00131                                                 unsigned int count);
00132 unsigned int         ewl_tree_column_count_get(Ewl_Tree *tree);
00133 void                 ewl_tree_column_fixed_size_set(Ewl_Tree *tree, 
00134                                         unsigned int col, unsigned int fixed);
00135 unsigned int         ewl_tree_column_fixed_size_get(Ewl_Tree *tree, 
00136                                         unsigned int col);
00137 void                 ewl_tree_column_initial_size_set(Ewl_Tree *tree, 
00138                                         unsigned int col, int size);
00139 int                 ewl_tree_column_initial_size_get(Ewl_Tree *tree, 
00140                                         unsigned int col);
00141 
00142 void                 ewl_tree_headers_visible_set(Ewl_Tree *tree,
00143                                                unsigned char visible);
00144 unsigned int         ewl_tree_headers_visible_get(Ewl_Tree *tree);
00145 
00146 void                 ewl_tree_content_view_set(Ewl_Tree *tree, const Ewl_View *view);
00147 Ewl_View        *ewl_tree_content_view_get(Ewl_Tree *tree);
00148 
00149 Ewl_Tree_Selection_Type ewl_tree_selection_type_get(Ewl_Tree *tree);
00150 void                  ewl_tree_selection_type_set(Ewl_Tree *tree,
00151                                                 Ewl_Tree_Selection_Type type);
00152 
00153 void                 ewl_tree_fixed_rows_set(Ewl_Tree *tree, unsigned int fixed);
00154 unsigned int         ewl_tree_fixed_rows_get(Ewl_Tree *tree);
00155 
00156 void                 ewl_tree_alternate_row_colors_set(Ewl_Tree *tree,
00157                                                 unsigned char alternate);
00158 unsigned int         ewl_tree_alternate_row_colors_get(Ewl_Tree *tree);
00159 
00160 Ewl_Widget        *ewl_tree_content_widget_get(Ewl_Tree *tree);
00161 
00162 void                 ewl_tree_row_expand(Ewl_Tree *tree, void *data,
00163                                                 unsigned int row);
00164 void                 ewl_tree_row_collapse(Ewl_Tree *tree, void *data,
00165                                                 unsigned int row);
00166 
00167 unsigned int         ewl_tree_row_expanded_is(Ewl_Tree *tree, void *data,
00168                                                 unsigned int row);
00169 
00170 void                 ewl_tree_kinetic_scrolling_set(Ewl_Tree *tree,
00171                                                 Ewl_Kinetic_Scroll type);
00172 Ewl_Kinetic_Scroll ewl_tree_kinetic_scrolling_get(Ewl_Tree *tree);
00173 void                 ewl_tree_kinetic_max_velocity_set(Ewl_Tree *tree, double v);
00174 double                 ewl_tree_kinetic_max_velocity_get(Ewl_Tree *tree);
00175 void                 ewl_tree_kinetic_min_velocity_set(Ewl_Tree *tree, double v);
00176 double                 ewl_tree_kinetic_min_velocity_get(Ewl_Tree *tree);
00177 void                 ewl_tree_kinetic_dampen_set(Ewl_Tree *tree, double d);
00178 double                 ewl_tree_kinetic_dampen_get(Ewl_Tree *tree);
00179 void                 ewl_tree_kinetic_fps_set(Ewl_Tree *tree, int fps); 
00180 int                 ewl_tree_kinetic_fps_get(Ewl_Tree *tree);
00181 
00182 /*
00183  * Internal stuff.
00184  */
00185 void ewl_tree_cb_destroy(Ewl_Widget *w, void *ev, void *data);
00186 void ewl_tree_cb_configure(Ewl_Widget *w, void *ev, void *data);
00187 void ewl_tree_cb_column_sort(Ewl_Widget *w, void *ev, void *data);
00188 
00189 /*
00190  * Ewl_Tree_Node stuff
00191  */
00192 #define EWL_TREE_NODE_TYPE "node"
00193 
00198 #define EWL_TREE_NODE_IS(w) (ewl_widget_type_is(EWL_WIDGET(w), EWL_TREE_NODE_TYPE))
00199 
00200 #define EWL_TREE_NODE(n) ((Ewl_Tree_Node *)n)
00201 
00205 typedef struct Ewl_Tree_Node Ewl_Tree_Node;
00206 
00211 struct Ewl_Tree_Node
00212 {
00213         Ewl_MVC mvc;
00214 
00215         Ewl_Widget *tree;                
00216         Ewl_Widget *handle;                
00217         Ewl_Row *row;                        
00219         struct
00220         {
00221                 const Ewl_Model *model;        
00222                 void *data;                
00223         } expansion;
00224 
00225         unsigned int row_num;                
00226         Ewl_Tree_Node_Flags expanded;
00227 
00228         unsigned char built_children:1;        
00229 };
00230 
00231 Ewl_Widget        *ewl_tree_node_new(void);
00232 int                 ewl_tree_node_init(Ewl_Tree_Node *node);
00233 
00234 void                 ewl_tree_node_expandable_set(Ewl_Tree_Node *node, 
00235                                                 unsigned int expandable);
00236 unsigned int         ewl_tree_node_expandable_get(Ewl_Tree_Node *node);
00237 
00238 void                 ewl_tree_node_expand(Ewl_Tree_Node *node);
00239 void                 ewl_tree_node_collapse(Ewl_Tree_Node *node);
00240 
00241 unsigned int         ewl_tree_node_expanded_is(Ewl_Tree_Node *node);
00242 void                 ewl_tree_node_row_set(Ewl_Tree_Node *node, Ewl_Row *row);
00243 
00244 /*
00245  * Internally used callbacks, override at your own risk.
00246  */
00247 void ewl_tree_cb_node_configure(Ewl_Widget *w, void *ev_data, void *user_data);
00248 void ewl_tree_cb_node_data_unref(Ewl_Widget *w, void *ev_data, void *user_data);
00249 void ewl_tree_cb_node_realize(Ewl_Widget *w, void *ev, void *data);
00250 void ewl_tree_cb_node_toggle(Ewl_Widget *w, void *ev_data, void *user_data);
00251 
00252 void ewl_tree_cb_node_child_show(Ewl_Container *c, Ewl_Widget *w);
00253 void ewl_tree_cb_node_child_hide(Ewl_Container *c, Ewl_Widget *w);
00254 void ewl_tree_cb_node_resize(Ewl_Container *c, Ewl_Widget *w, int size,
00255                                                      Ewl_Orientation o);
00256 void ewl_tree_cb_node_child_add(Ewl_Container *c, Ewl_Widget *w);
00257 void ewl_tree_cb_node_child_del(Ewl_Container *c, Ewl_Widget *w, int idx);
00258 
00263 #endif
00264 

Copyright © Enlightenment.org

Enlightened Widget Library Documentation Generated: Sat May 17 16:49:09 2008