1 #ifdef E_TYPEDEFS
2 
3 /* IGNORE this code for now! */
4 
5 typedef enum _E_Fm2_View_Mode
6 {
7    E_FM2_VIEW_MODE_ICONS, /* regular layout row by row like text */
8    E_FM2_VIEW_MODE_GRID_ICONS, /* regular grid layout */
9    E_FM2_VIEW_MODE_CUSTOM_ICONS, /* icons go anywhere you drop them (desktop) */
10 
11    /* FIXME: not going to implement this at this stage */
12    E_FM2_VIEW_MODE_CUSTOM_GRID_ICONS, /* icons go anywhere you drop them but align to a grid */
13    /* FIXME: not going to implement this at this stage */
14    E_FM2_VIEW_MODE_CUSTOM_SMART_GRID_ICONS, /* icons go anywhere you drop them but try align to icons nearby */
15    /* FIXME: not going to implement this at this stage */
16    E_FM2_VIEW_MODE_LIST /* vertical fileselector list */
17 } E_Fm2_View_Mode;
18 
19 typedef enum _E_Fm2_Menu_Flags
20 {
21    E_FM2_MENU_NO_REFRESH = (1 << 0),
22    E_FM2_MENU_NO_SHOW_HIDDEN = (1 << 1),
23    E_FM2_MENU_NO_REMEMBER_ORDERING = (1 << 2),
24    E_FM2_MENU_NO_NEW = (1 << 3),
25    E_FM2_MENU_NO_DELETE = (1 << 4),
26    E_FM2_MENU_NO_RENAME = (1 << 5),
27    E_FM2_MENU_NO_CUT = (1 << 6),
28    E_FM2_MENU_NO_COPY = (1 << 7),
29    E_FM2_MENU_NO_PASTE = (1 << 8),
30    E_FM2_MENU_NO_SYMLINK = (1 << 9),
31    E_FM2_MENU_NO_VIEW_MENU = (1 << 10),
32    E_FM2_MENU_NO_INHERIT_PARENT = (1 << 11),
33    E_FM2_MENU_NO_ACTIVATE_CHANGE = (1 << 12),
34    E_FM2_MENU_NO_VIEW_CHANGE = (1 << 13),
35 } E_Fm2_Menu_Flags;
36 
37 typedef enum _E_Fm2_View_Flags
38 {
39    E_FM2_VIEW_NO_FLAGS = 0,
40    E_FM2_VIEW_LOAD_DIR_CUSTOM = (1 << 0),
41    E_FM2_VIEW_SAVE_DIR_CUSTOM = (1 << 1),
42    E_FM2_VIEW_INHERIT_DIR_CUSTOM = (1 << 2),
43    E_FM2_VIEW_DIR_CUSTOM = (E_FM2_VIEW_LOAD_DIR_CUSTOM |
44                             E_FM2_VIEW_SAVE_DIR_CUSTOM |
45                             E_FM2_VIEW_INHERIT_DIR_CUSTOM)
46 } E_Fm2_View_Flags;
47 
48 typedef struct _E_Fm2_Config    E_Fm2_Config;
49 typedef struct _E_Fm2_Icon      E_Fm2_Icon;
50 typedef struct _E_Fm2_Icon_Info E_Fm2_Icon_Info;
51 
52 #include "e_fm_shared_types.h"
53 
54 #else
55 #ifndef E_FM_H
56 #define E_FM_H
57 
58 struct _E_Fm2_Config
59 {
60    /* general view mode */
61    struct
62    {
63       E_Fm2_View_Mode mode;
64       Eina_Bool       open_dirs_in_place E_BITFIELD;
65       Eina_Bool       selector E_BITFIELD;
66       Eina_Bool       single_click E_BITFIELD;
67       Eina_Bool       no_subdir_jump E_BITFIELD;
68       Eina_Bool       no_subdir_drop E_BITFIELD;
69       Eina_Bool       always_order E_BITFIELD;
70       Eina_Bool       link_drop E_BITFIELD;
71       Eina_Bool       fit_custom_pos E_BITFIELD;
72       Eina_Bool       no_typebuf_set E_BITFIELD;
73       Eina_Bool       no_click_rename E_BITFIELD;
74       unsigned int    single_click_delay;
75    } view;
76    /* display of icons */
77    struct
78    {
79       struct
80       {
81          int w, h;
82       } icon, list;
83       struct
84       {
85          unsigned char w;
86          unsigned char h;
87       } fixed;
88       struct
89       {
90          Eina_Bool show E_BITFIELD;
91       } extension;
92       const char *key_hint;
93       unsigned int max_thumb_size;
94    } icon;
95    /* how to sort files */
96    struct
97    {
98       struct
99       {
100          Eina_Bool no_case E_BITFIELD;
101          Eina_Bool size E_BITFIELD;
102          Eina_Bool extension E_BITFIELD;
103          Eina_Bool mtime E_BITFIELD;
104          struct
105          {
106             Eina_Bool first E_BITFIELD;
107             Eina_Bool last E_BITFIELD;
108          } dirs;
109       } sort;
110    } list;
111    /* control how you can select files */
112    struct
113    {
114       Eina_Bool single E_BITFIELD;
115       Eina_Bool windows_modifiers E_BITFIELD;
116    } selection;
117    /* the background - if any, and how to handle it */
118    /* FIXME: not implemented yet */
119    struct
120    {
121       const char *background, *frame, *icons;
122       Eina_Bool   fixed E_BITFIELD;
123    } theme;
124    Eina_Bool secure_rm E_BITFIELD;
125 };
126 
127 struct _E_Fm2_Icon_Info
128 {
129    Evas_Object  *fm;
130    E_Fm2_Icon   *ic;
131    const char   *file;
132    const char   *mime;
133    const char   *label;
134    const char   *comment;
135    const char   *generic;
136    const char   *icon;
137    const char   *link;
138    const char   *real_link;
139    const char   *category;
140    struct stat   statinfo;
141    unsigned char icon_type;
142    Eina_Bool     mount E_BITFIELD;
143    Eina_Bool     removable E_BITFIELD;
144    Eina_Bool     removable_full E_BITFIELD;
145    Eina_Bool     deleted E_BITFIELD;
146    Eina_Bool     broken_link E_BITFIELD;
147 };
148 
149 typedef void (*E_Fm_Cb)(void *data, Evas_Object *obj, E_Menu *m, E_Fm2_Icon_Info *info);
150 
151 EINTERN int           e_fm2_init(void);
152 EINTERN int           e_fm2_shutdown(void);
153 E_API void             e_fm2_die(void);
154 E_API Evas_Object     *e_fm2_add(Evas *evas);
155 E_API void             e_fm2_path_set(Evas_Object *obj, const char *dev, const char *path);
156 E_API void             e_fm2_custom_theme_set(Evas_Object *obj, const char *path);
157 E_API void             e_fm2_custom_theme_content_set(Evas_Object *obj, const char *content);
158 E_API void             e_fm2_underlay_show(Evas_Object *obj);
159 E_API void             e_fm2_underlay_hide(Evas_Object *obj);
160 E_API void             e_fm2_all_unsel(Evas_Object *obj);
161 E_API void             e_fm2_all_sel(Evas_Object *obj);
162 E_API void             e_fm2_first_sel(Evas_Object *obj);
163 E_API void             e_fm2_last_sel(Evas_Object *obj);
164 E_API void             e_fm2_path_get(Evas_Object *obj, const char **dev, const char **path);
165 E_API void             e_fm2_refresh(Evas_Object *obj);
166 E_API const char      *e_fm2_real_path_get(Evas_Object *obj);
167 E_API int              e_fm2_has_parent_get(Evas_Object *obj);
168 E_API void             e_fm2_parent_go(Evas_Object *obj);
169 E_API void             e_fm2_config_set(Evas_Object *obj, E_Fm2_Config *cfg);
170 E_API E_Fm2_Config    *e_fm2_config_get(Evas_Object *obj);
171 E_API Eina_List       *e_fm2_selected_list_get(Evas_Object *obj);
172 E_API Eina_List       *e_fm2_all_list_get(Evas_Object *obj);
173 E_API E_Fm2_Icon_Info *e_fm2_icon_file_get(Evas_Object *obj, const char *file);
174 E_API void             e_fm2_select_set(Evas_Object *obj, const char *file, int select);
175 E_API void             e_fm2_deselect_all(Evas_Object *obj);
176 E_API void             e_fm2_file_show(Evas_Object *obj, const char *file);
177 E_API void             e_fm2_icon_menu_replace_callback_set(Evas_Object *obj, E_Fm_Cb func, void *data);
178 E_API void             e_fm2_icon_menu_start_extend_callback_set(Evas_Object *obj, E_Fm_Cb func, void *data);
179 E_API void             e_fm2_icon_menu_end_extend_callback_set(Evas_Object *obj, E_Fm_Cb func, void *data);
180 E_API void             e_fm2_icon_menu_flags_set(Evas_Object *obj, E_Fm2_Menu_Flags flags);
181 E_API E_Fm2_Menu_Flags e_fm2_icon_menu_flags_get(Evas_Object *obj);
182 E_API void             e_fm2_view_flags_set(Evas_Object *obj, E_Fm2_View_Flags flags);
183 E_API E_Fm2_View_Flags e_fm2_view_flags_get(Evas_Object *obj);
184 E_API E_Object         *e_fm2_window_object_get(Evas_Object *obj);
185 E_API void             e_fm2_window_object_set(Evas_Object *obj, E_Object *eobj);
186 E_API void             e_fm2_window_set(Evas_Object *obj, Evas_Object *win);
187 E_API void             e_fm2_icons_update(Evas_Object *obj);
188 
189 E_API void             e_fm2_pan_set(Evas_Object *obj, Evas_Coord x, Evas_Coord y);
190 E_API void             e_fm2_pan_get(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y);
191 E_API void             e_fm2_pan_max_get(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y);
192 E_API void             e_fm2_pan_child_size_get(Evas_Object *obj, Evas_Coord *w, Evas_Coord *h);
193 
194 E_API void             e_fm2_all_icons_update(void);
195 
196 E_API void             e_fm2_operation_abort(int id);
197 
198 E_API Evas_Object     *e_fm2_icon_get(Evas *evas, E_Fm2_Icon *ic, Evas_Smart_Cb gen_func,
199                                      void *data, int force_gen, const char **type_ret);
200 E_API E_Fm2_Icon_Info *e_fm2_icon_file_info_get(E_Fm2_Icon *ic);
201 E_API void             e_fm2_icon_geometry_get(E_Fm2_Icon *ic, int *x, int *y, int *w, int *h);
202 E_API Eina_Bool        e_fm2_typebuf_visible_get(Evas_Object *obj);
203 E_API void             e_fm2_typebuf_clear(Evas_Object *obj);
204 E_API void             e_fm2_overlay_clip_to(Evas_Object *fm, Evas_Object *clip);
205 
206 E_API void             e_fm2_client_data(Ecore_Ipc_Event_Client_Data *e);
207 E_API void             e_fm2_client_del(Ecore_Ipc_Event_Client_Del *e);
208 E_API E_Fm2_View_Mode  e_fm2_view_mode_get(Evas_Object *obj);
209 E_API Eina_Bool        e_fm2_optimal_size_calc(Evas_Object *obj, int minw, int maxw, int maxh, int *w, int *h);
210 E_API const char      *e_fm2_real_path_map(const char *dev, const char *path);
211 E_API void             e_fm2_favorites_init(void);
212 E_API unsigned int     e_fm2_selected_count(Evas_Object *obj);
213 E_API const char      *e_fm2_desktop_url_eval(const char *val);
214 E_API E_Fm2_Icon_Info *e_fm2_drop_icon_get(Evas_Object *obj);
215 E_API void             e_fm2_drop_menu(Evas_Object *e_fm, char *args);
216 E_API Eina_List       *e_fm2_uri_path_list_get(const Eina_List *uri_list);
217 E_API Efreet_Desktop *e_fm2_desktop_get(Evas_Object *obj);
218 
219 E_API int e_fm2_client_file_move(Evas_Object *e_fm, const char *args);
220 E_API int e_fm2_client_file_copy(Evas_Object *e_fm, const char *args);
221 E_API int e_fm2_client_file_symlink(Evas_Object *e_fm, const char *args);
222 
223 E_API int              _e_fm2_client_mount(const char *udi, const char *mountpoint);
224 E_API int              _e_fm2_client_unmount(const char *udi);
225 E_API void             _e_fm2_file_force_update(const char *path);
226 
227 E_API E_Fm2_Icon      *e_fm2_icon_editing_get(Evas_Object *obj);
228 #endif
229 #endif
230