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);

-- 


Reply via email to