example of message handler in test.edc... a start.

SVN revision: 10657
This commit is contained in:
Carsten Haitzler 2004-07-01 06:38:36 +00:00
parent 41b8b1cf4d
commit 4c90cb8d2a
4 changed files with 65 additions and 15 deletions

View File

@ -82,4 +82,17 @@ native stop_programs_on (part_id);
native set_min_size (part_id, Float:w, Float:h);
native set_max_size (part_id, Float:w, Float:h);
enum Msg_Type
{
MSG_NONE = 0,
MSG_STRING = 2,
MSG_INT = 3,
MSG_FLOAT = 4,
MSG_STRING_SET = 5,
MSG_INT_SET = 6,
MSG_FLOAT_SET = 7,
MSG_STRING_INT = 8,
MSG_INT_FLOAT = 9,
MSG_STRING_INT_SET = 10,
MSG_INT_FLOAT_SET = 11
};

View File

@ -56,6 +56,40 @@ collections
emit("SMELLY", "Fish");
}
}
tst()
{
return 0;
}
// a special function for handling app messages - put it here if you want to
// handle messages from apps
public message(Msg_Type:type, id, ...)
{
if (type == MSG_NONE)
{
}
else if (type == MSG_STRING)
{
new str[100];
for (new j = 0; j < (sizeof(str) - 1); j++)
{
str[j] = getarg(2, j);
if (str[j] == 0) break;
}
}
else if (type == MSG_INT_SET)
{
for (new i = 2; i < numargs(); i++)
{
new val;
val = getarg(i);
if (val > 9999) break;
}
}
}
}
parts
{
@ -225,7 +259,7 @@ collections
// for this group or functions exported
script
{
var i = 5;
new i = 5;
while (i > 0)
{

View File

@ -13,23 +13,23 @@ typedef enum _Edje_Queue
typedef enum _Edje_Message_Type
{
EDJE_MESSAGE_NONE,
EDJE_MESSAGE_NONE = 0,
EDJE_MESSAGE_SIGNAL,
EDJE_MESSAGE_SIGNAL = 1,
EDJE_MESSAGE_STRING,
EDJE_MESSAGE_INT,
EDJE_MESSAGE_FLOAT,
EDJE_MESSAGE_STRING = 2,
EDJE_MESSAGE_INT = 3,
EDJE_MESSAGE_FLOAT = 4,
EDJE_MESSAGE_STRING_SET,
EDJE_MESSAGE_INT_SET,
EDJE_MESSAGE_FLOAT_SET,
EDJE_MESSAGE_STRING_SET = 5,
EDJE_MESSAGE_INT_SET = 6,
EDJE_MESSAGE_FLOAT_SET = 7,
EDJE_MESSAGE_STRING_INT,
EDJE_MESSAGE_STRING_FLOAT,
EDJE_MESSAGE_STRING_INT = 8,
EDJE_MESSAGE_STRING_FLOAT = 9,
EDJE_MESSAGE_STRING_INT_SET,
EDJE_MESSAGE_STRING_FLOAT_SET
EDJE_MESSAGE_STRING_INT_SET = 10,
EDJE_MESSAGE_STRING_FLOAT_SET = 11
} Edje_Message_Type;
#define EDJE_DRAG_DIR_NONE 0

View File

@ -255,13 +255,16 @@ _edje_message_process(Edje_Message *em)
Embryo_Function fn;
_edje_embryo_script_reset(em->edje);
fn = embryo_program_function_find(em->edje->collection->script, "_msg");
fn = embryo_program_function_find(em->edje->collection->script, "message");
if (fn != EMBRYO_FUNCTION_NONE)
{
void *pdata;
Embryo_Cell cell;
// embryo_parameter_string_push(em->edje->collection->script, sig);
/* first param is the message type - always */
cell = em->type;
embryo_parameter_cell_push(em->edje->collection->script, cell);
/* first param is the integer of the event id - always there */
cell = em->id;
embryo_parameter_cell_push(em->edje->collection->script, cell);