Download

Support

lib/ewl_mvc.h

Go to the documentation of this file.
00001 /* vim: set sw=8 ts=8 sts=8 expandtab: */
00002 #ifndef EWL_MVC_H
00003 #define EWL_MVC_H
00004 
00005 #include "ewl_box.h"
00006 #include "ewl_model.h"
00007 #include "ewl_view.h"
00008 
00025 #define EWL_MVC_TYPE "mvc"
00026 
00031 #define EWL_MVC_IS(w) (ewl_widget_type_is(EWL_WIDGET(w), EWL_MVC_TYPE))
00032 
00037 #define EWL_SELECTION(x) ((Ewl_Selection *)x)
00038 
00042 typedef struct Ewl_Selection Ewl_Selection;
00043 
00047 struct Ewl_Selection
00048 {
00049         Ewl_Selection_Type type;        
00050         const Ewl_Model *model;                
00052         void *highlight;                
00053         void *data;                        
00054 };
00055 
00060 #define EWL_SELECTION_IDX(x) ((Ewl_Selection_Idx *)x)
00061 
00065 typedef struct Ewl_Selection_Idx Ewl_Selection_Idx;
00066 
00070 struct Ewl_Selection_Idx
00071 {
00072         Ewl_Selection sel;                
00074         unsigned int row;                
00075         unsigned int column;                
00076 };
00077 
00082 #define EWL_SELECTION_RANGE(x) ((Ewl_Selection_Range *)x)
00083 
00087 typedef struct Ewl_Selection_Range Ewl_Selection_Range;
00088 
00092 struct Ewl_Selection_Range
00093 {
00094         Ewl_Selection sel;        
00096         struct
00097         {
00098                 unsigned int row;
00099                 unsigned int column;
00100         } start,                
00101           end;                        
00102 };
00103 
00107 typedef struct Ewl_MVC Ewl_MVC;
00108 
00113 #define EWL_MVC(mvc) ((Ewl_MVC *)mvc)
00114 
00118 struct Ewl_MVC
00119 {
00120         Ewl_Box box;                
00122         void *data;                
00123         const Ewl_View *view;        
00124         const Ewl_Model *model;        
00126         struct {
00127                 void (*view_change)(Ewl_MVC *mvc);         
00128                 void (*selected_change)(Ewl_MVC *mvc);        
00129         } cb;                        
00131         Ecore_List *selected;                
00133         Ewl_Selection_Mode selection_mode;        
00134         unsigned char dirty:1;                
00135 };
00136 
00137 int                 ewl_mvc_init(Ewl_MVC *mvc);
00138 
00139 void                 ewl_mvc_view_set(Ewl_MVC *mvc, const Ewl_View *view);
00140 const Ewl_View         *ewl_mvc_view_get(Ewl_MVC *mvc);
00141 
00142 void                 ewl_mvc_model_set(Ewl_MVC *mvc, const Ewl_Model *model);
00143 const Ewl_Model        *ewl_mvc_model_get(Ewl_MVC *mvc);
00144 
00145 void                 ewl_mvc_data_set(Ewl_MVC *mvc, void *data);
00146 void                 *ewl_mvc_data_get(Ewl_MVC *mvc);
00147 
00148 void                 ewl_mvc_dirty_set(Ewl_MVC *mvc, unsigned int dirty);
00149 unsigned int         ewl_mvc_dirty_get(Ewl_MVC *mvc);
00150 
00151 void                 ewl_mvc_selection_mode_set(Ewl_MVC *mvc,
00152                                         Ewl_Selection_Mode mode);
00153 Ewl_Selection_Mode ewl_mvc_selection_mode_get(Ewl_MVC *mvc);
00154 
00155 void                 ewl_mvc_selected_clear(Ewl_MVC *mvc);
00156 
00157 void                 ewl_mvc_selected_list_set(Ewl_MVC *mvc, Ecore_List *list);
00158 Ecore_List        *ewl_mvc_selected_list_get(Ewl_MVC *mvc);
00159 
00160 void                 ewl_mvc_selected_range_add(Ewl_MVC *mvc, 
00161                                         const Ewl_Model * model,
00162                                                 void *data,
00163                                                 unsigned int srow,
00164                                                 unsigned int scolumn,
00165                                                 unsigned int erow,
00166                                                 unsigned int ecolumn);
00167 
00168 void                 ewl_mvc_selected_set(Ewl_MVC *mvc, const Ewl_Model *model,
00169                                         void *data, unsigned int row,
00170                                         unsigned int column);
00171 void                 ewl_mvc_selected_add(Ewl_MVC *mvc, const Ewl_Model *model,
00172                                         void *data, unsigned int row,
00173                                         unsigned int column);
00174 Ewl_Selection_Idx *ewl_mvc_selected_get(Ewl_MVC *mvc);
00175 void                 ewl_mvc_selected_rm(Ewl_MVC *mvc, void *data, unsigned int row,
00176                                         unsigned int column);
00177 
00178 unsigned int         ewl_mvc_selected_count_get(Ewl_MVC *mvc);
00179 unsigned int         ewl_mvc_selected_is(Ewl_MVC *mvc, void *data, unsigned int row,
00180                                         unsigned int column);
00181 
00182 Ewl_Selection        *ewl_mvc_selection_index_new(const Ewl_Model *model, void *data,
00183                                                         unsigned int row,
00184                                                         unsigned int column);
00185 Ewl_Selection        *ewl_mvc_selection_range_new(const Ewl_Model *model, void *data,
00186                                                 unsigned int srow,
00187                                                 unsigned int scolumn,
00188                                                 unsigned int erow,
00189                                                 unsigned int ecolumn);
00190 
00191 void                  ewl_mvc_highlight(Ewl_MVC *mvc, Ewl_Container *c,
00192                                         Ewl_Widget *(*widget)(Ewl_MVC *mvc,
00193                                                 void *data, unsigned int row,
00194                                                 unsigned int column));
00195 
00196 /*
00197  * internal
00198  */
00199 void                 ewl_mvc_view_change_cb_set(Ewl_MVC *mvc, void (*cb)(Ewl_MVC *mvc));
00200 void                 ewl_mvc_selected_change_cb_set(Ewl_MVC *mvc, void (*cb)(Ewl_MVC *mvc));
00201 
00202 void                 ewl_mvc_cb_destroy(Ewl_Widget *w, void *ev, void *data);
00203 void                 ewl_mvc_cb_data_unref(Ewl_Widget *w, void *ev, void *data);
00204 
00205 void                 ewl_mvc_handle_click(Ewl_MVC *mvc, const Ewl_Model *model,
00206                                         void *data, unsigned int row,
00207                                         unsigned int column);
00208 
00213 #endif
00214 

Copyright © Enlightenment.org

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