forked from enlightenment/efl
and.... edje_cc can take small code snippets in script{} areas and compile
them, include them int eh edje.eet and edje can run them. all i have to do now is actually give the small scripts an api worht talking about SVN revision: 9514
This commit is contained in:
parent
4059260663
commit
3821f74e99
|
@ -0,0 +1,3 @@
|
||||||
|
native tst();
|
||||||
|
native emit(sig[], src[]);
|
||||||
|
|
|
@ -139,11 +139,20 @@ collections {
|
||||||
name: "test";
|
name: "test";
|
||||||
min: 32 32;
|
min: 32 32;
|
||||||
max: 1024 768;
|
max: 1024 768;
|
||||||
data
|
data {
|
||||||
{
|
|
||||||
item: "My Data" "The string to attach to this data";
|
item: "My Data" "The string to attach to this data";
|
||||||
item: "The Key" "String data attached to the key";
|
item: "The Key" "String data attached to the key";
|
||||||
}
|
}
|
||||||
|
script {
|
||||||
|
|
||||||
|
main()
|
||||||
|
{
|
||||||
|
tst();
|
||||||
|
emit("Flabby", "Pants");
|
||||||
|
return 7;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
parts {
|
parts {
|
||||||
part {
|
part {
|
||||||
name: "background";
|
name: "background";
|
||||||
|
@ -466,7 +475,10 @@ collections {
|
||||||
name: "logo_animate_signal";
|
name: "logo_animate_signal";
|
||||||
signal: "mouse,up,1";
|
signal: "mouse,up,1";
|
||||||
source: "logo_anim";
|
source: "logo_anim";
|
||||||
action: SIGNAL_EMIT "do_it" "the_source";
|
// action: SIGNAL_EMIT "do_it" "the_source";
|
||||||
|
script {
|
||||||
|
emit("PROGRAAAAAAAM", "TEEEEEEEEEEEEEST");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
program {
|
program {
|
||||||
name: "random_signal";
|
name: "random_signal";
|
||||||
|
|
|
@ -23,6 +23,8 @@
|
||||||
typedef struct _New_Object_Handler New_Object_Handler;
|
typedef struct _New_Object_Handler New_Object_Handler;
|
||||||
typedef struct _New_Statement_Handler New_Statement_Handler;
|
typedef struct _New_Statement_Handler New_Statement_Handler;
|
||||||
typedef struct _Font Font;
|
typedef struct _Font Font;
|
||||||
|
typedef struct _Code Code;
|
||||||
|
typedef struct _Code_Program Code_Program;
|
||||||
|
|
||||||
struct _New_Object_Handler
|
struct _New_Object_Handler
|
||||||
{
|
{
|
||||||
|
@ -42,6 +44,18 @@ struct _Font
|
||||||
char *name;
|
char *name;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct _Code
|
||||||
|
{
|
||||||
|
char *shared;
|
||||||
|
Evas_List *programs;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct _Code_Program
|
||||||
|
{
|
||||||
|
int id;
|
||||||
|
char *script;
|
||||||
|
};
|
||||||
|
|
||||||
/* global fn calls */
|
/* global fn calls */
|
||||||
void data_setup(void);
|
void data_setup(void);
|
||||||
void data_write(void);
|
void data_write(void);
|
||||||
|
@ -51,6 +65,10 @@ void data_queue_image_lookup(char *name, int *dest);
|
||||||
void data_process_lookups(void);
|
void data_process_lookups(void);
|
||||||
|
|
||||||
|
|
||||||
|
int is_verbatim(void);
|
||||||
|
void track_verbatim(int on);
|
||||||
|
void set_verbatim(char *s);
|
||||||
|
char *get_verbatim(void);
|
||||||
void compile(void);
|
void compile(void);
|
||||||
int is_param(int n);
|
int is_param(int n);
|
||||||
int is_num(int n);
|
int is_num(int n);
|
||||||
|
@ -81,6 +99,7 @@ extern Evas_List *params;
|
||||||
extern Edje_File *edje_file;
|
extern Edje_File *edje_file;
|
||||||
extern Evas_List *edje_collections;
|
extern Evas_List *edje_collections;
|
||||||
extern Evas_List *fonts;
|
extern Evas_List *fonts;
|
||||||
|
extern Evas_List *codes;
|
||||||
extern New_Object_Handler object_handlers[];
|
extern New_Object_Handler object_handlers[];
|
||||||
extern New_Statement_Handler statement_handlers[];
|
extern New_Statement_Handler statement_handlers[];
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,8 @@ 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_data_item(void);
|
static void st_collections_group_data_item(void);
|
||||||
|
|
||||||
|
static void ob_collections_group_script(void);
|
||||||
|
|
||||||
static void ob_collections_group_parts_part(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_name(void);
|
||||||
static void st_collections_group_parts_part_type(void);
|
static void st_collections_group_parts_part_type(void);
|
||||||
|
@ -78,6 +80,8 @@ 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 ob_collections_group_programs_program_script(void);
|
||||||
|
|
||||||
/*****/
|
/*****/
|
||||||
|
|
||||||
New_Statement_Handler statement_handlers[] =
|
New_Statement_Handler statement_handlers[] =
|
||||||
|
@ -159,6 +163,7 @@ New_Object_Handler object_handlers[] =
|
||||||
{"collections.group.max", NULL},
|
{"collections.group.max", NULL},
|
||||||
{"collections.group.data", NULL},
|
{"collections.group.data", NULL},
|
||||||
{"collections.group.data.item", NULL},
|
{"collections.group.data.item", NULL},
|
||||||
|
{"collections.group.script", ob_collections_group_script},
|
||||||
{"collections.group.parts", NULL},
|
{"collections.group.parts", NULL},
|
||||||
{"collections.group.parts.part", ob_collections_group_parts_part},
|
{"collections.group.parts.part", ob_collections_group_parts_part},
|
||||||
{"collections.group.parts.part.name", NULL},
|
{"collections.group.parts.part.name", NULL},
|
||||||
|
@ -224,7 +229,8 @@ New_Object_Handler object_handlers[] =
|
||||||
{"collections.group.programs.program.action", NULL},
|
{"collections.group.programs.program.action", NULL},
|
||||||
{"collections.group.programs.program.transition", NULL},
|
{"collections.group.programs.program.transition", NULL},
|
||||||
{"collections.group.programs.program.target", NULL},
|
{"collections.group.programs.program.target", NULL},
|
||||||
{"collections.group.programs.program.after", NULL}
|
{"collections.group.programs.program.after", NULL},
|
||||||
|
{"collections.group.programs.program.script", ob_collections_group_programs_program_script}
|
||||||
};
|
};
|
||||||
|
|
||||||
/*****/
|
/*****/
|
||||||
|
@ -332,6 +338,7 @@ ob_collections_group(void)
|
||||||
{
|
{
|
||||||
Edje_Part_Collection_Directory_Entry *de;
|
Edje_Part_Collection_Directory_Entry *de;
|
||||||
Edje_Part_Collection *pc;
|
Edje_Part_Collection *pc;
|
||||||
|
Code *cd;
|
||||||
|
|
||||||
de = mem_alloc(SZ(Edje_Part_Collection_Directory_Entry));
|
de = mem_alloc(SZ(Edje_Part_Collection_Directory_Entry));
|
||||||
edje_file->collection_dir->entries = evas_list_append(edje_file->collection_dir->entries, de);
|
edje_file->collection_dir->entries = evas_list_append(edje_file->collection_dir->entries, de);
|
||||||
|
@ -340,6 +347,9 @@ ob_collections_group(void)
|
||||||
pc = mem_alloc(SZ(Edje_Part_Collection));
|
pc = mem_alloc(SZ(Edje_Part_Collection));
|
||||||
edje_collections = evas_list_append(edje_collections, pc);
|
edje_collections = evas_list_append(edje_collections, pc);
|
||||||
pc->id = evas_list_count(edje_collections) - 1;
|
pc->id = evas_list_count(edje_collections) - 1;
|
||||||
|
|
||||||
|
cd = mem_alloc(SZ(Code));
|
||||||
|
codes = evas_list_append(codes, cd);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -371,6 +381,35 @@ st_collections_group_max(void)
|
||||||
pc->prop.max.h = parse_int_range(1, 0, 0x7fffffff);
|
pc->prop.max.h = parse_int_range(1, 0, 0x7fffffff);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
ob_collections_group_script(void)
|
||||||
|
{
|
||||||
|
Edje_Part_Collection *pc;
|
||||||
|
Code *cd;
|
||||||
|
|
||||||
|
pc = evas_list_data(evas_list_last(edje_collections));
|
||||||
|
cd = evas_list_data(evas_list_last(codes));
|
||||||
|
|
||||||
|
if (!is_verbatim()) track_verbatim(1);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
char *s;
|
||||||
|
|
||||||
|
s = get_verbatim();
|
||||||
|
if (s)
|
||||||
|
{
|
||||||
|
if (cd->shared)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "%s: Error. parse error %s:%i. There is already an existing script section for the group\n",
|
||||||
|
progname, file_in, line);
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
cd->shared = s;
|
||||||
|
set_verbatim(NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
st_collections_group_data_item(void)
|
st_collections_group_data_item(void)
|
||||||
{
|
{
|
||||||
|
@ -1256,6 +1295,7 @@ st_collections_group_programs_program_action(void)
|
||||||
"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,
|
||||||
NULL);
|
NULL);
|
||||||
if (ep->action == EDJE_ACTION_TYPE_STATE_SET)
|
if (ep->action == EDJE_ACTION_TYPE_STATE_SET)
|
||||||
{
|
{
|
||||||
|
@ -1359,3 +1399,34 @@ st_collections_group_programs_program_after(void)
|
||||||
free(name);
|
free(name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
ob_collections_group_programs_program_script(void)
|
||||||
|
{
|
||||||
|
Edje_Part_Collection *pc;
|
||||||
|
Edje_Program *ep;
|
||||||
|
Code *cd;
|
||||||
|
|
||||||
|
pc = evas_list_data(evas_list_last(edje_collections));
|
||||||
|
ep = evas_list_data(evas_list_last(pc->programs));
|
||||||
|
cd = evas_list_data(evas_list_last(codes));
|
||||||
|
|
||||||
|
if (!is_verbatim()) track_verbatim(1);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
char *s;
|
||||||
|
|
||||||
|
s = get_verbatim();
|
||||||
|
if (s)
|
||||||
|
{
|
||||||
|
Code_Program *cp;
|
||||||
|
|
||||||
|
cp = mem_alloc(SZ(Code_Program));
|
||||||
|
cp->id = ep->id;
|
||||||
|
cp->script = s;
|
||||||
|
cd->programs = evas_list_append(cd->programs, cp);
|
||||||
|
set_verbatim(NULL);
|
||||||
|
ep->action = EDJE_ACTION_TYPE_SCRIPT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -27,6 +27,7 @@ struct _Image_Lookup
|
||||||
Edje_File *edje_file = NULL;
|
Edje_File *edje_file = NULL;
|
||||||
Evas_List *edje_collections = NULL;
|
Evas_List *edje_collections = NULL;
|
||||||
Evas_List *fonts = NULL;
|
Evas_List *fonts = NULL;
|
||||||
|
Evas_List *codes = NULL;
|
||||||
|
|
||||||
static Eet_Data_Descriptor *edd_edje_file = NULL;
|
static Eet_Data_Descriptor *edd_edje_file = NULL;
|
||||||
static Eet_Data_Descriptor *edd_edje_image_directory = NULL;
|
static Eet_Data_Descriptor *edd_edje_image_directory = NULL;
|
||||||
|
@ -77,6 +78,7 @@ data_write(void)
|
||||||
int image_num;
|
int image_num;
|
||||||
int font_num;
|
int font_num;
|
||||||
int collection_num;
|
int collection_num;
|
||||||
|
int i;
|
||||||
|
|
||||||
bytes = 0;
|
bytes = 0;
|
||||||
input_bytes = 0;
|
input_bytes = 0;
|
||||||
|
@ -374,37 +376,6 @@ data_write(void)
|
||||||
char buf[4096];
|
char buf[4096];
|
||||||
|
|
||||||
pc = l->data;
|
pc = l->data;
|
||||||
|
|
||||||
/* FIXME: hack!!!! */
|
|
||||||
{
|
|
||||||
FILE *f;
|
|
||||||
|
|
||||||
f = fopen("test.amx", "r");
|
|
||||||
if (f)
|
|
||||||
{
|
|
||||||
int size;
|
|
||||||
void *data;
|
|
||||||
|
|
||||||
fseek(f, 0, SEEK_END);
|
|
||||||
size = ftell(f);
|
|
||||||
rewind(f);
|
|
||||||
if (size > 0)
|
|
||||||
{
|
|
||||||
int bt;
|
|
||||||
|
|
||||||
data = malloc(size);
|
|
||||||
if (data)
|
|
||||||
{
|
|
||||||
fread(data, size, 1, f);
|
|
||||||
snprintf(buf, sizeof(buf), "scripts/%i", pc->id);
|
|
||||||
bt = eet_write(ef, buf, data, size, 1);
|
|
||||||
free(data);
|
|
||||||
printf("WROTE %i bytes of AMX!\n", bt);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
fclose(f);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
snprintf(buf, sizeof(buf), "collections/%i", pc->id);
|
snprintf(buf, sizeof(buf), "collections/%i", pc->id);
|
||||||
bytes = eet_data_write(ef, edd_edje_part_collection, buf, pc, 1);
|
bytes = eet_data_write(ef, edd_edje_part_collection, buf, pc, 1);
|
||||||
if (bytes <= 0)
|
if (bytes <= 0)
|
||||||
|
@ -424,6 +395,88 @@ data_write(void)
|
||||||
progname, bytes, (bytes + 512) / 1024, buf);
|
progname, bytes, (bytes + 512) / 1024, buf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
for (i = 0, l = codes; l; l = l->next, i++)
|
||||||
|
{
|
||||||
|
Code *cd;
|
||||||
|
|
||||||
|
cd = l->data;
|
||||||
|
if ((cd->shared) || (cd->programs))
|
||||||
|
{
|
||||||
|
int fd;
|
||||||
|
char tmpn[4096];
|
||||||
|
|
||||||
|
strcpy(tmpn, "/tmp/edje_cc.sma-tmp-XXXXXX");
|
||||||
|
fd = mkstemp(tmpn);
|
||||||
|
if (fd >= 0)
|
||||||
|
{
|
||||||
|
FILE *f;
|
||||||
|
char buf[4096];
|
||||||
|
char tmpo[4096];
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
f = fopen(tmpn, "w");
|
||||||
|
if (f)
|
||||||
|
{
|
||||||
|
Evas_List *ll;
|
||||||
|
|
||||||
|
fprintf(f, "#include <edje>\n\n");
|
||||||
|
if (cd->shared) fprintf(f, "%s\n", cd->shared);
|
||||||
|
for (ll = cd->programs; ll; ll = ll->next)
|
||||||
|
{
|
||||||
|
Code_Program *cp;
|
||||||
|
|
||||||
|
cp = ll->data;
|
||||||
|
if (cp->script)
|
||||||
|
{
|
||||||
|
/* FIXME: this prototype needs to be */
|
||||||
|
/* formalised and set in stone */
|
||||||
|
fprintf(f, "public _p%i(sig[], src[]) {\n", cp->id);
|
||||||
|
fprintf(f, "%s\n", cp->script);
|
||||||
|
fprintf(f, "}\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fclose(f);
|
||||||
|
}
|
||||||
|
close(fd);
|
||||||
|
strcpy(tmpo, "/tmp/edje_cc.amx-tmp-XXXXXX");
|
||||||
|
fd = mkstemp(tmpo);
|
||||||
|
if (fd >= 0)
|
||||||
|
{
|
||||||
|
snprintf(buf, sizeof(buf), "embryo_cc -i%s -o%s %s",
|
||||||
|
DAT"data/include", tmpo, tmpn);
|
||||||
|
ret = system(buf);
|
||||||
|
printf("ret = %i\n", ret);
|
||||||
|
close(fd);
|
||||||
|
}
|
||||||
|
f = fopen(tmpo, "r");
|
||||||
|
if (f)
|
||||||
|
{
|
||||||
|
int size;
|
||||||
|
void *data;
|
||||||
|
|
||||||
|
fseek(f, 0, SEEK_END);
|
||||||
|
size = ftell(f);
|
||||||
|
rewind(f);
|
||||||
|
if (size > 0)
|
||||||
|
{
|
||||||
|
int bt;
|
||||||
|
|
||||||
|
data = malloc(size);
|
||||||
|
if (data)
|
||||||
|
{
|
||||||
|
fread(data, size, 1, f);
|
||||||
|
snprintf(buf, sizeof(buf), "scripts/%i", i);
|
||||||
|
bt = eet_write(ef, buf, data, size, 1);
|
||||||
|
free(data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fclose(f);
|
||||||
|
}
|
||||||
|
unlink(tmpn);
|
||||||
|
unlink(tmpo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
eet_close(ef);
|
eet_close(ef);
|
||||||
if (verbose)
|
if (verbose)
|
||||||
{
|
{
|
||||||
|
|
|
@ -37,6 +37,8 @@ Evas_List *stack = NULL;
|
||||||
Evas_List *params = NULL;
|
Evas_List *params = NULL;
|
||||||
|
|
||||||
static char file_buf[4096];
|
static char file_buf[4096];
|
||||||
|
static int verbatim = 0;
|
||||||
|
static char *verbatim_str = NULL;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
new_object(void)
|
new_object(void)
|
||||||
|
@ -379,6 +381,73 @@ parse(char *data, off_t size)
|
||||||
{
|
{
|
||||||
stack = evas_list_append(stack, token);
|
stack = evas_list_append(stack, token);
|
||||||
new_object();
|
new_object();
|
||||||
|
if ((verbatim == 1) && (p < (end - 2)))
|
||||||
|
{
|
||||||
|
int escaped = 0;
|
||||||
|
int inquotes = 0;
|
||||||
|
int insquotes = 0;
|
||||||
|
int squigglie = 1;
|
||||||
|
char *verbatim_1;
|
||||||
|
char *verbatim_2;
|
||||||
|
|
||||||
|
while ((p[0] != '{') && (p < end)) p++;
|
||||||
|
p++;
|
||||||
|
verbatim_1 = p;
|
||||||
|
verbatim_2 = NULL;
|
||||||
|
for (; p < end; p++)
|
||||||
|
{
|
||||||
|
if (escaped) escaped = 0;
|
||||||
|
if (!escaped)
|
||||||
|
{
|
||||||
|
if (p[0] == '\\') escaped = 1;
|
||||||
|
else if (p[0] == '\"')
|
||||||
|
{
|
||||||
|
if (!insquotes)
|
||||||
|
{
|
||||||
|
if (inquotes) inquotes = 0;
|
||||||
|
else inquotes = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (p[0] == '\'')
|
||||||
|
{
|
||||||
|
if (!inquotes)
|
||||||
|
{
|
||||||
|
if (insquotes) insquotes = 0;
|
||||||
|
else insquotes = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ((!inquotes) && (!insquotes))
|
||||||
|
{
|
||||||
|
if (p[0] == '{') squigglie++;
|
||||||
|
else if (p[0] == '}') squigglie--;
|
||||||
|
if (squigglie == 0)
|
||||||
|
{
|
||||||
|
verbatim_2 = p - 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (verbatim_2 > verbatim_1)
|
||||||
|
{
|
||||||
|
int l;
|
||||||
|
char *v;
|
||||||
|
|
||||||
|
l = verbatim_2 - verbatim_1 + 1;
|
||||||
|
v = malloc(l + 1);
|
||||||
|
strncpy(v, verbatim_1, l);
|
||||||
|
v[l] = 0;
|
||||||
|
set_verbatim(v);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
fprintf(stderr, "%s: Error. parse error %s:%i. { marker does not have matching } marker\n",
|
||||||
|
progname, file_in, line);
|
||||||
|
exit(-1);
|
||||||
|
}
|
||||||
|
new_object();
|
||||||
|
verbatim = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -396,6 +465,30 @@ clean_tmp_file(void)
|
||||||
if (clean_file) unlink(clean_file);
|
if (clean_file) unlink(clean_file);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
is_verbatim(void)
|
||||||
|
{
|
||||||
|
return verbatim;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
track_verbatim(int on)
|
||||||
|
{
|
||||||
|
verbatim = on;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
set_verbatim(char *s)
|
||||||
|
{
|
||||||
|
verbatim_str = s;
|
||||||
|
}
|
||||||
|
|
||||||
|
char *
|
||||||
|
get_verbatim(void)
|
||||||
|
{
|
||||||
|
return verbatim_str;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
compile(void)
|
compile(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -113,7 +113,8 @@ Edje_Edit_Image *edje_edit_iamge_get_by_id(int id);
|
||||||
#define EDJE_ACTION_TYPE_DRAG_VAL_SET 4
|
#define EDJE_ACTION_TYPE_DRAG_VAL_SET 4
|
||||||
#define EDJE_ACTION_TYPE_DRAG_VAL_STEP 5
|
#define EDJE_ACTION_TYPE_DRAG_VAL_STEP 5
|
||||||
#define EDJE_ACTION_TYPE_DRAG_VAL_PAGE 6
|
#define EDJE_ACTION_TYPE_DRAG_VAL_PAGE 6
|
||||||
#define EDJE_ACTION_TYPE_LAST 7
|
#define EDJE_ACTION_TYPE_SCRIPT 7
|
||||||
|
#define EDJE_ACTION_TYPE_LAST 8
|
||||||
|
|
||||||
#define EDJE_TWEEN_MODE_NONE 0
|
#define EDJE_TWEEN_MODE_NONE 0
|
||||||
#define EDJE_TWEEN_MODE_LINEAR 1
|
#define EDJE_TWEEN_MODE_LINEAR 1
|
||||||
|
@ -597,7 +598,7 @@ void _edje_unref(Edje *ed);
|
||||||
|
|
||||||
int _edje_program_run_iterate(Edje_Running_Program *runp, double tim);
|
int _edje_program_run_iterate(Edje_Running_Program *runp, double tim);
|
||||||
void _edje_program_end(Edje *ed, Edje_Running_Program *runp);
|
void _edje_program_end(Edje *ed, Edje_Running_Program *runp);
|
||||||
void _edje_program_run(Edje *ed, Edje_Program *pr, int force);
|
void _edje_program_run(Edje *ed, Edje_Program *pr, int force, char *ssig, char *ssrc);
|
||||||
void _edje_emit(Edje *ed, char *sig, char *src);
|
void _edje_emit(Edje *ed, char *sig, char *src);
|
||||||
|
|
||||||
void _edje_text_init(void);
|
void _edje_text_init(void);
|
||||||
|
|
|
@ -307,7 +307,7 @@ _edje_pending_timer_cb(void *data)
|
||||||
|
|
||||||
pp = data;
|
pp = data;
|
||||||
pp->edje->pending_actions = evas_list_remove(pp->edje->pending_actions, pp);
|
pp->edje->pending_actions = evas_list_remove(pp->edje->pending_actions, pp);
|
||||||
_edje_program_run(pp->edje, pp->program, 1);
|
_edje_program_run(pp->edje, pp->program, 1, "", "");
|
||||||
free(pp);
|
free(pp);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -93,3 +93,23 @@ _edje_embryo_script_reset(Edje *ed)
|
||||||
if (embryo_program_recursion_get(ed->collection->script) > 0) return;
|
if (embryo_program_recursion_get(ed->collection->script) > 0) return;
|
||||||
embryo_program_vm_reset(ed->collection->script);
|
embryo_program_vm_reset(ed->collection->script);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
_edje_embryo_test_run(Edje *ed, char *fname, char *sig, char *src)
|
||||||
|
{
|
||||||
|
Embryo_Function fn;
|
||||||
|
|
||||||
|
if (!ed) return;
|
||||||
|
if (!ed->collection) return;
|
||||||
|
if (!ed->collection->script) return;
|
||||||
|
_edje_embryo_script_reset(ed);
|
||||||
|
fn = embryo_program_function_find(ed->collection->script, fname);
|
||||||
|
if (fn != EMBRYO_FUNCTION_NONE)
|
||||||
|
{
|
||||||
|
printf("EDJE DEBUG: About to run script from progrqm.\n");
|
||||||
|
embryo_parameter_string_push(ed->collection->script, sig);
|
||||||
|
embryo_parameter_string_push(ed->collection->script, src);
|
||||||
|
embryo_program_run(ed->collection->script, fn);
|
||||||
|
printf("EDJE DEBUG: Done.\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -59,5 +59,6 @@ extern Evas_List *_edje_edjes;
|
||||||
void _edje_embryo_script_init (Edje *ed);
|
void _edje_embryo_script_init (Edje *ed);
|
||||||
void _edje_embryo_script_shutdown (Edje *ed);
|
void _edje_embryo_script_shutdown (Edje *ed);
|
||||||
void _edje_embryo_script_reset (Edje *ed);
|
void _edje_embryo_script_reset (Edje *ed);
|
||||||
|
void _edje_embryo_test_run (Edje *ed, char *fname, char *sig, char *src);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -276,7 +276,7 @@ _edje_program_run_iterate(Edje_Running_Program *runp, double tim)
|
||||||
if (pa->id >= 0)
|
if (pa->id >= 0)
|
||||||
{
|
{
|
||||||
pr = evas_list_nth(ed->collection->programs, pa->id);
|
pr = evas_list_nth(ed->collection->programs, pa->id);
|
||||||
if (pr) _edje_program_run(ed, pr, 0);
|
if (pr) _edje_program_run(ed, pr, 0, "", "");
|
||||||
if (_edje_block_break(ed))
|
if (_edje_block_break(ed))
|
||||||
{
|
{
|
||||||
if (!ed->walking_actions) free(runp);
|
if (!ed->walking_actions) free(runp);
|
||||||
|
@ -345,7 +345,7 @@ _edje_program_end(Edje *ed, Edje_Running_Program *runp)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
_edje_program_run(Edje *ed, Edje_Program *pr, int force)
|
_edje_program_run(Edje *ed, Edje_Program *pr, int force, char *ssig, char *ssrc)
|
||||||
{
|
{
|
||||||
Evas_List *l;
|
Evas_List *l;
|
||||||
/* limit self-feeding loops in programs to 64 levels */
|
/* limit self-feeding loops in programs to 64 levels */
|
||||||
|
@ -461,7 +461,7 @@ _edje_program_run(Edje *ed, Edje_Program *pr, int force)
|
||||||
if (pa->id >= 0)
|
if (pa->id >= 0)
|
||||||
{
|
{
|
||||||
pr2 = evas_list_nth(ed->collection->programs, pa->id);
|
pr2 = evas_list_nth(ed->collection->programs, pa->id);
|
||||||
if (pr2) _edje_program_run(ed, pr2, 0);
|
if (pr2) _edje_program_run(ed, pr2, 0, "", "");
|
||||||
if (_edje_block_break(ed)) goto break_prog;
|
if (_edje_block_break(ed)) goto break_prog;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -597,6 +597,17 @@ _edje_program_run(Edje *ed, Edje_Program *pr, int force)
|
||||||
_edje_emit(ed, "program,stop", pr->name);
|
_edje_emit(ed, "program,stop", pr->name);
|
||||||
if (_edje_block_break(ed)) goto break_prog;
|
if (_edje_block_break(ed)) goto break_prog;
|
||||||
}
|
}
|
||||||
|
else if (pr->action == EDJE_ACTION_TYPE_SCRIPT)
|
||||||
|
{
|
||||||
|
char fname[128];
|
||||||
|
|
||||||
|
_edje_emit(ed, "program,start", pr->name);
|
||||||
|
if (_edje_block_break(ed)) goto break_prog;
|
||||||
|
snprintf(fname, sizeof(fname), "_p%i", pr->id);
|
||||||
|
_edje_embryo_test_run(ed, fname, ssig, ssrc);
|
||||||
|
_edje_emit(ed, "program,stop", pr->name);
|
||||||
|
if (_edje_block_break(ed)) goto break_prog;
|
||||||
|
}
|
||||||
if (!((pr->action == EDJE_ACTION_TYPE_STATE_SET)
|
if (!((pr->action == EDJE_ACTION_TYPE_STATE_SET)
|
||||||
/* hmm this fucks somethgin up. must look into it later */
|
/* hmm this fucks somethgin up. must look into it later */
|
||||||
/* && (pr->tween.time > 0.0) && (!ed->no_anim))) */
|
/* && (pr->tween.time > 0.0) && (!ed->no_anim))) */
|
||||||
|
@ -610,7 +621,7 @@ _edje_program_run(Edje *ed, Edje_Program *pr, int force)
|
||||||
if (pa->id >= 0)
|
if (pa->id >= 0)
|
||||||
{
|
{
|
||||||
pr2 = evas_list_nth(ed->collection->programs, pa->id);
|
pr2 = evas_list_nth(ed->collection->programs, pa->id);
|
||||||
if (pr2) _edje_program_run(ed, pr2, 0);
|
if (pr2) _edje_program_run(ed, pr2, 0, "", "");
|
||||||
if (_edje_block_break(ed)) goto break_prog;
|
if (_edje_block_break(ed)) goto break_prog;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -734,7 +745,7 @@ _edje_emit(Edje *ed, char *sig, char *src)
|
||||||
Edje_Program *pr;
|
Edje_Program *pr;
|
||||||
|
|
||||||
pr = l->data;
|
pr = l->data;
|
||||||
_edje_program_run(ed, pr, 0);
|
_edje_program_run(ed, pr, 0, sig, src);
|
||||||
if (_edje_block_break(ed))
|
if (_edje_block_break(ed))
|
||||||
{
|
{
|
||||||
if (tmps) free(tmps);
|
if (tmps) free(tmps);
|
||||||
|
@ -767,7 +778,7 @@ _edje_emit(Edje *ed, char *sig, char *src)
|
||||||
#ifdef EDJE_PROGRAM_CACHE
|
#ifdef EDJE_PROGRAM_CACHE
|
||||||
matched++;
|
matched++;
|
||||||
#endif
|
#endif
|
||||||
_edje_program_run(ed, pr, 0);
|
_edje_program_run(ed, pr, 0, ee->signal, ee->source);
|
||||||
if (_edje_block_break(ed))
|
if (_edje_block_break(ed))
|
||||||
{
|
{
|
||||||
#ifdef EDJE_PROGRAM_CACHE
|
#ifdef EDJE_PROGRAM_CACHE
|
||||||
|
|
Loading…
Reference in New Issue