nikawhite pushed a commit to branch master.

http://git.enlightenment.org/tools/eflete.git/commit/?id=a1f7c605ad557862ccd0eaaceca69845fdf0acde

commit a1f7c605ad557862ccd0eaaceca69845fdf0acde
Author: Vyacheslav Reutskiy <v.reuts...@samsung.com>
Date:   Fri Jul 22 15:27:06 2016 +0300

    project_mananger: copy file on import if selected all groups
    
    Change-Id: I52863c96b65b76e6cfcbe1cca8f8f88c79198aad
---
 src/bin/project_manager/project_manager.c | 123 ++++++++++++++++--------------
 1 file changed, 64 insertions(+), 59 deletions(-)

diff --git a/src/bin/project_manager/project_manager.c 
b/src/bin/project_manager/project_manager.c
index 7a7f0b6..26c29ed 100644
--- a/src/bin/project_manager/project_manager.c
+++ b/src/bin/project_manager/project_manager.c
@@ -480,7 +480,7 @@ _project_import_edj(void *data,
    Eina_Tmpstr *tmp_dirname;
    Eina_Stringshare *edj_in, *edj_out;
    Eina_Bool send_end = (data) ? (*(Eina_Bool *)data) : true;
-   Eina_List *l;
+   Eina_List *l, *groups;
    Eina_Stringshare *group;
    Evas_Object *obj = NULL;
    Eina_Strbuf *strbuf;
@@ -501,71 +501,80 @@ _project_import_edj(void *data,
         END_SEND(PM_PROJECT_LOCKED);
         return NULL;
      }
+   groups = edje_file_collection_list(worker.edj);
 
-   eina_file_mkdtemp("eflete_build_XXXXXX", &tmp_dirname);
-   edj_in = eina_stringshare_printf("%s/in.edj", tmp_dirname);
-   edj_out = eina_stringshare_printf("%s/out.edj", tmp_dirname);
-   ecore_file_cp(worker.edj, edj_in);
+   if (eina_list_count(groups) != eina_list_count(worker.widgets))
+     {
+        eina_file_mkdtemp("eflete_build_XXXXXX", &tmp_dirname);
+        edj_in = eina_stringshare_printf("%s/in.edj", tmp_dirname);
+        edj_out = eina_stringshare_printf("%s/out.edj", tmp_dirname);
+        ecore_file_cp(worker.edj, edj_in);
 
-   /* prepare the cmd string for run edje_pick */
-   strbuf = eina_strbuf_new();
-   eina_strbuf_append_printf(strbuf, "edje_pick -o %s -i %s", edj_out, edj_in);
+        /* prepare the cmd string for run edje_pick */
+        strbuf = eina_strbuf_new();
+        eina_strbuf_append_printf(strbuf, "edje_pick -o %s -i %s", edj_out, 
edj_in);
 
-   /* load any group for coping */
-   if (worker.widgets)
-     {
-        obj = edje_edit_object_add(evas_object_evas_get(ap.win));
-        if (!edje_object_file_set(obj, edj_in, 
eina_list_data_get(worker.widgets)))
+        /* load any group for coping */
+        if (worker.widgets)
           {
-             CRIT("Can't load object");
-             abort();
+             obj = edje_edit_object_add(evas_object_evas_get(ap.win));
+             if (!edje_object_file_set(obj, edj_in, 
eina_list_data_get(worker.widgets)))
+               {
+                  CRIT("Can't load object");
+                  abort();
+               }
           }
-     }
-   EINA_LIST_FOREACH(worker.widgets, l, group)
-     {
-        if ((group[0] == 'c') && (group[1] == 'p') && (group[2] == '*') && 
(group[3] == '*') && (group[4] == '*'))
+        EINA_LIST_FOREACH(worker.widgets, l, group)
           {
-             char **arr = eina_str_split(group, "***", 0);
-             THREAD_CONTEXT_SWITCH_BEGIN;
-             you_shall_not_pass_editor_signals(NULL);
-             if (!editor_group_copy(obj, arr[1], arr[2]))
+             if ((group[0] == 'c') && (group[1] == 'p') && (group[2] == '*') 
&& (group[3] == '*') && (group[4] == '*'))
                {
-                  CRIT("Can not copy group %s, to %s", arr[1], arr[2]);
-                  abort();
+                  char **arr = eina_str_split(group, "***", 0);
+                  THREAD_CONTEXT_SWITCH_BEGIN;
+                  you_shall_not_pass_editor_signals(NULL);
+                  if (!editor_group_copy(obj, arr[1], arr[2]))
+                    {
+                       CRIT("Can not copy group %s, to %s", arr[1], arr[2]);
+                       abort();
+                    }
+                  you_shall_not_pass_editor_signals(NULL);
+                  THREAD_CONTEXT_SWITCH_END;
+                  eina_strbuf_append_printf(strbuf, " -g %s", arr[2]);
+                  free(arr[0]);
+                  free(arr);
                }
-             you_shall_not_pass_editor_signals(NULL);
-             THREAD_CONTEXT_SWITCH_END;
-             eina_strbuf_append_printf(strbuf, " -g %s", arr[2]);
-             free(arr[0]);
-             free(arr);
+             else
+               eina_strbuf_append_printf(strbuf, " -g %s", group);
           }
-        else
-          eina_strbuf_append_printf(strbuf, " -g %s", group);
-     }
-   edje_pick_data = mem_malloc(sizeof(Edje_Exe_Data));
-   edje_pick_data->cmd = eina_stringshare_add(eina_strbuf_string_get(strbuf));
-   edje_pick_data->flags  = ECORE_EXE_PIPE_READ |
-                            ECORE_EXE_PIPE_READ_LINE_BUFFERED |
-                            ECORE_EXE_PIPE_ERROR |
-                            ECORE_EXE_PIPE_ERROR_LINE_BUFFERED;
-   THREAD_TESTCANCEL;
-   ecore_main_loop_thread_safe_call_sync(_ecore_exe_edje_exe, edje_pick_data);
-   THREAD_TESTCANCEL;
-   waitpid_res = waitpid(edje_pick_data->exe_pid, &edje_cc_res, 0);
-   eina_stringshare_del(edje_pick_data->cmd);
-   free(edje_pick_data);
+        edje_pick_data = mem_malloc(sizeof(Edje_Exe_Data));
+        edje_pick_data->cmd = 
eina_stringshare_add(eina_strbuf_string_get(strbuf));
+        edje_pick_data->flags  = ECORE_EXE_PIPE_READ |
+           ECORE_EXE_PIPE_READ_LINE_BUFFERED |
+           ECORE_EXE_PIPE_ERROR |
+           ECORE_EXE_PIPE_ERROR_LINE_BUFFERED;
+        THREAD_TESTCANCEL;
+        ecore_main_loop_thread_safe_call_sync(_ecore_exe_edje_exe, 
edje_pick_data);
+        THREAD_TESTCANCEL;
+        waitpid_res = waitpid(edje_pick_data->exe_pid, &edje_cc_res, 0);
+        eina_stringshare_del(edje_pick_data->cmd);
+        free(edje_pick_data);
+
+        if ((waitpid_res == -1) ||
+            (WIFEXITED(edje_cc_res) && (WEXITSTATUS(edje_cc_res) != 0 )))
+          {
+             END_SEND(PM_PROJECT_ERROR);
+             return NULL;
+          }
+        ecore_file_unlink(eina_strbuf_string_get(strbuf));
+        eina_strbuf_free(strbuf);
+
+        eina_stringshare_del(worker.edj);
+        worker.edj = eina_stringshare_ref(edj_out);
+        eina_stringshare_del(edj_in);
+        eina_stringshare_del(edj_out);
 
-   if ((waitpid_res == -1) ||
-       (WIFEXITED(edje_cc_res) && (WEXITSTATUS(edje_cc_res) != 0 )))
-     {
-        END_SEND(PM_PROJECT_ERROR);
-        return NULL;
-     }
 
-   eina_stringshare_del(worker.edj);
-   worker.edj = eina_stringshare_ref(edj_out);
-   eina_stringshare_del(edj_in);
-   eina_stringshare_del(edj_out);
+     }
+   edje_edit_string_list_free(groups);
 
    PROGRESS_SEND(_("Import processing"));
    _project_edj_file_copy();
@@ -575,10 +584,6 @@ _project_import_edj(void *data,
    _project_open_internal(worker.project);
    THREAD_TESTCANCEL;
 
-   ecore_file_unlink(eina_strbuf_string_get(strbuf));
-   eina_strbuf_free(strbuf);
-   eina_strbuf_free(strbuf);
-
    PROGRESS_SEND(_("Import finished. Project '%s' created"), 
worker.project->name);
    if (send_end) END_SEND(PM_PROJECT_SUCCESS);
 

-- 


Reply via email to