rimmed pushed a commit to branch master. http://git.enlightenment.org/tools/eflete.git/commit/?id=df5c1c0d63b02a6b442728fc72acc0724afa3f45
commit df5c1c0d63b02a6b442728fc72acc0724afa3f45 Author: Vitalii Vorobiov <vi.vorob...@samsung.com> Date: Fri Dec 18 13:05:09 2015 +0200 editor: tween add and del --- src/bin/editor/editor.h | 9 +++++ src/bin/editor/editor_states.c | 76 ++++++++++++++++++++++++++++++++++++++++++ src/bin/ui/property_group.c | 3 ++ 3 files changed, 88 insertions(+) diff --git a/src/bin/editor/editor.h b/src/bin/editor/editor.h index 7eb670f..b068a9c 100644 --- a/src/bin/editor/editor.h +++ b/src/bin/editor/editor.h @@ -70,6 +70,7 @@ typedef enum { ATTRIBUTE_STATE_FILL_SMOOTH, ATTRIBUTE_STATE_VISIBLE, ATTRIBUTE_STATE_IMAGE, + ATTRIBUTE_STATE_IMAGE_TWEEN, ATTRIBUTE_STATE_COLOR_CLASS, ATTRIBUTE_STATE_REL1_TO_X, ATTRIBUTE_STATE_REL1_TO_Y, @@ -551,6 +552,14 @@ Eina_Bool editor_part_name_set(Evas_Object *obj, Change *change, Eina_Bool merge, const char *part_name, const char *new_val); +Eina_Bool +editor_state_tween_del(Evas_Object *edit_object, Change *change, Eina_Bool merge, + const char *part_name, const char *state_name, double state_val, + Eina_Stringshare *name); +Eina_Bool +editor_state_tween_add(Evas_Object *edit_object, Change *change, Eina_Bool merge, + const char *part_name, const char *state_name, double state_val, + Eina_Stringshare *name); Eina_Bool editor_part_clip_to_set(Evas_Object *obj, Change *change, Eina_Bool merge, const char *part_name, diff --git a/src/bin/editor/editor_states.c b/src/bin/editor/editor_states.c index 0d36ee1..352e387 100644 --- a/src/bin/editor/editor_states.c +++ b/src/bin/editor/editor_states.c @@ -52,6 +52,7 @@ EDITOR_STATE_DOUBLE_SAVE(container_align_y, ATTRIBUTE_STATE_CONTAINER_ALIGN_Y) EDITOR_STATE_DOUBLE(minmul_h, ATTRIBUTE_STATE_MINMUL_H) EDITOR_STATE_DOUBLE(minmul_w, ATTRIBUTE_STATE_MINMUL_W) + #define MAX_SET(VAL, VAL_CAPS) \ Eina_Bool \ editor_state_max_## VAL ##_set(Evas_Object *edit_object, Change *change, Eina_Bool merge, \ @@ -187,6 +188,81 @@ EDITOR_STATE_INT_SAVE(container_padding_x, ATTRIBUTE_STATE_CONTAINER_PADING_X) EDITOR_STATE_INT_SAVE(container_padding_y, ATTRIBUTE_STATE_CONTAINER_PADING_Y) Eina_Bool +editor_state_tween_add(Evas_Object *edit_object, Change *change, Eina_Bool merge, + const char *part_name, const char *state_name, double state_val, + Eina_Stringshare *name) +{ + Diff *diff; + Attribute attribute = ATTRIBUTE_STATE_IMAGE_TWEEN; + assert(edit_object != NULL); + assert(part_name != NULL); + assert(state_name != NULL); + if (change) + { + diff = mem_calloc(1, sizeof(Diff)); + diff->redo.type = FUNCTION_TYPE_STRING_STRING_DOUBLE_STRING; + diff->redo.function = editor_state_tween_add; + diff->redo.args.type_ssds.s1 = eina_stringshare_add(part_name); + diff->redo.args.type_ssds.s2 = eina_stringshare_add(state_name); + diff->redo.args.type_ssds.d3 = state_val; + diff->redo.args.type_ssds.s4 = name; + diff->undo.type = FUNCTION_TYPE_STRING_STRING_DOUBLE_STRING; + diff->undo.function = editor_state_tween_del; + diff->undo.args.type_ssds.s1 = eina_stringshare_add(part_name); + diff->undo.args.type_ssds.s2 = eina_stringshare_add(state_name); + diff->undo.args.type_ssds.d3 = state_val; + diff->undo.args.type_ssds.s4 = name; + if (merge) + change_diff_merge_add(change, diff); + else + change_diff_add(change, diff); + } + if (!edje_edit_state_tween_add(edit_object, part_name, state_name, state_val, name)) + return false; + _editor_project_changed(); + if (!_editor_signals_blocked) + evas_object_smart_callback_call(ap.win, SIGNAL_EDITOR_ATTRIBUTE_CHANGED, &attribute); + return true; +} +Eina_Bool +editor_state_tween_del(Evas_Object *edit_object, Change *change, Eina_Bool merge, + const char *part_name, const char *state_name, double state_val, + Eina_Stringshare *name) +{ + Diff *diff; + Attribute attribute = ATTRIBUTE_STATE_IMAGE_TWEEN; + assert(edit_object != NULL); + assert(part_name != NULL); + assert(state_name != NULL); + if (change) + { + diff = mem_calloc(1, sizeof(Diff)); + diff->redo.type = FUNCTION_TYPE_STRING_STRING_DOUBLE_STRING; + diff->redo.function = editor_state_tween_del; + diff->redo.args.type_ssds.s1 = eina_stringshare_add(part_name); + diff->redo.args.type_ssds.s2 = eina_stringshare_add(state_name); + diff->redo.args.type_ssds.d3 = state_val; + diff->redo.args.type_ssds.s4 = name; + diff->undo.type = FUNCTION_TYPE_STRING_STRING_DOUBLE_STRING; + diff->undo.function = editor_state_tween_add; + diff->undo.args.type_ssds.s1 = eina_stringshare_add(part_name); + diff->undo.args.type_ssds.s2 = eina_stringshare_add(state_name); + diff->undo.args.type_ssds.d3 = state_val; + diff->undo.args.type_ssds.s4 = name; + if (merge) + change_diff_merge_add(change, diff); + else + change_diff_add(change, diff); + } + if (!edje_edit_state_tween_del(edit_object, part_name, state_name, state_val, name)) + return false; + _editor_project_changed(); + if (!_editor_signals_blocked) + evas_object_smart_callback_call(ap.win, SIGNAL_EDITOR_ATTRIBUTE_CHANGED, &attribute); + return true; +} + +Eina_Bool editor_state_reset(Evas_Object *edit_object, Change *change, Eina_Bool merge __UNUSED__, const char *part_name, const char *state_name, double state_val) { diff --git a/src/bin/ui/property_group.c b/src/bin/ui/property_group.c index 5e98617..26daacd 100644 --- a/src/bin/ui/property_group.c +++ b/src/bin/ui/property_group.c @@ -877,6 +877,9 @@ _on_editor_attribute_changed(void *data, case ATTRIBUTE_STATE_FILL_TYPE: STATE_ATTR_1COMBOBOX_LIST_UPDATE(state_fill, type, state_fill); break; + case ATTRIBUTE_STATE_IMAGE_TWEEN: +/* prop_item_state_image_tween_update(pd->attributes.state_image.tween, pd); */ + break; /* Don't add 'default:'. Compiler must warn about missing cases */ } } --