static void ob_collections_group_script(void);
static void ob_collections_group_lua_script(void);
+static void st_collections_group_parts_alias(void);
+
static void ob_collections_group_parts_part(void);
static void st_collections_group_parts_part_name(void);
static void st_collections_group_parts_part_type(void);
{"collections.group.color_classes.color_class.color", st_color_class_color}, /* dup */
{"collections.group.color_classes.color_class.color2", st_color_class_color2}, /* dup */
{"collections.group.color_classes.color_class.color3", st_color_class_color3}, /* dup */
+ {"collections.group.parts.alias", st_collections_group_parts_alias },
{"collections.group.parts.image", st_images_image}, /* dup */
{"collections.group.parts.set.name", st_images_set_name},
{"collections.group.parts.set.image.image", st_images_set_image_image},
/**
@page edcref
@block
+ parts
+ @context
+ group {
+ parts {
+ alias: "theme_part_path" "real_part_path";
+ ..
+ }
+ }
+ @description
+ Alias of part give a chance to let the designer put the real one
+ in a box or reuse one from a GROUP or inside a BOX.
+ @endblock
+*/
+static void
+st_collections_group_parts_alias(void)
+{
+ Edje_Part_Collection *pc;
+
+ check_arg_count(2);
+
+ pc = eina_list_data_get(eina_list_last(edje_collections));
+
+ if (!pc->alias) pc->alias = eina_hash_string_small_new(NULL);
+ eina_hash_add(pc->alias, parse_str(0), parse_str(1));
+}
+
+
+/**
+ @page edcref
+ @block
part
@context
group {
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, Edje_Part_Collection, "id", id, EET_T_INT);
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, Edje_Part_Collection, "script_only", script_only, EET_T_UCHAR);
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, Edje_Part_Collection, "lua_script_only", lua_script_only, EET_T_UCHAR);
+
+ {
+ Edje_Part_Collection epc;
+
+ eet_data_descriptor_element_add(_edje_edd_edje_part_collection,
+ "alias", EET_T_STRING, EET_G_HASH,
+ (char *)(&(epc.alias)) - (char *)(&(epc)),
+ 0, /* 0, */NULL, NULL);
+ }
}
int id; /* the collection id */
+ Eina_Hash *alias; /* aliasing part*/
+
struct {
Edje_Size min, max;
} prop;
{
Edje_Real_Part *rp;
Evas_Object *child;
+ const char *alias = NULL;
char *idx = NULL;
//printf(" lookup: %s on %s\n", path[0], ed->parent ? ed->parent : "-");
}
}
- rp = _edje_real_part_get(ed, path[0]);
- if (path[1] == NULL) return rp;
- if (!rp) return NULL;
+ if (ed->file->collection)
+ alias = eina_hash_find(ed->file->collection, path[0]);
+ if (alias)
+ {
+ rp = _edje_real_part_recursive_get(ed, alias);
+ if (path[1] == NULL) return rp;
+ if (!rp) return NULL;
+ }
+ else
+ {
+ rp = _edje_real_part_get(ed, path[0]);
+ if (path[1] == NULL) return rp;
+ if (!rp) return NULL;
+ }
switch (rp->part->type)
{