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; action, ACTION_STOP;
target, "logo_animate"; 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, ep->action = parse_enum(0,
"STATE_SET", EDJE_ACTION_TYPE_STATE_SET, "STATE_SET", EDJE_ACTION_TYPE_STATE_SET,
"ACTION_STOP", EDJE_ACTION_TYPE_ACTION_STOP, "ACTION_STOP", EDJE_ACTION_TYPE_ACTION_STOP,
"SIGNAL_EMIT", EDJE_ACTION_TYPE_SIGNAL_EMIT,
NULL); NULL);
if (ep->action == EDJE_ACTION_TYPE_STATE_SET) if (ep->action == EDJE_ACTION_TYPE_STATE_SET)
{ {
ep->state = parse_str(1); ep->state = parse_str(1);
ep->value = parse_float_range(2, 0.0, 1.0); 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 static void

View File

@ -1,18 +1,15 @@
#include "Edje.h" #include "Edje.h"
#include "edje_private.h" #include "edje_private.h"
/* FIXME: finish ACTION_STOP action */ /* FIXME: ? somehow handle double click? */
/* FIXME: add a "SIGNAL_EMIT action to emit fake (or real) signals */
/* FIXME: somehow handle double click? */
/* FIXME: free stuff - no more leaks */ /* FIXME: free stuff - no more leaks */
/* FIXME: new prog starts while current program is running on part, stop old */ /* FIXME: ? add numeric params to conditions for progs (ranges etc.) */
/* FIXME: add numeric params to conditiosn for progs (ranges etc.) */
/* FIXME: dragables havwe to work */ /* FIXME: dragables havwe to work */
/* FIXME: drag start/top signals etc. */ /* 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 have callbacks called on signal emits */
/* FIXME: app has to be able to emit signals */ /* FIXME: app has to be able to emit signals */
/* FIXME: named parts need to be able to be "replaceD" with new evas objects */ /* 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: need to be able to calculate min & max size of a whole edje */
Edje *_edje_fetch(Evas_Object *obj); Edje *_edje_fetch(Evas_Object *obj);
Edje *_edje_add(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_List *_edje_animators = NULL;
static Evas_Hash *_edje_file_hash = NULL; static Evas_Hash *_edje_file_hash = NULL;
static Evas_Smart *_edje_smart = NULL; static Evas_Smart *_edje_smart = NULL;
void 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 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, "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, "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, "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, "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.mode", tween.mode, EET_T_INT);
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_program, Edje_Program, "tween.time", tween.time, EET_T_DOUBLE); 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. * tween to the new state.
* *
* the signals that can be emitted are: * the signals that can be emitted are:
* "mouse.down" * "mouse,down"
* "mouse.up" * "mouse,up"
* "mouse.in" * "mouse,in"
* "mouse.out" * "mouse,out"
* "mouse.move" * "mouse,move"
* "clicked" * "drag,start"
* "drag.start"
* "drag" * "drag"
* "drag.stop" * "drag,stop"
*/ */
typedef struct _Edje_File Edje_File; 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_NONE 0
#define EDJE_ACTION_TYPE_STATE_SET 1 #define EDJE_ACTION_TYPE_STATE_SET 1
#define EDJE_ACTION_TYPE_ACTION_STOP 2 #define EDJE_ACTION_TYPE_ACTION_STOP 2
#define EDJE_ACTION_TYPE_SIGNAL_EMIT 3
#define EDJE_ACTION_TYPE_LAST 4 #define EDJE_ACTION_TYPE_LAST 4
#define EDJE_TWEEN_MODE_NONE 0 #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. */ int action; /* type - set state, stop action, set drag pos etc. */
char *state; /* what state of alternates to apply, NULL = default */ 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) */ double value; /* value of state to apply (if multiple names match) */
struct { struct {