forked from enlightenment/efl
allow setting parameters from embryo!
SVN revision: 47459
This commit is contained in:
parent
cfecbc912b
commit
430d792e27
|
@ -151,6 +151,16 @@ native set_min_size (Float:w, Float:h);
|
||||||
native set_max_size (Float:w, Float:h);
|
native set_max_size (Float:w, Float:h);
|
||||||
native part_swallow (part_id, GROUP:str[]);
|
native part_swallow (part_id, GROUP:str[]);
|
||||||
|
|
||||||
|
native external_param_get_int(id, param_name[]);
|
||||||
|
native external_param_set_int(id, param_name[], value);
|
||||||
|
native Float:external_param_get_float(id, param_name[]);
|
||||||
|
native external_param_set_float(id, param_name[], Float:value);
|
||||||
|
native external_param_get_strlen(id, param_name[]);
|
||||||
|
native external_param_get_str(id, param_name[], value[], value_maxlen);
|
||||||
|
native external_param_set_str(id, param_name[], value[]);
|
||||||
|
native external_param_get_bool(id, param_name[]);
|
||||||
|
native external_param_set_bool(id, param_name[], value);
|
||||||
|
|
||||||
enum Msg_Type
|
enum Msg_Type
|
||||||
{
|
{
|
||||||
MSG_NONE = 0,
|
MSG_NONE = 0,
|
||||||
|
|
|
@ -211,6 +211,16 @@ void *alloca (size_t);
|
||||||
*
|
*
|
||||||
* part_swallow(part_id, group_name)
|
* part_swallow(part_id, group_name)
|
||||||
*
|
*
|
||||||
|
* external_param_get_int(id, param_name[])
|
||||||
|
* external_param_set_int(id, param_name[], value)
|
||||||
|
* Float:external_param_get_float(id, param_name[])
|
||||||
|
* external_param_set_float(id, param_name[], Float:value)
|
||||||
|
* external_param_get_strlen(id, param_name[])
|
||||||
|
* external_param_get_str(id, param_name[], value[], value_maxlen)
|
||||||
|
* external_param_set_str(id, param_name[], value[])
|
||||||
|
* external_param_get_bool(id, param_name[])
|
||||||
|
* external_param_set_bool(id, param_name[], value)
|
||||||
|
*
|
||||||
* ADD/DEL CUSTOM OBJECTS UNDER SOLE EMBRYO SCRIPT CONTROL
|
* ADD/DEL CUSTOM OBJECTS UNDER SOLE EMBRYO SCRIPT CONTROL
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
@ -2287,6 +2297,262 @@ _edje_embryo_fn_part_swallow(Embryo_Program *ep, Embryo_Cell *params)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* external_param_get_int(id, param_name[]) */
|
||||||
|
static Embryo_Cell
|
||||||
|
_edje_embryo_fn_external_param_get_int(Embryo_Program *ep, Embryo_Cell *params)
|
||||||
|
{
|
||||||
|
Edje *ed;
|
||||||
|
int part_id;
|
||||||
|
Edje_Real_Part *rp;
|
||||||
|
Edje_External_Param eep;
|
||||||
|
char *param_name;
|
||||||
|
|
||||||
|
CHKPARAM(2);
|
||||||
|
ed = embryo_program_data_get(ep);
|
||||||
|
|
||||||
|
part_id = params[1];
|
||||||
|
if (part_id < 0) return 0;
|
||||||
|
rp = ed->table_parts[part_id % ed->table_parts_size];
|
||||||
|
|
||||||
|
GETSTR(param_name, params[2]);
|
||||||
|
if (!param_name) return 0;
|
||||||
|
eep.name = param_name;
|
||||||
|
eep.type = EDJE_EXTERNAL_PARAM_TYPE_INT;
|
||||||
|
eep.i = 0;
|
||||||
|
_edje_external_param_get(rp->swallowed_object, &eep);
|
||||||
|
return eep.i;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* external_param_set_int(id, param_name[], val) */
|
||||||
|
static Embryo_Cell
|
||||||
|
_edje_embryo_fn_external_param_set_int(Embryo_Program *ep, Embryo_Cell *params)
|
||||||
|
{
|
||||||
|
Edje *ed;
|
||||||
|
int part_id;
|
||||||
|
Edje_Real_Part *rp;
|
||||||
|
Edje_External_Param eep;
|
||||||
|
char *param_name;
|
||||||
|
|
||||||
|
CHKPARAM(3);
|
||||||
|
ed = embryo_program_data_get(ep);
|
||||||
|
|
||||||
|
part_id = params[1];
|
||||||
|
if (part_id < 0) return 0;
|
||||||
|
rp = ed->table_parts[part_id % ed->table_parts_size];
|
||||||
|
|
||||||
|
GETSTR(param_name, params[2]);
|
||||||
|
if (!param_name) return 0;
|
||||||
|
eep.name = param_name;
|
||||||
|
eep.type = EDJE_EXTERNAL_PARAM_TYPE_INT;
|
||||||
|
eep.i = params[3];
|
||||||
|
return _edje_external_param_set(rp->swallowed_object, &eep);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Float:external_param_get_float(id, param_name[]) */
|
||||||
|
static Embryo_Cell
|
||||||
|
_edje_embryo_fn_external_param_get_float(Embryo_Program *ep, Embryo_Cell *params)
|
||||||
|
{
|
||||||
|
Edje *ed;
|
||||||
|
int part_id;
|
||||||
|
Edje_Real_Part *rp;
|
||||||
|
Edje_External_Param eep;
|
||||||
|
char *param_name;
|
||||||
|
float v;
|
||||||
|
|
||||||
|
CHKPARAM(2);
|
||||||
|
ed = embryo_program_data_get(ep);
|
||||||
|
|
||||||
|
part_id = params[1];
|
||||||
|
if (part_id < 0) return 0;
|
||||||
|
rp = ed->table_parts[part_id % ed->table_parts_size];
|
||||||
|
|
||||||
|
GETSTR(param_name, params[2]);
|
||||||
|
if (!param_name) return 0;
|
||||||
|
eep.name = param_name;
|
||||||
|
eep.type = EDJE_EXTERNAL_PARAM_TYPE_DOUBLE;
|
||||||
|
eep.d = 0.0;
|
||||||
|
_edje_external_param_get(rp->swallowed_object, &eep);
|
||||||
|
v = eep.d;
|
||||||
|
return EMBRYO_FLOAT_TO_CELL(v);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* external_param_set_float(id, param_name[], Float:val) */
|
||||||
|
static Embryo_Cell
|
||||||
|
_edje_embryo_fn_external_param_set_float(Embryo_Program *ep, Embryo_Cell *params)
|
||||||
|
{
|
||||||
|
Edje *ed;
|
||||||
|
int part_id;
|
||||||
|
Edje_Real_Part *rp;
|
||||||
|
Edje_External_Param eep;
|
||||||
|
char *param_name;
|
||||||
|
|
||||||
|
CHKPARAM(3);
|
||||||
|
ed = embryo_program_data_get(ep);
|
||||||
|
|
||||||
|
part_id = params[1];
|
||||||
|
if (part_id < 0) return 0;
|
||||||
|
rp = ed->table_parts[part_id % ed->table_parts_size];
|
||||||
|
|
||||||
|
GETSTR(param_name, params[2]);
|
||||||
|
if (!param_name) return 0;
|
||||||
|
eep.name = param_name;
|
||||||
|
eep.type = EDJE_EXTERNAL_PARAM_TYPE_DOUBLE;
|
||||||
|
eep.d = EMBRYO_CELL_TO_FLOAT(params[3]);
|
||||||
|
return _edje_external_param_set(rp->swallowed_object, &eep);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* external_param_get_strlen(id, param_name[]) */
|
||||||
|
static Embryo_Cell
|
||||||
|
_edje_embryo_fn_external_param_get_strlen(Embryo_Program *ep, Embryo_Cell *params)
|
||||||
|
{
|
||||||
|
Edje *ed;
|
||||||
|
int part_id;
|
||||||
|
Edje_Real_Part *rp;
|
||||||
|
Edje_External_Param eep;
|
||||||
|
char *param_name;
|
||||||
|
|
||||||
|
CHKPARAM(2);
|
||||||
|
ed = embryo_program_data_get(ep);
|
||||||
|
|
||||||
|
part_id = params[1];
|
||||||
|
if (part_id < 0) return 0;
|
||||||
|
rp = ed->table_parts[part_id % ed->table_parts_size];
|
||||||
|
|
||||||
|
GETSTR(param_name, params[2]);
|
||||||
|
if (!param_name) return 0;
|
||||||
|
eep.name = param_name;
|
||||||
|
eep.type = EDJE_EXTERNAL_PARAM_TYPE_STRING;
|
||||||
|
eep.s = NULL;
|
||||||
|
_edje_external_param_get(rp->swallowed_object, &eep);
|
||||||
|
if (!eep.s) return 0;
|
||||||
|
return strlen(eep.s);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* external_param_get_str(id, param_name[], val[], val_maxlen) */
|
||||||
|
static Embryo_Cell
|
||||||
|
_edje_embryo_fn_external_param_get_str(Embryo_Program *ep, Embryo_Cell *params)
|
||||||
|
{
|
||||||
|
Edje *ed;
|
||||||
|
int part_id;
|
||||||
|
Edje_Real_Part *rp;
|
||||||
|
Edje_External_Param eep;
|
||||||
|
char *param_name;
|
||||||
|
size_t src_len, dst_len;
|
||||||
|
|
||||||
|
CHKPARAM(4);
|
||||||
|
dst_len = params[4];
|
||||||
|
if (dst_len < 1) goto error;
|
||||||
|
|
||||||
|
ed = embryo_program_data_get(ep);
|
||||||
|
|
||||||
|
part_id = params[1];
|
||||||
|
if (part_id < 0) goto error;
|
||||||
|
rp = ed->table_parts[part_id % ed->table_parts_size];
|
||||||
|
|
||||||
|
GETSTR(param_name, params[2]);
|
||||||
|
if (!param_name) return 0;
|
||||||
|
eep.name = param_name;
|
||||||
|
eep.type = EDJE_EXTERNAL_PARAM_TYPE_STRING;
|
||||||
|
eep.s = NULL;
|
||||||
|
_edje_external_param_get(rp->swallowed_object, &eep);
|
||||||
|
if (!eep.s) goto error;
|
||||||
|
src_len = strlen(eep.s);
|
||||||
|
if (src_len < dst_len)
|
||||||
|
{
|
||||||
|
SETSTR(eep.s, params[3]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
char *tmp = alloca(dst_len);
|
||||||
|
memcpy(tmp, eep.s, dst_len - 1);
|
||||||
|
tmp[dst_len] = '\0';
|
||||||
|
SETSTR(tmp, params[3]);
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
|
||||||
|
error:
|
||||||
|
SETSTR("", params[3]);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* external_param_set_str(id, param_name[], val[]) */
|
||||||
|
static Embryo_Cell
|
||||||
|
_edje_embryo_fn_external_param_set_str(Embryo_Program *ep, Embryo_Cell *params)
|
||||||
|
{
|
||||||
|
Edje *ed;
|
||||||
|
int part_id;
|
||||||
|
Edje_Real_Part *rp;
|
||||||
|
Edje_External_Param eep;
|
||||||
|
char *param_name, *val;
|
||||||
|
|
||||||
|
CHKPARAM(3);
|
||||||
|
ed = embryo_program_data_get(ep);
|
||||||
|
|
||||||
|
part_id = params[1];
|
||||||
|
if (part_id < 0) return 0;
|
||||||
|
rp = ed->table_parts[part_id % ed->table_parts_size];
|
||||||
|
|
||||||
|
GETSTR(param_name, params[2]);
|
||||||
|
if (!param_name) return 0;
|
||||||
|
eep.name = param_name;
|
||||||
|
eep.type = EDJE_EXTERNAL_PARAM_TYPE_STRING;
|
||||||
|
GETSTR(val, params[3]);
|
||||||
|
if (!val) return 0;
|
||||||
|
eep.s = val;
|
||||||
|
return _edje_external_param_set(rp->swallowed_object, &eep);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* external_param_get_bool(id, param_name[]) */
|
||||||
|
static Embryo_Cell
|
||||||
|
_edje_embryo_fn_external_param_get_bool(Embryo_Program *ep, Embryo_Cell *params)
|
||||||
|
{
|
||||||
|
Edje *ed;
|
||||||
|
int part_id;
|
||||||
|
Edje_Real_Part *rp;
|
||||||
|
Edje_External_Param eep;
|
||||||
|
char *param_name;
|
||||||
|
|
||||||
|
CHKPARAM(2);
|
||||||
|
ed = embryo_program_data_get(ep);
|
||||||
|
|
||||||
|
part_id = params[1];
|
||||||
|
if (part_id < 0) return 0;
|
||||||
|
rp = ed->table_parts[part_id % ed->table_parts_size];
|
||||||
|
|
||||||
|
GETSTR(param_name, params[2]);
|
||||||
|
if (!param_name) return 0;
|
||||||
|
eep.name = param_name;
|
||||||
|
eep.type = EDJE_EXTERNAL_PARAM_TYPE_BOOL;
|
||||||
|
eep.i = 0;
|
||||||
|
_edje_external_param_get(rp->swallowed_object, &eep);
|
||||||
|
return eep.i;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* external_param_set_bool(id, param_name[], val) */
|
||||||
|
static Embryo_Cell
|
||||||
|
_edje_embryo_fn_external_param_set_bool(Embryo_Program *ep, Embryo_Cell *params)
|
||||||
|
{
|
||||||
|
Edje *ed;
|
||||||
|
int part_id;
|
||||||
|
Edje_Real_Part *rp;
|
||||||
|
Edje_External_Param eep;
|
||||||
|
char *param_name;
|
||||||
|
|
||||||
|
CHKPARAM(3);
|
||||||
|
ed = embryo_program_data_get(ep);
|
||||||
|
|
||||||
|
part_id = params[1];
|
||||||
|
if (part_id < 0) return 0;
|
||||||
|
rp = ed->table_parts[part_id % ed->table_parts_size];
|
||||||
|
|
||||||
|
GETSTR(param_name, params[2]);
|
||||||
|
if (!param_name) return 0;
|
||||||
|
eep.name = param_name;
|
||||||
|
eep.type = EDJE_EXTERNAL_PARAM_TYPE_BOOL;
|
||||||
|
eep.i = params[3];
|
||||||
|
return _edje_external_param_set(rp->swallowed_object, &eep);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
_edje_embryo_script_init(Edje *ed)
|
_edje_embryo_script_init(Edje *ed)
|
||||||
{
|
{
|
||||||
|
@ -2366,6 +2632,16 @@ _edje_embryo_script_init(Edje *ed)
|
||||||
|
|
||||||
embryo_program_native_call_add(ep, "part_swallow", _edje_embryo_fn_part_swallow);
|
embryo_program_native_call_add(ep, "part_swallow", _edje_embryo_fn_part_swallow);
|
||||||
|
|
||||||
|
embryo_program_native_call_add(ep, "external_param_get_int", _edje_embryo_fn_external_param_get_int);
|
||||||
|
embryo_program_native_call_add(ep, "external_param_set_int", _edje_embryo_fn_external_param_set_int);
|
||||||
|
embryo_program_native_call_add(ep, "external_param_get_float", _edje_embryo_fn_external_param_get_float);
|
||||||
|
embryo_program_native_call_add(ep, "external_param_set_float", _edje_embryo_fn_external_param_set_float);
|
||||||
|
embryo_program_native_call_add(ep, "external_param_get_strlen", _edje_embryo_fn_external_param_get_strlen);
|
||||||
|
embryo_program_native_call_add(ep, "external_param_get_str", _edje_embryo_fn_external_param_get_str);
|
||||||
|
embryo_program_native_call_add(ep, "external_param_set_str", _edje_embryo_fn_external_param_set_str);
|
||||||
|
embryo_program_native_call_add(ep, "external_param_get_bool", _edje_embryo_fn_external_param_get_bool);
|
||||||
|
embryo_program_native_call_add(ep, "external_param_set_bool", _edje_embryo_fn_external_param_set_bool);
|
||||||
|
|
||||||
// embryo_program_vm_push(ed->collection->script);
|
// embryo_program_vm_push(ed->collection->script);
|
||||||
// _edje_embryo_globals_init(ed);
|
// _edje_embryo_globals_init(ed);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue