diff options
author | David Walter Seikel | 2014-05-04 19:47:26 +1000 |
---|---|---|
committer | David Walter Seikel | 2014-05-04 19:47:26 +1000 |
commit | 678db28766fb6bcc7bcdc8e598f8aab3bda5f148 (patch) | |
tree | a1e107ce4632ee97fb3028d3a68f1a72467b5813 /src/extantz/files.c | |
parent | Major clean up of the file selector. (diff) | |
download | SledjHamr-678db28766fb6bcc7bcdc8e598f8aab3bda5f148.zip SledjHamr-678db28766fb6bcc7bcdc8e598f8aab3bda5f148.tar.gz SledjHamr-678db28766fb6bcc7bcdc8e598f8aab3bda5f148.tar.bz2 SledjHamr-678db28766fb6bcc7bcdc8e598f8aab3bda5f148.tar.xz |
Make the file selector actually useful.
Diffstat (limited to 'src/extantz/files.c')
-rw-r--r-- | src/extantz/files.c | 45 |
1 files changed, 32 insertions, 13 deletions
diff --git a/src/extantz/files.c b/src/extantz/files.c index b705e21..024e2df 100644 --- a/src/extantz/files.c +++ b/src/extantz/files.c | |||
@@ -58,9 +58,10 @@ static void _big_icon_clicked(void *data, Evas_Object *obj EINA_UNUSED, void *ev | |||
58 | elm_fileselector_thumbnail_size_set(fs, 128, 128); | 58 | elm_fileselector_thumbnail_size_set(fs, 128, 128); |
59 | } | 59 | } |
60 | 60 | ||
61 | static void _OK_clicked(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) | 61 | static void my_fileselector_activated(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) |
62 | { | 62 | { |
63 | Evas_Object *fs = data; | 63 | fangWin *me = data; |
64 | Evas_Object *fs = me->data; | ||
64 | 65 | ||
65 | if (elm_fileselector_multi_select_get(fs)) | 66 | if (elm_fileselector_multi_select_get(fs)) |
66 | { | 67 | { |
@@ -79,16 +80,19 @@ static void _OK_clicked(void *data, Evas_Object *obj EINA_UNUSED, void *event_in | |||
79 | 80 | ||
80 | printf("SELECTED file : %s\n", file); | 81 | printf("SELECTED file : %s\n", file); |
81 | } | 82 | } |
83 | evas_object_hide(me->win); | ||
82 | } | 84 | } |
83 | 85 | ||
84 | static void _CANCEL_clicked(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) | 86 | static void _CANCEL_clicked(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED) |
85 | { | 87 | { |
86 | // Evas_Object *fs = data; | 88 | fangWin *me = data; |
89 | |||
90 | evas_object_hide(me->win); | ||
87 | } | 91 | } |
88 | 92 | ||
89 | static void my_fileselector_activated(void *data, Evas_Object *obj, void *event_info) | 93 | static void _OK_clicked(void *data, Evas_Object *obj, void *event_info) |
90 | { | 94 | { |
91 | _OK_clicked(data, obj, event_info); | 95 | my_fileselector_activated(data, obj, event_info); |
92 | } | 96 | } |
93 | 97 | ||
94 | #if 0 | 98 | #if 0 |
@@ -136,7 +140,7 @@ void _on_fs_del(void *data, Evas_Object *obj, void *event_info) | |||
136 | elm_entry_editable_set(obj, EINA_FALSE); | 140 | elm_entry_editable_set(obj, EINA_FALSE); |
137 | } | 141 | } |
138 | 142 | ||
139 | fangWin *files_add(globals *ourGlobals) | 143 | fangWin *filesAdd(globals *ourGlobals, char *path, Eina_Bool multi, Eina_Bool save) |
140 | { | 144 | { |
141 | fangWin *me; | 145 | fangWin *me; |
142 | Widget *wid; | 146 | Widget *wid; |
@@ -153,8 +157,10 @@ fangWin *files_add(globals *ourGlobals) | |||
153 | elm_win_resize_object_add(me->win, bx); | 157 | elm_win_resize_object_add(me->win, bx); |
154 | 158 | ||
155 | fs = eo_add(ELM_OBJ_FILESELECTOR_CLASS, bx); | 159 | fs = eo_add(ELM_OBJ_FILESELECTOR_CLASS, bx); |
160 | me->data = fs; | ||
156 | wid = widgetAdd(me); | 161 | wid = widgetAdd(me); |
157 | wid->obj = fs; | 162 | wid->obj = fs; |
163 | wid->data = ourGlobals; | ||
158 | wid->on_del = _on_fs_del; | 164 | wid->on_del = _on_fs_del; |
159 | eo_do(fs, | 165 | eo_do(fs, |
160 | evas_obj_size_hint_weight_set(EVAS_HINT_EXPAND, EVAS_HINT_EXPAND), | 166 | evas_obj_size_hint_weight_set(EVAS_HINT_EXPAND, EVAS_HINT_EXPAND), |
@@ -166,10 +172,9 @@ fangWin *files_add(globals *ourGlobals) | |||
166 | ); | 172 | ); |
167 | elm_box_pack_end(bx, fs); | 173 | elm_box_pack_end(bx, fs); |
168 | 174 | ||
169 | // TODO - Should allow these to be set from the caller. | 175 | elm_fileselector_path_set(fs, path); |
170 | elm_fileselector_path_set(fs, elm_app_data_dir_get()); | 176 | elm_fileselector_is_save_set(fs, save); |
171 | elm_fileselector_is_save_set(fs, EINA_FALSE); | 177 | elm_fileselector_multi_select_set(fs, multi); |
172 | elm_fileselector_multi_select_set(fs, EINA_TRUE); | ||
173 | 178 | ||
174 | // TODO - Should allow these to be set from the caller. | 179 | // TODO - Should allow these to be set from the caller. |
175 | // TODO - Don't do these, it adds a horribly out of place button. | 180 | // TODO - Don't do these, it adds a horribly out of place button. |
@@ -182,7 +187,7 @@ fangWin *files_add(globals *ourGlobals) | |||
182 | // elm_fileselector_mime_types_filter_append(fs, "text/*", "text files"); | 187 | // elm_fileselector_mime_types_filter_append(fs, "text/*", "text files"); |
183 | 188 | ||
184 | // Call back for double click or Enter pressed on file. | 189 | // Call back for double click or Enter pressed on file. |
185 | evas_object_smart_callback_add(fs, "activated", my_fileselector_activated, fs); | 190 | evas_object_smart_callback_add(fs, "activated", my_fileselector_activated, me); |
186 | 191 | ||
187 | vbox = eo_add(ELM_OBJ_BOX_CLASS, me->win); | 192 | vbox = eo_add(ELM_OBJ_BOX_CLASS, me->win); |
188 | eo_do(vbox, | 193 | eo_do(vbox, |
@@ -264,14 +269,14 @@ fangWin *files_add(globals *ourGlobals) | |||
264 | bt = eo_add(ELM_OBJ_BUTTON_CLASS, me->win); | 269 | bt = eo_add(ELM_OBJ_BUTTON_CLASS, me->win); |
265 | elm_object_text_set(bt, "OK"); | 270 | elm_object_text_set(bt, "OK"); |
266 | eo_do(bt, evas_obj_visibility_set(EINA_TRUE)); | 271 | eo_do(bt, evas_obj_visibility_set(EINA_TRUE)); |
267 | evas_object_smart_callback_add(bt, "clicked", _OK_clicked, fs); | 272 | evas_object_smart_callback_add(bt, "clicked", _OK_clicked, me); |
268 | elm_box_pack_end(vbox, bt); | 273 | elm_box_pack_end(vbox, bt); |
269 | eo_unref(bt); | 274 | eo_unref(bt); |
270 | 275 | ||
271 | bt = eo_add(ELM_OBJ_BUTTON_CLASS, me->win); | 276 | bt = eo_add(ELM_OBJ_BUTTON_CLASS, me->win); |
272 | elm_object_text_set(bt, "CANCEL"); | 277 | elm_object_text_set(bt, "CANCEL"); |
273 | eo_do(bt, evas_obj_visibility_set(EINA_TRUE)); | 278 | eo_do(bt, evas_obj_visibility_set(EINA_TRUE)); |
274 | evas_object_smart_callback_add(bt, "clicked", _CANCEL_clicked, fs); | 279 | evas_object_smart_callback_add(bt, "clicked", _CANCEL_clicked, me); |
275 | elm_box_pack_end(vbox, bt); | 280 | elm_box_pack_end(vbox, bt); |
276 | eo_unref(bt); | 281 | eo_unref(bt); |
277 | 282 | ||
@@ -282,5 +287,19 @@ fangWin *files_add(globals *ourGlobals) | |||
282 | eo_unref(bx); | 287 | eo_unref(bx); |
283 | 288 | ||
284 | fang_win_complete(ourGlobals, me, ourGlobals->win_w - 380, ourGlobals->win_w - 530, 350, 500); | 289 | fang_win_complete(ourGlobals, me, ourGlobals->win_w - 380, ourGlobals->win_w - 530, 350, 500); |
290 | evas_object_hide(me->win); | ||
285 | return me; | 291 | return me; |
286 | } | 292 | } |
293 | |||
294 | void filesShow(fangWin *me, Evas_Smart_Cb func, void *data) | ||
295 | { | ||
296 | Evas_Object *fs = me->data; | ||
297 | |||
298 | if (!data) data = me; | ||
299 | |||
300 | if (func) | ||
301 | evas_object_smart_callback_add(fs, "activated", func, data); | ||
302 | else | ||
303 | evas_object_smart_callback_add(fs, "activated", my_fileselector_activated, me); | ||
304 | evas_object_show(me->win); | ||
305 | } | ||