rimmed pushed a commit to branch master.

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

commit f626ecc354245e63266237eeb20bc6a5655cee20
Author: Andrii Kroitor <an.kroi...@samsung.com>
Date:   Wed Jul 8 14:16:38 2015 +0300

    project_manager: add special group for global actions
    
    Up Eflete project (.pro file) to 3.
---
 src/bin/project_manager/project_manager.c | 36 +++++++++++++++++++++++++++++++
 src/bin/project_manager/project_manager.h |  4 +++-
 src/bin/project_manager/widget_manager.h  |  1 +
 3 files changed, 40 insertions(+), 1 deletion(-)

diff --git a/src/bin/project_manager/project_manager.c 
b/src/bin/project_manager/project_manager.c
index b602d6d..fde4661 100644
--- a/src/bin/project_manager/project_manager.c
+++ b/src/bin/project_manager/project_manager.c
@@ -424,6 +424,33 @@ _project_open_internal(Project *project)
    project->layouts = wm_layouts_list_new(project->dev);
 }
 
+static void
+_project_special_group_add(Project *project)
+{
+   Evas *e;
+   Evas_Object *edje_edit_obj;
+   Eina_List *list;
+
+   ecore_thread_main_loop_begin();
+
+   Ecore_Evas *ee = ecore_evas_buffer_new(0, 0);
+   e = ecore_evas_get(ee);
+   list = edje_file_collection_list(project->saved_edj);
+   edje_edit_obj = edje_edit_object_add(e);
+
+   edje_object_file_set(edje_edit_obj, project->saved_edj, 
eina_list_data_get(list));
+
+   if (!edje_edit_group_exist(edje_edit_obj, EFLETE_INTERNAL_GROUP_NAME))
+     {
+        edje_edit_group_add(edje_edit_obj, EFLETE_INTERNAL_GROUP_NAME);
+        edje_edit_without_source_save(edje_edit_obj, false);
+     }
+   edje_edit_string_list_free(list);
+   evas_object_del(edje_edit_obj);
+
+   ecore_thread_main_loop_end();
+}
+
 static void *
 _project_import_edj(void *data,
                     Eina_Thread *thread __UNUSED__)
@@ -444,6 +471,7 @@ _project_import_edj(void *data,
    _project_edj_file_copy(worker);
    _copy_meta_data_to_pro(worker);
    WORKER_LOCK_TAKE;
+      _project_special_group_add(worker->project);
       _project_open_internal(worker->project);
    WORKER_LOCK_RELEASE;
    THREAD_TESTCANCEL;
@@ -564,6 +592,7 @@ _project_import_edc(void *data,
    eina_tmpstr_del(tmp_dirname);
    _copy_meta_data_to_pro(worker);
    WORKER_LOCK_TAKE;
+      _project_special_group_add(worker->project);
       _project_open_internal(worker->project);
    WORKER_LOCK_RELEASE;
    THREAD_TESTCANCEL;
@@ -672,6 +701,12 @@ pm_project_open(const char *path)
         ecore_file_mv(project->dev, project->saved_edj);
         project->version = 2;
      }
+   if (project->version < 3) /* upgrade to version 3 */
+     {
+        WARN(_("Old project version. Project files were updated."));
+        _project_special_group_add(project);
+        project->version = 3;
+     }
    TODO("Add crash recovery prompt here")
 
    _project_open_internal(project);
@@ -1262,6 +1297,7 @@ pm_project_resource_export(Project *pro, const char* 
dir_path)
    ecore_thread_main_loop_begin();
    Ecore_Evas *ee = ecore_evas_buffer_new(0, 0);
    e = ecore_evas_get(ee);
+
    list = edje_file_collection_list(pro->dev);
    edje_edit_obj = edje_edit_object_add(e);
    if (!edje_object_mmap_set(edje_edit_obj, pro->mmap_file, 
eina_list_data_get(list)))
diff --git a/src/bin/project_manager/project_manager.h 
b/src/bin/project_manager/project_manager.h
index fbb3284..705be29 100644
--- a/src/bin/project_manager/project_manager.h
+++ b/src/bin/project_manager/project_manager.h
@@ -43,7 +43,7 @@
 #include <Eet.h>
 
 /* don't forget to update on major changes */
-#define PROJECT_FILE_VERSION 2
+#define PROJECT_FILE_VERSION 3
 
 typedef struct _Enventor_Data Enventor_Data;
 
@@ -67,6 +67,8 @@ struct _Project
    Eina_Stringshare *pro_path;
    /** this is worrking file, all changes are happened in this file. */
    Eina_Stringshare *dev;
+   /** edje_edit_object for global operations */
+   Evas_Object *global_object;
    /** this is saved file. */
    Eina_Stringshare *saved_edj;
 
diff --git a/src/bin/project_manager/widget_manager.h 
b/src/bin/project_manager/widget_manager.h
index 9dd9b38..ef84b4e 100644
--- a/src/bin/project_manager/widget_manager.h
+++ b/src/bin/project_manager/widget_manager.h
@@ -50,6 +50,7 @@
 #include <Edje_Edit.h>
 #include "logger.h"
 
+#define EFLETE_INTERNAL_GROUP_NAME        "___eflete_internal_group___"
 /**
  * @enum _Type
  * @ingroup WidgetManager

-- 


Reply via email to