From 043e1be03dd6f8ba7638d6e17e52576a8203aeba Mon Sep 17 00:00:00 2001 From: titan Date: Sun, 27 Aug 2006 16:16:57 +0000 Subject: [PATCH] TODO-- Fsel now displays the current directory. Should we allow the user to browse the fsel using this current directory entry? SVN revision: 25161 --- TODO | 1 - src/bin/e_widget_fsel.c | 23 ++++++++++++++++++++--- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/TODO b/TODO index e0cebe4e0..ca2b7d53a 100644 --- a/TODO +++ b/TODO @@ -34,7 +34,6 @@ Some of the things (in very short form) that need to be done to E17... * fm2 .desktop parser needs to handle i18n * fm2 needs a mime filter * fm2 needs to have a mime & filetype -> icon mapping -* fsel needs to display the current dir (for better context) somewhere * eap editor is broken - segv in advanced mode * use .desktop files and move eap editor to edit them etc. etc. instead to fix * if we want to do icons on the desktop - and as part of efm, i am thinking diff --git a/src/bin/e_widget_fsel.c b/src/bin/e_widget_fsel.c index 5e6b77f20..87d1ecb73 100644 --- a/src/bin/e_widget_fsel.c +++ b/src/bin/e_widget_fsel.c @@ -28,8 +28,10 @@ struct _E_Widget_Data Evas_Object *o_favorites_add; Evas_Object *o_files_frame; Evas_Object *o_files_fm; + Evas_Object *o_directory_entry; Evas_Object *o_entry; Evas_Coord preview_w, preview_h; + char *directory_entry_text; char *entry_text; char *preview_size_text; char *preview_owner_text; @@ -62,6 +64,8 @@ _e_wid_fsel_button_up(void *data1, void *data2) e_fm2_parent_go(wd->o_files_fm); if (wd->o_files_frame) e_widget_scrollframe_child_pos_set(wd->o_files_frame, 0, 0); + e_widget_entry_text_set(wd->o_directory_entry, + e_fm2_real_path_get(wd->o_files_fm)); } static void @@ -128,6 +132,7 @@ _e_wid_fsel_favorites_files_changed(void *data, Evas_Object *obj, void *event_in } } done: + e_widget_entry_text_set(wd->o_directory_entry, realpath); E_FREE(p1); evas_list_free(icons); } @@ -151,12 +156,15 @@ _e_wid_fsel_favorites_selected(void *data, Evas_Object *obj, void *event_info) e_fm2_path_set(wd->o_files_fm, NULL, ici->link); evas_list_free(selected); e_widget_scrollframe_child_pos_set(wd->o_files_frame, 0, 0); + e_widget_entry_text_set(wd->o_directory_entry, + e_fm2_real_path_get(wd->o_files_fm)); } static void _e_wid_fsel_files_changed(void *data, Evas_Object *obj, void *event_info) { E_Widget_Data *wd; + struct stat st; wd = data; if (!wd->o_files_fm) return; @@ -172,9 +180,11 @@ _e_wid_fsel_files_changed(void *data, Evas_Object *obj, void *event_info) } if (wd->o_files_frame) e_widget_scrollframe_child_pos_set(wd->o_files_frame, 0, 0); + if (stat(wd->path, &st) == 0) + e_widget_entry_text_set(wd->o_directory_entry, wd->path); + e_widget_entry_text_set(wd->o_entry, " "); E_FREE(wd->path); if (wd->chg_func) wd->chg_func(wd->chg_data, wd->obj); - e_widget_entry_text_set(wd->o_entry, " "); } static void @@ -430,6 +440,10 @@ e_widget_fsel_add(Evas *evas, const char *dev, const char *path, char *selected, e_widget_min_size_set(o, 128, 128); e_widget_table_object_append(wd->o_table2, o, 1, 1, 1, 1, 1, 1, 1, 1); + o = e_widget_entry_add(evas, &(wd->directory_entry_text)); + wd->o_directory_entry = o; + e_widget_sub_object_add(obj, o); + o = e_widget_entry_add(evas, &(wd->entry_text)); wd->o_entry = o; e_widget_sub_object_add(obj, o); @@ -447,10 +461,12 @@ e_widget_fsel_add(Evas *evas, const char *dev, const char *path, char *selected, 2, 1, 1, 1, 0, 1, 0, 1); } + e_widget_table_object_append(wd->o_table, wd->o_directory_entry, + 0, 0, 1, 1, 1, 0, 1, 0); e_widget_table_object_append(wd->o_table, wd->o_table2, - 0, 0, 1, 1, 1, 1, 1, 1); + 0, 1, 1, 1, 1, 1, 1, 1); e_widget_table_object_append(wd->o_table, wd->o_entry, - 0, 1, 1, 1, 1, 0, 1, 0); + 0, 2, 1, 1, 1, 0, 1, 0); e_widget_min_size_get(wd->o_table, &mw, &mh); e_widget_min_size_set(obj, mw, mh); @@ -461,6 +477,7 @@ e_widget_fsel_add(Evas *evas, const char *dev, const char *path, char *selected, evas_object_show(wd->o_favorites_fm); evas_object_show(wd->o_files_frame); evas_object_show(wd->o_files_fm); + evas_object_show(wd->o_directory_entry); evas_object_show(wd->o_entry); if (preview) {