rimmed pushed a commit to branch master. http://git.enlightenment.org/tools/eflete.git/commit/?id=82ff669a3c1e27ba36e85bbc2252bfd05a676c51
commit 82ff669a3c1e27ba36e85bbc2252bfd05a676c51 Author: Vitalii Vorobiov <vi.vorob...@samsung.com> Date: Mon Sep 12 18:02:20 2016 +0300 resource_manager2: add IMAGE and IMAGE TWEEN dependency update --- src/bin/editor/editor_macro.h | 13 +++++- src/bin/editor/editor_states.c | 18 ++++++++- src/bin/resource_manager/resource_manager_react.c | 48 ++++++++++++++++++++++- 3 files changed, 73 insertions(+), 6 deletions(-) diff --git a/src/bin/editor/editor_macro.h b/src/bin/editor/editor_macro.h index c6cdfed..78ba1f1 100644 --- a/src/bin/editor/editor_macro.h +++ b/src/bin/editor/editor_macro.h @@ -159,13 +159,18 @@ editor_state_## FUNC ##_set(Evas_Object *edit_object, Change *change, Eina_Bool { \ Diff *diff; \ Editor_Attribute_Change send; \ - send.attribute = RM_ATTRIBUTE; \ assert(edit_object != NULL); \ assert(part_name != NULL); \ assert(state_name != NULL); \ + Eina_Stringshare *old_value = edje_edit_state_## FUNC ##_get(edit_object, part_name, state_name, state_val); \ + send.attribute = RM_ATTRIBUTE; \ + send.part_name = eina_stringshare_add(part_name); \ + send.state_name = eina_stringshare_add(state_name); \ + send.state_value = state_val; \ + send.old_value = eina_stringshare_add(old_value); \ + send.value = eina_stringshare_add(new_val); \ if (change) \ { \ - Eina_Stringshare *old_value = edje_edit_state_## FUNC ##_get(edit_object, part_name, state_name, state_val); \ diff = mem_calloc(1, sizeof(Diff)); \ diff->redo.type = FUNCTION_TYPE_STRING_STRING_DOUBLE_STRING; \ diff->redo.function = editor_state_## FUNC ##_set; \ @@ -192,6 +197,10 @@ editor_state_## FUNC ##_set(Evas_Object *edit_object, Change *change, Eina_Bool if (!new_val) editor_state_## RESET ##_reset(edit_object, change, apply, part_name, state_name, state_val); \ if (!_editor_signals_blocked) evas_object_smart_callback_call(ap.win, SIGNAL_EDITOR_RM_ATTRIBUTE_CHANGED, &send); \ } \ + eina_stringshare_del(send.part_name); \ + eina_stringshare_del(send.state_name); \ + eina_stringshare_del(send.old_value); \ + eina_stringshare_del(send.value); \ return true; \ } diff --git a/src/bin/editor/editor_states.c b/src/bin/editor/editor_states.c index b5bb54c..0927f58 100644 --- a/src/bin/editor/editor_states.c +++ b/src/bin/editor/editor_states.c @@ -554,10 +554,14 @@ editor_state_tween_add(Evas_Object *edit_object, Change *change, Eina_Bool merge { Diff *diff; Editor_Attribute_Change send; - send.attribute = RM_ATTRIBUTE_STATE_IMAGE_TWEEN; assert(edit_object != NULL); assert(part_name != NULL); assert(state_name != NULL); + send.attribute = RM_ATTRIBUTE_STATE_IMAGE_TWEEN; + send.part_name = eina_stringshare_add(part_name); + send.state_name = eina_stringshare_add(state_name); + send.state_value = state_val; + send.value = eina_stringshare_add(name); /* field for add tween */ if (change) { diff = mem_calloc(1, sizeof(Diff)); @@ -585,6 +589,9 @@ editor_state_tween_add(Evas_Object *edit_object, Change *change, Eina_Bool merge if (!_editor_signals_blocked) evas_object_smart_callback_call(ap.win, SIGNAL_EDITOR_RM_ATTRIBUTE_CHANGED, &send); } + eina_stringshare_del(send.part_name); + eina_stringshare_del(send.state_name); + eina_stringshare_del(send.value); return true; } Eina_Bool @@ -594,10 +601,14 @@ editor_state_tween_del(Evas_Object *edit_object, Change *change, Eina_Bool merge { Diff *diff; Editor_Attribute_Change send; - send.attribute = RM_ATTRIBUTE_STATE_IMAGE_TWEEN; assert(edit_object != NULL); assert(part_name != NULL); assert(state_name != NULL); + send.attribute = RM_ATTRIBUTE_STATE_IMAGE_TWEEN; + send.part_name = eina_stringshare_add(part_name); + send.state_name = eina_stringshare_add(state_name); + send.state_value = state_val; + send.old_value = eina_stringshare_add(name); /* field for del tween */ if (change) { diff = mem_calloc(1, sizeof(Diff)); @@ -625,6 +636,9 @@ editor_state_tween_del(Evas_Object *edit_object, Change *change, Eina_Bool merge if (!_editor_signals_blocked) evas_object_smart_callback_call(ap.win, SIGNAL_EDITOR_RM_ATTRIBUTE_CHANGED, &send); } + eina_stringshare_del(send.part_name); + eina_stringshare_del(send.state_name); + eina_stringshare_del(send.old_value); return true; } diff --git a/src/bin/resource_manager/resource_manager_react.c b/src/bin/resource_manager/resource_manager_react.c index e0b6fa4..8117b0d 100644 --- a/src/bin/resource_manager/resource_manager_react.c +++ b/src/bin/resource_manager/resource_manager_react.c @@ -139,8 +139,6 @@ _property_attribute_changed(void *data, case RM_ATTRIBUTE_STATE_TEXT_MIN_Y: case RM_ATTRIBUTE_STATE_FIXED_H: case RM_ATTRIBUTE_STATE_FIXED_W: - case RM_ATTRIBUTE_STATE_IMAGE: - case RM_ATTRIBUTE_STATE_IMAGE_TWEEN: case RM_ATTRIBUTE_STATE_REL1_TO_X: case RM_ATTRIBUTE_STATE_REL1_TO_Y: case RM_ATTRIBUTE_STATE_REL2_TO_X: @@ -215,6 +213,52 @@ _property_attribute_changed(void *data, case RM_ATTRIBUTE_PART_ITEM_PADDING_TOP: case RM_ATTRIBUTE_PART_ITEM_PADDING_BOTTOM: break; + case RM_ATTRIBUTE_STATE_IMAGE: + part = resource_manager_find(group->parts, change->part_name); + state = resource_manager_v_find(((Part2 *)part)->states, change->state_name, change->state_value); + + if (change->old_value && strcmp(change->old_value, EFLETE_DUMMY_IMAGE_NAME)) + { + old_source = resource_manager_find(pro->RM.images, change->old_value); + /* in case if not implemented image set was set up as tween, need + to remove it and never come back (until image sets will be + implemented of course) */ + if (!old_source) + old_source = resource_manager_find(pro->RM.image_sets, change->old_value); + _resource_usage_resource_del(state, old_source); + } + TODO("Support some image sets here"); + if (change->value && strcmp(change->value, EFLETE_DUMMY_IMAGE_NAME)) + { + source = resource_manager_find(pro->RM.images, change->value); + _resource_usage_resource_add(state, source); + } + eina_stringshare_del(((State2 *)state)->normal); + ((State2 *)state)->normal = eina_stringshare_add(change->value); + break; + case RM_ATTRIBUTE_STATE_IMAGE_TWEEN: + part = resource_manager_find(group->parts, change->part_name); + state = resource_manager_v_find(((Part2 *)part)->states, change->state_name, change->state_value); + + if (change->old_value) + { + old_source = resource_manager_find(pro->RM.images, change->old_value); + /* in case if not implemented image set was set up as tween, need + to remove it and never come back (until image sets will be + implemented of course) */ + if (!old_source) + old_source = resource_manager_find(pro->RM.image_sets, change->old_value); + _resource_usage_resource_del(state, old_source); + ((State2 *)state)->tweens = eina_list_remove(((State2 *)state)->tweens, old_source); + } + TODO("Support some image sets here"); + if (change->value) + { + source = resource_manager_find(pro->RM.images, change->value); + _resource_usage_resource_add(state, source); + ((State2 *)state)->tweens = eina_list_append(((State2 *)state)->tweens, source); + } + break; case RM_ATTRIBUTE_PROGRAM_SAMPLE_NAME: program = resource_manager_find(group->programs, change->program_name); --