forked from enlightenment/enventor
parser - initialize on a different thread.
since the parser initialization task is getting bigger and bigger, do it with a separated thread to reduce enventor launching time.
This commit is contained in:
parent
1e43635a9b
commit
07e824bb79
|
@ -5,6 +5,7 @@ struct parser_s
|
|||
{
|
||||
Eina_Inlist *attrs;
|
||||
Ecore_Thread *thread;
|
||||
Ecore_Thread *init_thread;
|
||||
};
|
||||
|
||||
typedef struct parser_attr_s
|
||||
|
@ -27,253 +28,20 @@ typedef struct cur_name_thread_data_s
|
|||
void *cb_data;
|
||||
} cur_name_td;
|
||||
|
||||
typedef struct type_init_thread_data_s
|
||||
{
|
||||
Eina_Inlist *attrs;
|
||||
parser_data *pd;
|
||||
} type_init_td;
|
||||
|
||||
void
|
||||
parser_cancel(parser_data *pd)
|
||||
{
|
||||
if (pd->thread) ecore_thread_cancel(pd->thread);
|
||||
}
|
||||
|
||||
static void
|
||||
parser_type_init(parser_data *pd)
|
||||
{
|
||||
parser_attr *attr;
|
||||
|
||||
//FIXME: construct from the configuration file.
|
||||
|
||||
//Type: Constant
|
||||
Eina_List *types = NULL;
|
||||
types = eina_list_append(types, eina_stringshare_add("RECT"));
|
||||
types = eina_list_append(types, eina_stringshare_add("TEXT"));
|
||||
types = eina_list_append(types, eina_stringshare_add("IMAGE"));
|
||||
types = eina_list_append(types, eina_stringshare_add("SWALLOW"));
|
||||
types = eina_list_append(types, eina_stringshare_add("TEXTBLOCK"));
|
||||
types = eina_list_append(types, eina_stringshare_add("GRADIENT"));
|
||||
types = eina_list_append(types, eina_stringshare_add("GROUP"));
|
||||
types = eina_list_append(types, eina_stringshare_add("BOX"));
|
||||
types = eina_list_append(types, eina_stringshare_add("TABLE"));
|
||||
types = eina_list_append(types, eina_stringshare_add("EXTERNAL"));
|
||||
types = eina_list_append(types, eina_stringshare_add("PROXY"));
|
||||
types = eina_list_append(types, eina_stringshare_add("SPACER"));
|
||||
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("type:");
|
||||
attr->value.strs = types;
|
||||
attr->value.type = ATTR_VALUE_CONSTANT;
|
||||
pd->attrs = eina_inlist_append(pd->attrs, (Eina_Inlist *) attr);
|
||||
|
||||
Eina_List *comps = NULL;
|
||||
comps = eina_list_append(comps, eina_stringshare_add("RAW"));
|
||||
comps = eina_list_append(comps, eina_stringshare_add("USER"));
|
||||
comps = eina_list_append(comps, eina_stringshare_add("COMP"));
|
||||
comps = eina_list_append(comps, eina_stringshare_add("LOSSY"));
|
||||
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("image:");
|
||||
attr->value.strs = comps;
|
||||
attr->value.type = ATTR_VALUE_CONSTANT;
|
||||
pd->attrs = eina_inlist_append(pd->attrs, (Eina_Inlist *) attr);
|
||||
|
||||
Eina_List *trans = NULL;
|
||||
trans = eina_list_append(trans, eina_stringshare_add("LINEAR"));
|
||||
trans = eina_list_append(trans, eina_stringshare_add("ACCELERATE"));
|
||||
trans = eina_list_append(trans, eina_stringshare_add("DECELERATE"));
|
||||
trans = eina_list_append(trans, eina_stringshare_add("SINUSOIDAL"));
|
||||
trans = eina_list_append(trans, eina_stringshare_add("ACCELERATE_FACTOR"));
|
||||
trans = eina_list_append(trans, eina_stringshare_add("DECELERATE_FACTOR"));
|
||||
trans = eina_list_append(trans, eina_stringshare_add("SINUSOIDAL_FACTOR"));
|
||||
trans = eina_list_append(trans, eina_stringshare_add("DIVISOR_INTERP"));
|
||||
trans = eina_list_append(trans, eina_stringshare_add("BOUNCE"));
|
||||
trans = eina_list_append(trans, eina_stringshare_add("SPRING"));
|
||||
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("transition:");
|
||||
attr->value.strs = trans;
|
||||
attr->value.type = ATTR_VALUE_CONSTANT;
|
||||
pd->attrs = eina_inlist_append(pd->attrs, (Eina_Inlist *) attr);
|
||||
|
||||
Eina_List *aspect = NULL;
|
||||
aspect = eina_list_append(aspect, eina_stringshare_add("NONE"));
|
||||
aspect = eina_list_append(aspect, eina_stringshare_add("VERTICAL"));
|
||||
aspect = eina_list_append(aspect, eina_stringshare_add("HORIZONTAL"));
|
||||
aspect = eina_list_append(aspect, eina_stringshare_add("BOTH"));
|
||||
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("aspect_preference:");
|
||||
attr->value.strs = aspect;
|
||||
attr->value.type = ATTR_VALUE_CONSTANT;
|
||||
pd->attrs = eina_inlist_append(pd->attrs, (Eina_Inlist *) attr);
|
||||
|
||||
Eina_List *effect = NULL;
|
||||
effect = eina_list_append(effect, eina_stringshare_add("NONE"));
|
||||
effect = eina_list_append(effect, eina_stringshare_add("PLAIN"));
|
||||
effect = eina_list_append(effect, eina_stringshare_add("OUTLINE"));
|
||||
effect = eina_list_append(effect, eina_stringshare_add("SOFT_OUTLINE"));
|
||||
effect = eina_list_append(effect, eina_stringshare_add("SHADOW"));
|
||||
effect = eina_list_append(effect, eina_stringshare_add("SOFT_SHADOW"));
|
||||
effect = eina_list_append(effect, eina_stringshare_add("OUTLINE_SHADOW"));
|
||||
effect = eina_list_append(effect, eina_stringshare_add("OUTLINE_SOFT_SHADOW"));
|
||||
effect = eina_list_append(effect, eina_stringshare_add("FAR_SHADOW"));
|
||||
effect = eina_list_append(effect, eina_stringshare_add("FAR_SOFT_SHADOW"));
|
||||
effect = eina_list_append(effect, eina_stringshare_add("GLOW"));
|
||||
/*
|
||||
Eina_List *action = NULL;
|
||||
action = eina_list_append(action, eina_stringshare_add("NONE"));
|
||||
action = eina_list_append(action, eina_stringshare_add("STATE_SET"));
|
||||
action = eina_list_append(action, eina_stringshare_add("ACTION_STOP"));
|
||||
action = eina_list_append(action, eina_stringshare_add("SIGNAL_EMIT"));
|
||||
action = eina_list_append(action, eina_stringshare_add("DRAG_VAL_SET"));
|
||||
action = eina_list_append(action, eina_stringshare_add("DRAG_VAL_STEP"));
|
||||
action = eina_list_append(action, eina_stringshare_add("DRAG_VAL_PAGE"));
|
||||
action = eina_list_append(action, eina_stringshare_add("SCRIPT"));
|
||||
action = eina_list_append(action, eina_stringshare_add("FOCUS_SET"));
|
||||
action = eina_list_append(action, eina_stringshare_add("FOCUS_OBJECT"));
|
||||
action = eina_list_append(action, eina_stringshare_add("PARAM_COPY"));
|
||||
action = eina_list_append(action, eina_stringshare_add("PARAM_SET"));
|
||||
action = eina_list_append(action, eina_stringshare_add("PLAY_SAMPLE"));
|
||||
action = eina_list_append(action, eina_stringshare_add("PLAY_TONE"));
|
||||
action = eina_list_append(action, eina_stringshare_add("PHYSICS_IMPULSE"));
|
||||
action = eina_list_append(action, eina_stringshare_add("PHYSICS_TORQUE_IMPULSE"));
|
||||
action = eina_list_append(action, eina_stringshare_add("PHYSICS_FORCE"));
|
||||
action = eina_list_append(action, eina_stringshare_add("PHYSICS_TORQUE"));
|
||||
action = eina_list_append(action, eina_stringshare_add("PHYSICS_FORCES_CLEAR"));
|
||||
action = eina_list_append(action, eina_stringshare_add("PHYSICS_VEL_SET"));
|
||||
action = eina_list_append(action, eina_stringshare_add("PHYSICS_ANG_VEL_SET"));
|
||||
action = eina_list_append(action, eina_stringshare_add("PHYSICS_STOP"));
|
||||
action = eina_list_append(action, eina_stringshare_add("PHYSICS_ROT_SET"));
|
||||
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("action:");
|
||||
attr->value.strs = action;
|
||||
attr->value.type = ATTR_VALUE_CONSTANT;
|
||||
pd->attrs = eina_inlist_append(pd->attrs, (Eina_Inlist *) attr);
|
||||
*/
|
||||
//Type: Integer
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("color:");
|
||||
attr->value.min = 0;
|
||||
attr->value.max = 255;
|
||||
attr->value.type = ATTR_VALUE_INTEGER;
|
||||
pd->attrs = eina_inlist_append(pd->attrs, (Eina_Inlist *) attr);
|
||||
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("scale:");
|
||||
attr->value.min = 0;
|
||||
attr->value.max = 1;
|
||||
attr->value.type = ATTR_VALUE_INTEGER;
|
||||
pd->attrs = eina_inlist_append(pd->attrs, (Eina_Inlist *) attr);
|
||||
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("fixed:");
|
||||
attr->value.min = 0;
|
||||
attr->value.max = 1;
|
||||
attr->value.type = ATTR_VALUE_INTEGER;
|
||||
pd->attrs = eina_inlist_append(pd->attrs, (Eina_Inlist *) attr);
|
||||
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("size:");
|
||||
attr->value.min = 1;
|
||||
attr->value.max = 255;
|
||||
attr->value.type = ATTR_VALUE_INTEGER;
|
||||
pd->attrs = eina_inlist_append(pd->attrs, (Eina_Inlist *) attr);
|
||||
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("min:");
|
||||
attr->value.min = 0;
|
||||
attr->value.max = 1000;
|
||||
attr->value.type = ATTR_VALUE_INTEGER;
|
||||
pd->attrs = eina_inlist_append(pd->attrs, (Eina_Inlist *) attr);
|
||||
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("max:");
|
||||
attr->value.min = 0;
|
||||
attr->value.max = 1000;
|
||||
attr->value.type = ATTR_VALUE_INTEGER;
|
||||
pd->attrs = eina_inlist_append(pd->attrs, (Eina_Inlist *) attr);
|
||||
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("mouse_events:");
|
||||
attr->value.min = 0;
|
||||
attr->value.max = 1000;
|
||||
attr->value.type = ATTR_VALUE_INTEGER;
|
||||
pd->attrs = eina_inlist_append(pd->attrs, (Eina_Inlist *) attr);
|
||||
|
||||
//Type: Float
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("relative:");
|
||||
attr->value.min = 0.0;
|
||||
attr->value.max = 1;
|
||||
attr->value.type = ATTR_VALUE_FLOAT;
|
||||
pd->attrs = eina_inlist_append(pd->attrs, (Eina_Inlist *) attr);
|
||||
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("aspect:");
|
||||
attr->value.min = 0.0;
|
||||
attr->value.max = 1.0;
|
||||
attr->value.type = ATTR_VALUE_FLOAT;
|
||||
pd->attrs = eina_inlist_append(pd->attrs, (Eina_Inlist *) attr);
|
||||
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("align");
|
||||
attr->value.min = 0.0;
|
||||
attr->value.max = 1.0;
|
||||
attr->value.type = ATTR_VALUE_FLOAT;
|
||||
pd->attrs = eina_inlist_append(pd->attrs, (Eina_Inlist *) attr);
|
||||
|
||||
//Type: Part
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("target:");
|
||||
attr->instring = EINA_TRUE;
|
||||
attr->value.type = ATTR_VALUE_PART;
|
||||
pd->attrs = eina_inlist_append(pd->attrs, (Eina_Inlist *) attr);
|
||||
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("to:");
|
||||
attr->instring = EINA_TRUE;
|
||||
attr->value.type = ATTR_VALUE_PART;
|
||||
pd->attrs = eina_inlist_append(pd->attrs, (Eina_Inlist *) attr);
|
||||
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("source:");
|
||||
attr->instring = EINA_TRUE;
|
||||
attr->value.type = ATTR_VALUE_PART;
|
||||
pd->attrs = eina_inlist_append(pd->attrs, (Eina_Inlist *) attr);
|
||||
|
||||
//Type: State
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("STATE_SET");
|
||||
attr->instring = EINA_TRUE;
|
||||
attr->value.type = ATTR_VALUE_STATE;
|
||||
attr->value.program = EINA_TRUE;
|
||||
pd->attrs = eina_inlist_append(pd->attrs, (Eina_Inlist *) attr);
|
||||
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("inherit:");
|
||||
attr->instring = EINA_TRUE;
|
||||
attr->value.type = ATTR_VALUE_STATE;
|
||||
pd->attrs = eina_inlist_append(pd->attrs, (Eina_Inlist *) attr);
|
||||
|
||||
//Type: Image
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("normal:");
|
||||
attr->instring = EINA_TRUE;
|
||||
attr->value.type = ATTR_VALUE_IMAGE;
|
||||
pd->attrs = eina_inlist_append(pd->attrs, (Eina_Inlist *) attr);
|
||||
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("tween:");
|
||||
attr->instring = EINA_TRUE;
|
||||
attr->value.type = ATTR_VALUE_IMAGE;
|
||||
pd->attrs = eina_inlist_append(pd->attrs, (Eina_Inlist *) attr);
|
||||
|
||||
//Type: Program
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("after:");
|
||||
attr->instring = EINA_TRUE;
|
||||
attr->value.type = ATTR_VALUE_PROGRAM;
|
||||
pd->attrs = eina_inlist_append(pd->attrs, (Eina_Inlist *) attr);
|
||||
}
|
||||
|
||||
char *parser_name_get(parser_data *pd EINA_UNUSED, const char *cur)
|
||||
char *
|
||||
parser_name_get(parser_data *pd EINA_UNUSED, const char *cur)
|
||||
{
|
||||
if (!cur) return NULL;
|
||||
|
||||
|
@ -329,35 +97,6 @@ parser_attribute_get(parser_data *pd, const char *text, const char *cur)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
parser_data *
|
||||
parser_init()
|
||||
{
|
||||
parser_data *pd = calloc(1, sizeof(parser_data));
|
||||
parser_type_init(pd);
|
||||
return pd;
|
||||
}
|
||||
|
||||
void
|
||||
parser_term(parser_data *pd)
|
||||
{
|
||||
if (pd->thread) ecore_thread_cancel(pd->thread);
|
||||
|
||||
parser_attr *attr;
|
||||
Eina_Stringshare *str;
|
||||
|
||||
while(pd->attrs)
|
||||
{
|
||||
attr = EINA_INLIST_CONTAINER_GET(pd->attrs, parser_attr);
|
||||
pd->attrs = eina_inlist_remove(pd->attrs, pd->attrs);
|
||||
|
||||
eina_stringshare_del(attr->keyword);
|
||||
EINA_LIST_FREE(attr->value.strs, str) eina_stringshare_del(str);
|
||||
free(attr);
|
||||
}
|
||||
|
||||
free(pd);
|
||||
}
|
||||
|
||||
const char *
|
||||
parser_markup_escape(parser_data *pd EINA_UNUSED, const char *str)
|
||||
{
|
||||
|
@ -561,6 +300,264 @@ cur_name_thread_cancel(void *data, Ecore_Thread *thread EINA_UNUSED)
|
|||
free(td);
|
||||
}
|
||||
|
||||
static void
|
||||
type_init_thread_blocking(void *data, Ecore_Thread *thread EINA_UNUSED)
|
||||
{
|
||||
type_init_td *td = data;
|
||||
parser_attr *attr;
|
||||
|
||||
//FIXME: construct from the configuration file.
|
||||
|
||||
//Type: Constant
|
||||
Eina_List *types = NULL;
|
||||
types = eina_list_append(types, eina_stringshare_add("RECT"));
|
||||
types = eina_list_append(types, eina_stringshare_add("TEXT"));
|
||||
types = eina_list_append(types, eina_stringshare_add("IMAGE"));
|
||||
types = eina_list_append(types, eina_stringshare_add("SWALLOW"));
|
||||
types = eina_list_append(types, eina_stringshare_add("TEXTBLOCK"));
|
||||
types = eina_list_append(types, eina_stringshare_add("GRADIENT"));
|
||||
types = eina_list_append(types, eina_stringshare_add("GROUP"));
|
||||
types = eina_list_append(types, eina_stringshare_add("BOX"));
|
||||
types = eina_list_append(types, eina_stringshare_add("TABLE"));
|
||||
types = eina_list_append(types, eina_stringshare_add("EXTERNAL"));
|
||||
types = eina_list_append(types, eina_stringshare_add("PROXY"));
|
||||
types = eina_list_append(types, eina_stringshare_add("SPACER"));
|
||||
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("type:");
|
||||
attr->value.strs = types;
|
||||
attr->value.type = ATTR_VALUE_CONSTANT;
|
||||
td->attrs = eina_inlist_append(td->attrs, (Eina_Inlist *) attr);
|
||||
|
||||
Eina_List *comps = NULL;
|
||||
comps = eina_list_append(comps, eina_stringshare_add("RAW"));
|
||||
comps = eina_list_append(comps, eina_stringshare_add("USER"));
|
||||
comps = eina_list_append(comps, eina_stringshare_add("COMP"));
|
||||
comps = eina_list_append(comps, eina_stringshare_add("LOSSY"));
|
||||
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("image:");
|
||||
attr->value.strs = comps;
|
||||
attr->value.type = ATTR_VALUE_CONSTANT;
|
||||
td->attrs = eina_inlist_append(td->attrs, (Eina_Inlist *) attr);
|
||||
|
||||
Eina_List *trans = NULL;
|
||||
trans = eina_list_append(trans, eina_stringshare_add("LINEAR"));
|
||||
trans = eina_list_append(trans, eina_stringshare_add("ACCELERATE"));
|
||||
trans = eina_list_append(trans, eina_stringshare_add("DECELERATE"));
|
||||
trans = eina_list_append(trans, eina_stringshare_add("SINUSOIDAL"));
|
||||
trans = eina_list_append(trans, eina_stringshare_add("ACCELERATE_FACTOR"));
|
||||
trans = eina_list_append(trans, eina_stringshare_add("DECELERATE_FACTOR"));
|
||||
trans = eina_list_append(trans, eina_stringshare_add("SINUSOIDAL_FACTOR"));
|
||||
trans = eina_list_append(trans, eina_stringshare_add("DIVISOR_INTERP"));
|
||||
trans = eina_list_append(trans, eina_stringshare_add("BOUNCE"));
|
||||
trans = eina_list_append(trans, eina_stringshare_add("SPRING"));
|
||||
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("transition:");
|
||||
attr->value.strs = trans;
|
||||
attr->value.type = ATTR_VALUE_CONSTANT;
|
||||
td->attrs = eina_inlist_append(td->attrs, (Eina_Inlist *) attr);
|
||||
|
||||
Eina_List *aspect = NULL;
|
||||
aspect = eina_list_append(aspect, eina_stringshare_add("NONE"));
|
||||
aspect = eina_list_append(aspect, eina_stringshare_add("VERTICAL"));
|
||||
aspect = eina_list_append(aspect, eina_stringshare_add("HORIZONTAL"));
|
||||
aspect = eina_list_append(aspect, eina_stringshare_add("BOTH"));
|
||||
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("aspect_preference:");
|
||||
attr->value.strs = aspect;
|
||||
attr->value.type = ATTR_VALUE_CONSTANT;
|
||||
td->attrs = eina_inlist_append(td->attrs, (Eina_Inlist *) attr);
|
||||
|
||||
Eina_List *effect = NULL;
|
||||
effect = eina_list_append(effect, eina_stringshare_add("NONE"));
|
||||
effect = eina_list_append(effect, eina_stringshare_add("PLAIN"));
|
||||
effect = eina_list_append(effect, eina_stringshare_add("OUTLINE"));
|
||||
effect = eina_list_append(effect, eina_stringshare_add("SOFT_OUTLINE"));
|
||||
effect = eina_list_append(effect, eina_stringshare_add("SHADOW"));
|
||||
effect = eina_list_append(effect, eina_stringshare_add("SOFT_SHADOW"));
|
||||
effect = eina_list_append(effect, eina_stringshare_add("OUTLINE_SHADOW"));
|
||||
effect = eina_list_append(effect, eina_stringshare_add("OUTLINE_SOFT_SHADOW"));
|
||||
effect = eina_list_append(effect, eina_stringshare_add("FAR_SHADOW"));
|
||||
effect = eina_list_append(effect, eina_stringshare_add("FAR_SOFT_SHADOW"));
|
||||
effect = eina_list_append(effect, eina_stringshare_add("GLOW"));
|
||||
/*
|
||||
Eina_List *action = NULL;
|
||||
action = eina_list_append(action, eina_stringshare_add("NONE"));
|
||||
action = eina_list_append(action, eina_stringshare_add("STATE_SET"));
|
||||
action = eina_list_append(action, eina_stringshare_add("ACTION_STOP"));
|
||||
action = eina_list_append(action, eina_stringshare_add("SIGNAL_EMIT"));
|
||||
action = eina_list_append(action, eina_stringshare_add("DRAG_VAL_SET"));
|
||||
action = eina_list_append(action, eina_stringshare_add("DRAG_VAL_STEP"));
|
||||
action = eina_list_append(action, eina_stringshare_add("DRAG_VAL_PAGE"));
|
||||
action = eina_list_append(action, eina_stringshare_add("SCRIPT"));
|
||||
action = eina_list_append(action, eina_stringshare_add("FOCUS_SET"));
|
||||
action = eina_list_append(action, eina_stringshare_add("FOCUS_OBJECT"));
|
||||
action = eina_list_append(action, eina_stringshare_add("PARAM_COPY"));
|
||||
action = eina_list_append(action, eina_stringshare_add("PARAM_SET"));
|
||||
action = eina_list_append(action, eina_stringshare_add("PLAY_SAMPLE"));
|
||||
action = eina_list_append(action, eina_stringshare_add("PLAY_TONE"));
|
||||
action = eina_list_append(action, eina_stringshare_add("PHYSICS_IMPULSE"));
|
||||
action = eina_list_append(action, eina_stringshare_add("PHYSICS_TORQUE_IMPULSE"));
|
||||
action = eina_list_append(action, eina_stringshare_add("PHYSICS_FORCE"));
|
||||
action = eina_list_append(action, eina_stringshare_add("PHYSICS_TORQUE"));
|
||||
action = eina_list_append(action, eina_stringshare_add("PHYSICS_FORCES_CLEAR"));
|
||||
action = eina_list_append(action, eina_stringshare_add("PHYSICS_VEL_SET"));
|
||||
action = eina_list_append(action, eina_stringshare_add("PHYSICS_ANG_VEL_SET"));
|
||||
action = eina_list_append(action, eina_stringshare_add("PHYSICS_STOP"));
|
||||
action = eina_list_append(action, eina_stringshare_add("PHYSICS_ROT_SET"));
|
||||
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("action:");
|
||||
attr->value.strs = action;
|
||||
attr->value.type = ATTR_VALUE_CONSTANT;
|
||||
td->attrs = eina_inlist_append(td->attrs, (Eina_Inlist *) attr);
|
||||
*/
|
||||
//Type: Integer
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("color:");
|
||||
attr->value.min = 0;
|
||||
attr->value.max = 255;
|
||||
attr->value.type = ATTR_VALUE_INTEGER;
|
||||
td->attrs = eina_inlist_append(td->attrs, (Eina_Inlist *) attr);
|
||||
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("scale:");
|
||||
attr->value.min = 0;
|
||||
attr->value.max = 1;
|
||||
attr->value.type = ATTR_VALUE_INTEGER;
|
||||
td->attrs = eina_inlist_append(td->attrs, (Eina_Inlist *) attr);
|
||||
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("fixed:");
|
||||
attr->value.min = 0;
|
||||
attr->value.max = 1;
|
||||
attr->value.type = ATTR_VALUE_INTEGER;
|
||||
td->attrs = eina_inlist_append(td->attrs, (Eina_Inlist *) attr);
|
||||
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("size:");
|
||||
attr->value.min = 1;
|
||||
attr->value.max = 255;
|
||||
attr->value.type = ATTR_VALUE_INTEGER;
|
||||
td->attrs = eina_inlist_append(td->attrs, (Eina_Inlist *) attr);
|
||||
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("min:");
|
||||
attr->value.min = 0;
|
||||
attr->value.max = 1000;
|
||||
attr->value.type = ATTR_VALUE_INTEGER;
|
||||
td->attrs = eina_inlist_append(td->attrs, (Eina_Inlist *) attr);
|
||||
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("max:");
|
||||
attr->value.min = 0;
|
||||
attr->value.max = 1000;
|
||||
attr->value.type = ATTR_VALUE_INTEGER;
|
||||
td->attrs = eina_inlist_append(td->attrs, (Eina_Inlist *) attr);
|
||||
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("mouse_events:");
|
||||
attr->value.min = 0;
|
||||
attr->value.max = 1000;
|
||||
attr->value.type = ATTR_VALUE_INTEGER;
|
||||
td->attrs = eina_inlist_append(td->attrs, (Eina_Inlist *) attr);
|
||||
|
||||
//Type: Float
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("relative:");
|
||||
attr->value.min = 0.0;
|
||||
attr->value.max = 1;
|
||||
attr->value.type = ATTR_VALUE_FLOAT;
|
||||
td->attrs = eina_inlist_append(td->attrs, (Eina_Inlist *) attr);
|
||||
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("aspect:");
|
||||
attr->value.min = 0.0;
|
||||
attr->value.max = 1.0;
|
||||
attr->value.type = ATTR_VALUE_FLOAT;
|
||||
td->attrs = eina_inlist_append(td->attrs, (Eina_Inlist *) attr);
|
||||
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("align");
|
||||
attr->value.min = 0.0;
|
||||
attr->value.max = 1.0;
|
||||
attr->value.type = ATTR_VALUE_FLOAT;
|
||||
td->attrs = eina_inlist_append(td->attrs, (Eina_Inlist *) attr);
|
||||
|
||||
//Type: Part
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("target:");
|
||||
attr->instring = EINA_TRUE;
|
||||
attr->value.type = ATTR_VALUE_PART;
|
||||
td->attrs = eina_inlist_append(td->attrs, (Eina_Inlist *) attr);
|
||||
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("to:");
|
||||
attr->instring = EINA_TRUE;
|
||||
attr->value.type = ATTR_VALUE_PART;
|
||||
td->attrs = eina_inlist_append(td->attrs, (Eina_Inlist *) attr);
|
||||
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("source:");
|
||||
attr->instring = EINA_TRUE;
|
||||
attr->value.type = ATTR_VALUE_PART;
|
||||
td->attrs = eina_inlist_append(td->attrs, (Eina_Inlist *) attr);
|
||||
|
||||
//Type: State
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("STATE_SET");
|
||||
attr->instring = EINA_TRUE;
|
||||
attr->value.type = ATTR_VALUE_STATE;
|
||||
attr->value.program = EINA_TRUE;
|
||||
td->attrs = eina_inlist_append(td->attrs, (Eina_Inlist *) attr);
|
||||
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("inherit:");
|
||||
attr->instring = EINA_TRUE;
|
||||
attr->value.type = ATTR_VALUE_STATE;
|
||||
td->attrs = eina_inlist_append(td->attrs, (Eina_Inlist *) attr);
|
||||
|
||||
//Type: Image
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("normal:");
|
||||
attr->instring = EINA_TRUE;
|
||||
attr->value.type = ATTR_VALUE_IMAGE;
|
||||
td->attrs = eina_inlist_append(td->attrs, (Eina_Inlist *) attr);
|
||||
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("tween:");
|
||||
attr->instring = EINA_TRUE;
|
||||
attr->value.type = ATTR_VALUE_IMAGE;
|
||||
td->attrs = eina_inlist_append(td->attrs, (Eina_Inlist *) attr);
|
||||
|
||||
//Type: Program
|
||||
attr = calloc(1, sizeof(parser_attr));
|
||||
attr->keyword = eina_stringshare_add("after:");
|
||||
attr->instring = EINA_TRUE;
|
||||
attr->value.type = ATTR_VALUE_PROGRAM;
|
||||
td->attrs = eina_inlist_append(td->attrs, (Eina_Inlist *) attr);
|
||||
}
|
||||
|
||||
static void
|
||||
type_init_thread_end(void *data, Ecore_Thread *thread EINA_UNUSED)
|
||||
{
|
||||
type_init_td *td = data;
|
||||
td->pd->init_thread = NULL;
|
||||
td->pd->attrs = td->attrs;
|
||||
free(td);
|
||||
}
|
||||
|
||||
static void
|
||||
type_init_thread_cancel(void *data, Ecore_Thread *thread EINA_UNUSED)
|
||||
{
|
||||
type_init_td *td = data;
|
||||
td->pd->init_thread = NULL;
|
||||
free(td);
|
||||
}
|
||||
|
||||
const char *
|
||||
parser_paragh_name_get(parser_data *pd EINA_UNUSED, Evas_Object *entry)
|
||||
{
|
||||
|
@ -854,3 +851,38 @@ parser_states_filtered_name_get(Eina_List *states)
|
|||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
parser_data *
|
||||
parser_init()
|
||||
{
|
||||
parser_data *pd = calloc(1, sizeof(parser_data));
|
||||
|
||||
type_init_td *td = calloc(1, sizeof(type_init_td));
|
||||
td->pd = pd;
|
||||
pd->init_thread = ecore_thread_run(type_init_thread_blocking,
|
||||
type_init_thread_end,
|
||||
type_init_thread_cancel, td);
|
||||
return pd;
|
||||
}
|
||||
|
||||
void
|
||||
parser_term(parser_data *pd)
|
||||
{
|
||||
ecore_thread_cancel(pd->thread);
|
||||
ecore_thread_cancel(pd->init_thread);
|
||||
|
||||
parser_attr *attr;
|
||||
Eina_Stringshare *str;
|
||||
|
||||
while(pd->attrs)
|
||||
{
|
||||
attr = EINA_INLIST_CONTAINER_GET(pd->attrs, parser_attr);
|
||||
pd->attrs = eina_inlist_remove(pd->attrs, pd->attrs);
|
||||
|
||||
eina_stringshare_del(attr->keyword);
|
||||
EINA_LIST_FREE(attr->value.strs, str) eina_stringshare_del(str);
|
||||
free(attr);
|
||||
}
|
||||
|
||||
free(pd);
|
||||
}
|
||||
|
|
|
@ -4,8 +4,9 @@ typedef enum attr_value_type
|
|||
ATTR_VALUE_FLOAT = 2,
|
||||
ATTR_VALUE_CONSTANT = 4,
|
||||
ATTR_VALUE_PART = 8,
|
||||
ATTR_VALUE_IMAGE = 16,
|
||||
ATTR_VALUE_PROGRAM = 32
|
||||
ATTR_VALUE_STATE = 16,
|
||||
ATTR_VALUE_IMAGE = 32,
|
||||
ATTR_VALUE_PROGRAM = 64
|
||||
} attr_value_type;
|
||||
|
||||
struct attr_value_s
|
||||
|
@ -14,10 +15,11 @@ struct attr_value_s
|
|||
float min;
|
||||
float max;
|
||||
attr_value_type type;
|
||||
Eina_Bool program : 1;
|
||||
};
|
||||
|
||||
Evas_Object * ctxpopup_candidate_list_create(Evas_Object *parent, attr_value *attr, double slider_val, Evas_Smart_Cb ctxpopup_dismiss_cb, Evas_Smart_Cb ctxpopup_selected_cb, void *data);
|
||||
Evas_Object * ctxpopup_img_preview_create(Evas_Object *parent, const char *imgpath, Evas_Smart_Cb ctxpopup_dismiss_cb, Evas_Smart_Cb ctxpopup_relay_cb, void *data);
|
||||
Evas_Object * ctxpopup_candidate_list_create(edit_data *ed, attr_value *attr, double slider_val, Evas_Smart_Cb ctxpopup_dismiss_cb, Evas_Smart_Cb ctxpopup_selected_cb);
|
||||
Evas_Object * ctxpopup_img_preview_create(edit_data *ed, const char *imgpath, Evas_Smart_Cb ctxpopup_dismiss_cb, Evas_Smart_Cb ctxpopup_relay_cb);
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -17,3 +17,5 @@ void edit_template_part_insert(edit_data *ed, Edje_Part_Type type);
|
|||
void edit_part_highlight_toggle(edit_data *ed, Eina_Bool msg);
|
||||
void edit_line_delete(edit_data *ed);
|
||||
void edit_edc_reload(edit_data *ed, const char *edc_path);
|
||||
Eina_Stringshare *edit_cur_prog_name_get(edit_data *ed);
|
||||
Eina_Stringshare *edit_cur_part_name_get(edit_data *ed);
|
||||
|
|
|
@ -9,6 +9,7 @@ void parser_term(parser_data *pd);
|
|||
Eina_Stringshare *parser_first_group_name_get(parser_data *pd, Evas_Object *entry);
|
||||
void parser_cur_name_get(parser_data *pd, Evas_Object *entry, void (*cb)(void *data, Eina_Stringshare *part_name, Eina_Stringshare *group_name), void *data);
|
||||
void parser_cur_group_name_get(parser_data *pd, Evas_Object *entry, void (*cb)(void *data, Eina_Stringshare *part_name, Eina_Stringshare *group_name), void *data);
|
||||
Eina_Stringshare *parser_cur_name_fast_get(Evas_Object *entry, const char *scope);
|
||||
Eina_Bool parser_type_name_compare(parser_data *pd, const char *str);
|
||||
const char *parser_markup_escape(parser_data *pd EINA_UNUSED, const char *str);
|
||||
attr_value *parser_attribute_get(parser_data *pd, const char *text, const char *cur);
|
||||
|
@ -16,4 +17,5 @@ const char * parser_paragh_name_get(parser_data *pd, Evas_Object *entry);
|
|||
char *parser_name_get(parser_data *pd, const char *cur);
|
||||
void parser_cancel(parser_data *pd);
|
||||
int parser_line_cnt_get(parser_data *pd EINA_UNUSED, const char *src);
|
||||
Eina_List *parser_states_filtered_name_get(Eina_List *states);
|
||||
|
||||
|
|
|
@ -12,4 +12,6 @@ void view_scale_set(view_data *vd, double scale);
|
|||
Eina_List *view_parts_list_get(view_data *vd);
|
||||
Eina_List *view_images_list_get(view_data *vd);
|
||||
Eina_List *view_programs_list_get(view_data *vd);
|
||||
Eina_List *view_part_states_list_get(view_data *vd, const char *part);
|
||||
Eina_List *view_program_targets_get(view_data *vd, const char *prog);
|
||||
void view_string_list_free(Eina_List *list);
|
||||
|
|
Loading…
Reference in New Issue