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