rimmed pushed a commit to branch master.

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

commit 0a5dda85925daa83055f000fd82ee47eef9a4a33
Author: Vitalii Vorobiov <[email protected]>
Date:   Tue Sep 6 18:12:26 2016 +0300

    editor: send signal that new group added/group was deleted
    
    for example resource manager can work with this thing correctly
---
 src/bin/common/signals.h                             | 16 ++++++++++++++++
 src/bin/editor/editor.h                              |  8 ++++----
 src/bin/editor/editor_group.c                        | 16 ++++++++++++----
 src/bin/project_manager/project_manager.c            |  2 +-
 src/bin/project_manager/project_manager_import_edj.c |  4 ++--
 src/bin/resource_manager/resource_manager_react.c    | 14 +++++++-------
 src/bin/ui/project_navigator.c                       | 15 +++++++--------
 7 files changed, 49 insertions(+), 26 deletions(-)

diff --git a/src/bin/common/signals.h b/src/bin/common/signals.h
index 99f943b..6680909 100644
--- a/src/bin/common/signals.h
+++ b/src/bin/common/signals.h
@@ -59,6 +59,14 @@
 #define SIGNAL_GROUP_ADDED "SIGNAL_GROUP_ADDED"
 
 /**
+ * emited when new group is added.
+ * eventinfo - pointer to Group object
+ *
+ * @ingroup Window
+ */
+#define SIGNAL_EDITOR_GROUP_ADDED "SIGNAL_EDITOR_GROUP_ADDED"
+
+/**
  * emited when group is opened.
  * eventinfo - pointer to Group object
  *
@@ -74,6 +82,14 @@
  */
 #define SIGNAL_GROUP_DELETED "SIGNAL_GROUP_DELETED"
 
+/**
+ * emited when group is deleted.
+ * eventinfo - pointer to group name (stringshare)
+ *
+ * @ingroup Window
+ */
+#define SIGNAL_EDITOR_GROUP_DELETED "SIGNAL_EDITOR_GROUP_DELETED"
+
 typedef struct {
    const char *old_name;
    const char *new_name;
diff --git a/src/bin/editor/editor.h b/src/bin/editor/editor.h
index 505d7ef..e7a8522 100644
--- a/src/bin/editor/editor.h
+++ b/src/bin/editor/editor.h
@@ -294,16 +294,16 @@ Eina_Bool
 editor_internal_group_add(Evas_Object *edit_object) EINA_WARN_UNUSED_RESULT;
 
 Eina_Bool
-editor_group_add(Evas_Object *obj, const char *name) EINA_WARN_UNUSED_RESULT;
+editor_group_add(Evas_Object *obj, const char *name, Eina_Bool notify) 
EINA_WARN_UNUSED_RESULT;
 
 Eina_Bool
-editor_group_copy(Evas_Object *obj, const char *group_src, const char 
*group_dest) EINA_WARN_UNUSED_RESULT;
+editor_group_copy(Evas_Object *obj, const char *group_src, const char 
*group_dest, Eina_Bool notify) EINA_WARN_UNUSED_RESULT;
 
 Eina_Bool
-editor_group_alias_add(Evas_Object *obj, const char *group_src, const char 
*group_alias) EINA_WARN_UNUSED_RESULT;
+editor_group_alias_add(Evas_Object *obj, const char *group_src, const char 
*group_alias, Eina_Bool notify) EINA_WARN_UNUSED_RESULT;
 
 Eina_Bool
-editor_group_del(Evas_Object *obj, const char *name) EINA_WARN_UNUSED_RESULT;
+editor_group_del(Evas_Object *obj, const char *name, Eina_Bool notify) 
EINA_WARN_UNUSED_RESULT;
 
 Eina_Bool
 you_shall_not_pass_editor_signals(Change *change);
diff --git a/src/bin/editor/editor_group.c b/src/bin/editor/editor_group.c
index c74a331..3323608 100644
--- a/src/bin/editor/editor_group.c
+++ b/src/bin/editor/editor_group.c
@@ -27,7 +27,7 @@
 extern int _editor_signals_blocked;
 
 Eina_Bool
-editor_group_add(Evas_Object *obj, const char *name)
+editor_group_add(Evas_Object *obj, const char *name, Eina_Bool notify)
 {
    assert(obj != NULL);
    assert(name != NULL);
@@ -36,11 +36,13 @@ editor_group_add(Evas_Object *obj, const char *name)
    if (!editor_save_all(obj))
      return false; /* i hope it will never happen */
    _editor_project_changed();
+   if (notify)
+     evas_object_smart_callback_call(ap.win, SIGNAL_EDITOR_GROUP_ADDED, (void 
*)name);
    return true;
 }
 
 Eina_Bool
-editor_group_copy(Evas_Object *obj, const char *group_src, const char 
*group_dest)
+editor_group_copy(Evas_Object *obj, const char *group_src, const char 
*group_dest, Eina_Bool notify)
 {
    assert(obj != NULL);
    assert(group_src != NULL);
@@ -50,11 +52,13 @@ editor_group_copy(Evas_Object *obj, const char *group_src, 
const char *group_des
    if (!editor_save_all(obj))
      return false; /* i hope it will never happen */
    _editor_project_changed();
+   if (notify)
+     evas_object_smart_callback_call(ap.win, SIGNAL_EDITOR_GROUP_ADDED, (void 
*)group_dest);
    return true;
 }
 
 Eina_Bool
-editor_group_alias_add(Evas_Object *obj, const char *group_src, const char 
*group_alias)
+editor_group_alias_add(Evas_Object *obj, const char *group_src, const char 
*group_alias, Eina_Bool notify)
 {
    assert(obj != NULL);
    assert(group_src != NULL);
@@ -64,11 +68,13 @@ editor_group_alias_add(Evas_Object *obj, const char 
*group_src, const char *grou
    if (!editor_save_all(obj))
      return false; /* i hope it will never happen */
    _editor_project_changed();
+   if (notify)
+     evas_object_smart_callback_call(ap.win, SIGNAL_EDITOR_GROUP_ADDED, (void 
*)group_alias);
    return true;
 }
 
 Eina_Bool
-editor_group_del(Evas_Object *obj, const char *name)
+editor_group_del(Evas_Object *obj, const char *name, Eina_Bool notify)
 {
    assert(obj != NULL);
    assert(name != NULL);
@@ -78,6 +84,8 @@ editor_group_del(Evas_Object *obj, const char *name)
    if (!editor_save_all(obj))
      return false; /* i hope it will never happen */
    _editor_project_changed();
+   if (notify)
+     evas_object_smart_callback_call(ap.win, SIGNAL_EDITOR_GROUP_DELETED, 
(void *)name);
    return true;
 }
 
diff --git a/src/bin/project_manager/project_manager.c 
b/src/bin/project_manager/project_manager.c
index 715e8cc..f554779 100644
--- a/src/bin/project_manager/project_manager.c
+++ b/src/bin/project_manager/project_manager.c
@@ -1347,7 +1347,7 @@ pm_project_group_import(Project *project, const char 
*edj, const char *group)
 
    /* apply group to project */
    THREAD_CONTEXT_SWITCH_BEGIN;
-   CRIT_ON_FAIL(editor_group_add(project->global_object, group));
+   CRIT_ON_FAIL(editor_group_add(project->global_object, group, false));
    CRIT_ON_FAIL(editor_save_all(project->global_object));
    obj = edje_edit_object_add(e);
    edje_object_file_set(obj, project->dev, group);
diff --git a/src/bin/project_manager/project_manager_import_edj.c 
b/src/bin/project_manager/project_manager_import_edj.c
index 98e3a81..dda8e56 100644
--- a/src/bin/project_manager/project_manager_import_edj.c
+++ b/src/bin/project_manager/project_manager_import_edj.c
@@ -206,12 +206,12 @@ _project_import_edj(void *data)
                             abort();
                          }
                     }
-                  if (!editor_group_copy(obj, arr[1], arr[2]))
+                  if (!editor_group_copy(obj, arr[1], arr[2], false))
                     {
                        CRIT("Can not copy group %s, to %s", arr[1], arr[2]);
                        abort();
                     }
-                  you_shall_not_pass_editor_signals(NULL);
+                  you_shall_pass_editor_signals(NULL);
                   eina_strbuf_append_printf(strbuf, " -g %s", arr[2]);
                   free(arr[0]);
                   free(arr);
diff --git a/src/bin/resource_manager/resource_manager_react.c 
b/src/bin/resource_manager/resource_manager_react.c
index dd01b72..5e89fa5 100644
--- a/src/bin/resource_manager/resource_manager_react.c
+++ b/src/bin/resource_manager/resource_manager_react.c
@@ -606,8 +606,8 @@ _group_add(void *data __UNUSED__,
            Evas_Object *obj __UNUSED__,
            void *event_info)
 {
-   Group *group = (Group *)event_info;
-   printf("New Group added [%s]", group->name);
+   Eina_Stringshare *group_name = (Eina_Stringshare *)event_info;
+   printf("New Group added [%s]\n", group_name);
 }
 
 static void
@@ -616,7 +616,7 @@ _group_del(void *data __UNUSED__,
            void *event_info)
 {
    Eina_Stringshare *group_name = (Eina_Stringshare *)event_info;
-   printf("Group deleted [%s]", group_name);
+   printf("Group deleted [%s]\n", group_name);
 }
 
 /* INITIAL FUNCTIONS */
@@ -656,8 +656,8 @@ _resource_callbacks_register(Project *project)
    evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_GROUP_DATA_DELETED, 
_editor_group_data_deleted_cb, project);
    evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_ATTRIBUTE_CHANGED, 
_property_attribute_changed, project);
    evas_object_smart_callback_add(ap.win, 
SIGNAL_EDITOR_RESOURCE_ATTRIBUTE_CHANGED, _property_resource_attribute_changed, 
project);
-   evas_object_smart_callback_add(ap.win, SIGNAL_GROUP_ADDED, _group_add, 
project);
-   evas_object_smart_callback_add(ap.win, SIGNAL_GROUP_DELETED, _group_del, 
project);
+   evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_GROUP_ADDED, 
_group_add, project);
+   evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_GROUP_DELETED, 
_group_del, project);
 }
 
 void
@@ -692,6 +692,6 @@ _resource_callbacks_unregister(Project *project)
    evas_object_smart_callback_del_full(ap.win, 
SIGNAL_EDITOR_GROUP_DATA_DELETED, _editor_group_data_deleted_cb, project);
    evas_object_smart_callback_del_full(ap.win, 
SIGNAL_EDITOR_ATTRIBUTE_CHANGED, _property_attribute_changed, project);
    evas_object_smart_callback_del_full(ap.win, 
SIGNAL_EDITOR_RESOURCE_ATTRIBUTE_CHANGED, _property_resource_attribute_changed, 
project);
-   evas_object_smart_callback_del_full(ap.win, SIGNAL_GROUP_ADDED, _group_add, 
project);
-   evas_object_smart_callback_del_full(ap.win, SIGNAL_GROUP_DELETED, 
_group_del, project);
+   evas_object_smart_callback_del_full(ap.win, SIGNAL_EDITOR_GROUP_ADDED, 
_group_add, project);
+   evas_object_smart_callback_del_full(ap.win, SIGNAL_EDITOR_GROUP_DELETED, 
_group_del, project);
 }
diff --git a/src/bin/ui/project_navigator.c b/src/bin/ui/project_navigator.c
index b6fad63..42e3e9e 100644
--- a/src/bin/ui/project_navigator.c
+++ b/src/bin/ui/project_navigator.c
@@ -455,14 +455,15 @@ _add_group_popup_close_cb(void *data __UNUSED__,
    if (BTN_OK == btn_res)
      {
         if ((!layout_p.selected) || (layout_p.selected->index == 0))
-          CRIT_ON_FAIL(editor_group_add(ap.project->global_object, 
elm_entry_entry_get(layout_p.entry)));
+          CRIT_ON_FAIL(editor_group_add(ap.project->global_object, 
elm_entry_entry_get(layout_p.entry), true));
         else
           {
              if (!elm_check_state_get(layout_p.check))
-               CRIT_ON_FAIL(editor_group_copy(ap.project->global_object, 
layout_p.selected->data, elm_entry_entry_get(layout_p.entry)));
+               CRIT_ON_FAIL(editor_group_copy(ap.project->global_object, 
layout_p.selected->data, elm_entry_entry_get(layout_p.entry), true));
              else
-               CRIT_ON_FAIL(editor_group_alias_add(ap.project->global_object, 
layout_p.selected->data, elm_entry_entry_get(layout_p.entry)));
+               CRIT_ON_FAIL(editor_group_alias_add(ap.project->global_object, 
layout_p.selected->data, elm_entry_entry_get(layout_p.entry), true));
           }
+        TODO("Delete gm_group_add after RM integration");
         gm_group_add(ap.project, elm_entry_entry_get(layout_p.entry), true);
      }
 
@@ -509,7 +510,7 @@ _folder_del(const char *prefix)
         EINA_LIST_FREE(group->aliases, alias)
           {
              tmp = eina_stringshare_add(alias->name);
-             if (editor_group_del(ap.project->global_object, tmp))
+             if (editor_group_del(ap.project->global_object, tmp, true))
                gm_group_del(ap.project, alias);
              else
                {
@@ -522,7 +523,7 @@ _folder_del(const char *prefix)
           }
 
         tmp = eina_stringshare_add(group->name);
-        if (editor_group_del(ap.project->global_object, tmp))
+        if (editor_group_del(ap.project->global_object, tmp, true))
           gm_group_del(ap.project, group);
         else
           {
@@ -617,14 +618,12 @@ _group_del_popup_close_cb(void *data,
    if (BTN_CANCEL == btn_res) return;
 
    tmp = eina_stringshare_add(group->name);
-   if (editor_group_del(ap.project->global_object, tmp))
+   if (editor_group_del(ap.project->global_object, tmp, true))
      gm_group_del(ap.project, group);
    else
      {
         msg = eina_stringshare_printf(_("Can't delete layout \"%s\""), 
group->name);
-        popup_add(_("Error"), msg, BTN_OK, NULL, NULL);
         eina_stringshare_del(msg);
-        return;
      }
    eina_stringshare_del(tmp);
 

-- 


Reply via email to