edje_cc_handlers.c   edje_cc_handlers.c 
skipping to change at line 109 skipping to change at line 109
static void ob_collections(void); static void ob_collections(void);
static void ob_collections_group(void); static void ob_collections_group(void);
static void st_collections_group_name(void); static void st_collections_group_name(void);
static void st_collections_group_inherit(void); static void st_collections_group_inherit(void);
static void st_collections_group_script_only(void); static void st_collections_group_script_only(void);
static void st_collections_group_alias(void); static void st_collections_group_alias(void);
static void st_collections_group_min(void); static void st_collections_group_min(void);
static void st_collections_group_max(void); static void st_collections_group_max(void);
static void st_collections_group_broadcast_signal(void);
static void st_collections_group_data_item(void); static void st_collections_group_data_item(void);
static void st_collections_group_orientation(void); static void st_collections_group_orientation(void);
static void st_collections_group_limits_vertical(void); static void st_collections_group_limits_vertical(void);
static void st_collections_group_limits_horizontal(void); static void st_collections_group_limits_horizontal(void);
static void ob_collections_group_script(void); static void ob_collections_group_script(void);
static void ob_collections_group_lua_script(void); static void ob_collections_group_lua_script(void);
static void st_collections_group_parts_alias(void); static void st_collections_group_parts_alias(void);
skipping to change at line 175 skipping to change at line 176
static void st_collections_group_parts_part_table_items_item_span(void); static void st_collections_group_parts_part_table_items_item_span(void);
static void ob_collections_group_parts_part_description(void); static void ob_collections_group_parts_part_description(void);
static void st_collections_group_parts_part_description_inherit(void); static void st_collections_group_parts_part_description_inherit(void);
static void st_collections_group_parts_part_description_source(void); static void st_collections_group_parts_part_description_source(void);
static void st_collections_group_parts_part_description_state(void); static void st_collections_group_parts_part_description_state(void);
static void st_collections_group_parts_part_description_visible(void); static void st_collections_group_parts_part_description_visible(void);
static void st_collections_group_parts_part_description_align(void); static void st_collections_group_parts_part_description_align(void);
static void st_collections_group_parts_part_description_fixed(void); static void st_collections_group_parts_part_description_fixed(void);
static void st_collections_group_parts_part_description_min(void); static void st_collections_group_parts_part_description_min(void);
static void st_collections_group_parts_part_description_minmul(void);
static void st_collections_group_parts_part_description_max(void); static void st_collections_group_parts_part_description_max(void);
static void st_collections_group_parts_part_description_step(void); static void st_collections_group_parts_part_description_step(void);
static void st_collections_group_parts_part_description_aspect(void); static void st_collections_group_parts_part_description_aspect(void);
static void st_collections_group_parts_part_description_aspect_preference(v oid); static void st_collections_group_parts_part_description_aspect_preference(v oid);
static void st_collections_group_parts_part_description_rel1_relative(void) ; static void st_collections_group_parts_part_description_rel1_relative(void) ;
static void st_collections_group_parts_part_description_rel1_offset(void); static void st_collections_group_parts_part_description_rel1_offset(void);
static void st_collections_group_parts_part_description_rel1_to(void); static void st_collections_group_parts_part_description_rel1_to(void);
static void st_collections_group_parts_part_description_rel1_to_x(void); static void st_collections_group_parts_part_description_rel1_to_x(void);
static void st_collections_group_parts_part_description_rel1_to_y(void); static void st_collections_group_parts_part_description_rel1_to_y(void);
static void st_collections_group_parts_part_description_rel2_relative(void) ; static void st_collections_group_parts_part_description_rel2_relative(void) ;
skipping to change at line 264 skipping to change at line 266
static void st_collections_group_programs_program_source(void); static void st_collections_group_programs_program_source(void);
static void st_collections_group_programs_program_filter(void); static void st_collections_group_programs_program_filter(void);
static void st_collections_group_programs_program_in(void); static void st_collections_group_programs_program_in(void);
static void st_collections_group_programs_program_action(void); static void st_collections_group_programs_program_action(void);
static void st_collections_group_programs_program_transition(void); static void st_collections_group_programs_program_transition(void);
static void st_collections_group_programs_program_target(void); static void st_collections_group_programs_program_target(void);
static void st_collections_group_programs_program_after(void); static void st_collections_group_programs_program_after(void);
static void st_collections_group_programs_program_api(void); static void st_collections_group_programs_program_api(void);
static void ob_collections_group_programs_program_script(void); static void ob_collections_group_programs_program_script(void);
#ifdef ENABLE_MULTISENSE
static void st_collections_group_sound_sample_name(void); static void st_collections_group_sound_sample_name(void);
static void st_collections_group_sound_sample_source(void); static void st_collections_group_sound_sample_source(void);
static void st_collections_group_sound_tone(void); static void st_collections_group_sound_tone(void);
#endif
/*****/ /*****/
New_Statement_Handler statement_handlers[] = New_Statement_Handler statement_handlers[] =
{ {
{"externals.external", st_externals_external}, {"externals.external", st_externals_external},
{"images.image", st_images_image}, {"images.image", st_images_image},
{"images.set.name", st_images_set_name}, {"images.set.name", st_images_set_name},
{"images.set.image.image", st_images_set_image_image}, {"images.set.image.image", st_images_set_image_image},
{"images.set.image.size", st_images_set_image_size}, {"images.set.image.size", st_images_set_image_size},
skipping to change at line 308 skipping to change at line 307
{"collections.images.set.image.size", st_images_set_image_size}, /* du p */ {"collections.images.set.image.size", st_images_set_image_size}, /* du p */
{"collections.font", st_fonts_font}, /* dup */ {"collections.font", st_fonts_font}, /* dup */
{"collections.fonts.font", st_fonts_font}, /* dup */ {"collections.fonts.font", st_fonts_font}, /* dup */
{"collections.styles.style.name", st_styles_style_name}, /* dup */ {"collections.styles.style.name", st_styles_style_name}, /* dup */
{"collections.styles.style.base", st_styles_style_base}, /* dup */ {"collections.styles.style.base", st_styles_style_base}, /* dup */
{"collections.styles.style.tag", st_styles_style_tag}, /* dup */ {"collections.styles.style.tag", st_styles_style_tag}, /* dup */
{"collections.color_classes.color_class.name", st_color_class_name}, / * dup */ {"collections.color_classes.color_class.name", st_color_class_name}, / * dup */
{"collections.color_classes.color_class.color", st_color_class_color}, /* dup */ {"collections.color_classes.color_class.color", st_color_class_color}, /* dup */
{"collections.color_classes.color_class.color2", st_color_class_color2 }, /* dup */ {"collections.color_classes.color_class.color2", st_color_class_color2 }, /* dup */
{"collections.color_classes.color_class.color3", st_color_class_color3 }, /* dup */ {"collections.color_classes.color_class.color3", st_color_class_color3 }, /* dup */
#ifdef ENABLE_MULTISENSE
{"collections.sounds.sample.name", st_collections_group_sound_sample_n ame}, {"collections.sounds.sample.name", st_collections_group_sound_sample_n ame},
{"collections.sounds.sample.source", st_collections_group_sound_sample _source}, {"collections.sounds.sample.source", st_collections_group_sound_sample _source},
{"collections.group.sounds.sample.name", st_collections_group_sound_sa mple_name}, /* dup */ {"collections.group.sounds.sample.name", st_collections_group_sound_sa mple_name}, /* dup */
{"collections.group.sounds.sample.source", st_collections_group_sound_ sample_source}, /* dup */ {"collections.group.sounds.sample.source", st_collections_group_sound_ sample_source}, /* dup */
{"collections.sounds.tone", st_collections_group_sound_tone}, {"collections.sounds.tone", st_collections_group_sound_tone},
{"collections.group.sounds.tone", st_collections_group_sound_tone}, /* dup */ {"collections.group.sounds.tone", st_collections_group_sound_tone}, /* dup */
#endif
{"collections.group.name", st_collections_group_name}, {"collections.group.name", st_collections_group_name},
{"collections.group.inherit", st_collections_group_inherit}, {"collections.group.inherit", st_collections_group_inherit},
{"collections.group.script_only", st_collections_group_script_only}, {"collections.group.script_only", st_collections_group_script_only},
{"collections.group.lua_script_only", st_collections_group_script_only }, {"collections.group.lua_script_only", st_collections_group_script_only },
{"collections.group.alias", st_collections_group_alias}, {"collections.group.alias", st_collections_group_alias},
{"collections.group.min", st_collections_group_min}, {"collections.group.min", st_collections_group_min},
{"collections.group.max", st_collections_group_max}, {"collections.group.max", st_collections_group_max},
{"collections.group.broadcast_signal", st_collections_group_broadcast_ signal},
{"collections.group.orientation", st_collections_group_orientation}, {"collections.group.orientation", st_collections_group_orientation},
{"collections.group.data.item", st_collections_group_data_item}, {"collections.group.data.item", st_collections_group_data_item},
{"collections.group.limits.horizontal", st_collections_group_limits_ho rizontal}, {"collections.group.limits.horizontal", st_collections_group_limits_ho rizontal},
{"collections.group.limits.vertical", st_collections_group_limits_vert ical}, {"collections.group.limits.vertical", st_collections_group_limits_vert ical},
{"collections.group.externals.external", st_externals_external}, /* du p */ {"collections.group.externals.external", st_externals_external}, /* du p */
{"collections.group.image", st_images_image}, /* dup */ {"collections.group.image", st_images_image}, /* dup */
{"collections.group.set.name", st_images_set_name}, {"collections.group.set.name", st_images_set_name},
{"collections.group.set.image.image", st_images_set_image_image}, {"collections.group.set.image.image", st_images_set_image_image},
{"collections.group.set.image.size", st_images_set_image_size}, {"collections.group.set.image.size", st_images_set_image_size},
{"collections.group.images.image", st_images_image}, /* dup */ {"collections.group.images.image", st_images_image}, /* dup */
skipping to change at line 441 skipping to change at line 440
{"collections.group.parts.part.table.items.item.options", st_collectio ns_group_parts_part_box_items_item_options}, /* dup */ {"collections.group.parts.part.table.items.item.options", st_collectio ns_group_parts_part_box_items_item_options}, /* dup */
{"collections.group.parts.part.table.items.item.position", st_collecti ons_group_parts_part_table_items_item_position}, {"collections.group.parts.part.table.items.item.position", st_collecti ons_group_parts_part_table_items_item_position},
{"collections.group.parts.part.table.items.item.span", st_collections_ group_parts_part_table_items_item_span}, {"collections.group.parts.part.table.items.item.span", st_collections_ group_parts_part_table_items_item_span},
{"collections.group.parts.part.description.inherit", st_collections_gr oup_parts_part_description_inherit}, {"collections.group.parts.part.description.inherit", st_collections_gr oup_parts_part_description_inherit},
{"collections.group.parts.part.description.source", st_collections_gro up_parts_part_description_source}, {"collections.group.parts.part.description.source", st_collections_gro up_parts_part_description_source},
{"collections.group.parts.part.description.state", st_collections_grou p_parts_part_description_state}, {"collections.group.parts.part.description.state", st_collections_grou p_parts_part_description_state},
{"collections.group.parts.part.description.visible", st_collections_gr oup_parts_part_description_visible}, {"collections.group.parts.part.description.visible", st_collections_gr oup_parts_part_description_visible},
{"collections.group.parts.part.description.align", st_collections_grou p_parts_part_description_align}, {"collections.group.parts.part.description.align", st_collections_grou p_parts_part_description_align},
{"collections.group.parts.part.description.fixed", st_collections_grou p_parts_part_description_fixed}, {"collections.group.parts.part.description.fixed", st_collections_grou p_parts_part_description_fixed},
{"collections.group.parts.part.description.min", st_collections_group_ parts_part_description_min}, {"collections.group.parts.part.description.min", st_collections_group_ parts_part_description_min},
{"collections.group.parts.part.description.minmul", st_collections_gro up_parts_part_description_minmul},
{"collections.group.parts.part.description.max", st_collections_group_ parts_part_description_max}, {"collections.group.parts.part.description.max", st_collections_group_ parts_part_description_max},
{"collections.group.parts.part.description.step", st_collections_group _parts_part_description_step}, {"collections.group.parts.part.description.step", st_collections_group _parts_part_description_step},
{"collections.group.parts.part.description.aspect", st_collections_gro up_parts_part_description_aspect}, {"collections.group.parts.part.description.aspect", st_collections_gro up_parts_part_description_aspect},
{"collections.group.parts.part.description.aspect_preference", st_coll ections_group_parts_part_description_aspect_preference}, {"collections.group.parts.part.description.aspect_preference", st_coll ections_group_parts_part_description_aspect_preference},
{"collections.group.parts.part.description.rel1.relative", st_collecti ons_group_parts_part_description_rel1_relative}, {"collections.group.parts.part.description.rel1.relative", st_collecti ons_group_parts_part_description_rel1_relative},
{"collections.group.parts.part.description.rel1.offset", st_collection s_group_parts_part_description_rel1_offset}, {"collections.group.parts.part.description.rel1.offset", st_collection s_group_parts_part_description_rel1_offset},
{"collections.group.parts.part.description.rel1.to", st_collections_gr oup_parts_part_description_rel1_to}, {"collections.group.parts.part.description.rel1.to", st_collections_gr oup_parts_part_description_rel1_to},
{"collections.group.parts.part.description.rel1.to_x", st_collections_ group_parts_part_description_rel1_to_x}, {"collections.group.parts.part.description.rel1.to_x", st_collections_ group_parts_part_description_rel1_to_x},
{"collections.group.parts.part.description.rel1.to_y", st_collections_ group_parts_part_description_rel1_to_y}, {"collections.group.parts.part.description.rel1.to_y", st_collections_ group_parts_part_description_rel1_to_y},
{"collections.group.parts.part.description.rel2.relative", st_collecti ons_group_parts_part_description_rel2_relative}, {"collections.group.parts.part.description.rel2.relative", st_collecti ons_group_parts_part_description_rel2_relative},
skipping to change at line 680 skipping to change at line 680
{"collections.set", ob_images_set}, /* dup */ {"collections.set", ob_images_set}, /* dup */
{"collections.set.image", ob_images_set_image}, /* dup */ {"collections.set.image", ob_images_set_image}, /* dup */
{"collections.images", NULL}, /* dup */ {"collections.images", NULL}, /* dup */
{"collections.images.set", ob_images_set}, /* dup */ {"collections.images.set", ob_images_set}, /* dup */
{"collections.images.set.image", ob_images_set_image}, /* dup */ {"collections.images.set.image", ob_images_set_image}, /* dup */
{"collections.fonts", NULL}, /* dup */ {"collections.fonts", NULL}, /* dup */
{"collections.styles", NULL}, /* dup */ {"collections.styles", NULL}, /* dup */
{"collections.styles.style", ob_styles_style}, /* dup */ {"collections.styles.style", ob_styles_style}, /* dup */
{"collections.color_classes", NULL}, /* dup */ {"collections.color_classes", NULL}, /* dup */
{"collections.color_classes.color_class", ob_color_class}, /* dup */ {"collections.color_classes.color_class", ob_color_class}, /* dup */
#ifdef ENABLE_MULTISENSE
{"collections.sounds", NULL}, {"collections.sounds", NULL},
{"collections.group.sounds", NULL}, /* dup */ {"collections.group.sounds", NULL}, /* dup */
{"collections.sounds.sample", NULL}, {"collections.sounds.sample", NULL},
{"collections.group.sounds.sample", NULL}, /* dup */ {"collections.group.sounds.sample", NULL}, /* dup */
#endif
{"collections.group", ob_collections_group}, {"collections.group", ob_collections_group},
{"collections.group.data", NULL}, {"collections.group.data", NULL},
{"collections.group.limits", NULL}, {"collections.group.limits", NULL},
{"collections.group.script", ob_collections_group_script}, {"collections.group.script", ob_collections_group_script},
{"collections.group.lua_script", ob_collections_group_lua_script}, {"collections.group.lua_script", ob_collections_group_lua_script},
{"collections.group.externals", NULL}, /* dup */ {"collections.group.externals", NULL}, /* dup */
{"collections.group.set", ob_images_set}, /* dup */ {"collections.group.set", ob_images_set}, /* dup */
{"collections.group.set.image", ob_images_set_image}, /* dup */ {"collections.group.set.image", ob_images_set_image}, /* dup */
{"collections.group.images", NULL}, /* dup */ {"collections.group.images", NULL}, /* dup */
{"collections.group.images.set", ob_images_set}, /* dup */ {"collections.group.images.set", ob_images_set}, /* dup */
skipping to change at line 840 skipping to change at line 838
fill->abs_x = 0; fill->abs_x = 0;
fill->pos_rel_y = FROM_DOUBLE(0.0); fill->pos_rel_y = FROM_DOUBLE(0.0);
fill->pos_abs_y = 0; fill->pos_abs_y = 0;
fill->rel_y = FROM_DOUBLE(1.0); fill->rel_y = FROM_DOUBLE(1.0);
fill->abs_y = 0; fill->abs_y = 0;
fill->angle = 0; fill->angle = 0;
fill->spread = 0; fill->spread = 0;
fill->type = EDJE_FILL_TYPE_SCALE; fill->type = EDJE_FILL_TYPE_SCALE;
} }
static void
_edje_part_description_image_remove(Edje_Part_Description_Image *ed)
{
unsigned int j;
if (!ed) return;
data_queue_image_remove(&(ed->image.id), &(ed->image.set));
for (j = 0; j < ed->image.tweens_count; ++j)
data_queue_image_remove(&(ed->image.tweens[j]->id),
&(ed->image.tweens[j]->set));
}
void
part_description_image_cleanup(Edje_Part *ep)
{
Edje_Part_Description_Image *ed;
unsigned int j;
if (ep->type != EDJE_PART_TYPE_IMAGE)
return ;
ed = (Edje_Part_Description_Image*) ep->default_desc;
_edje_part_description_image_remove(ed);
for (j = 0; j < ep->other.desc_count; j++)
{
ed = (Edje_Part_Description_Image*) ep->other.desc[j];
_edje_part_description_image_remove(ed);
}
}
static Edje_Part_Description_Common * static Edje_Part_Description_Common *
_edje_part_description_alloc(unsigned char type, const char *collection, co nst char *part) _edje_part_description_alloc(unsigned char type, const char *collection, co nst char *part)
{ {
Edje_Part_Description_Common *result = NULL; Edje_Part_Description_Common *result = NULL;
switch (type) switch (type)
{ {
case EDJE_PART_TYPE_RECTANGLE: case EDJE_PART_TYPE_RECTANGLE:
case EDJE_PART_TYPE_SWALLOW: case EDJE_PART_TYPE_SWALLOW:
case EDJE_PART_TYPE_GROUP: case EDJE_PART_TYPE_GROUP:
skipping to change at line 1840 skipping to change at line 1871
Edje_Style *stl; Edje_Style *stl;
Edje_Style_Tag *tag; Edje_Style_Tag *tag;
stl = eina_list_data_get(eina_list_last(edje_file->styles)); stl = eina_list_data_get(eina_list_last(edje_file->styles));
tag = mem_alloc(SZ(Edje_Style_Tag)); tag = mem_alloc(SZ(Edje_Style_Tag));
tag->key = parse_str(0); tag->key = parse_str(0);
tag->value = parse_str(1); tag->value = parse_str(1);
stl->tags = eina_list_append(stl->tags, tag); stl->tags = eina_list_append(stl->tags, tag);
} }
#ifdef ENABLE_MULTISENSE
/* add to below doc
sounds { }
*/
#endif
/** /**
@page edcref @page edcref
@block @block
collections collections
@context @context
collections { collections {
.. ..
group { } group { }
group { } group { }
sounds { }
.. ..
} }
@description @description
The "collections" block is used to list the groups that compose the The "collections" block is used to list the groups that compose the
theme. Additional "collections" blocks do not prevent overriding gr oup theme. Additional "collections" blocks do not prevent overriding gr oup
names. The "sounds" block comprises of all sound definitions. names. The "sounds" block comprises of all sound definitions.
@endblock @endblock
*/ */
static void static void
ob_collections(void) ob_collections(void)
{ {
if (!edje_file->collection) if (!edje_file->collection)
edje_file->collection = eina_hash_string_small_new(NULL); edje_file->collection = eina_hash_string_small_new(NULL);
} }
#ifdef ENABLE_MULTISENSE /**
/* * delete space before *
@page edcref @page edcref
@block @block
sounds sounds
@context @context
sounds { sounds {
sample { sample {
name: "sound_file1" COMP; name: "sound_file1" COMP;
source: "sound_file1.wav"; source: "sound_file1.wav";
} }
sample { sample {
skipping to change at line 1984 skipping to change at line 2009
if (sample->compression == EDJE_SOUND_SOURCE_TYPE_INLINE_LOSSY) if (sample->compression == EDJE_SOUND_SOURCE_TYPE_INLINE_LOSSY)
{ {
sample->quality = parse_float_range(2, 45.0, 1000.0); sample->quality = parse_float_range(2, 45.0, 1000.0);
check_arg_count(3); check_arg_count(3);
} }
else else
check_arg_count(2); check_arg_count(2);
} }
/* * delete space before * /**
@page edcref @page edcref
@property @property
source source
@parameters @parameters
[sound file name] [sound file name]
@effect @effect
The Sound source file name (Source can be mono/stereo WAV file. The Sound source file name (Source can be mono/stereo WAV file.
Only files with 44.1 KHz sample rate supported now) Only files with 44.1 KHz sample rate supported now)
@endproperty @endproperty
@since 1.1.0 @since 1.1.0
skipping to change at line 2020 skipping to change at line 2045
if (!sample) if (!sample)
{ {
ERR("%s: Error. Invalid sound sample source definition.", progname) ; ERR("%s: Error. Invalid sound sample source definition.", progname) ;
exit(-1); exit(-1);
} }
sample->snd_src = parse_str(0); sample->snd_src = parse_str(0);
check_arg_count(1); check_arg_count(1);
} }
/* * delete space before * /**
@page edcref @page edcref
@property @property
tone tone
@parameters @parameters
[tone name] [frequency] [tone name] [frequency]
@effect @effect
sound of specific frequency sound of specific frequency
@endproperty @endproperty
@since 1.1.0 @since 1.1.0
*/ */
skipping to change at line 2083 skipping to change at line 2108
exit(-1); exit(-1);
} }
tone = edje_file->sound_dir->tones + edje_file->sound_dir->tones_count - 1; tone = edje_file->sound_dir->tones + edje_file->sound_dir->tones_count - 1;
memset(tone, 0, sizeof (Edje_Sound_Tone)); memset(tone, 0, sizeof (Edje_Sound_Tone));
tone->name = tmp; tone->name = tmp;
tone->value = value; tone->value = value;
tone->id = edje_file->sound_dir->tones_count - 1; tone->id = edje_file->sound_dir->tones_count - 1;
} }
#endif
/** /**
@edcsection{group,Group sub blocks} @edcsection{group,Group sub blocks}
*/ */
/** /**
@page edcref @page edcref
@block @block
group group
@context @context
skipping to change at line 2132 skipping to change at line 2156
ERR("%p: Error. A collection without a name was detected, that's not allowed.", progname); ERR("%p: Error. A collection without a name was detected, that's not allowed.", progname);
exit(-1); exit(-1);
} }
current_de = mem_alloc(SZ(Edje_Part_Collection_Directory_Entry)); current_de = mem_alloc(SZ(Edje_Part_Collection_Directory_Entry));
current_de->id = eina_list_count(edje_collections); current_de->id = eina_list_count(edje_collections);
pc = mem_alloc(SZ(Edje_Part_Collection)); pc = mem_alloc(SZ(Edje_Part_Collection));
edje_collections = eina_list_append(edje_collections, pc); edje_collections = eina_list_append(edje_collections, pc);
pc->id = current_de->id; pc->id = current_de->id;
pc->broadcast_signal = EINA_TRUE; /* This was the behaviour by default i n Edje 1.1 */
cd = mem_alloc(SZ(Code)); cd = mem_alloc(SZ(Code));
codes = eina_list_append(codes, cd); codes = eina_list_append(codes, cd);
} }
/** /**
@page edcref @page edcref
@property @property
name name
@parameters @parameters
skipping to change at line 2153 skipping to change at line 2178
@effect @effect
The name that will be used by the application to load the resulting The name that will be used by the application to load the resulting
Edje object and to identify the group to swallow in a GROUP part. I f a Edje object and to identify the group to swallow in a GROUP part. I f a
group with the same name exists already it will be completely overr iden group with the same name exists already it will be completely overr iden
by the new group. by the new group.
@endproperty @endproperty
*/ */
static void static void
st_collections_group_name(void) st_collections_group_name(void)
{ {
Edje_Part_Collection_Directory_Entry *alias;
Edje_Part_Collection_Directory_Entry *older; Edje_Part_Collection_Directory_Entry *older;
Edje_Part_Collection *current_pc; Edje_Part_Collection *current_pc;
Eina_List *l = NULL;
check_arg_count(1); check_arg_count(1);
current_pc = eina_list_data_get(eina_list_last(edje_collections)); current_pc = eina_list_data_get(eina_list_last(edje_collections));
current_de->entry = parse_str(0); current_de->entry = parse_str(0);
current_pc->part = current_de->entry; current_pc->part = current_de->entry;
older = eina_hash_find(edje_file->collection, current_de->entry); older = eina_hash_find(edje_file->collection, current_de->entry);
if (older) eina_hash_del(edje_file->collection, current_de->entry, older
);
eina_hash_direct_add(edje_file->collection, current_de->entry, current_d
e);
if (!older) return;
if (older) EINA_LIST_FOREACH(aliases, l, alias)
{ if (strcmp(alias->entry, current_de->entry) == 0)
Edje_Part_Collection *pc; {
Eina_List *l; Edje_Part_Collection *pc;
Code *cd;
int i = 0;
pc = eina_list_nth(edje_collections, older->id);
cd = eina_list_nth(codes, older->id);
eina_hash_del(edje_file->collection, current_de->entry, older);
edje_collections = eina_list_remove(edje_collections, pc);
codes = eina_list_remove(codes, cd);
EINA_LIST_FOREACH(edje_collections, l, pc)
{
older = eina_hash_find(edje_file->collection, pc->part);
pc->id = i++; pc = eina_list_nth(edje_collections, older->id);
if (older) older->id = pc->id; INF("overriding alias ('%s' => '%s') by group '%s'",
else if (pc->part == current_pc->part) current_de->id = pc->id; alias->entry, pc->part,
} current_de->entry);
} aliases = eina_list_remove_list(aliases, l);
free(alias);
break;
}
eina_hash_direct_add(edje_file->collection, current_de->entry, current_d e);
} }
typedef struct _Edje_List_Foreach_Data Edje_List_Foreach_Data; typedef struct _Edje_List_Foreach_Data Edje_List_Foreach_Data;
struct _Edje_List_Foreach_Data struct _Edje_List_Foreach_Data
{ {
Eina_List *list; Eina_List *list;
}; };
static Eina_Bool static Eina_Bool
_edje_data_item_list_foreach(const Eina_Hash *hash __UNUSED__, const void * key, void *data __UNUSED__, void *fdata) _edje_data_item_list_foreach(const Eina_Hash *hash __UNUSED__, const void * key, void *data __UNUSED__, void *fdata)
skipping to change at line 2257 skipping to change at line 2276
{ {
if (!strcmp(parent_name, pc2->part)) if (!strcmp(parent_name, pc2->part))
break; break;
} }
if (!pc2) if (!pc2)
{ {
ERR("%s: Error. parse error %s:%i. There isn't a group with the nam e %s", ERR("%s: Error. parse error %s:%i. There isn't a group with the nam e %s",
progname, file_in, line - 1, parent_name); progname, file_in, line - 1, parent_name);
exit(-1); exit(-1);
} }
if (pc2 == pc)
{
ERR("%s: Error. parse error %s:%i. You are trying to inherit '%s' f
rom itself. That's not possible."
"If there is another group of the same name, you want to inheri
t from that group and have the"
"same name as that group, there is a trick ! Just put the inher
it before the directive that set"
"the name !", progname, file_in, line - 1, parent_name);
exit(-1);
}
if (pc2->data) if (pc2->data)
{ {
char *key; char *key;
memset(&fdata, 0, sizeof(Edje_List_Foreach_Data)); memset(&fdata, 0, sizeof(Edje_List_Foreach_Data));
eina_hash_foreach(pc2->data, eina_hash_foreach(pc2->data,
_edje_data_item_list_foreach, &fdata); _edje_data_item_list_foreach, &fdata);
if (!pc->data) if (!pc->data)
skipping to change at line 2477 skipping to change at line 2504
[aditional group name] [aditional group name]
@effect @effect
Additional name to serve as identifier. Defining multiple aliases i s Additional name to serve as identifier. Defining multiple aliases i s
supported. supported.
@endproperty @endproperty
*/ */
static void static void
st_collections_group_alias(void) st_collections_group_alias(void)
{ {
Edje_Part_Collection_Directory_Entry *alias; Edje_Part_Collection_Directory_Entry *alias;
Edje_Part_Collection_Directory_Entry *tmp;
Eina_List *l;
check_arg_count(1); check_arg_count(1);
alias = mem_alloc(SZ(Edje_Part_Collection_Directory_Entry)); alias = mem_alloc(SZ(Edje_Part_Collection_Directory_Entry));
alias->id = current_de->id; alias->id = current_de->id;
alias->entry = parse_str(0); alias->entry = parse_str(0);
EINA_LIST_FOREACH(aliases, l, tmp)
if (strcmp(alias->entry, tmp->entry) == 0)
{
Edje_Part_Collection *pc;
pc = eina_list_nth(edje_collections, tmp->id);
INF("overriding alias ('%s' => '%s') to ('%s' => '%s')",
tmp->entry, pc->part,
alias->entry, current_de->entry);
aliases = eina_list_remove_list(aliases, l);
free(tmp);
break;
}
aliases = eina_list_append(aliases, alias); aliases = eina_list_append(aliases, alias);
} }
/** /**
@page edcref @page edcref
@property @property
min min
@parameters @parameters
[width] [height] [width] [height]
@effect @effect
skipping to change at line 2534 skipping to change at line 2577
Edje_Part_Collection *pc; Edje_Part_Collection *pc;
check_arg_count(2); check_arg_count(2);
pc = eina_list_data_get(eina_list_last(edje_collections)); pc = eina_list_data_get(eina_list_last(edje_collections));
pc->prop.max.w = parse_int_range(0, 0, 0x7fffffff); pc->prop.max.w = parse_int_range(0, 0, 0x7fffffff);
pc->prop.max.h = parse_int_range(1, 0, 0x7fffffff); pc->prop.max.h = parse_int_range(1, 0, 0x7fffffff);
} }
/** /**
@page edcref
@property
broadcast_signal
@parameters
[broadcast]
@effect
Signal got automatically broadcasted to all sub group part. Default
to
true since 1.1.
@endproperty
*/
static void
st_collections_group_broadcast_signal(void)
{
Edje_Part_Collection *pc;
check_arg_count(1);
pc = eina_list_data_get(eina_list_last(edje_collections));
pc->broadcast_signal = parse_bool(0);
}
/**
@page edcref @page edcref
@block @block
script script
@context @context
.. ..
group { group {
script { script {
//embryo script //embryo script
} }
.. ..
skipping to change at line 2681 skipping to change at line 2746
"LTR", EDJE_ORIENTATION_LTR, "LTR", EDJE_ORIENTATION_LTR,
"RTL", EDJE_ORIENTATION_RTL, "RTL", EDJE_ORIENTATION_RTL,
NULL); NULL);
} }
/** /**
@page edcref @page edcref
@block @block
limits limits
@context @context
group { group {
limits { limits {
vertical: "limit_name" height_barrier; vertical: "limit_name" height_barrier;
horizontal: "limit_name" width_barrier; horizontal: "limit_name" width_barrier;
.. ..
} }
.. ..
} }
.. ..
@description @description
This block is used to trigger some signal when the Edje object is r esized. This block is used to trigger some signal when the Edje object is r esized.
@endblock @endblock
@edcref @page edcref
@property @property
vertical vertical
@parameters @parameters
[name] [height barrier] [name] [height barrier]
@effect @effect
It will send a signal: "limit,name,over" when the object is resized It will send a signal: "limit,name,over" when the object is resized
and pass and pass
the limit by growing over it. And it will send: "limit,name,below" w the limit by growing over it. And it will send: "limit,name,below"
hen when
it pass below that limit. it pass below that limit.
This limit will be applied on the y absis. This limit will be applied on the y absis and is expressed in pixel
s.
@endproperty @endproperty
*/ */
static void static void
st_collections_group_limits_vertical(void) st_collections_group_limits_vertical(void)
{ {
Edje_Part_Collection *pc; Edje_Part_Collection *pc;
Edje_Limit *el; Edje_Limit *el;
check_arg_count(2); check_arg_count(2);
skipping to change at line 2738 skipping to change at line 2803
el->value = parse_int_range(1, 1, 0xffff); el->value = parse_int_range(1, 1, 0xffff);
} }
/** /**
@page edcref @page edcref
@property @property
horizontal horizontal
@parameters @parameters
[name] [width barrier] [name] [width barrier]
@effect @effect
It will send a signal: "limit,name,over" when the object is resized It will send a signal: "limit,name,over" when the object is resized
and pass and pass
the limit by growing over it. And it will send: "limit,name,below" w the limit by growing over it. And it will send: "limit,name,below"
hen when
it pass below that limit. it pass below that limit.
This limit will be applied on the x absis. This limit will be applied on the x absis and is expressed in pixel
s.
@endproperty @endproperty
*/ */
static void static void
st_collections_group_limits_horizontal(void) st_collections_group_limits_horizontal(void)
{ {
Edje_Part_Collection *pc; Edje_Part_Collection *pc;
Edje_Limit *el; Edje_Limit *el;
check_arg_count(2); check_arg_count(2);
skipping to change at line 2960 skipping to change at line 3025
@li GROUP @li GROUP
@li BOX @li BOX
@li TABLE @li TABLE
@li EXTERNAL @li EXTERNAL
@li PROXY @li PROXY
@endproperty @endproperty
*/ */
static void static void
st_collections_group_parts_part_type(void) st_collections_group_parts_part_type(void)
{ {
unsigned int type;
check_arg_count(1); check_arg_count(1);
current_part->type = parse_enum(0, type = parse_enum(0,
"NONE", EDJE_PART_TYPE_NONE, "NONE", EDJE_PART_TYPE_NONE,
"RECT", EDJE_PART_TYPE_RECTANGLE, "RECT", EDJE_PART_TYPE_RECTANGLE,
"TEXT", EDJE_PART_TYPE_TEXT, "TEXT", EDJE_PART_TYPE_TEXT,
"IMAGE", EDJE_PART_TYPE_IMAGE, "IMAGE", EDJE_PART_TYPE_IMAGE,
"SWALLOW", EDJE_PART_TYPE_SWALLOW, "SWALLOW", EDJE_PART_TYPE_SWALLOW,
"TEXTBLOCK", EDJE_PART_TYPE_TEXTBLOCK, "TEXTBLOCK", EDJE_PART_TYPE_TEXTBLOCK,
"GROUP", EDJE_PART_TYPE_GROUP, "GROUP", EDJE_PART_TYPE_GROUP,
"BOX", EDJE_PART_TYPE_BOX, "BOX", EDJE_PART_TYPE_BOX,
"TABLE", EDJE_PART_TYPE_TABLE, "TABLE", EDJE_PART_TYPE_TABLE,
"EXTERNAL", EDJE_PART_TYPE_EXTERNAL, "EXTERNAL", EDJE_PART_TYPE_EXTERNAL,
"PROXY", EDJE_PART_TYPE_PROXY, "PROXY", EDJE_PART_TYPE_PROXY,
NULL); NULL);
/* handle type change of inherited part */
if (type != current_part->type)
{
Edje_Part_Description_Common *new, *previous;
Edje_Part_Collection *pc;
Edje_Part *ep;
unsigned int i;
/* we don't free old part as we don't remove all reference to them
*/
part_description_image_cleanup(current_part);
pc = eina_list_data_get(eina_list_last(edje_collections));
ep = current_part;
previous = ep->default_desc;
if (previous)
{
new = _edje_part_description_alloc(type, pc->part, ep->name);
memcpy(new, previous, sizeof (Edje_Part_Description_Common));
ep->default_desc = new;
}
for (i = 0; i < ep->other.desc_count; i++)
{
previous = ep->other.desc[i];
new = _edje_part_description_alloc(type, pc->part, ep->name);
memcpy(new, previous, sizeof (Edje_Part_Description_Common));
ep->other.desc[i] = new;
}
}
current_part->type = type;
} }
/** /**
@page edcref @page edcref
@property @property
insert_before insert_before
@parameters @parameters
[another part's name] [another part's name]
@effect @effect
The part's name which this part is inserted before. One part cannot The part's name which this part is inserted before. One part cannot
skipping to change at line 3227 skipping to change at line 3328
source2 is specified. source2 is specified.
@endproperty @endproperty
*/ */
static void static void
st_collections_group_parts_part_source(void) st_collections_group_parts_part_source(void)
{ {
check_arg_count(1); check_arg_count(1);
//FIXME: validate this somehow (need to decide on the format also) //FIXME: validate this somehow (need to decide on the format also)
current_part->source = parse_str(0); current_part->source = parse_str(0);
data_queue_group_lookup(current_part->source, current_part);
} }
/** /**
@page edcref @page edcref
@property @property
source2 source2
@parameters @parameters
[another group's name] [another group's name]
@effect @effect
Only available to TEXTBLOCK parts. It is used for the group to be Only available to TEXTBLOCK parts. It is used for the group to be
skipping to change at line 3248 skipping to change at line 3350
is used for under of the selected text, if source is specified. is used for under of the selected text, if source is specified.
@endproperty @endproperty
*/ */
static void static void
st_collections_group_parts_part_source2(void) st_collections_group_parts_part_source2(void)
{ {
check_arg_count(1); check_arg_count(1);
//FIXME: validate this somehow (need to decide on the format also) //FIXME: validate this somehow (need to decide on the format also)
current_part->source2 = parse_str(0); current_part->source2 = parse_str(0);
data_queue_group_lookup(current_part->source2, current_part);
} }
/** /**
@page edcref @page edcref
@property @property
source3 source3
@parameters @parameters
[another group's name] [another group's name]
@effect @effect
Only available to TEXTBLOCK parts. It is used for the group to be Only available to TEXTBLOCK parts. It is used for the group to be
skipping to change at line 3269 skipping to change at line 3372
is used for over the cursor text, if source4 is specified. is used for over the cursor text, if source4 is specified.
@endproperty @endproperty
*/ */
static void static void
st_collections_group_parts_part_source3(void) st_collections_group_parts_part_source3(void)
{ {
check_arg_count(1); check_arg_count(1);
//FIXME: validate this somehow (need to decide on the format also) //FIXME: validate this somehow (need to decide on the format also)
current_part->source3 = parse_str(0); current_part->source3 = parse_str(0);
data_queue_group_lookup(current_part->source3, current_part);
} }
/** /**
@page edcref @page edcref
@property @property
source4 source4
@parameters @parameters
[another group's name] [another group's name]
@effect @effect
Only available to TEXTBLOCK parts. It is used for the group to be Only available to TEXTBLOCK parts. It is used for the group to be
skipping to change at line 3290 skipping to change at line 3394
is used for under the cursor text, if source4 is specified. is used for under the cursor text, if source4 is specified.
@endproperty @endproperty
*/ */
static void static void
st_collections_group_parts_part_source4(void) st_collections_group_parts_part_source4(void)
{ {
check_arg_count(1); check_arg_count(1);
//FIXME: validate this somehow (need to decide on the format also) //FIXME: validate this somehow (need to decide on the format also)
current_part->source4 = parse_str(0); current_part->source4 = parse_str(0);
data_queue_group_lookup(current_part->source4, current_part);
} }
/** /**
@page edcref @page edcref
@property @property
source5 source5
@parameters @parameters
[another group's name] [another group's name]
@effect @effect
Only available to TEXTBLOCK parts. It is used for the group to be Only available to TEXTBLOCK parts. It is used for the group to be
skipping to change at line 3311 skipping to change at line 3416
is used for over the anchors text, if source6 is specified. is used for over the anchors text, if source6 is specified.
@endproperty @endproperty
*/ */
static void static void
st_collections_group_parts_part_source5(void) st_collections_group_parts_part_source5(void)
{ {
check_arg_count(1); check_arg_count(1);
//FIXME: validate this somehow (need to decide on the format also) //FIXME: validate this somehow (need to decide on the format also)
current_part->source5 = parse_str(0); current_part->source5 = parse_str(0);
data_queue_group_lookup(current_part->source5, current_part);
} }
/** /**
@page edcref @page edcref
@property @property
source6 source6
@parameters @parameters
[another group's name] [another group's name]
@effect @effect
Only available to TEXTBLOCK parts. It is used for the group to be Only available to TEXTBLOCK parts. It is used for the group to be
skipping to change at line 3332 skipping to change at line 3438
is used for under the anchor text, if source6 is specified. is used for under the anchor text, if source6 is specified.
@endproperty @endproperty
*/ */
static void static void
st_collections_group_parts_part_source6(void) st_collections_group_parts_part_source6(void)
{ {
check_arg_count(1); check_arg_count(1);
//FIXME: validate this somehow (need to decide on the format also) //FIXME: validate this somehow (need to decide on the format also)
current_part->source6 = parse_str(0); current_part->source6 = parse_str(0);
data_queue_group_lookup(current_part->source6, current_part);
} }
/** /**
@page edcref @page edcref
@property @property
effect effect
@parameters @parameters
[EFFECT] [EFFECT]
(optional) [SHADOW DIRECTION] (optional) [SHADOW DIRECTION]
skipping to change at line 3442 skipping to change at line 3549
} }
/** /**
@page edcref @page edcref
@property @property
select_mode select_mode
@parameters @parameters
[MODE] [MODE]
@effect @effect
Sets the selection mode for a textblock part to one of: Sets the selection mode for a textblock part to one of:
@li DEFAULT @li DEFAULT selection mode is what you would expect on any desktop.
@li EXPLICIT Press
DEFAULT selection mode is what you would expect on any desktop. Pre mouse, drag and release to end.
ss @li EXPLICITmode requires the application
mouse, drag and release to end. EXPLICIT mode requires the applicat
ion
controlling the edje object has to explicitly begin and end selecti on controlling the edje object has to explicitly begin and end selecti on
modes, and the selection itself is dragable at both ends. modes, and the selection itself is dragable at both ends.
@endproperty @endproperty
*/ */
static void static void
st_collections_group_parts_part_select_mode(void) st_collections_group_parts_part_select_mode(void)
{ {
check_arg_count(1); check_arg_count(1);
current_part->select_mode = parse_enum(0, current_part->select_mode = parse_enum(0,
skipping to change at line 3469 skipping to change at line 3575
} }
/** /**
@page edcref @page edcref
@property @property
cursor_mode cursor_mode
@parameters @parameters
[MODE] [MODE]
@effect @effect
Sets the cursor mode for a textblock part to one of: Sets the cursor mode for a textblock part to one of:
@li UNDER @li UNDER cursor mode means the cursor will draw below the characte
@li BEFORE r pointed
UNDER cursor mode means the cursor will draw below the character po
inted
at. That's the default. at. That's the default.
BEFORE cursor mode means the cursor is drawn as a vertical line bef ore @li BEFORE cursor mode means the cursor is drawn as a vertical line before
the current character, just like many other GUI toolkits handle it. the current character, just like many other GUI toolkits handle it.
@endproperty @endproperty
*/ */
static void static void
st_collections_group_parts_part_cursor_mode(void) st_collections_group_parts_part_cursor_mode(void)
{ {
check_arg_count(1); check_arg_count(1);
current_part->cursor_mode = parse_enum(0, current_part->cursor_mode = parse_enum(0,
"UNDER", EDJE_ENTRY_CURSOR_MODE_UNDER, "UNDER", EDJE_ENTRY_CURSOR_MODE_UNDER,
skipping to change at line 3819 skipping to change at line 3923
[another group's name] [another group's name]
@effect @effect
Sets the group this object will be made from. Sets the group this object will be made from.
@endproperty @endproperty
*/ */
static void st_collections_group_parts_part_box_items_item_source(void) static void st_collections_group_parts_part_box_items_item_source(void)
{ {
check_arg_count(1); check_arg_count(1);
current_item->source = parse_str(0); current_item->source = parse_str(0);
data_queue_group_lookup(current_item->source, current_part);
} }
/** /**
@page edcref @page edcref
@property @property
min min
@parameters @parameters
[width] [height] [width] [height]
@effect @effect
Sets the minimum size hints for this object. Sets the minimum size hints for this object.
skipping to change at line 4143 skipping to change at line 4248
ed->map.rot.x = FROM_DOUBLE(0.0); ed->map.rot.x = FROM_DOUBLE(0.0);
ed->map.rot.y = FROM_DOUBLE(0.0); ed->map.rot.y = FROM_DOUBLE(0.0);
ed->map.rot.z = FROM_DOUBLE(0.0); ed->map.rot.z = FROM_DOUBLE(0.0);
ed->map.on = 0; ed->map.on = 0;
ed->map.smooth = 1; ed->map.smooth = 1;
ed->map.alpha = 1; ed->map.alpha = 1;
ed->map.backcull = 0; ed->map.backcull = 0;
ed->map.persp_on = 0; ed->map.persp_on = 0;
ed->persp.zplane = 0; ed->persp.zplane = 0;
ed->persp.focal = 1000; ed->persp.focal = 1000;
ed->minmul.have = 1;
ed->minmul.w = FROM_INT(1);
ed->minmul.h = FROM_INT(1);
} }
/** /**
@page edcref @page edcref
@property @property
inherit inherit
@parameters @parameters
[another description's name] [another description's index] [another description's name] [another description's index]
@effect @effect
When set, the description will inherit all the properties from the When set, the description will inherit all the properties from the
skipping to change at line 4298 skipping to change at line 4406
break; break;
} }
case EDJE_PART_TYPE_IMAGE: case EDJE_PART_TYPE_IMAGE:
{ {
Edje_Part_Description_Image *ied = (Edje_Part_Description_Ima ge *) ed; Edje_Part_Description_Image *ied = (Edje_Part_Description_Ima ge *) ed;
Edje_Part_Description_Image *iparent = (Edje_Part_Description _Image *) parent; Edje_Part_Description_Image *iparent = (Edje_Part_Description _Image *) parent;
unsigned int i; unsigned int i;
ied->image = iparent->image; ied->image = iparent->image;
data_queue_image_remove(&ied->image.id, &ied->image.set);
data_queue_copied_image_lookup(&iparent->image.id, &ied->imag e.id, &ied->image.set); data_queue_copied_image_lookup(&iparent->image.id, &ied->imag e.id, &ied->image.set);
ied->image.tweens = calloc(iparent->image.tweens_count, ied->image.tweens = calloc(iparent->image.tweens_count,
sizeof (Edje_Part_Image_Id*)); sizeof (Edje_Part_Image_Id*));
for (i = 0; i < iparent->image.tweens_count; i++) for (i = 0; i < iparent->image.tweens_count; i++)
{ {
Edje_Part_Image_Id *iid_new; Edje_Part_Image_Id *iid_new;
iid = iparent->image.tweens[i]; iid = iparent->image.tweens[i];
iid_new = mem_alloc(SZ(Edje_Part_Image_Id)); iid_new = mem_alloc(SZ(Edje_Part_Image_Id));
data_queue_image_remove(&ied->image.id, &ied->image.set) ;
data_queue_copied_image_lookup(&(iid->id), &(iid_new->id ), &(iid_new->set)); data_queue_copied_image_lookup(&(iid->id), &(iid_new->id ), &(iid_new->set));
ied->image.tweens[i] = iid_new; ied->image.tweens[i] = iid_new;
} }
break; break;
} }
case EDJE_PART_TYPE_PROXY: case EDJE_PART_TYPE_PROXY:
{ {
Edje_Part_Description_Proxy *ped = (Edje_Part_Description_Pro xy*) ed; Edje_Part_Description_Proxy *ped = (Edje_Part_Description_Pro xy*) ed;
Edje_Part_Description_Proxy *pparent = (Edje_Part_Description _Proxy*) parent; Edje_Part_Description_Proxy *pparent = (Edje_Part_Description _Proxy*) parent;
skipping to change at line 4451 skipping to change at line 4561
} }
ed->state.name = s; ed->state.name = s;
ed->state.value = parse_float_range(1, 0.0, 1.0); ed->state.value = parse_float_range(1, 0.0, 1.0);
if (ed != ep->default_desc) if (ed != ep->default_desc)
{ {
if ((ep->default_desc->state.name && !strcmp(s, ep->default_desc->s tate.name) && ed->state.value == ep->default_desc->state.value) || if ((ep->default_desc->state.name && !strcmp(s, ep->default_desc->s tate.name) && ed->state.value == ep->default_desc->state.value) ||
(!ep->default_desc->state.name && !strcmp(s, "default") && ed-> state.value == ep->default_desc->state.value)) (!ep->default_desc->state.name && !strcmp(s, "default") && ed-> state.value == ep->default_desc->state.value))
{ {
if (ep->type == EDJE_PART_TYPE_IMAGE)
_edje_part_description_image_remove((Edje_Part_Description_I
mage*) ed);
free(ed); free(ed);
ep->other.desc_count--; ep->other.desc_count--;
ep->other.desc = realloc(ep->other.desc, ep->other.desc = realloc(ep->other.desc,
sizeof (Edje_Part_Description_Common* ) * ep->other.desc_count); sizeof (Edje_Part_Description_Common* ) * ep->other.desc_count);
current_desc = ep->default_desc; current_desc = ep->default_desc;
} }
else if (ep->other.desc_count) else if (ep->other.desc_count)
{ {
unsigned int i; unsigned int i;
for (i = 0; i < ep->other.desc_count - 1; ++i) for (i = 0; i < ep->other.desc_count - 1; ++i)
{ {
if (!strcmp(s, ep->other.desc[i]->state.name) && ed->stat e.value == ep->other.desc[i]->state.value) if (!strcmp(s, ep->other.desc[i]->state.name) && ed->stat e.value == ep->other.desc[i]->state.value)
{ {
if (ep->type == EDJE_PART_TYPE_IMAGE)
_edje_part_description_image_remove((Edje_Part_Des
cription_Image*) ed);
free(ed); free(ed);
ep->other.desc_count--; ep->other.desc_count--;
ep->other.desc = realloc(ep->other.desc, ep->other.desc = realloc(ep->other.desc,
sizeof (Edje_Part_Descripti on_Common*) * ep->other.desc_count); sizeof (Edje_Part_Descripti on_Common*) * ep->other.desc_count);
current_desc = ep->other.desc[i]; current_desc = ep->other.desc[i];
break; break;
} }
} }
} }
} }
skipping to change at line 4544 skipping to change at line 4660
current_desc->fixed.w = parse_float_range(0, 0, 1); current_desc->fixed.w = parse_float_range(0, 0, 1);
current_desc->fixed.h = parse_float_range(1, 0, 1); current_desc->fixed.h = parse_float_range(1, 0, 1);
} }
/** /**
@page edcref @page edcref
@property @property
min min
@parameters @parameters
[width] [height] [width] [height] or SOURCE
@effect @effect
The minimum size of the state. The minimum size of the state.
When min is defined to SOURCE, it will look at the original
image size and enforce it minimal size to match at least the
original one. The part must be an IMAGE or a GROUP part.
@endproperty @endproperty
*/ */
static void static void
st_collections_group_parts_part_description_min(void) st_collections_group_parts_part_description_min(void)
{ {
check_min_arg_count(1);
if (is_param(1)) {
current_desc->min.w = parse_float_range(0, 0, 0x7fffffff);
current_desc->min.h = parse_float_range(1, 0, 0x7fffffff);
} else {
char *tmp;
tmp = parse_str(0);
if ((current_part->type != EDJE_PART_TYPE_IMAGE && current_part->type
!= EDJE_PART_TYPE_GROUP) ||
!tmp || strcmp(tmp, "SOURCE") != 0)
{
ERR("%s: Error. parse error %s:%i. "
"Only IMAGE and GROUP part can have a min: SOURCE; defined",
progname, file_in, line - 1);
exit(-1);
}
current_desc->min.limit = EINA_TRUE;
}
}
/**
@page edcref
@property
minmul
@parameters
[width multipler] [height multiplier]
@effect
A multiplier FORCIBLY applied to whatever minimum size is only duri
ng
minimum size calculation.
@endproperty
@since 1.2
*/
static void
st_collections_group_parts_part_description_minmul(void)
{
check_arg_count(2); check_arg_count(2);
current_desc->min.w = parse_float_range(0, 0, 0x7fffffff); current_desc->minmul.w = FROM_DOUBLE(parse_float_range(0, 0, 999999));
current_desc->min.h = parse_float_range(1, 0, 0x7fffffff); current_desc->minmul.h = FROM_DOUBLE(parse_float_range(1, 0, 999999));
} }
/** /**
@page edcref @page edcref
@property @property
max max
@parameters @parameters
[width] [height] [width] [height] or SOURCE
@effect @effect
The maximum size of the state. A size of -1.0 means that it will be ignored in one direction. The maximum size of the state. A size of -1.0 means that it will be ignored in one direction.
When max is set to SOURCE, edje will enforce the part to be
not more than the original image size. The part must be an
IMAGE part.
@endproperty @endproperty
*/ */
static void static void
st_collections_group_parts_part_description_max(void) st_collections_group_parts_part_description_max(void)
{ {
check_arg_count(2); check_min_arg_count(1);
if (is_param(1)) {
current_desc->max.w = parse_float_range(0, -1.0, 0x7fffffff);
current_desc->max.h = parse_float_range(1, -1.0, 0x7fffffff);
} else {
char *tmp;
tmp = parse_str(0);
if (current_part->type != EDJE_PART_TYPE_IMAGE ||
!tmp || strcmp(tmp, "SOURCE") != 0)
{
ERR("%s: Error. parse error %s:%i. "
"Only IMAGE part can have a max: SOURCE; defined",
progname, file_in, line - 1);
exit(-1);
}
current_desc->max.w = parse_float_range(0, -1.0, 0x7fffffff); current_desc->max.limit = EINA_TRUE;
current_desc->max.h = parse_float_range(1, -1.0, 0x7fffffff); }
} }
/** /**
@page edcref @page edcref
@property @property
step step
@parameters @parameters
[width] [height] [width] [height]
@effect @effect
Restricts resizing of each dimension to values divisibles by its va lue. Restricts resizing of each dimension to values divisibles by its va lue.
skipping to change at line 4608 skipping to change at line 4785
/** /**
@page edcref @page edcref
@property @property
aspect aspect
@parameters @parameters
[min] [max] [min] [max]
@effect @effect
Normally width and height can be resized to any values independentl y. Normally width and height can be resized to any values independentl y.
The aspect property forces the width to height ratio to be kept bet ween The aspect property forces the width to height ratio to be kept bet ween
the minimum and maximum set. For example, "1.0 1.0" will increase t he the minimum and maximum set. For example, "1.0 1.0" will increase t he
width a pixel for every pixel added to heigh. The default value is width a pixel for every pixel added to height. The default value is
"0.0 0.0" disabling aspect. "0.0 0.0" disabling aspect.
@endproperty @endproperty
*/ */
static void static void
st_collections_group_parts_part_description_aspect(void) st_collections_group_parts_part_description_aspect(void)
{ {
check_arg_count(2); check_arg_count(2);
current_desc->aspect.min = FROM_DOUBLE(parse_float_range(0, 0.0, 9999999 99.0)); current_desc->aspect.min = FROM_DOUBLE(parse_float_range(0, 0.0, 9999999 99.0));
current_desc->aspect.max = FROM_DOUBLE(parse_float_range(1, 0.0, 9999999 99.0)); current_desc->aspect.max = FROM_DOUBLE(parse_float_range(1, 0.0, 9999999 99.0));
} }
/** /**
@page edcref @page edcref
@property @property
aspect_preference aspect_preference
@parameters @parameters
[DIMENSION] [DIMENSION]
@effect @effect
Sets the scope of the "aspect" property to a given dimension. Avail able Sets the scope of the "aspect" property to a given dimension. Avail able
options are BOTH, VERTICAL, HORIZONTAL and NONE options are BOTH, VERTICAL, HORIZONTAL, SOURCE and NONE
@endproperty @endproperty
*/ */
static void static void
st_collections_group_parts_part_description_aspect_preference(void) st_collections_group_parts_part_description_aspect_preference(void)
{ {
check_arg_count(1); check_arg_count(1);
current_desc->aspect.prefer = parse_enum(0, current_desc->aspect.prefer = parse_enum(0,
"NONE", EDJE_ASPECT_PREFER_NONE, "NONE", EDJE_ASPECT_PREFER_NONE,
"VERTICAL", EDJE_ASPECT_PREFER_VERTICAL, "VERTICAL", EDJE_ASPECT_PREFER_VERTICAL,
"HORIZONTAL", EDJE_ASPECT_PREFER_HORIZONT AL, "HORIZONTAL", EDJE_ASPECT_PREFER_HORIZONT AL,
"BOTH", EDJE_ASPECT_PREFER_BOTH, "BOTH", EDJE_ASPECT_PREFER_BOTH,
"SOURCE", EDJE_ASPECT_PREFER_SOURCE,
NULL); NULL);
} }
/** /**
@page edcref @page edcref
@property @property
color_class color_class
@parameters @parameters
[color class name] [color class name]
@effect @effect
skipping to change at line 5023 skipping to change at line 5201
progname, file_in, line - 1); progname, file_in, line - 1);
exit(-1); exit(-1);
} }
ed = (Edje_Part_Description_Image*) current_desc; ed = (Edje_Part_Description_Image*) current_desc;
{ {
char *name; char *name;
name = parse_str(0); name = parse_str(0);
data_queue_image_remove(&(ed->image.id), &(ed->image.set));
data_queue_image_lookup(name, &(ed->image.id), &(ed->image.set)); data_queue_image_lookup(name, &(ed->image.id), &(ed->image.set));
free(name); free(name);
} }
} }
/** /**
@page edcref @page edcref
@property @property
tween tween
@parameters @parameters
skipping to change at line 5067 skipping to change at line 5246
{ {
char *name; char *name;
Edje_Part_Image_Id *iid; Edje_Part_Image_Id *iid;
iid = mem_alloc(SZ(Edje_Part_Image_Id)); iid = mem_alloc(SZ(Edje_Part_Image_Id));
ed->image.tweens_count++; ed->image.tweens_count++;
ed->image.tweens = realloc(ed->image.tweens, ed->image.tweens = realloc(ed->image.tweens,
sizeof (Edje_Part_Image_Id*) * ed->image.tw eens_count); sizeof (Edje_Part_Image_Id*) * ed->image.tw eens_count);
ed->image.tweens[ed->image.tweens_count - 1] = iid; ed->image.tweens[ed->image.tweens_count - 1] = iid;
name = parse_str(0); name = parse_str(0);
data_queue_image_remove(&(iid->id), &(iid->set));
data_queue_image_lookup(name, &(iid->id), &(iid->set)); data_queue_image_lookup(name, &(iid->id), &(iid->set));
free(name); free(name);
} }
} }
/** /**
@page edcref @page edcref
@property @property
border border
@parameters @parameters
skipping to change at line 7233 skipping to change at line 7413
*/ */
static void static void
st_collections_group_programs_program_in(void) st_collections_group_programs_program_in(void)
{ {
check_arg_count(2); check_arg_count(2);
current_program->in.from = parse_float_range(0, 0.0, 999999999.0); current_program->in.from = parse_float_range(0, 0.0, 999999999.0);
current_program->in.range = parse_float_range(1, 0.0, 999999999.0); current_program->in.range = parse_float_range(1, 0.0, 999999999.0);
} }
#ifdef ENABLE_MULTISENSE
/* add to docs below
, PLAY_SAMPLE, PLAY_TONE
action: PLAY_SAMPLE "sample name";\n
action: PLAY_TONE "tone name" duration in seconds ( Range 0.1 to
10.0 );\n
*/
#endif
/** /**
@page edcref @page edcref
@property @property
action action
@parameters @parameters
[type] [param1] [param2] [type] [param1] [param2]
@effect @effect
Action to be performed by the program. Valid actions are: STATE_SET , Action to be performed by the program. Valid actions are: STATE_SET ,
ACTION_STOP, SIGNAL_EMIT, DRAG_VAL_SET, DRAG_VAL_STEP, DRAG_VAL_PAG E, ACTION_STOP, SIGNAL_EMIT, DRAG_VAL_SET, DRAG_VAL_STEP, DRAG_VAL_PAG E,
FOCUS_SET, PARAM_COPY, PARAM_SET FOCUS_SET, PARAM_COPY, PARAM_SET, PLAY_SAMPLE, PLAY_TONE
Only one action can be specified per program. Examples:\n Only one action can be specified per program. Examples:\n
action: STATE_SET "statename" 0.5;\n action: STATE_SET "statename" 0.5;\n
action: ACTION_STOP;\n action: ACTION_STOP;\n
action: SIGNAL_EMIT "signalname" "emitter";\n action: SIGNAL_EMIT "signalname" "emitter";\n
action: DRAG_VAL_SET 0.5 0.0;\n action: DRAG_VAL_SET 0.5 0.0;\n
action: DRAG_VAL_STEP 1.0 0.0;\n action: DRAG_VAL_STEP 1.0 0.0;\n
action: DRAG_VAL_PAGE 0.0 0.0;\n action: DRAG_VAL_PAGE 0.0 0.0;\n
action: FOCUS_SET;\n action: FOCUS_SET;\n
action: FOCUS_OBJECT;\n action: FOCUS_OBJECT;\n
action: PARAM_COPY "src_part" "src_param" "dst_part" "dst_param" ;\n action: PARAM_COPY "src_part" "src_param" "dst_part" "dst_param" ;\n
action: PARAM_SET "part" "param" "value";\n action: PARAM_SET "part" "param" "value";\n
action: PLAY_SAMPLE "sample name";\n
action: PLAY_TONE "tone name" duration in seconds ( Range 0.1 to
10.0 );\n
@endproperty @endproperty
*/ */
static void static void
st_collections_group_programs_program_action(void) st_collections_group_programs_program_action(void)
{ {
Edje_Part_Collection *pc; Edje_Part_Collection *pc;
Edje_Program *ep; Edje_Program *ep;
int i;
pc = eina_list_data_get(eina_list_last(edje_collections)); pc = eina_list_data_get(eina_list_last(edje_collections));
ep = current_program; ep = current_program;
ep->action = parse_enum(0, ep->action = parse_enum(0,
"STATE_SET", EDJE_ACTION_TYPE_STATE_SET, "STATE_SET", EDJE_ACTION_TYPE_STATE_SET,
"ACTION_STOP", EDJE_ACTION_TYPE_ACTION_STOP, "ACTION_STOP", EDJE_ACTION_TYPE_ACTION_STOP,
"SIGNAL_EMIT", EDJE_ACTION_TYPE_SIGNAL_EMIT, "SIGNAL_EMIT", EDJE_ACTION_TYPE_SIGNAL_EMIT,
"DRAG_VAL_SET", EDJE_ACTION_TYPE_DRAG_VAL_SET, "DRAG_VAL_SET", EDJE_ACTION_TYPE_DRAG_VAL_SET,
"DRAG_VAL_STEP", EDJE_ACTION_TYPE_DRAG_VAL_STEP, "DRAG_VAL_STEP", EDJE_ACTION_TYPE_DRAG_VAL_STEP,
"DRAG_VAL_PAGE", EDJE_ACTION_TYPE_DRAG_VAL_PAGE, "DRAG_VAL_PAGE", EDJE_ACTION_TYPE_DRAG_VAL_PAGE,
"SCRIPT", EDJE_ACTION_TYPE_SCRIPT, "SCRIPT", EDJE_ACTION_TYPE_SCRIPT,
"FOCUS_SET", EDJE_ACTION_TYPE_FOCUS_SET, "FOCUS_SET", EDJE_ACTION_TYPE_FOCUS_SET,
"FOCUS_OBJECT", EDJE_ACTION_TYPE_FOCUS_OBJECT, "FOCUS_OBJECT", EDJE_ACTION_TYPE_FOCUS_OBJECT,
"PARAM_COPY", EDJE_ACTION_TYPE_PARAM_COPY, "PARAM_COPY", EDJE_ACTION_TYPE_PARAM_COPY,
"PARAM_SET", EDJE_ACTION_TYPE_PARAM_SET, "PARAM_SET", EDJE_ACTION_TYPE_PARAM_SET,
#ifdef ENABLE_MULTISENSE
"PLAY_SAMPLE", EDJE_ACTION_TYPE_SOUND_SAMPLE, "PLAY_SAMPLE", EDJE_ACTION_TYPE_SOUND_SAMPLE,
"PLAY_TONE", EDJE_ACTION_TYPE_SOUND_TONE, "PLAY_TONE", EDJE_ACTION_TYPE_SOUND_TONE,
#endif
NULL); NULL);
if (ep->action == EDJE_ACTION_TYPE_STATE_SET) if (ep->action == EDJE_ACTION_TYPE_STATE_SET)
{ {
ep->state = parse_str(1); ep->state = parse_str(1);
ep->value = parse_float_range(2, 0.0, 1.0); ep->value = parse_float_range(2, 0.0, 1.0);
} }
else if (ep->action == EDJE_ACTION_TYPE_SIGNAL_EMIT) else if (ep->action == EDJE_ACTION_TYPE_SIGNAL_EMIT)
{ {
ep->state = parse_str(1); ep->state = parse_str(1);
ep->state2 = parse_str(2); ep->state2 = parse_str(2);
} }
#ifdef ENABLE_MULTISENSE
else if (ep->action == EDJE_ACTION_TYPE_SOUND_SAMPLE) else if (ep->action == EDJE_ACTION_TYPE_SOUND_SAMPLE)
{ {
int i;
ep->sample_name = parse_str(1); ep->sample_name = parse_str(1);
for (i = 0; i < (int)edje_file->sound_dir->samples_count; i++) for (i = 0; i < (int)edje_file->sound_dir->samples_count; i++)
{ {
if (!strcmp(edje_file->sound_dir->samples[i].name, ep->sample_ name)) if (!strcmp(edje_file->sound_dir->samples[i].name, ep->sample_ name))
break; break;
if (i == (int)(edje_file->sound_dir->samples_count - 1)) if (i == (int)(edje_file->sound_dir->samples_count - 1))
{ {
ERR("%s: Error. No Sample name %s exist.", progname, ERR("%s: Error. No Sample name %s exist.", progname,
ep->sample_name); ep->sample_name);
exit(-1); exit(-1);
} }
} }
ep->speed = parse_float_range(2, 0.0, 10.0); ep->speed = parse_float_range(2, 0.0, 10.0);
} }
else if (ep->action == EDJE_ACTION_TYPE_SOUND_TONE) else if (ep->action == EDJE_ACTION_TYPE_SOUND_TONE)
{ {
int i;
ep->tone_name = parse_str(1); ep->tone_name = parse_str(1);
for (i = 0; i < (int)edje_file->sound_dir->tones_count; i++) for (i = 0; i < (int)edje_file->sound_dir->tones_count; i++)
{ {
if (!strcmp(edje_file->sound_dir->tones[i].name, ep->tone_name )) if (!strcmp(edje_file->sound_dir->tones[i].name, ep->tone_name ))
break; break;
if (i == (int)(edje_file->sound_dir->tones_count - 1)) if (i == (int)(edje_file->sound_dir->tones_count - 1))
{ {
ERR("%s: Error. No Tone name %s exist.", progname, ERR("%s: Error. No Tone name %s exist.", progname,
ep->tone_name); ep->tone_name);
exit(-1); exit(-1);
} }
} }
ep->duration = parse_float_range(2, 0.1, 10.0); ep->duration = parse_float_range(2, 0.1, 10.0);
} }
#endif
else if (ep->action == EDJE_ACTION_TYPE_DRAG_VAL_SET) else if (ep->action == EDJE_ACTION_TYPE_DRAG_VAL_SET)
{ {
ep->value = parse_float(1); ep->value = parse_float(1);
ep->value2 = parse_float(2); ep->value2 = parse_float(2);
} }
else if (ep->action == EDJE_ACTION_TYPE_DRAG_VAL_STEP) else if (ep->action == EDJE_ACTION_TYPE_DRAG_VAL_STEP)
{ {
ep->value = parse_float(1); ep->value = parse_float(1);
ep->value2 = parse_float(2); ep->value2 = parse_float(2);
} }
skipping to change at line 7399 skipping to change at line 7565
case EDJE_ACTION_TYPE_FOCUS_OBJECT: case EDJE_ACTION_TYPE_FOCUS_OBJECT:
case EDJE_ACTION_TYPE_FOCUS_SET: case EDJE_ACTION_TYPE_FOCUS_SET:
check_arg_count(1); check_arg_count(1);
break; break;
case EDJE_ACTION_TYPE_PARAM_COPY: case EDJE_ACTION_TYPE_PARAM_COPY:
check_arg_count(5); check_arg_count(5);
break; break;
case EDJE_ACTION_TYPE_PARAM_SET: case EDJE_ACTION_TYPE_PARAM_SET:
check_arg_count(4); check_arg_count(4);
break; break;
#ifdef ENABLE_MULTISENSE
case EDJE_ACTION_TYPE_SOUND_SAMPLE: case EDJE_ACTION_TYPE_SOUND_SAMPLE:
check_arg_count(3); check_arg_count(3);
break; break;
case EDJE_ACTION_TYPE_SOUND_TONE: case EDJE_ACTION_TYPE_SOUND_TONE:
check_arg_count(3); check_arg_count(3);
break; break;
#endif
default: default:
check_arg_count(3); check_arg_count(3);
} }
} }
/** /**
@page edcref @page edcref
@property @property
transition transition
@parameters @parameters
 End of changes. 75 change blocks. 
115 lines changed or deleted 291 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/