diff --git a/legacy/edje/src/bin/edje_cc_handlers.c b/legacy/edje/src/bin/edje_cc_handlers.c index 2c92ffa315..5c74d2aebc 100644 --- a/legacy/edje/src/bin/edje_cc_handlers.c +++ b/legacy/edje/src/bin/edje_cc_handlers.c @@ -3442,9 +3442,9 @@ st_collections_group_parts_part_description_inherit(void) #define STRDUP(x) x ? strdup(x) : NULL ed->common.color_class = STRDUP(ed->common.color_class); - ed->text.text = STRDUP(ed->text.text); + ed->text.text.str = STRDUP(ed->text.text.str); ed->text.text_class = STRDUP(ed->text.text_class); - ed->text.font = STRDUP(ed->text.font); + ed->text.font.str = STRDUP(ed->text.font.str); #undef STRDUP data_queue_part_slave_lookup(&(parent->text.id_source), &(ed->text.id_source)); @@ -4812,7 +4812,7 @@ st_collections_group_parts_part_description_text_text(void) free(s); } } - ed->text.text = str; + ed->text.text.str = str; } /** @@ -4887,7 +4887,7 @@ st_collections_group_parts_part_description_text_font(void) ed = ep->default_desc; if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); - ed->text.font = parse_str(0); + ed->text.font.str = parse_str(0); } /** @@ -4924,7 +4924,7 @@ st_collections_group_parts_part_description_text_style(void) ed = ep->default_desc; if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); - ed->text.style = parse_str(0); + ed->text.style.str = parse_str(0); } /** @@ -4962,7 +4962,7 @@ st_collections_group_parts_part_description_text_repch(void) ed = ep->default_desc; if (ep->other_desc) ed = eina_list_data_get(eina_list_last(ep->other_desc)); - ed->text.repch = parse_str(0); + ed->text.repch.str = parse_str(0); } /** diff --git a/legacy/edje/src/bin/edje_convert.c b/legacy/edje/src/bin/edje_convert.c index 384eb5cf54..07f234afd3 100644 --- a/legacy/edje/src/bin/edje_convert.c +++ b/legacy/edje/src/bin/edje_convert.c @@ -122,14 +122,21 @@ _edje_file_convert(Eet_File *ef, Old_Edje_File *oedf) edf->fonts = eina_hash_string_small_new(free); edf->collection = eina_hash_string_small_new(free); - edf->data = eina_hash_string_small_new(NULL); + edf->data = eina_hash_string_small_new(free); if (!edf->fonts || !edf->collection || !edf->data) goto on_error; EINA_LIST_FREE(oedf->data, ed) { - eina_hash_direct_add(edf->data, ed->key, ed->value); + Edje_String *es; + + es = calloc(1, sizeof (Edje_String)); + if (!es) continue; + + es->str = ed->value; + + eina_hash_direct_add(edf->data, ed->key, es); free(ed); } @@ -282,7 +289,14 @@ _edje_collection_convert(Eet_File *ef, Edje_Part_Collection_Directory_Entry *ce, edc->data = eina_hash_string_small_new(NULL); EINA_LIST_FREE(oedc->data, di) { - eina_hash_direct_add(edc->data, di->key, di->value); + Edje_String *es; + + es = calloc(1, sizeof (Edje_String)); + if (!es) continue ; + + es->str = di->value; + + eina_hash_direct_add(edc->data, di->key, es); free(di); } diff --git a/legacy/edje/src/bin/edje_data_convert.c b/legacy/edje/src/bin/edje_data_convert.c index 85da2acd24..937b592bc7 100644 --- a/legacy/edje/src/bin/edje_data_convert.c +++ b/legacy/edje/src/bin/edje_data_convert.c @@ -308,11 +308,11 @@ _edje_edd_old_init(void) EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "color3.g", text.color3.g, EET_T_UCHAR); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "color3.b", text.color3.b, EET_T_UCHAR); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "color3.a", text.color3.a, EET_T_UCHAR); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "text.text", text.text, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "text.text", text.text.str, EET_T_STRING); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "text.text_class", text.text_class, EET_T_STRING); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "text.style", text.style, EET_T_STRING); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "text.font", text.font, EET_T_STRING); - EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "text.repch", text.repch, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "text.style", text.style.str, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "text.font", text.font.str, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "text.repch", text.repch.str, EET_T_STRING); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "text.size", text.size, EET_T_INT); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "text.fit_x", text.fit_x, EET_T_UCHAR); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_old_edje_part_description, Old_Edje_Part_Description, "text.fit_y", text.fit_y, EET_T_UCHAR); diff --git a/legacy/edje/src/lib/edje_calc.c b/legacy/edje/src/lib/edje_calc.c index fb9496269f..c1e9352a74 100644 --- a/legacy/edje/src/lib/edje_calc.c +++ b/legacy/edje/src/lib/edje_calc.c @@ -246,7 +246,7 @@ _edje_recalc(Edje *ed) void _edje_recalc_do(Edje *ed) { - int i; + unsigned int i; ed->postponed = 0; evas_object_smart_need_recalculate_set(ed->obj, 0); @@ -673,31 +673,35 @@ _edje_part_recalc_single_textblock(FLOAT_T sc, const char *text = ""; const char *style = ""; Edje_Style *stl = NULL; + const char *tmp; Eina_List *l; if (chosen_desc->text.id_source >= 0) { ep->text.source = ed->table_parts[chosen_desc->text.id_source % ed->table_parts_size]; - if (((Edje_Part_Description_Text *)ep->text.source->chosen_description)->text.style) - style = ((Edje_Part_Description_Text *)ep->text.source->chosen_description)->text.style; + + tmp = edje_string_get(&((Edje_Part_Description_Text *)ep->text.source->chosen_description)->text.style); + if (tmp) style = tmp; } else { ep->text.source = NULL; - if (chosen_desc->text.style) - style = chosen_desc->text.style; + + tmp = edje_string_get(&chosen_desc->text.style); + if (tmp) style = tmp; } if (chosen_desc->text.id_text_source >= 0) { ep->text.text_source = ed->table_parts[chosen_desc->text.id_text_source % ed->table_parts_size]; - text = ((Edje_Part_Description_Text*)ep->text.text_source->chosen_description)->text.text; + text = edje_string_get(&((Edje_Part_Description_Text*)ep->text.text_source->chosen_description)->text.text); + if (ep->text.text_source->text.text) text = ep->text.text_source->text.text; } else { ep->text.text_source = NULL; - text = chosen_desc->text.text; + text = edje_string_get(&chosen_desc->text.text); if (ep->text.text) text = ep->text.text; } @@ -815,9 +819,9 @@ _edje_part_recalc_single_text(FLOAT_T sc, ep->text.text_source = NULL; if (ep->text.text_source) - text = ((Edje_Part_Description_Text*)ep->text.text_source->chosen_description)->text.text; + text = edje_string_get(&(((Edje_Part_Description_Text*)ep->text.text_source->chosen_description)->text.text)); else - text = chosen_desc->text.text; + text = edje_string_get(&chosen_desc->text.text); if (ep->text.source) font = _edje_text_class_font_get(ed, ((Edje_Part_Description_Text*)ep->text.source->chosen_description), &size, &sfont); diff --git a/legacy/edje/src/lib/edje_data.c b/legacy/edje/src/lib/edje_data.c index 68d841fcc7..f901367c68 100644 --- a/legacy/edje/src/lib/edje_data.c +++ b/legacy/edje/src/lib/edje_data.c @@ -1,6 +1,7 @@ #include "edje_private.h" EAPI Eet_Data_Descriptor *_edje_edd_edje_file = NULL; +EAPI Eet_Data_Descriptor *_edje_edd_edje_string = NULL; EAPI Eet_Data_Descriptor *_edje_edd_edje_style = NULL; EAPI Eet_Data_Descriptor *_edje_edd_edje_style_tag = NULL; EAPI Eet_Data_Descriptor *_edje_edd_edje_color_class = NULL; @@ -17,6 +18,7 @@ EAPI Eet_Data_Descriptor *_edje_edd_edje_program_target = NULL; EAPI Eet_Data_Descriptor *_edje_edd_edje_program_after = NULL; EAPI Eet_Data_Descriptor *_edje_edd_edje_part_collection_directory_entry = NULL; EAPI Eet_Data_Descriptor *_edje_edd_edje_pack_element = NULL; +EAPI Eet_Data_Descriptor *_edje_edd_edje_pack_element_pointer = NULL; EAPI Eet_Data_Descriptor *_edje_edd_edje_part_collection = NULL; EAPI Eet_Data_Descriptor *_edje_edd_edje_part = NULL; EAPI Eet_Data_Descriptor *_edje_edd_edje_part_pointer = NULL; @@ -130,10 +132,26 @@ _edje_description_variant_type_set(const char *type, void *data, Eina_Bool unkno return EINA_FALSE; } +static Eina_Hash * +_edje_eina_hash_add_alloc(Eina_Hash *hash, + const char *key, + void *data) +{ + if (!hash) + hash = eina_hash_string_small_new(free); + + if (!hash) + return NULL; + + eina_hash_add(hash, key, data); + return hash; +} + EAPI void _edje_edd_shutdown(void) { FREED(_edje_edd_edje_file); + FREED(_edje_edd_edje_string); FREED(_edje_edd_edje_style); FREED(_edje_edd_edje_style_tag); FREED(_edje_edd_edje_color_class); @@ -148,6 +166,7 @@ _edje_edd_shutdown(void) FREED(_edje_edd_edje_program_after); FREED(_edje_edd_edje_part_collection_directory_entry); FREED(_edje_edd_edje_pack_element); + FREED(_edje_edd_edje_pack_element_pointer); FREED(_edje_edd_edje_part_collection); FREED(_edje_edd_edje_part); FREED(_edje_edd_edje_part_pointer); @@ -197,6 +216,12 @@ _edje_edd_init(void) { Eet_Data_Descriptor_Class eddc; + /* localisable string */ + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_String); + _edje_edd_edje_string = eet_data_descriptor_file_new(&eddc); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_string, Edje_String, "str", str, EET_T_STRING); + EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_string, Edje_String, "id", id, EET_T_UINT); + /* external directory */ EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_External_Directory_Entry); _edje_edd_edje_external_directory_entry = @@ -295,8 +320,8 @@ _edje_edd_init(void) /* the main file directory */ EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_File); - _edje_edd_edje_file = - eet_data_descriptor_file_new(&eddc); + eddc.func.hash_add = (void * (*)(void *, const char *, void *)) _edje_eina_hash_add_alloc; + _edje_edd_edje_file = eet_data_descriptor_file_new(&eddc); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_file, Edje_File, "compiler", compiler, EET_T_STRING); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_file, Edje_File, "version", version, EET_T_INT); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_file, Edje_File, "feature_ver", feature_ver, EET_T_INT); @@ -304,7 +329,7 @@ _edje_edd_init(void) EET_DATA_DESCRIPTOR_ADD_SUB(_edje_edd_edje_file, Edje_File, "image_dir", image_dir, _edje_edd_edje_image_directory); EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_file, Edje_File, "styles", styles, _edje_edd_edje_style); EET_DATA_DESCRIPTOR_ADD_LIST(_edje_edd_edje_file, Edje_File, "color_classes", color_classes, _edje_edd_edje_color_class); - EET_DATA_DESCRIPTOR_ADD_HASH_STRING(_edje_edd_edje_file, Edje_File, "data", data); + EET_DATA_DESCRIPTOR_ADD_HASH(_edje_edd_edje_file, Edje_File, "data", data, _edje_edd_edje_string); EET_DATA_DESCRIPTOR_ADD_HASH(_edje_edd_edje_file, Edje_File, "fonts", fonts, _edje_edd_edje_font_directory_entry); EET_DATA_DESCRIPTOR_ADD_HASH(_edje_edd_edje_file, Edje_File, "collection", collection, _edje_edd_edje_part_collection_directory_entry); @@ -689,6 +714,8 @@ _edje_edd_init(void) EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_pack_element, Edje_Pack_Element, "colspan", colspan, EET_T_USHORT); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_pack_element, Edje_Pack_Element, "rowspan", rowspan, EET_T_USHORT); + EDJE_DEFINE_POINTER_TYPE(Pack_Element, pack_element); + EET_EINA_FILE_DATA_DESCRIPTOR_CLASS_SET(&eddc, Edje_Part); eddc.func.mem_free = mem_free_part; eddc.func.mem_alloc = mem_alloc_part; @@ -713,7 +740,7 @@ _edje_edd_init(void) EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "dragable.count_y", dragable.count_y, EET_T_INT); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "dragable.counfine_id", dragable.confine_id, EET_T_INT); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "dragable.events_id", dragable.event_id, EET_T_INT); - EET_DATA_DESCRIPTOR_ADD_VAR_ARRAY(_edje_edd_edje_part, Edje_Part, "items", items, _edje_edd_edje_pack_element); + EET_DATA_DESCRIPTOR_ADD_VAR_ARRAY(_edje_edd_edje_part, Edje_Part, "items", items, _edje_edd_edje_pack_element_pointer); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "type", type, EET_T_UCHAR); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "effect", effect, EET_T_UCHAR); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part, Edje_Part, "mouse_events", mouse_events, EET_T_UCHAR); @@ -743,7 +770,7 @@ _edje_edd_init(void) EDJE_DEFINE_POINTER_TYPE(Part, part); EET_DATA_DESCRIPTOR_ADD_VAR_ARRAY(_edje_edd_edje_part_collection, Edje_Part_Collection, "parts", parts, _edje_edd_edje_part_pointer); - EET_DATA_DESCRIPTOR_ADD_HASH_STRING(_edje_edd_edje_part_collection, Edje_Part_Collection, "data", data); + EET_DATA_DESCRIPTOR_ADD_HASH(_edje_edd_edje_part_collection, Edje_Part_Collection, "data", data, _edje_edd_edje_string); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, Edje_Part_Collection, "id", id, EET_T_INT); EET_DATA_DESCRIPTOR_ADD_HASH_STRING(_edje_edd_edje_part_collection, Edje_Part_Collection, "alias", alias); EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, Edje_Part_Collection, "prop.min.w", prop.min.w, EET_T_INT); diff --git a/legacy/edje/src/lib/edje_edit.c b/legacy/edje/src/lib/edje_edit.c index 4eb1694116..e4d49b6b55 100644 --- a/legacy/edje/src/lib/edje_edit.c +++ b/legacy/edje/src/lib/edje_edit.c @@ -441,7 +441,7 @@ _edje_import_image_file(Edje *ed, const char *path, int id) static int _edje_part_id_find(Edje *ed, const char *part) { - int id; + unsigned int id; for (id = 0; id < ed->table_parts_size; id++) { @@ -669,7 +669,7 @@ _edje_fix_parts_id(Edje *ed) */ unsigned int i; int correct_id; - int count; + unsigned int count; //printf("FIXING PARTS ID \n"); @@ -1764,7 +1764,7 @@ EAPI Eina_List * edje_edit_parts_list_get(Evas_Object *obj) { Eina_List *parts = NULL; - int i; + unsigned int i; GET_ED_OR_RETURN(NULL); @@ -2119,7 +2119,7 @@ edje_edit_part_above_get(Evas_Object *obj, const char* part) GET_RP_OR_RETURN(0); - if (rp->part->id >= ed->table_parts_size - 1) return 0; + if ((unsigned int) rp->part->id >= ed->table_parts_size - 1) return 0; next = ed->table_parts[(rp->part->id + 1) % ed->table_parts_size]; @@ -2167,7 +2167,7 @@ edje_edit_part_restack_above(Evas_Object *obj, const char* part) //printf("RESTACK PART: %s ABOVE\n", part); - if (rp->part->id >= ed->table_parts_size - 1) return EINA_FALSE; + if ((unsigned int) rp->part->id >= ed->table_parts_size - 1) return EINA_FALSE; group = ed->collection; @@ -3004,11 +3004,11 @@ edje_edit_state_copy(Evas_Object *obj, const char *part, const char *from, doubl text_to->text = text_from->text; /* Update pointers. */ - PD_STRING_COPY(text_to, text_from, text.text); + PD_STRING_COPY(text_to, text_from, text.text.str); PD_STRING_COPY(text_to, text_from, text.text_class); - PD_STRING_COPY(text_to, text_from, text.style); - PD_STRING_COPY(text_to, text_from, text.font); - PD_STRING_COPY(text_to, text_from, text.repch); + PD_STRING_COPY(text_to, text_from, text.style.str); + PD_STRING_COPY(text_to, text_from, text.font.str); + PD_STRING_COPY(text_to, text_from, text.repch.str); break; } case EDJE_PART_TYPE_BOX: @@ -3760,10 +3760,7 @@ edje_edit_state_text_get(Evas_Object *obj, const char *part, const char *state, txt = (Edje_Part_Description_Text *) pd; //printf("GET TEXT of state: %s\n", state); - if (txt->text.text) - return eina_stringshare_add(txt->text.text); - - return NULL; + return eina_stringshare_add(edje_string_get(&txt->text.text)); } EAPI void @@ -3783,8 +3780,9 @@ edje_edit_state_text_set(Evas_Object *obj, const char *part, const char *state, txt = (Edje_Part_Description_Text *) pd; - _edje_if_string_free(ed, txt->text.text); - txt->text.text = (char *)eina_stringshare_add(text); + _edje_if_string_free(ed, txt->text.text.str); + txt->text.text.str = (char *)eina_stringshare_add(text); + txt->text.text.id = 0; edje_object_calc_force(obj); } @@ -4037,8 +4035,7 @@ edje_edit_state_font_get(Evas_Object *obj, const char *part, const char *state, txt = (Edje_Part_Description_Text*) pd; - if (!txt->text.font) return NULL; - return eina_stringshare_add(txt->text.font); + return eina_stringshare_add(edje_string_get(&txt->text.font)); } EAPI void @@ -4054,8 +4051,9 @@ edje_edit_state_font_set(Evas_Object *obj, const char *part, const char *state, txt = (Edje_Part_Description_Text*) pd; - _edje_if_string_free(ed, txt->text.font); - txt->text.font = (char *)eina_stringshare_add(font); + _edje_if_string_free(ed, txt->text.font.str); + txt->text.font.str = (char *)eina_stringshare_add(font); + txt->text.font.id = 0; edje_object_calc_force(obj); } @@ -5735,10 +5733,20 @@ _edje_generate_source_of_state(Evas_Object *obj, const char *part, const char *s txt = (Edje_Part_Description_Text *) pd; BUF_APPEND(I5"text {\n"); - if (txt->text.text) - BUF_APPENDF(I6"text: \"%s\";\n", txt->text.text); - if (txt->text.font) - BUF_APPENDF(I6"font: \"%s\";\n", txt->text.font); + if (edje_string_get(&txt->text.text)) + { + if (txt->text.text.id) + BUF_APPENDF(I6"text: _(\"%s\");\n", edje_string_id_get(&txt->text.text)); + else + BUF_APPENDF(I6"text: \"%s\";\n", edje_string_get(&txt->text.text)); + } + if (edje_string_get(&txt->text.font)) + { + if (txt->text.font.id) + BUF_APPENDF(I6"font: _(\"%s\");\n", edje_string_id_get(&txt->text.font)); + else + BUF_APPENDF(I6"font: \"%s\";\n", edje_string_get(&txt->text.font)); + } if (txt->text.size) BUF_APPENDF(I6"size: %d;\n", txt->text.size); if (txt->text.text_class) @@ -5908,7 +5916,8 @@ _edje_generate_source_of_group(Edje *ed, Edje_Part_Collection_Directory_Entry *p { Evas_Object *obj; Eina_List *l, *ll; - int w, h, i; + unsigned int i; + int w, h; char *data; const char *group = pce->entry; Eina_Bool ret = EINA_TRUE; diff --git a/legacy/edje/src/lib/edje_embryo.c b/legacy/edje/src/lib/edje_embryo.c index 58ef0e2c05..b265b0b938 100644 --- a/legacy/edje/src/lib/edje_embryo.c +++ b/legacy/edje/src/lib/edje_embryo.c @@ -1668,10 +1668,13 @@ _edje_embryo_fn_custom_state(Embryo_Program *ep, Embryo_Cell *params) text_desc = (Edje_Part_Description_Text*) d; - text_desc->text.text = DUP(text_desc->text.text); text_desc->text.text_class = DUP(text_desc->text.text_class); - text_desc->text.font = DUP(text_desc->text.font); - text_desc->text.style = DUP(text_desc->text.style); + text_desc->text.text.str = DUP(edje_string_get(&text_desc->text.text)); + text_desc->text.text.id = 0; + text_desc->text.font.str = DUP(edje_string_get(&text_desc->text.font)); + text_desc->text.font.id = 0; + text_desc->text.style.str = DUP(edje_string_get(&text_desc->text.style)); + text_desc->text.style.id = 0; } #undef DUP @@ -1925,7 +1928,7 @@ _edje_embryo_fn_set_state_val(Embryo_Program *ep, Embryo_Cell *params) GETSTR(s, params[3]); text = (Edje_Part_Description_Text*) rp->custom->description; - GETSTREVAS(s, text->text.text); + GETSTREVAS(s, text->text.text.str); break; } @@ -1955,7 +1958,7 @@ _edje_embryo_fn_set_state_val(Embryo_Program *ep, Embryo_Cell *params) GETSTR(s, params[3]); text = (Edje_Part_Description_Text*) rp->custom->description; - GETSTREVAS(s, text->text.font); + GETSTREVAS(s, text->text.font.str); break; } @@ -1969,7 +1972,7 @@ _edje_embryo_fn_set_state_val(Embryo_Program *ep, Embryo_Cell *params) GETSTR(s, params[3]); text = (Edje_Part_Description_Text*) rp->custom->description; - GETSTREVAS(s, text->text.style); + GETSTREVAS(s, text->text.style.str); break; } @@ -2365,7 +2368,7 @@ _edje_embryo_fn_get_state_val(Embryo_Program *ep, Embryo_Cell *params) text = (Edje_Part_Description_Text*) rp->custom->description; - s = text->text.text; + s = text->text.text.str; SETSTRALLOCATE(s); break; @@ -2397,7 +2400,7 @@ _edje_embryo_fn_get_state_val(Embryo_Program *ep, Embryo_Cell *params) text = (Edje_Part_Description_Text*) rp->custom->description; - s = text->text.font; + s = text->text.font.str; SETSTRALLOCATE(s); break; @@ -2412,7 +2415,7 @@ _edje_embryo_fn_get_state_val(Embryo_Program *ep, Embryo_Cell *params) text = (Edje_Part_Description_Text*) rp->custom->description; - s = text->text.style; + s = text->text.style.str; SETSTRALLOCATE(s); break; diff --git a/legacy/edje/src/lib/edje_entry.c b/legacy/edje/src/lib/edje_entry.c index 78c9f5ebe2..43fff8e48b 100644 --- a/legacy/edje/src/lib/edje_entry.c +++ b/legacy/edje/src/lib/edje_entry.c @@ -1696,8 +1696,8 @@ _edje_entry_real_part_init(Edje_Real_Part *rp) txt = (Edje_Part_Description_Text *) rp->chosen_description; en->select_allow = 0; - if (txt && txt->text.repch) - evas_object_textblock_replace_char_set(rp->object, txt->text.repch); + if (txt && edje_string_get(&txt->text.repch)) + evas_object_textblock_replace_char_set(rp->object, edje_string_get(&txt->text.repch)); else evas_object_textblock_replace_char_set(rp->object, "*"); } diff --git a/legacy/edje/src/lib/edje_load.c b/legacy/edje/src/lib/edje_load.c index 40dea61d3a..a1731de08f 100644 --- a/legacy/edje/src/lib/edje_load.c +++ b/legacy/edje/src/lib/edje_load.c @@ -248,7 +248,7 @@ edje_file_data_get(const char *file, const char *key) edf = _edje_cache_file_coll_open(file, NULL, &error_ret, NULL); if (edf != NULL) { - str = eina_hash_find(edf->data, key); + str = (char*) edje_string_get(eina_hash_find(edf->data, key)); if (str) str = strdup(str); @@ -371,17 +371,16 @@ _edje_object_file_set_internal(Evas_Object *obj, const char *file, const char *g } else { - int i; + unsigned int i; int errors = 0; - unsigned int j; /* colorclass stuff */ - for (j = 0; j < ed->collection->parts_count; ++j) + for (i = 0; i < ed->collection->parts_count; ++i) { Edje_Part *ep; unsigned int k; - ep = ed->collection->parts[j]; + ep = ed->collection->parts[i]; if (errors) break; @@ -852,7 +851,7 @@ _edje_object_file_set_internal(Evas_Object *obj, const char *file, const char *g const char *style; text = (Edje_Part_Description_Text *) rp->part->default_desc; - style = text->text.style; + style = edje_string_get(&text->text.style); if (style) { Eina_List *l; @@ -903,7 +902,7 @@ static Eina_List * _edje_swallows_collect(Edje *ed) { Eina_List *swallows = NULL; - int i; + unsigned int i; if (!ed->file || !ed->table_parts) return NULL; for (i = 0; i < ed->table_parts_size; i++) @@ -940,7 +939,7 @@ _edje_file_del(Edje *ed) if (!((ed->file) && (ed->collection))) return; if (ed->table_parts) { - int i; + unsigned int i; for (i = 0; i < ed->table_parts_size; i++) { Edje_Real_Part *rp; @@ -1195,6 +1194,9 @@ _edje_collection_free(Edje_File *edf, Edje_Part_Collection *ec, Edje_Part_Collec free(ep->other.desc); free(ep->items); } + free(ec->parts); + ec->parts = NULL; + if (ec->data) eina_hash_free(ec->data); #ifdef EDJE_PROGRAM_CACHE if (ec->prog_cache.no_matches) eina_hash_free(ec->prog_cache.no_matches); @@ -1265,10 +1267,10 @@ _edje_collection_free_part_description_clean(int type, Edje_Part_Description_Com text = (Edje_Part_Description_Text *) desc; - if (text->text.text) eina_stringshare_del(text->text.text); + if (text->text.text.str) eina_stringshare_del(text->text.text.str); if (text->text.text_class) eina_stringshare_del(text->text.text_class); - if (text->text.style) eina_stringshare_del(text->text.style); - if (text->text.font) eina_stringshare_del(text->text.font); + if (text->text.style.str) eina_stringshare_del(text->text.style.str); + if (text->text.font.str) eina_stringshare_del(text->text.font.str); } break; } diff --git a/legacy/edje/src/lib/edje_message_queue.c b/legacy/edje/src/lib/edje_message_queue.c index 4a0a8bdc0a..25b0dcb0e3 100644 --- a/legacy/edje/src/lib/edje_message_queue.c +++ b/legacy/edje/src/lib/edje_message_queue.c @@ -45,7 +45,7 @@ EAPI void edje_object_message_send(Evas_Object *obj, Edje_Message_Type type, int id, void *msg) { Edje *ed; - int i; + unsigned int i; ed = _edje_fetch(obj); if (!ed) return; @@ -207,7 +207,7 @@ _edje_message_shutdown(void) void _edje_message_cb_set(Edje *ed, void (*func) (void *data, Evas_Object *obj, Edje_Message_Type type, int id, void *msg), void *data) { - int i; + unsigned int i; ed->message.func = func; ed->message.data = data; diff --git a/legacy/edje/src/lib/edje_private.h b/legacy/edje/src/lib/edje_private.h index 68cc7a350b..ff110b7ca1 100644 --- a/legacy/edje/src/lib/edje_private.h +++ b/legacy/edje/src/lib/edje_private.h @@ -200,6 +200,12 @@ struct _Edje_Aspect Edje_Aspect_Control mode; }; +struct _Edje_String +{ + char *str; + unsigned int id; +}; + typedef struct _Edje_Position_Scale Edje_Alignment; typedef struct _Edje_Position_Scale Edje_Position_Scale; typedef struct _Edje_Position Edje_Position; @@ -208,6 +214,7 @@ typedef struct _Edje_Rectangle Edje_Rectangle; typedef struct _Edje_Color Edje_Color; typedef struct _Edje_Aspect_Prefer Edje_Aspect_Prefer; typedef struct _Edje_Aspect Edje_Aspect; +typedef struct _Edje_String Edje_String; typedef struct _Edje_File Edje_File; typedef struct _Edje_Style Edje_Style; @@ -757,11 +764,11 @@ struct _Edje_Part_Description_Spec_Image struct _Edje_Part_Description_Spec_Text { - char *text; /* if "" or NULL, then leave text unchanged */ + Edje_String text; /* if "" or NULL, then leave text unchanged */ char *text_class; /* how to apply/modify the font */ - char *style; /* the text style if a textblock */ - char *font; /* if a specific font is asked for */ - char *repch; /* replacement char for password mode entry */ + Edje_String style; /* the text style if a textblock */ + Edje_String font; /* if a specific font is asked for */ + Edje_String repch; /* replacement char for password mode entry */ Edje_Alignment align; /* text alignment within bounds */ Edje_Color color3; @@ -918,8 +925,8 @@ struct _Edje Eina_List *text_insert_filter_callbacks; void *script_only_data; int table_programs_size; - int table_parts_size; - + unsigned int table_parts_size; + Edje_Perspective *persp; struct { @@ -1759,7 +1766,9 @@ void _edje_lua2_script_func_move(Edje *ed); void _edje_lua2_script_func_resize(Edje *ed); void _edje_lua2_script_func_message(Edje *ed, Edje_Message *em); void _edje_lua2_script_func_signal(Edje *ed, const char *sig, const char *src); - #endif +const char *edje_string_get(const Edje_String *es); +const char *edje_string_id_get(const Edje_String *es); + #endif diff --git a/legacy/edje/src/lib/edje_program.c b/legacy/edje/src/lib/edje_program.c index 26c9b0355a..fdaaf237d2 100644 --- a/legacy/edje/src/lib/edje_program.c +++ b/legacy/edje/src/lib/edje_program.c @@ -282,7 +282,7 @@ edje_object_play_set(Evas_Object *obj, Eina_Bool play) double t; Eina_List *l; Edje_Running_Program *runp; - int i; + unsigned int i; ed = _edje_fetch(obj); if (!ed) return; @@ -356,7 +356,7 @@ edje_object_animation_set(Evas_Object *obj, Eina_Bool on) { Edje *ed; Eina_List *l; - int i; + unsigned int i; ed = _edje_fetch(obj); if (!ed) return; @@ -912,7 +912,7 @@ _edje_program_run(Edje *ed, Edje_Program *pr, Eina_Bool force, const char *ssig, focused = evas_focus_get(evas_object_evas_get(ed->obj)); if (focused) { - int i; + unsigned int i; /* Check if the current swallowed object is one of my child. */ for (i = 0; i < ed->table_parts_size; ++i) @@ -1026,7 +1026,7 @@ _edje_emit(Edje *ed, const char *sig, const char *src) if (part) { char *newsig; - int i; + unsigned int i; memcpy(part, sig, length); diff --git a/legacy/edje/src/lib/edje_smart.c b/legacy/edje/src/lib/edje_smart.c index 13a4127152..72ce6ec006 100644 --- a/legacy/edje/src/lib/edje_smart.c +++ b/legacy/edje/src/lib/edje_smart.c @@ -147,7 +147,6 @@ static void _edje_smart_move(Evas_Object * obj, Evas_Coord x, Evas_Coord y) { Edje *ed; - int i; ed = evas_object_smart_data_get(obj); if (!ed) return; @@ -174,6 +173,8 @@ _edje_smart_move(Evas_Object * obj, Evas_Coord x, Evas_Coord y) } else { + unsigned int i; + for (i = 0; i < ed->table_parts_size; i++) { Edje_Real_Part *ep; diff --git a/legacy/edje/src/lib/edje_text.c b/legacy/edje/src/lib/edje_text.c index c6628711d8..23dd35fe0e 100644 --- a/legacy/edje/src/lib/edje_text.c +++ b/legacy/edje/src/lib/edje_text.c @@ -280,7 +280,7 @@ _edje_text_class_font_get(Edje *ed, Edje_Part_Description_Text *chosen_desc, int Edje_Text_Class *tc; const char *text_class_name, *font; - font = chosen_desc->text.font; + font = edje_string_get(&chosen_desc->text.font); *size = chosen_desc->text.size; text_class_name = chosen_desc->text.text_class; @@ -291,7 +291,7 @@ _edje_text_class_font_get(Edje *ed, Edje_Part_Description_Text *chosen_desc, int if (!tc) return font; - font = _edje_text_font_get(chosen_desc->text.font, tc->font, free_later); + font = _edje_text_font_get(edje_string_get(&chosen_desc->text.font), tc->font, free_later); *size = _edje_text_size_calc(*size, tc); return font; @@ -314,7 +314,7 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep, sc = ed->scale; if (sc == 0.0) sc = _edje_scale; - text = chosen_desc->text.text; + text = edje_string_get(&chosen_desc->text.text); font = _edje_text_class_font_get(ed, chosen_desc, &size, &sfont); if (ep->text.text) text = (char *) ep->text.text; @@ -323,12 +323,12 @@ _edje_text_recalc_apply(Edje *ed, Edje_Real_Part *ep, if (ep->text.text_source) { - text = ((Edje_Part_Description_Text *)ep->text.text_source->chosen_description)->text.text; + text = edje_string_get(&(((Edje_Part_Description_Text *)ep->text.text_source->chosen_description)->text.text)); if (ep->text.text_source->text.text) text = ep->text.text_source->text.text; } if (ep->text.source) { - font = ((Edje_Part_Description_Text *)ep->text.source->chosen_description)->text.font; + font = edje_string_get(&(((Edje_Part_Description_Text *)ep->text.source->chosen_description)->text.font)); size = ((Edje_Part_Description_Text *)ep->text.source->chosen_description)->text.size; if (ep->text.source->text.font) font = ep->text.source->text.font; if (ep->text.source->text.size > 0) size = ep->text.source->text.size; diff --git a/legacy/edje/src/lib/edje_util.c b/legacy/edje/src/lib/edje_util.c index cf24b537b4..f94b54ae66 100644 --- a/legacy/edje/src/lib/edje_util.c +++ b/legacy/edje/src/lib/edje_util.c @@ -75,7 +75,7 @@ edje_freeze(void) static void _edje_thaw_edje(Edje *ed) { - int i; + unsigned int i; for (i = 0; i < ed->table_parts_size; i++) { @@ -297,7 +297,7 @@ edje_object_data_get(const Evas_Object *obj, const char *key) return NULL; if (!ed->collection) return NULL; if (!ed->collection->data) return NULL; - return eina_hash_find(ed->collection->data, key); + return edje_string_get(eina_hash_find(ed->collection->data, key)); } /** @@ -314,7 +314,7 @@ EAPI int edje_object_freeze(Evas_Object *obj) { Edje *ed; - int i; + unsigned int i; ed = _edje_fetch(obj); if (!ed) return 0; @@ -341,7 +341,7 @@ EAPI int edje_object_thaw(Evas_Object *obj) { Edje *ed; - int i; + unsigned int i; ed = _edje_fetch(obj); if (!ed) return 0; @@ -642,7 +642,7 @@ edje_object_color_class_set(Evas_Object *obj, const char *color_class, int r, in Edje *ed; Eina_List *l; Edje_Color_Class *cc; - int i; + unsigned int i; ed = _edje_fetch(obj); if ((!ed) || (!color_class)) return EINA_FALSE; @@ -810,7 +810,7 @@ edje_object_color_class_del(Evas_Object *obj, const char *color_class) Edje *ed; Eina_List *l; Edje_Color_Class *cc = NULL; - int i; + unsigned int i; if (!color_class) return; @@ -1007,7 +1007,7 @@ edje_object_text_class_set(Evas_Object *obj, const char *text_class, const char Edje *ed; Eina_List *l; Edje_Text_Class *tc; - int i; + unsigned int i; ed = _edje_fetch(obj); if ((!ed) || (!text_class)) return EINA_FALSE; @@ -1221,7 +1221,7 @@ EAPI void edje_object_text_change_cb_set(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, const char *part), void *data) { Edje *ed; - int i; + unsigned int i; ed = _edje_fetch(obj); if (!ed) return; @@ -2733,7 +2733,7 @@ edje_object_parts_extends_calc(Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, E Edje *ed; Evas_Coord x1 = INT_MAX, y1 = INT_MAX; Evas_Coord x2 = 0, y2 = 0; - int i; + unsigned int i; ed = _edje_fetch(obj); if (!ed) @@ -2821,7 +2821,7 @@ edje_object_size_min_restricted_calc(Evas_Object *obj, Evas_Coord *minw, Evas_Co ok = 1; while (ok) { - int i; + unsigned int i; ok = 0; ed->dirty = 1; @@ -4101,7 +4101,7 @@ edje_object_preload(Evas_Object *obj, Eina_Bool cancel) { Edje *ed; int count; - int i; + unsigned int i; ed = _edje_fetch(obj); if (!ed) return EINA_FALSE; @@ -4352,7 +4352,7 @@ _edje_real_part_recursive_get_helper(Edje *ed, char **path) Edje_Real_Part * _edje_real_part_get(Edje *ed, const char *part) { - int i; + unsigned int i; if (!part) return NULL; @@ -4935,3 +4935,19 @@ edje_program_is_strrncmp(const char *str) return EINA_FALSE; return EINA_TRUE; } + +const char * +edje_string_get(const Edje_String *es) +{ + /* FIXME: Handle localization here */ + if (!es) return NULL; + return es->str; +} + +const char * +edje_string_id_get(const Edje_String *es) +{ + /* FIXME: Handle localization here */ + if (!es) return NULL; + return es->str; +}