hermet pushed a commit to branch master. http://git.enlightenment.org/tools/enventor.git/commit/?id=997b878fa8ab31dd7d84b3b5c99ce762977046e6
commit 997b878fa8ab31dd7d84b3b5c99ce762977046e6 Author: Hermet Park <[email protected]> Date: Mon Aug 8 20:25:05 2016 +0900 file_browser: support to switch main EDC file. F2 => set main edc F3 => quick jump F4 => revert quick jump (not done yet) F5 => reference tooltip. --- README | 11 ++++---- data/help/SHORTCUT | 11 ++++---- src/bin/file_browser.c | 68 +++++++++++++++++++++++++++++++++++++++++++++- src/bin/main.c | 33 ++++++++-------------- src/include/file_browser.h | 2 ++ 5 files changed, 90 insertions(+), 35 deletions(-) diff --git a/README b/README index aa733b7..4cb8f1f 100644 --- a/README +++ b/README @@ -30,12 +30,11 @@ Once you have met the requirements, compiling and installing is simple: [Short Cut Keys] Esc - Open/Close Menu -F1 - About -F2 - New -F3 - Save -F4 - Load -F5 - Quick Jump -F6 - Keyword Reference +F1 - Help +F2 - Set Main EDC (in File Browser) +F3 - Quick Jump (Open an including file / Jumping to a referencing part) +F4 - Revert Quick Jump +F5 - Keyword Reference F7 - Toggle Tools F8 - Toggle Status F9 - Toggle File Browser diff --git a/data/help/SHORTCUT b/data/help/SHORTCUT index c04f0f7..a67b634 100644 --- a/data/help/SHORTCUT +++ b/data/help/SHORTCUT @@ -1,11 +1,10 @@ <b>Functions:</b></br> Esc - Open/Close Menu</br> - F1 - About</br> - F2 - New</br> - F3 - Save</br> - F4 - Load</br> - F5 - Quick Jump</br> - F6 - Keyword Reference</br> + F1 - Help</br> + F2 - Set Main EDC (in File Browser)</br> + F3 - Quick Jump (Open an including file / Jumping to a referencing part)</br> + F4 - Revert Quick Jump</br> + F5 - Keyword Reference</br> F7 - Toggle Tools</br> F8 - Toggle Status</br> F9 - Toggle File Browser</br> diff --git a/src/bin/file_browser.c b/src/bin/file_browser.c index 7ec3648..0edc71f 100644 --- a/src/bin/file_browser.c +++ b/src/bin/file_browser.c @@ -35,7 +35,6 @@ typedef struct file_browser_s brows_file *workspace; //workspace directory Eina_List *search_file_list; /* list of searched files. This is only used for showing search results. */ - Evas_Object *base_layout; Evas_Object *search_entry; Evas_Object *genlist; @@ -45,6 +44,8 @@ typedef struct file_browser_s Elm_Genlist_Item_Class *search_itc; File_Browser_Mode mode; + + Elm_Object_Item *main_it; } brows_data; static brows_data *g_bd = NULL; @@ -90,6 +91,13 @@ gl_item_del_cb(void *data, Evas_Object *obj EINA_UNUSED, if (!file) return; file->it = NULL; + + //Reset Main Item + if (file->main) + { + brows_data *bd = g_bd; + bd->main_it = NULL; + } } static Elm_Object_Item * @@ -121,6 +129,13 @@ file_genlist_item_append(brows_file *file, Elm_Object_Item *parent_it, elm_genlist_item_expanded_set(file->it, EINA_FALSE); + //Keep Main Item + if (file->main) + { + brows_data *bd = g_bd; + bd->main_it = file->it; + } + return file->it; } @@ -828,3 +843,54 @@ file_browser_refresh(void) } } + +void +file_browser_selected_file_main_set(void) +{ + const char *exception_msg = "Please select a main EDC file in file browser."; + + brows_data *bd = g_bd; + if (!bd) return; + + Elm_Object_Item *it = elm_genlist_selected_item_get(bd->genlist); + if(!it) + { + stats_info_msg_update(exception_msg); + return; + } + + brows_file *file = elm_object_item_data_get(it); + if (!file) + { + EINA_LOG_ERR("No item data??"); + return; + } + + if (!file->path) + { + EINA_LOG_ERR("No item file path??"); + return; + + } + + if (!eina_str_has_extension(file->path, "edc")) + { + stats_info_msg_update(exception_msg); + return; + } + + //Replace main item + Elm_Object_Item *prev_main_it = bd->main_it; + if (prev_main_it) + { + brows_file *prev_file = elm_object_item_data_get(prev_main_it); + if (prev_file) prev_file->main = EINA_FALSE; + else EINA_LOG_ERR("No item data??"); + } + + file->main = EINA_TRUE; + bd->main_it = file->it; + + config_input_path_set(file->path); + elm_genlist_realized_items_update(bd->genlist); +} diff --git a/src/bin/main.c b/src/bin/main.c index c192b40..1d58782 100644 --- a/src/bin/main.c +++ b/src/bin/main.c @@ -116,7 +116,7 @@ syntax_color_init(Enventor_Object *enventor) } static void -main_edc_update(void) +main_edc_update(Eina_Bool refresh) { //Update file browser only if main item is changed, Enventor_Item *main_it = enventor_object_main_item_get(base_enventor_get()); @@ -125,7 +125,8 @@ main_edc_update(void) if (prev_path == config_input_path_get()) return; file_mgr_main_file_set(config_input_path_get()); - file_browser_refresh(); + + if (refresh) file_browser_refresh(); } static void @@ -141,7 +142,7 @@ config_update_cb(void *data EINA_UNUSED) base_statusbar_toggle(EINA_FALSE); base_console_auto_hide(); - main_edc_update(); + main_edc_update(EINA_TRUE); } static Eina_Bool @@ -770,7 +771,7 @@ keygrabber_key_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, if (ctrl_func(ev)) return; if (alt_func(ev)) return; - //README + //About if (!strcmp(ev->key, "F1")) { enventor_object_ctxpopup_dismiss(base_enventor_get()); @@ -778,37 +779,25 @@ keygrabber_key_down_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, help_open(); return; } - //New + //Set Main EDC if (!strcmp(ev->key, "F2")) { - enventor_object_ctxpopup_dismiss(base_enventor_get()); - live_edit_cancel(EINA_FALSE); - menu_edc_new(EINA_FALSE); + file_browser_selected_file_main_set(); + main_edc_update(EINA_FALSE); return; } - //Save + //Quick Jump if (!strcmp(ev->key, "F3")) { - enventor_object_ctxpopup_dismiss(base_enventor_get()); - live_edit_cancel(EINA_FALSE); - menu_edc_save(); return; } - //Load + //Revert Quick Jump if (!strcmp(ev->key, "F4")) { - enventor_object_ctxpopup_dismiss(base_enventor_get()); - live_edit_cancel(EINA_FALSE); - menu_edc_load(); - return; - } - //Quick Jump - if (!strcmp(ev->key, "F5")) - { return; } //Keyword Reference - if (!strcmp(ev->key, "F6")) + if (!strcmp(ev->key, "F5")) { enventor_object_ctxpopup_dismiss(base_enventor_get()); enventor_object_keyword_reference_show(base_enventor_get()); diff --git a/src/include/file_browser.h b/src/include/file_browser.h index b31b112..89f1bb6 100644 --- a/src/include/file_browser.h +++ b/src/include/file_browser.h @@ -4,3 +4,5 @@ void file_browser_workspace_set(const char *workspace_dir); void file_browser_tools_set(void); void file_browser_tools_visible_set(Eina_Bool visible); void file_browser_refresh(void); +void file_browser_selected_file_main_set(void); +void file_brwser_refresh(void); --
