hermet pushed a commit to branch master.

http://git.enlightenment.org/tools/enventor.git/commit/?id=8c13d63a8e434f54b25847d77e49edc20ddd969e

commit 8c13d63a8e434f54b25847d77e49edc20ddd969e
Author: Hermet Park <[email protected]>
Date:   Fri Jul 1 18:24:14 2016 +0900

    ++ multi file support.
---
 src/bin/file_browser.c    |  6 +++---
 src/bin/file_tab.c        | 20 +++++++++++++++-----
 src/bin/globals.c         | 21 ++++++++++++++-------
 src/bin/main.c            | 15 +++++++++------
 src/bin/panes.c           |  2 ++
 src/include/file_tab.h    |  2 +-
 src/include/globals.h     |  3 ++-
 src/lib/Enventor_Legacy.h |  3 +++
 src/lib/edc_parser.c      |  8 ++++----
 src/lib/enventor_smart.c  | 24 ++++++++++++++++++++++++
 10 files changed, 77 insertions(+), 27 deletions(-)

diff --git a/src/bin/file_browser.c b/src/bin/file_browser.c
index 53d17d7..f000886 100644
--- a/src/bin/file_browser.c
+++ b/src/bin/file_browser.c
@@ -88,16 +88,16 @@ gl_clicked_double_cb(void *data EINA_UNUSED, Evas_Object 
*obj EINA_UNUSED,
         if (!it_file_path) continue;
         if (selected_file_len != strlen(it_file_path)) continue;
 
-        //Ok, This selected file is already openend, let's activte the item.
+        //Ok, This selected file is already openend, let's activate the item.
         if (!strcmp(file->path, it_file_path))
           {
-             //TODO:
+             facade_it_select(eit);
              return;
           }
      }
 
    //This selected file hasn't been opened yet, so let's open this file newly.
-   facade_sub_file_set(file->path);
+   facade_sub_file_add(file->path);
 }
 
 static Elm_Object_Item *
diff --git a/src/bin/file_tab.c b/src/bin/file_tab.c
index 3d2f257..a31a858 100644
--- a/src/bin/file_tab.c
+++ b/src/bin/file_tab.c
@@ -10,8 +10,6 @@ typedef struct file_tab_s
 typedef struct file_tab_it_s
 {
    Enventor_Item *enventor_it;
-   file_data *fd;
-
 } file_tab_it;
 
 file_data *g_fd = NULL;
@@ -49,10 +47,21 @@ right_btn_clicked_cb(void *data, Evas_Object *obj 
EINA_UNUSED,
    elm_list_item_selected_set(it, EINA_TRUE);
 }
 
+static void
+list_item_selected_cb(void *data, Evas_Object *obj EINA_UNUSED,
+                      void *event_info)
+{
+   file_data *fd = data;
+   Elm_Object_Item *it = event_info;
+   if (fd->selected_it == it) return;
+   file_tab_it *fti = elm_object_item_data_get(it);
+   facade_it_select(fti->enventor_it);
+}
+
 /*****************************************************************************/
 /* Externally accessible calls                                               */
 /*****************************************************************************/
-Eina_Bool file_tab_it_selected_set(Enventor_Item *enventor_it)
+Eina_Bool file_tab_it_select(Enventor_Item *enventor_it)
 {
    file_data *fd = g_fd;
    if (!fd) return EINA_FALSE;
@@ -65,8 +74,8 @@ Eina_Bool file_tab_it_selected_set(Enventor_Item *enventor_it)
      {
         file_tab_it *fti = elm_object_item_data_get(it);
         if (fti->enventor_it != enventor_it) continue;
-        elm_list_item_selected_set(it, EINA_TRUE);
         fd->selected_it = it;
+        elm_list_item_selected_set(it, EINA_TRUE);
         return EINA_TRUE;
      }
 
@@ -127,7 +136,8 @@ Eina_Bool file_tab_it_add(Enventor_Item *enventor_it)
 
    fti->enventor_it = enventor_it;
 
-   elm_list_item_append(fd->list, filename, NULL, NULL, NULL, fti);
+   elm_list_item_append(fd->list, filename, NULL, NULL, list_item_selected_cb,
+                        fti);
    elm_list_go(fd->list);
 
    free(filename);
diff --git a/src/bin/globals.c b/src/bin/globals.c
index f4c9ac3..a7a3ed5 100644
--- a/src/bin/globals.c
+++ b/src/bin/globals.c
@@ -7,22 +7,30 @@
 const char *DEFAULT_EDC_FORMAT = "enventor_XXXXXX.edc";
 char EDJE_PATH[PATH_MAX];
 const char *ENVENTOR_NAME = "enventor";
+Enventor_Item *active_item = NULL;
 
 void mem_fail_msg(void)
 {
    EINA_LOG_ERR("Failed to allocate Memory!");
 }
 
-Enventor_Item *facade_sub_file_set(const char *path)
+void facade_it_select(Enventor_Item *it)
+{
+   file_tab_it_select(it);
+   enventor_item_focus_set(it);
+   base_text_editor_set(it);
+   base_title_set(enventor_item_file_get(it));
+}
+
+Enventor_Item *facade_sub_file_add(const char *path)
 {
    Enventor_Item *it = enventor_object_sub_file_add(base_enventor_get(), path);
    if (!it) return NULL;
 
    file_tab_it_add(it);
-   file_tab_it_selected_set(it);
+   file_tab_it_select(it);
 
-   base_text_editor_set(it);
-   base_title_set(path);
+   facade_it_select(it);
 
    return it;
 }
@@ -34,10 +42,9 @@ Enventor_Item *facade_main_file_set(const char *path)
 
    file_tab_clear();
    file_tab_it_add(it);
-   file_tab_it_selected_set(it);
 
-   base_text_editor_set(it);
-   base_title_set(path);
+   facade_it_select(it);
+
    base_console_reset();
 
    return it;
diff --git a/src/bin/main.c b/src/bin/main.c
index 0773eac..f0afe5e 100644
--- a/src/bin/main.c
+++ b/src/bin/main.c
@@ -9,7 +9,6 @@
 typedef struct app_s
 {
    Evas_Object *keygrabber;
-   Enventor_Item *main_it;
    Eina_Bool on_saving : 1;
    Eina_Bool lazy_save : 1;
 } app_data;
@@ -183,10 +182,14 @@ main_mouse_wheel_cb(void *data, int type EINA_UNUSED, 
void *ev)
      }
 
    //Font Size
-   //FIXME: probably here main_it could be changeable. we need to figure out
-   //which item is currently set up.
-   evas_object_geometry_get(enventor_item_editor_get(ad->main_it),
-                            &x, &y, &w, &h);
+   Enventor_Item *it = enventor_object_focused_item_get(base_enventor_get());
+   if (!it)
+     {
+        EINA_LOG_ERR("No focused enventor item??");
+        return ECORE_CALLBACK_PASS_ON;
+     }
+
+   evas_object_geometry_get(enventor_item_editor_get(it), &x, &y, &w, &h);
 
    if ((event->x >= x) && (event->x <= (x + w)) &&
        (event->y >= y) && (event->y <= (y + h)))
@@ -593,7 +596,7 @@ enventor_setup(app_data *ad)
    enventor_common_setup(enventor);
 
    base_enventor_set(enventor);
-   ad->main_it = facade_main_file_set(config_input_path_get());
+   facade_main_file_set(config_input_path_get());
    base_live_view_set(enventor_object_live_view_get(enventor));
 }
 
diff --git a/src/bin/panes.c b/src/bin/panes.c
index e8ac1e1..225d746 100644
--- a/src/bin/panes.c
+++ b/src/bin/panes.c
@@ -285,6 +285,8 @@ void
 panes_text_editor_set(Evas_Object *text_editor)
 {
    panes_data *pd = g_pd;
+   Evas_Object *prev = elm_object_content_unset(pd->text_tool_layout);
+   evas_object_hide(prev);
    elm_object_content_set(pd->text_tool_layout, text_editor);
 }
 
diff --git a/src/include/file_tab.h b/src/include/file_tab.h
index 149fe89..e4d24b2 100644
--- a/src/include/file_tab.h
+++ b/src/include/file_tab.h
@@ -1,6 +1,6 @@
 Evas_Object *file_tab_init(Evas_Object *parent);
 void file_tab_term(void);
 Eina_Bool file_tab_it_add(Enventor_Item *it);
-Eina_Bool file_tab_it_selected_set(Enventor_Item *enventor_it);
+Eina_Bool file_tab_it_select(Enventor_Item *enventor_it);
 void file_tab_disabled_set(Eina_Bool disabled);
 void file_tab_clear(void);
diff --git a/src/include/globals.h b/src/include/globals.h
index 6ddcf0c..618b665 100644
--- a/src/include/globals.h
+++ b/src/include/globals.h
@@ -4,4 +4,5 @@ extern Eina_Prefix *PREFIX;
 extern const char *ENVENTOR_NAME;
 void mem_fail_msg(void);
 Enventor_Item *facade_main_file_set(const char *path);
-Enventor_Item *facade_sub_file_set(const char *path);
+Enventor_Item *facade_sub_file_add(const char *path);
+void facade_it_select(Enventor_Item *it);
diff --git a/src/lib/Enventor_Legacy.h b/src/lib/Enventor_Legacy.h
index 1499709..577e0e3 100644
--- a/src/lib/Enventor_Legacy.h
+++ b/src/lib/Enventor_Legacy.h
@@ -8,4 +8,7 @@ EAPI Enventor_Item *enventor_object_sub_file_add(Evas_Object 
*obj, const char *f
 EAPI const Eina_List *enventor_object_sub_items_get(const Evas_Object *obj);
 EAPI Evas_Object *enventor_item_editor_get(const Enventor_Item *it);
 EAPI const char *enventor_item_file_get(const Enventor_Item *it);
+EAPI Enventor_Item *enventor_object_focused_item_get(const Evas_Object *obj);
+EAPI Eina_Bool enventor_item_focus_set(Enventor_Item *it);
+
 #include "enventor_object.eo.legacy.h"
diff --git a/src/lib/edc_parser.c b/src/lib/edc_parser.c
index c337722..b912117 100644
--- a/src/lib/edc_parser.c
+++ b/src/lib/edc_parser.c
@@ -302,13 +302,13 @@ macro_list_free(Eina_List *macro_list)
 static void
 cur_state_thread_blocking(void *data, Ecore_Thread *thread EINA_UNUSED)
 {
-#define PART_SYNTAX_CNT 13
+#define PART_SYNTAX_CNT 14
 
    const char *GROUP = "group";
    const char *PARTS = "parts";
    const char *PART[PART_SYNTAX_CNT] = { "part", "image", "textblock",
         "swallow", "rect", "group", "spacer", "proxy", "text", "gradient",
-        "box", "table", "external" };
+        "box", "table", "external", "vector" };
    const char *DESC[2] = { "desc", "description" };
    const int DESC_LEN[2] = { 4, 11 };
    const char *STATE = "state";
@@ -528,8 +528,8 @@ cur_state_thread_blocking(void *data, Ecore_Thread *thread 
EINA_UNUSED)
                   continue;
                }
           }
-        //Check Group in
-        if (bracket == 1)
+        //Check Group in. Probably inside of collections or the most outside.
+        if (bracket < 2)
           {
              if (!strncmp(p, GROUP, strlen(GROUP)))
                {
diff --git a/src/lib/enventor_smart.c b/src/lib/enventor_smart.c
index 6720705..f0ee8e5 100644
--- a/src/lib/enventor_smart.c
+++ b/src/lib/enventor_smart.c
@@ -38,6 +38,7 @@ struct _Enventor_Object_Data
    Enventor_Object *obj;
    Enventor_Item_Data main_it;
    Eina_List *sub_its;
+   Enventor_Item *focused_it;
 
    Eina_Stringshare *group_name;
 
@@ -998,6 +999,7 @@ enventor_object_main_file_set(Enventor_Object *obj, const 
char *file)
    pd->main_it.enventor = obj;
    pd->main_it.ed = edit_init(obj);
    edit_view_sync_cb_set(pd->main_it.ed, edit_view_sync_cb, pd);
+   pd->focused_it = &pd->main_it;
 
    Eina_Bool ret = efl_file_set(obj, file, NULL);
    if (!ret) return NULL;
@@ -1020,9 +1022,31 @@ enventor_object_sub_items_get(const Enventor_Object *obj)
    return pd->sub_its;
 }
 
+EAPI Enventor_Item *
+enventor_object_focused_item_get(const Enventor_Object *obj)
+{
+   Enventor_Object_Data *pd = eo_data_scope_get(obj, ENVENTOR_OBJECT_CLASS);
+   return  pd->focused_it;
+}
+
 ///////////////////////////////////////////////////////////////////////////////
 /* Enventor_Item Functions.                                                  */
 ///////////////////////////////////////////////////////////////////////////////
+Eina_Bool
+enventor_item_focus_set(Enventor_Item *it)
+{
+   EINA_SAFETY_ON_NULL_RETURN_VAL(it, EINA_FALSE);
+
+   Enventor_Object *obj = it->enventor;
+   Enventor_Object_Data *pd = eo_data_scope_get(obj, ENVENTOR_OBJECT_CLASS);
+
+   edit_view_sync_cb_set(it->ed, edit_view_sync_cb, pd);
+
+   pd->focused_it = it;
+
+   return EINA_TRUE;
+}
+
 Evas_Object *
 enventor_item_editor_get(const Enventor_Item *it)
 {

-- 


Reply via email to