forked from enlightenment/efl
stop action supported. parser/compiler is accurate there in not needing more
params. stop is immediate - always. edje test program now uses arguments to determine what to look at SVN revision: 7049
This commit is contained in:
parent
53f0296ad6
commit
943d63f6f2
|
@ -349,6 +349,13 @@ collections {
|
|||
target, "logo_anim";
|
||||
after, "logo_animate"; // at end... loop
|
||||
}
|
||||
program {
|
||||
name, "logo_animate_stop";
|
||||
signal, "mouse,down,1";
|
||||
source, "logo_anim";
|
||||
action, ACTION_STOP;
|
||||
target, "logo_animate";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1005,8 +1005,11 @@ st_collections_group_programs_program_action(void)
|
|||
"STATE_SET", EDJE_ACTION_TYPE_STATE_SET,
|
||||
"ACTION_STOP", EDJE_ACTION_TYPE_ACTION_STOP,
|
||||
NULL);
|
||||
ep->state = parse_str(1);
|
||||
ep->value = parse_float_range(2, 0.0, 1.0);
|
||||
if (ep->action == EDJE_ACTION_TYPE_STATE_SET)
|
||||
{
|
||||
ep->state = parse_str(1);
|
||||
ep->value = parse_float_range(2, 0.0, 1.0);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -131,7 +131,10 @@ test_reize(double w, double h)
|
|||
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
{
|
||||
char *file;
|
||||
char *coll;
|
||||
|
||||
if (main_start(argc, argv) < 1) return -1;
|
||||
|
||||
edje_init();
|
||||
|
@ -139,8 +142,18 @@ main(int argc, char **argv)
|
|||
|
||||
bg_setup();
|
||||
|
||||
/* FIXME: hard-coded. need to make this proper options later */
|
||||
test_setup("./data/e_logo.eet", "test");
|
||||
if (argc < 2)
|
||||
{
|
||||
printf("Usage: %s file_to_show.eet [collection_to_show]\n", argv[0]);
|
||||
printf(" The default collection name to show is \"test\"\n");
|
||||
exit(-1);
|
||||
}
|
||||
file = "./data/e_logo.eet";
|
||||
coll = "test";
|
||||
file = argv[1];
|
||||
if (argc >= 3) coll = argv[2];
|
||||
/* FIXME: list collections */
|
||||
test_setup(argv[1], coll);
|
||||
|
||||
ecore_main_loop_begin();
|
||||
|
||||
|
|
|
@ -608,59 +608,83 @@ _edje_program_run(Edje *ed, Edje_Program *pr)
|
|||
Evas_List *l;
|
||||
|
||||
_edje_emit(ed, "anim,start", pr->name);
|
||||
if (pr->tween.time > 0.0)
|
||||
if (pr->action == EDJE_ACTION_TYPE_STATE_SET)
|
||||
{
|
||||
Edje_Running_Program *runp;
|
||||
|
||||
runp = calloc(1, sizeof(Edje_Running_Program));
|
||||
for (l = pr->targets; l; l = l->next)
|
||||
if (pr->tween.time > 0.0)
|
||||
{
|
||||
Edje_Real_Part *rp;
|
||||
Edje_Program_Target *pt;
|
||||
Edje_Running_Program *runp;
|
||||
|
||||
pt = l->data;
|
||||
rp = evas_list_nth(ed->parts, pt->id);
|
||||
if (rp)
|
||||
runp = calloc(1, sizeof(Edje_Running_Program));
|
||||
for (l = pr->targets; l; l = l->next)
|
||||
{
|
||||
if (rp->program)
|
||||
_edje_program_end(ed, rp->program);
|
||||
_edje_part_description_apply(ed, rp,
|
||||
rp->param1.description->state.name,
|
||||
rp->param1.description->state.value,
|
||||
pr->state,
|
||||
pr->value);
|
||||
_edje_part_pos_set(ed, rp, pr->tween.mode, 0.0);
|
||||
rp->program = runp;
|
||||
Edje_Real_Part *rp;
|
||||
Edje_Program_Target *pt;
|
||||
|
||||
pt = l->data;
|
||||
rp = evas_list_nth(ed->parts, pt->id);
|
||||
if (rp)
|
||||
{
|
||||
if (rp->program)
|
||||
_edje_program_end(ed, rp->program);
|
||||
_edje_part_description_apply(ed, rp,
|
||||
rp->param1.description->state.name,
|
||||
rp->param1.description->state.value,
|
||||
pr->state,
|
||||
pr->value);
|
||||
_edje_part_pos_set(ed, rp, pr->tween.mode, 0.0);
|
||||
rp->program = runp;
|
||||
}
|
||||
}
|
||||
|
||||
if (!ed->actions)
|
||||
_edje_animators = evas_list_append(_edje_animators, ed);
|
||||
ed->actions = evas_list_append(ed->actions, runp);
|
||||
runp->start_time = ecore_time_get();
|
||||
runp->edje = ed;
|
||||
runp->program = pr;
|
||||
if (!_edje_timer)
|
||||
_edje_timer = ecore_timer_add(_edje_frametime, _edje_timer_cb, NULL);
|
||||
_edje_anim_count++;
|
||||
}
|
||||
else
|
||||
{
|
||||
for (l = pr->targets; l; l = l->next)
|
||||
{
|
||||
Edje_Real_Part *rp;
|
||||
Edje_Program_Target *pt;
|
||||
|
||||
pt = l->data;
|
||||
rp = evas_list_nth(ed->parts, pt->id);
|
||||
if (rp)
|
||||
{
|
||||
_edje_part_description_apply(ed, rp,
|
||||
pr->state,
|
||||
pr->value,
|
||||
NULL,
|
||||
0.0);
|
||||
_edje_part_pos_set(ed, rp, pr->tween.mode, 0.0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!ed->actions)
|
||||
_edje_animators = evas_list_append(_edje_animators, ed);
|
||||
ed->actions = evas_list_append(ed->actions, runp);
|
||||
runp->start_time = ecore_time_get();
|
||||
runp->edje = ed;
|
||||
runp->program = pr;
|
||||
if (!_edje_timer)
|
||||
_edje_timer = ecore_timer_add(_edje_frametime, _edje_timer_cb, NULL);
|
||||
_edje_anim_count++;
|
||||
}
|
||||
else
|
||||
else if (pr->action == EDJE_ACTION_TYPE_ACTION_STOP)
|
||||
{
|
||||
for (l = pr->targets; l; l = l->next)
|
||||
{
|
||||
Edje_Real_Part *rp;
|
||||
Edje_Program_Target *pt;
|
||||
Evas_List *ll;
|
||||
|
||||
pt = l->data;
|
||||
rp = evas_list_nth(ed->parts, pt->id);
|
||||
if (rp)
|
||||
for (ll = ed->actions; ll; ll = ll->next)
|
||||
{
|
||||
_edje_part_description_apply(ed, rp,
|
||||
pr->state,
|
||||
pr->value,
|
||||
NULL,
|
||||
0.0);
|
||||
_edje_part_pos_set(ed, rp, pr->tween.mode, 0.0);
|
||||
Edje_Running_Program *runp;
|
||||
|
||||
runp = ll->data;
|
||||
if (pt->id == runp->program->id)
|
||||
{
|
||||
_edje_program_end(ed, runp);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue