signal emit action added

SVN revision: 7050
This commit is contained in:
Carsten Haitzler 2003-06-20 13:41:00 +00:00
parent 943d63f6f2
commit 4521ca1f87
4 changed files with 30 additions and 16 deletions

View File

@ -356,6 +356,12 @@ collections {
action, ACTION_STOP;
target, "logo_animate";
}
program {
name, "logo_animate_signal";
signal, "mouse,up,1";
source, "logo_anim";
action, SIGNAL_EMIT "do_it" "the_source";
}
}
}
}

View File

@ -1004,12 +1004,18 @@ st_collections_group_programs_program_action(void)
ep->action = parse_enum(0,
"STATE_SET", EDJE_ACTION_TYPE_STATE_SET,
"ACTION_STOP", EDJE_ACTION_TYPE_ACTION_STOP,
"SIGNAL_EMIT", EDJE_ACTION_TYPE_SIGNAL_EMIT,
NULL);
if (ep->action == EDJE_ACTION_TYPE_STATE_SET)
{
ep->state = parse_str(1);
ep->value = parse_float_range(2, 0.0, 1.0);
}
else if (ep->action == EDJE_ACTION_TYPE_SIGNAL_EMIT)
{
ep->state = parse_str(1);
ep->state2 = parse_str(2);
}
}
static void

View File

@ -1,18 +1,15 @@
#include "Edje.h"
#include "edje_private.h"
/* FIXME: finish ACTION_STOP action */
/* FIXME: add a "SIGNAL_EMIT action to emit fake (or real) signals */
/* FIXME: somehow handle double click? */
/* FIXME: ? somehow handle double click? */
/* FIXME: free stuff - no more leaks */
/* FIXME: new prog starts while current program is running on part, stop old */
/* FIXME: add numeric params to conditiosn for progs (ranges etc.) */
/* FIXME: ? add numeric params to conditions for progs (ranges etc.) */
/* FIXME: dragables havwe to work */
/* FIXME: drag start/top signals etc. */
/* FIXME: app has to be able to have callbacks called on signal emits */
/* FIXME: app has to be able to emit signals */
/* FIXME: named parts need to be able to be "replaceD" with new evas objects */
/* FIXME; need to be able to calculate min & max size of a whole edje */
/* FIXME: named parts need to be able to be "replaced" with new evas objects */
/* FIXME: need to be able to calculate min & max size of a whole edje */
Edje *_edje_fetch(Evas_Object *obj);
Edje *_edje_add(Evas_Object *obj);
@ -74,7 +71,6 @@ static Ecore_Timer *_edje_timer = NULL;
static Evas_List *_edje_animators = NULL;
static Evas_Hash *_edje_file_hash = NULL;
static Evas_Smart *_edje_smart = NULL;
void
@ -688,6 +684,10 @@ _edje_program_run(Edje *ed, Edje_Program *pr)
}
}
}
else if (pr->action == EDJE_ACTION_TYPE_SIGNAL_EMIT)
{
_edje_emit(ed, pr->state, pr->state2);
}
}
static void
@ -1424,6 +1424,7 @@ _edje_edd_setup(void)
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "source", source, EET_T_STRING);
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "action", action, EET_T_INT);
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "state", state, EET_T_STRING);
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "state2", state2, EET_T_STRING);
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "value", value, EET_T_DOUBLE);
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "tween.mode", tween.mode, EET_T_INT);
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "tween.time", tween.time, EET_T_DOUBLE);

View File

@ -35,15 +35,14 @@
* tween to the new state.
*
* the signals that can be emitted are:
* "mouse.down"
* "mouse.up"
* "mouse.in"
* "mouse.out"
* "mouse.move"
* "clicked"
* "drag.start"
* "mouse,down"
* "mouse,up"
* "mouse,in"
* "mouse,out"
* "mouse,move"
* "drag,start"
* "drag"
* "drag.stop"
* "drag,stop"
*/
typedef struct _Edje_File Edje_File;
@ -82,6 +81,7 @@ typedef struct _Edje_Part_Description Edje_Part_Description;
#define EDJE_ACTION_TYPE_NONE 0
#define EDJE_ACTION_TYPE_STATE_SET 1
#define EDJE_ACTION_TYPE_ACTION_STOP 2
#define EDJE_ACTION_TYPE_SIGNAL_EMIT 3
#define EDJE_ACTION_TYPE_LAST 4
#define EDJE_TWEEN_MODE_NONE 0
@ -131,6 +131,7 @@ struct _Edje_Program /* a conditional program to be run */
int action; /* type - set state, stop action, set drag pos etc. */
char *state; /* what state of alternates to apply, NULL = default */
char *state2; /* what other state to use - for signal emit action */
double value; /* value of state to apply (if multiple names match) */
struct {