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,
00147                                         const Ewl_View *view);
00148 const Ewl_View          *ewl_tree_content_view_get(Ewl_Tree *tree);
00149 
00150 Ewl_Tree_Selection_Type  ewl_tree_selection_type_get(Ewl_Tree *tree);
00151 void                     ewl_tree_selection_type_set(Ewl_Tree *tree,
00152                                         Ewl_Tree_Selection_Type type);
00153 
00154 void                     ewl_tree_fixed_rows_set(Ewl_Tree *tree,
00155                                         unsigned int fixed);
00156 unsigned int             ewl_tree_fixed_rows_get(Ewl_Tree *tree);
00157 
00158 void                     ewl_tree_alternate_row_colors_set(Ewl_Tree *tree,
00159                                         unsigned char alternate);
00160 unsigned int             ewl_tree_alternate_row_colors_get(Ewl_Tree *tree);
00161 
00162 Ewl_Widget              *ewl_tree_content_widget_get(Ewl_Tree *tree);
00163 
00164 void                     ewl_tree_row_expand(Ewl_Tree *tree, void *data,
00165                                         unsigned int row);
00166 void                     ewl_tree_row_collapse(Ewl_Tree *tree, void *data,
00167                                         unsigned int row);
00168 
00169 unsigned int             ewl_tree_row_expanded_is(Ewl_Tree *tree, void *data,
00170                                         unsigned int row);
00171 
00172 void                     ewl_tree_row_visible_ensure(Ewl_Tree *tree,
00173                                         void *data, unsigned int row);
00174 
00175 void                     ewl_tree_kinetic_scrolling_set(Ewl_Tree *tree,
00176                                         Ewl_Kinetic_Scroll type);
00177 Ewl_Kinetic_Scroll       ewl_tree_kinetic_scrolling_get(Ewl_Tree *tree);
00178 void                     ewl_tree_kinetic_max_velocity_set(Ewl_Tree *tree,
00179                                         double v);
00180 double                   ewl_tree_kinetic_max_velocity_get(Ewl_Tree *tree);
00181 void                     ewl_tree_kinetic_min_velocity_set(Ewl_Tree *tree,
00182                                         double v);
00183 double                   ewl_tree_kinetic_min_velocity_get(Ewl_Tree *tree);
00184 void                     ewl_tree_kinetic_dampen_set(Ewl_Tree *tree, double d);
00185 double                   ewl_tree_kinetic_dampen_get(Ewl_Tree *tree);
00186 void                     ewl_tree_kinetic_fps_set(Ewl_Tree *tree, int fps); 
00187 int                      ewl_tree_kinetic_fps_get(Ewl_Tree *tree);
00188 
00189 /*
00190  * Internal stuff.
00191  */
00192 void ewl_tree_cb_destroy(Ewl_Widget *w, void *ev, void *data);
00193 void ewl_tree_cb_configure(Ewl_Widget *w, void *ev, void *data);
00194 void ewl_tree_cb_column_sort(Ewl_Widget *w, void *ev, void *data);
00195 
00196 /*
00197  * Ewl_Tree_Node stuff
00198  */
00199 #define EWL_TREE_NODE_TYPE "node"
00200 
00205 #define EWL_TREE_NODE_IS(w) (ewl_widget_type_is(EWL_WIDGET(w), EWL_TREE_NODE_TYPE))
00206 
00207 #define EWL_TREE_NODE(n) ((Ewl_Tree_Node *)n)
00208 
00212 typedef struct Ewl_Tree_Node Ewl_Tree_Node;
00213 
00218 struct Ewl_Tree_Node
00219 {
00220         Ewl_MVC mvc;
00221 
00222         Ewl_Widget *tree;                
00223         Ewl_Widget *handle;                
00224         Ewl_Row *row;                        
00226         struct
00227         {
00228                 const Ewl_Model *model;        
00229                 void *data;                
00230         } expansion;
00231 
00232         unsigned int row_num;                
00233         Ewl_Tree_Node_Flags expanded;
00234 
00235         unsigned char built_children:1;        
00236 };
00237 
00238 Ewl_Widget        *ewl_tree_node_new(void);
00239 int                 ewl_tree_node_init(Ewl_Tree_Node *node);
00240 
00241 void                 ewl_tree_node_expandable_set(Ewl_Tree_Node *node, 
00242                                                 unsigned int expandable);
00243 unsigned int         ewl_tree_node_expandable_get(Ewl_Tree_Node *node);
00244 
00245 void                 ewl_tree_node_expand(Ewl_Tree_Node *node);
00246 void                 ewl_tree_node_collapse(Ewl_Tree_Node *node);
00247 
00248 unsigned int         ewl_tree_node_expanded_is(Ewl_Tree_Node *node);
00249 void                 ewl_tree_node_row_set(Ewl_Tree_Node *node, Ewl_Row *row);
00250 
00251 /*
00252  * Internally used callbacks, override at your own risk.
00253  */
00254 void ewl_tree_cb_node_configure(Ewl_Widget *w, void *ev_data, void *user_data);
00255 void ewl_tree_cb_node_data_unref(Ewl_Widget *w, void *ev_data, void *user_data);
00256 void ewl_tree_cb_node_realize(Ewl_Widget *w, void *ev, void *data);
00257 void ewl_tree_cb_node_toggle(Ewl_Widget *w, void *ev_data, void *user_data);
00258 
00259 void ewl_tree_cb_node_child_show(Ewl_Container *c, Ewl_Widget *w);
00260 void ewl_tree_cb_node_child_hide(Ewl_Container *c, Ewl_Widget *w);
00261 void ewl_tree_cb_node_resize(Ewl_Container *c, Ewl_Widget *w, int size,
00262                                                      Ewl_Orientation o);
00263 void ewl_tree_cb_node_child_add(Ewl_Container *c, Ewl_Widget *w);
00264 void ewl_tree_cb_node_child_del(Ewl_Container *c, Ewl_Widget *w, int idx);
00265 
00270 #endif
00271 

Copyright © Enlightenment.org

Enlightened Widget Library Documentation Generated: Fri Jan 23 21:56:25 2009