Enlightenment CVS committal
Author : raster
Project : e17
Module : libs/edje
Dir : e17/libs/edje/src/lib
Modified Files:
Edje_Edit.h edje_callbacks.c edje_embryo.c edje_private.h
edje_program.c
Log Message:
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
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/Edje_Edit.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- Edje_Edit.h 26 Mar 2004 09:10:05 -0000 1.4
+++ Edje_Edit.h 28 Mar 2004 05:26:17 -0000 1.5
@@ -113,7 +113,8 @@
#define EDJE_ACTION_TYPE_DRAG_VAL_SET 4
#define EDJE_ACTION_TYPE_DRAG_VAL_STEP 5
#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_LINEAR 1
@@ -597,7 +598,7 @@
int _edje_program_run_iterate(Edje_Running_Program *runp, double tim);
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_text_init(void);
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_callbacks.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -3 -r1.13 -r1.14
--- edje_callbacks.c 16 Mar 2004 08:38:51 -0000 1.13
+++ edje_callbacks.c 28 Mar 2004 05:26:17 -0000 1.14
@@ -307,7 +307,7 @@
pp = data;
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);
return 0;
}
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_embryo.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -3 -r1.1 -r1.2
--- edje_embryo.c 26 Mar 2004 09:10:05 -0000 1.1
+++ edje_embryo.c 28 Mar 2004 05:26:17 -0000 1.2
@@ -93,3 +93,23 @@
if (embryo_program_recursion_get(ed->collection->script) > 0) return;
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");
+ }
+}
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_private.h,v
retrieving revision 1.60
retrieving revision 1.61
diff -u -3 -r1.60 -r1.61
--- edje_private.h 26 Mar 2004 09:10:05 -0000 1.60
+++ edje_private.h 28 Mar 2004 05:26:17 -0000 1.61
@@ -59,5 +59,6 @@
void _edje_embryo_script_init (Edje *ed);
void _edje_embryo_script_shutdown (Edje *ed);
void _edje_embryo_script_reset (Edje *ed);
+void _edje_embryo_test_run (Edje *ed, char *fname, char *sig, char *src);
#endif
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_program.c,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -3 -r1.30 -r1.31
--- edje_program.c 26 Mar 2004 09:10:05 -0000 1.30
+++ edje_program.c 28 Mar 2004 05:26:17 -0000 1.31
@@ -276,7 +276,7 @@
if (pa->id >= 0)
{
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 (!ed->walking_actions) free(runp);
@@ -345,7 +345,7 @@
}
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;
/* limit self-feeding loops in programs to 64 levels */
@@ -461,7 +461,7 @@
if (pa->id >= 0)
{
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;
}
}
@@ -597,6 +597,17 @@
_edje_emit(ed, "program,stop", pr->name);
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)
/* hmm this fucks somethgin up. must look into it later */
/* && (pr->tween.time > 0.0) && (!ed->no_anim))) */
@@ -610,7 +621,7 @@
if (pa->id >= 0)
{
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;
}
}
@@ -734,7 +745,7 @@
Edje_Program *pr;
pr = l->data;
- _edje_program_run(ed, pr, 0);
+ _edje_program_run(ed, pr, 0, sig, src);
if (_edje_block_break(ed))
{
if (tmps) free(tmps);
@@ -767,7 +778,7 @@
#ifdef EDJE_PROGRAM_CACHE
matched++;
#endif
- _edje_program_run(ed, pr, 0);
+ _edje_program_run(ed, pr, 0, ee->signal, ee->source);
if (_edje_block_break(ed))
{
#ifdef EDJE_PROGRAM_CACHE
-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs