rimmed pushed a commit to branch master. http://git.enlightenment.org/tools/eflete.git/commit/?id=7c85b24edd53498c6d187decbf887e198d6ce4de
commit 7c85b24edd53498c6d187decbf887e198d6ce4de Author: Andrii Kroitor <[email protected]> Date: Fri May 27 11:51:31 2016 +0300 property_group: add group_data --- src/bin/common/string_common.h | 1 + src/bin/ui/property/property_group.c | 53 +++++++++++++++++++++++++++++++++- src/bin/ui/property/property_private.h | 2 ++ 3 files changed, 55 insertions(+), 1 deletion(-) diff --git a/src/bin/common/string_common.h b/src/bin/common/string_common.h index f49b20b..aa44841 100644 --- a/src/bin/common/string_common.h +++ b/src/bin/common/string_common.h @@ -35,6 +35,7 @@ #define NAME_REGEX "^[a-zA-Z0-9_]+$" #define STATE_VALUE_REGEX "^((0?(\\.[0-9]+)?|1(\\.0+)?))?$" #define PART_NAME_REGEX "^[a-zA-Z0-9_\\.]+$" +#define DATA_NAME_REGEX ".*" #define FONT_STYLE_REGEX "^((\\w|[- ])+(:(style|slant|weight|width|spacing|lang)=\\w+)?)?$" #define IMAGE_BORDER_REGEX "^([0-9]+( [0-9]+){3}){0,1}?$" #define FREQUENCY_REGEX "^\\b([2-9][0-9]|[1-9][0-9]{2,3}|1[0-9]{4}|20000)\\b$" diff --git a/src/bin/ui/property/property_group.c b/src/bin/ui/property/property_group.c index c5b798d..6533907 100644 --- a/src/bin/ui/property/property_group.c +++ b/src/bin/ui/property/property_group.c @@ -66,6 +66,7 @@ struct _Property_Group_Data { Resource *group_data; Resource_Name_Validator *part_name_validator; + Resource_Name_Validator *group_data_name_validator; /* data needed to correctly handle changes that will be passed to history module */ struct { @@ -201,6 +202,7 @@ static const char *image_border_fill_strings[] = { STR_NONE, TODO("remove NULL's after fixing genlist filters") #define EDIT_OBJ group_pd.group->edit_object #define PART_ARGS (group_pd.part) ? group_pd.part->name : NULL +#define GROUP_DATA_ARGS (group_pd.group_data) ? group_pd.group_data->name : NULL #define ITEM_ARGS PART_ARGS, (group_pd.part) ? group_pd.part->current_item_name : NULL #define STATE_ARGS PART_ARGS, (group_pd.part) ? group_pd.part->current_state->parsed_name : NULL, (group_pd.part) ? group_pd.part->current_state->parsed_val : 0 #define PROGRAM_ARGS (group_pd.program) ? group_pd.program->name : NULL @@ -311,6 +313,7 @@ _on_group_data_selected(void *data, DBG("selected group_data \"%s\"", group_pd.group_data->name); group_pd.part = NULL; group_pd.program = NULL; + resource_name_validator_resource_set(group_pd.group_data_name_validator, (Resource *)group_pd.group_data); GENLIST_FILTER_APPLY(pd->genlist); property_item_update_recursively(&group_pd.items[PROPERTY_GROUP_ITEM_GROUP_DATA_TITLE]); @@ -331,6 +334,9 @@ _on_group_changed(void *data, group_pd.program = group_pd.group ? group_pd.group->current_program : NULL; group_pd.group_data = group_pd.group ? group_pd.group->current_group_data : NULL; resource_name_validator_list_set(group_pd.part_name_validator, &group_pd.group->parts, false); + resource_name_validator_resource_set(group_pd.part_name_validator, (Resource *)group_pd.part); + resource_name_validator_list_set(group_pd.group_data_name_validator, &group_pd.group->data_items, true); + resource_name_validator_resource_set(group_pd.group_data_name_validator, (Resource *)group_pd.group_data); GENLIST_FILTER_APPLY(pd->genlist); @@ -628,6 +634,8 @@ _subitems_get(Property_Attribute *pa) APPEND(PROPERTY_GROUP_ITEM_PART_ITEM_PADDING_V); break; case PROPERTY_GROUP_ITEM_GROUP_DATA_TITLE: + APPEND(PROPERTY_GROUP_ITEM_GROUP_DATA_NAME); + APPEND(PROPERTY_GROUP_ITEM_GROUP_DATA_VALUE); break; default: CRIT("items callback not found for %s", pa->name); @@ -722,6 +730,10 @@ _init_cb(Property_Attribute *pa, Property_Action *action) case ATTRIBUTE_PART_NAME: eo_event_callback_add(action->control, ELM_ENTRY_EVENT_VALIDATE, resource_name_validator_helper, group_pd.part_name_validator); break; + case ATTRIBUTE_GROUP_DATA_NAME: + eo_event_callback_add(action->control, ELM_ENTRY_EVENT_VALIDATE, resource_name_validator_helper, group_pd.group_data_name_validator); + break; + case ATTRIBUTE_GROUP_DATA_VALUE: case ATTRIBUTE_STATE_IMAGE_TWEEN: case ATTRIBUTE_GROUP_MIN_W: case ATTRIBUTE_GROUP_MIN_H: @@ -1424,6 +1436,14 @@ _update_cb(Property_Attribute *pa, Property_Action *action) case ATTRIBUTE_PART_NAME: property_entry_set(action->control, PART_ARGS); break; + case ATTRIBUTE_GROUP_DATA_NAME: + property_entry_set(action->control, GROUP_DATA_ARGS); + break; + case ATTRIBUTE_GROUP_DATA_VALUE: + str_val1 = edje_edit_group_data_value_get(EDIT_OBJ, GROUP_DATA_ARGS); + property_entry_set(action->control, str_val1); + edje_edit_string_free(str_val1); + break; case ATTRIBUTE_PART_TYPE: elm_layout_text_set(action->control, NULL, gm_part_type_text_get(group_pd.part->type)); break; @@ -2152,6 +2172,14 @@ _start_cb(Property_Attribute *pa, Property_Action *action) group_pd.history.format = _("part name changed from \"%s\" to \"%s\""); STR_VAL(str_val1, eina_stringshare_add(PART_ARGS)); break; + case ATTRIBUTE_GROUP_DATA_NAME: + group_pd.history.format = _("data item name changed from \"%s\" to \"%s\""); + STR_VAL(str_val1, eina_stringshare_add(GROUP_DATA_ARGS)); + break; + case ATTRIBUTE_GROUP_DATA_VALUE: + group_pd.history.format = _("data item value changed from \"%s\" to \"%s\""); + STR_VAL(str_val1, eina_stringshare_add(GROUP_DATA_ARGS)); + break; case ATTRIBUTE_PART_TYPE: /* part type can't be changed */ break; @@ -2866,6 +2894,18 @@ _change_cb(Property_Attribute *pa, Property_Action *action) eina_stringshare_del(group_pd.history.new.str_val1); group_pd.history.new.str_val1 = str_val1; break; + case ATTRIBUTE_GROUP_DATA_NAME: + if (resource_name_validator_status_get(group_pd.group_data_name_validator) != ELM_REG_NOERROR) + break; + CRIT_ON_FAIL(editor_group_data_name_set(EDIT_OBJ, CHANGE_NO_MERGE, GROUP_DATA_ARGS, str_val1)); + eina_stringshare_del(group_pd.history.new.str_val1); + group_pd.history.new.str_val1 = str_val1; + break; + case ATTRIBUTE_GROUP_DATA_VALUE: + CRIT_ON_FAIL(editor_group_data_value_set(EDIT_OBJ, CHANGE_MERGE, GROUP_DATA_ARGS, str_val1)); + eina_stringshare_del(group_pd.history.new.str_val1); + group_pd.history.new.str_val1 = str_val1; + break; case ATTRIBUTE_PART_TYPE: /* part type can't be changed */ break; @@ -3613,6 +3653,8 @@ _stop_cb(Property_Attribute *pa, Property_Action *action) { case ATTRIBUTE_GROUP_NAME: case ATTRIBUTE_PART_NAME: + case ATTRIBUTE_GROUP_DATA_NAME: + case ATTRIBUTE_GROUP_DATA_VALUE: case ATTRIBUTE_STATE_NAME: case ATTRIBUTE_PROGRAM_NAME: case ATTRIBUTE_PROGRAM_SCRIPT: @@ -4626,11 +4668,19 @@ _init_items() /* group_data block */ case PROPERTY_GROUP_ITEM_GROUP_DATA_TITLE: - IT.name = "group data"; + IT.name = "data item"; IT.expandable = true; IT.expanded = true; IT.expand_cb = _subitems_get; break; + case PROPERTY_GROUP_ITEM_GROUP_DATA_NAME: + IT.name = "name"; + _action1(&IT, NULL, NULL, PROPERTY_CONTROL_ENTRY, ATTRIBUTE_GROUP_DATA_NAME); + break; + case PROPERTY_GROUP_ITEM_GROUP_DATA_VALUE: + IT.name = "value"; + _action1(&IT, NULL, NULL, PROPERTY_CONTROL_ENTRY, ATTRIBUTE_GROUP_DATA_VALUE); + break; case PROPERTY_GROUP_ITEM_LAST: break; @@ -4657,6 +4707,7 @@ property_group_init(Property_Data *pd) evas_object_smart_callback_add(ap.win, SIGNAL_EDITOR_ATTRIBUTE_CHANGED, _on_editor_attribute_changed, pd); group_pd.part_name_validator = resource_name_validator_new(PART_NAME_REGEX, NULL); + group_pd.group_data_name_validator = resource_name_validator_new(DATA_NAME_REGEX, NULL); } Eina_List * diff --git a/src/bin/ui/property/property_private.h b/src/bin/ui/property/property_private.h index 9f5df69..6fdb6d4 100644 --- a/src/bin/ui/property/property_private.h +++ b/src/bin/ui/property/property_private.h @@ -322,6 +322,8 @@ typedef enum { PROPERTY_GROUP_ITEM_PROGRAM_AFTER, PROPERTY_GROUP_ITEM_GROUP_DATA_TITLE, + PROPERTY_GROUP_ITEM_GROUP_DATA_NAME, + PROPERTY_GROUP_ITEM_GROUP_DATA_VALUE, PROPERTY_GROUP_ITEM_LAST } Property_Group_Item; --
