1 #ifndef ELM_WIDGET_FILESELECTOR_BUTTON_H 2 #define ELM_WIDGET_FILESELECTOR_BUTTON_H 3 4 #include "Elementary.h" 5 6 #include <Eio.h> 7 8 /* DO NOT USE THIS HEADER UNLESS YOU ARE PREPARED FOR BREAKING OF YOUR 9 * CODE. THIS IS ELEMENTARY'S INTERNAL WIDGET API (for now) AND IS NOT 10 * FINAL. CALL elm_widget_api_check(ELM_INTERNAL_API_VERSION) TO CHECK 11 * IT AT RUNTIME. 12 */ 13 14 /** 15 * @addtogroup Widget 16 * @{ 17 * 18 * @section elm-fileselector-button-class The Elementary Fileselector Button Class 19 * 20 * Elementary, besides having the @ref Fileselector_Button widget, 21 * exposes its foundation -- the Elementary Fileselector Button Class 22 * -- in order to create other widgets which are a fileselector_button 23 * with some more logic on top. 24 */ 25 26 /** 27 * Base button smart data extended with fileselector_button instance data. 28 */ 29 typedef struct _Elm_Fileselector_Button_Data \ 30 Elm_Fileselector_Button_Data; 31 struct _Elm_Fileselector_Button_Data 32 { 33 Evas_Object *obj; // the object itself 34 Evas_Object *fs, *fsw; 35 const char *window_title; 36 Evas_Coord w, h; 37 38 struct 39 { 40 Efl_Model *model; 41 const char *path; 42 Efl_Model *selection; 43 const char *selection_path; 44 const char *current_name; 45 Evas_Coord_Size thumbnail_size; 46 Elm_Fileselector_Mode mode; 47 Elm_Fileselector_Sort sort_type; 48 Eina_Bool expandable : 1; 49 Eina_Bool folder_only : 1; 50 Eina_Bool is_save : 1; 51 Eina_Bool multi : 1; 52 Eina_Bool hidden_visible : 1; 53 } fsd; 54 55 Eina_Bool inwin_mode : 1; 56 }; 57 58 /** 59 * @} 60 */ 61 62 #define ELM_FILESELECTOR_BUTTON_DATA_GET(o, sd) \ 63 Elm_Fileselector_Button_Data * sd = efl_data_scope_get(o, ELM_FILESELECTOR_BUTTON_CLASS) 64 65 #define ELM_FILESELECTOR_BUTTON_DATA_GET_OR_RETURN(o, ptr) \ 66 ELM_FILESELECTOR_BUTTON_DATA_GET(o, ptr); \ 67 if (EINA_UNLIKELY(!ptr)) \ 68 { \ 69 ERR("No widget data for object %p (%s)", \ 70 o, evas_object_type_get(o)); \ 71 return; \ 72 } 73 74 #define ELM_FILESELECTOR_BUTTON_DATA_GET_OR_RETURN_VAL(o, ptr, val) \ 75 ELM_FILESELECTOR_BUTTON_DATA_GET(o, ptr); \ 76 if (EINA_UNLIKELY(!ptr)) \ 77 { \ 78 ERR("No widget data for object %p (%s)", \ 79 o, evas_object_type_get(o)); \ 80 return val; \ 81 } 82 83 #define ELM_FILESELECTOR_BUTTON_CHECK(obj) \ 84 if (EINA_UNLIKELY(!efl_isa((obj), ELM_FILESELECTOR_BUTTON_CLASS))) \ 85 return 86 87 #endif 88