diff --git a/legacy/edje/src/bin/edje_player.c b/legacy/edje/src/bin/edje_player.c index e0e5cc82f2..bc65d7ff90 100644 --- a/legacy/edje/src/bin/edje_player.c +++ b/legacy/edje/src/bin/edje_player.c @@ -608,6 +608,7 @@ int main(int argc, char **argv) return EXIT_FAILURE; if (!edje_init()) goto shutdown_ecore_evas; + edje_frametime_set(1.0/60.0); args = ecore_getopt_parse(&optdesc, values, argc, argv); if (args < 0) diff --git a/legacy/edje/src/lib/edje_lua.c b/legacy/edje/src/lib/edje_lua.c index e4df121357..61052ed532 100644 --- a/legacy/edje/src/lib/edje_lua.c +++ b/legacy/edje/src/lib/edje_lua.c @@ -2,98 +2,6 @@ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 */ -/** -@page luaref Edje LUA scripting - - -@section intro Introduction - -Lua scripts are declared in edc files with the @a lua_script keyword. Like this: -@code -group { - name: "mygroup"; - lua_script { - print("LUA: on-load script"); - } - parts { - ... - } - programs { - program { - signal: "a_signal"; - source: "a_part"; - lua_script { - print("LUA: 'mouse,down,1' on 'button'"); - } - } - } -} -@endcode - -Inside a lua_script code block, there's a reference to your edje @ref Group named -@a ed, which you may use for accessing your parts (e.g. a part named "label" -is accessed through @a ed.label). This is the main object that is used to -access every parts and is also used to create @ref Timer, @ref poller and -@ref animator; to emit signal, send messagges, run/stop programs and more. -Look at the @ref Group class to see all the methods and properties. - -Some object attributes return a table of values, the @ref Object attribute -@a geometry for example return a table of 4 values (x,y,w,h). This tables don't -have named index thus you can access the fields only using: geometry[1] for the -x value. NOTE that you can NOT use gemetry.x or .geometry["x"]. But -you can use the lua unpack function in this way: -@code -x, y, w, h = unpack(ed.part_name.geometry) -print("geometry: ", x, y, w, h) -// the same for state names: -state, val = unpack(ed.part_name.state) -print("state: ", state, val) -// and for setting tables attributes: -custom.color = { 255, 255, 255, 255 } -ed.part_name.state = { 'custom', 0.0 } -@endcode - -Classes hierarchy: -- @ref Timer -- @ref Animator -- @ref Poller -- @ref Object - - @ref Group - - @ref Part - - @ref Image - - @ref Line - - @ref Polygon - - @ref Table - - @ref Description - -References: -@li For general LUA documentations look at the official LUA manual -(http://www.lua.org/manual/5.1/) -@li The lua-users wiki is also full of lua info (http://lua-users.org/wiki/) -@li Examples of edc files that use LUA can be found in the doc/examples folder -in the edje sources. - - -Lua snippets: -@code -// print one or more values in console in a tabbed way or using printf style -print("something to say", val1, val2) -s = string.format("%d %d", 3, 4) -print(s) - -// string concat -print("string1" .. "string2" .. val1) - -// var to string -tostring(var) - -// Print the type of a variable -print(type(var)) - -@endcode - -*/ - #ifdef HAVE_CONFIG_H # include #endif @@ -802,31 +710,6 @@ const luaL_Reg lClass_fn[] = { {NULL, NULL} // sentinel }; -/** -@page luaref -@luaclass{Timer,Timer Class} - -The timer class is a wrapper around ecore_timer. You can create a timer using -the @a timer(secs,callback) method of the @ref Group class. -The callback function will be called every @a secs seconds until it will -return CALLBACK_RENEW. If CALLBACK_CANCEL is returned the timer will stop. - -Example: -@code -lua_script { - function timer_cb() - print("timer_cb") - return CALLBACK_RENEW - end - - timer = ed:timer(0.5, timer_cb) -} -@endcode - -A more detailed example can be found in doc/examples/lua_timer.edc - -@seealso{Ecore Timer Docs,http://docs.enlightenment.org/auto/ecore/group__Ecore__Timer__Group.html} -*/ const luaL_Reg lTimer_get[]; @@ -924,13 +807,6 @@ _edje_lua_timer_get_interval(lua_State *L) return 1; } -/** -@page luaref -@attributes -@li Timer.pending -@li Timer.precision -@li Timer.interval -*/ const luaL_Reg lTimer_get[] = { {"pending", _edje_lua_timer_get_pending}, {"precision", _edje_lua_timer_get_precision}, @@ -947,12 +823,6 @@ _edje_lua_timer_set_interval(lua_State *L) return 0; } -/** -@page luaref -@setters -@li Timer.interval -*/ - const luaL_Reg lTimer_set[] = { {"interval", _edje_lua_timer_set_interval}, {NULL, NULL} // sentinel @@ -1003,14 +873,6 @@ _edje_lua_timer_fn_delay(lua_State *L) return 0; } -/** -@page luaref -@methods -@li Timer:del() -@li Timer:freeze() -@li Timer:thaw() -@li Timer:delay(secs) -*/ const luaL_Reg lTimer_fn[] = { {"del", _edje_lua_timer_fn_del}, {"freeze", _edje_lua_timer_fn_freeze}, @@ -1019,13 +881,6 @@ const luaL_Reg lTimer_fn[] = { {NULL, NULL} // sentinel }; -/** -@page luaref -@luaclass{Animator,Animator Class} - -The animator class is a wrapper around ecore_animator. Animator are used the -same way as @ref Timer. -*/ const luaL_Reg lAnimator_get[]; const luaL_Reg lAnimator_fn[]; @@ -1090,11 +945,6 @@ _edje_lua_animator_get_frametime(lua_State *L) return 1; } -/** -@page luaref -@attributes -@li Animator.frametime -*/ const luaL_Reg lAnimator_get[] = { {"frametime", _edje_lua_animator_get_frametime}, {NULL, NULL} @@ -1118,23 +968,11 @@ _edje_lua_animator_fn_del(lua_State *L) return 0; } -/** -@page luaref -@methods -@li Animator:del() -*/ const luaL_Reg lAnimator_fn[] = { {"del", _edje_lua_animator_fn_del}, {NULL, NULL} // sentinel }; -/** -@page luaref -@luaclass{Poller,Poller Class} - -The poller class is a wrapper around ecore_poller. - -*/ const luaL_Reg lPoller_get[]; const luaL_Reg lPoller_fn[]; @@ -1199,11 +1037,6 @@ _edje_lua_poller_get_interval(lua_State *L) return 1; } -/** -@page luaref -@attributes -@li Poller.interval -*/ const luaL_Reg lPoller_get[] = { {"interval", _edje_lua_poller_get_interval}, {NULL, NULL} @@ -1229,11 +1062,6 @@ _edje_lua_poller_fn_del(lua_State *L) return 0; } -/** -@page luaref -@methods -@li Poller:del() -*/ const luaL_Reg lPoller_fn[] = { {"del", _edje_lua_poller_fn_del}, {NULL, NULL} @@ -1415,36 +1243,6 @@ const luaL_Reg lTransition_fn[] = { {NULL, NULL} // sentinel }; -/** -@page luaref -@luaclass{Object,General Object Class} - -This is the base class, many other classes are children of this. - -You can attach event callbacks to this class using a classic c approach: -@code -function mouse_move_cb(self, ...) - print("mouse_move", ...) -end - -rect = ed:rectangle() -rect.mouse_events = true -rect.mouse_move = mouse_move_cb -@endcode -or you can also do the same in a more lua-fashion style -@code -rect = ed:rectangle { - mouse_events = true, - mouse_move = function (self, ...) - print ('mouse_move', ...) - end -} -@endcode - - -@seealso{Evas Object Docs,http://docs.enlightenment.org/auto/evas/group__Evas__Object__Group.html} -*/ - const luaL_Reg lObject_get[]; const luaL_Reg lObject_set[]; @@ -1565,20 +1363,6 @@ _edje_lua_object_fn_clip_unset(lua_State *L) return 0; } -/** -@page luaref -@methods -@li Object:del() -@li Object:show() -@li Object:hide() -@li Object:move(x, y) -@li Object:resize(w, h) -@li Object:raise() -@li Object:lower() -@li Object:stack_above() -@li Object:stack_below() -@li Object:clip_unset() -*/ const luaL_Reg lObject_fn[] = { {"del", _edje_lua_object_fn_del}, {"show", _edje_lua_object_fn_show}, @@ -1911,39 +1695,6 @@ _edje_lua_object_get_mouse_events(lua_State *L) return 1; } -/** -@page luaref -@attributes -@li Object.name -@li Object.geometry: (x, y, width, height) -@li Object.type: object type (RECT=1, TEXT, IMAGE, SWALLOW, TEXTBLOCK, GRADIENT, GROUP, BOX, TABLE, EXTERNAL) -@li Object.layer -@li Object.above -@li Object.below -@li Object.size_hint_min: (w,h) -@li Object.size_hint_max: (w,h) -@li Object.size_hint_request: (w,h) -@li Object.size_hint_aspect: (aspect, w, h) -@li Object.size_hint_align: (w,h) -@li Object.size_hint_weight: (w,h) -@li Object.size_hint_padding: (l,r,t,b) -@li Object.visible -@li Object.render_op -@li Object.anti_alias -@li Object.scale -@li Object.color: (r, g, b, alpha) -@li Object.color_interpolation -@li Object.clip -@li Object.clipees -@li Object.evas (not implemeted, always return nil) -@li Object.pass_events -@li Object.repeat_events -@li Object.propagate_events -@li Object.focus -@li Object.pointer_mode -@li Object.precise_is_inside -@li Object.mouse_events -*/ const luaL_Reg lObject_get[] = { {"name", _edje_lua_object_get_name}, {"geometry", _edje_lua_object_get_geometry}, @@ -2341,32 +2092,6 @@ _edje_lua_object_set_mouse_events(lua_State *L) return 0; } -/** -@page luaref -@setters -@li Object.name -@li Object.layer -@li Object.size_hint_min: (w,h) -@li Object.size_hint_max: (w,h) -@li Object.size_hint_request: (w,h) -@li Object.size_hint_aspect: (w,h) -@li Object.size_hint_align: (w,h) -@li Object.size_hint_weight: (w,h) -@li Object.size_hint_padding: (l,r,t,b) -@li Object.render_op -@li Object.anti_alias -@li Object.scale -@li Object.color: (r, g, b, alpha) -@li Object.color_interpolation -@li Object.clip -@li Object.pass_events -@li Object.repeat_events -@li Object.propagate_events -@li Object.focus -@li Object.pointer_mode -@li Object.precise_is_inside -@li Object.mouse_events -*/ const luaL_Reg lObject_set[] = { {"name", _edje_lua_object_set_name}, {"layer", _edje_lua_object_set_layer}, @@ -2392,16 +2117,6 @@ const luaL_Reg lObject_set[] = { {"mouse_events", _edje_lua_object_set_mouse_events}, {NULL, NULL} // sentinel }; -/** -@page luaref -@events -@li Object.mouse_in: func(self,output_x,output_y,canvas_x,canvas_y) -@li Object.mouse_out: func(self,output_x,output_y,canvas_x,canvas_y) -@li Object.mouse_down: func(self,button,output_x,output_y,canvas_x,canvas_y) -@li Object.mouse_up: func(self,button,output_x,output_y,canvas_x,canvas_y) -@li Object.mouse_move: func(self,buttons,output_x,output_y,canvas_x,canvas_y) -@li Object.mouse_wheel: func(self,z,output_x,output_y,canvas_x,canvas_y) -*/ const Edje_Lua_Reg *cRectangle[] = { &mClass, @@ -2409,11 +2124,6 @@ const Edje_Lua_Reg *cRectangle[] = { NULL // sentinel }; -/** -@page luaref -@luaclass{Image,Image Class} -@seealso{Evas Object Image Docs,http://docs.enlightenment.org/auto/evas/group__Evas__Object__Image.html} -*/ const luaL_Reg lImage_get[]; const luaL_Reg lImage_set[]; @@ -2446,11 +2156,6 @@ _edje_lua_image_get_size(lua_State *L) return 1; }; -/** -@page luaref -@attributes -@li Image.size: (w,h) -*/ const luaL_Reg lImage_get[] = { {"size", _edje_lua_image_get_size}, {NULL, NULL} // sentinel @@ -2500,14 +2205,6 @@ _edje_lua_image_set_alpha(lua_State *L) return 0; } -/** -@page luaref -@setters -@li Image.file -@li Image.fill: (x,y,w,h) -@li Image.fill_transform -@li Image.alpha -*/ const luaL_Reg lImage_set[] = { {"file", _edje_lua_image_set_file}, {"fill", _edje_lua_image_set_fill}, @@ -2516,11 +2213,6 @@ const luaL_Reg lImage_set[] = { {NULL, NULL} // sentinel }; -/** -@page luaref -@luaclass{Line,Line Class} -@seealso{Evas Object Line Docs,http://docs.enlightenment.org/auto/evas/group__Evas__Line__Group.html} -*/ const luaL_Reg lLine_get[]; const luaL_Reg lLine_set[]; @@ -2552,11 +2244,6 @@ _edje_lua_line_get_xy(lua_State *L) return 1; } -/** -@page luaref -@attributes -@li Line.xy: (x1,y1,x2,y2) -*/ const luaL_Reg lLine_get[] = { {"xy", _edje_lua_line_get_xy}, {NULL, NULL} // sentinel @@ -2579,21 +2266,11 @@ _edje_lua_line_set_xy(lua_State *L) return 0; } -/** -@page luaref -@setters -@li Line.xy: (x1,y1,x2,y2) -*/ const luaL_Reg lLine_set[] = { {"xy", _edje_lua_line_set_xy}, {NULL, NULL} // sentinel }; -/** -@page luaref -@luaclass{Polygon,Polygon Class} -@seealso{Evas Object Polygon Docs,http://docs.enlightenment.org/auto/evas/group__Evas__Object__Polygon.html} -*/ const luaL_Reg lPolygon_fn[]; const Edje_Lua_Reg mPolygon = { @@ -2628,23 +2305,12 @@ _edje_lua_polygon_fn_points_clear(lua_State *L) return 0; } -/** -@page luaref -@methods -@li Polygon:point_add(x,y) -@li Polygon:points_clear() -*/ const luaL_Reg lPolygon_fn[] = { {"point_add", _edje_lua_polygon_fn_point_add}, {"points_clear", _edje_lua_polygon_fn_points_clear}, {NULL, NULL} // sentinel }; -/** -@page luaref -@luaclass{Table,Table Class} -@seealso{Evas Object Table Docs,http://docs.enlightenment.org/auto/evas/group__Evas__Object__Table.html} -*/ const luaL_Reg lTable_get[]; const luaL_Reg lTable_set[]; @@ -2733,15 +2399,6 @@ _edje_lua_table_get_children(lua_State *L) return 1; } -/** -@page luaref -@attributes -@li Table.homogeneous -@li Table.padding: (horiz,vert) -@li Table.align: (horiz,vert) -@li Table.col_row_size: (cols,rows) -@li Table.children -*/ const luaL_Reg lTable_get[] = { {"homogeneous", _edje_lua_table_get_homogeneous}, {"padding", _edje_lua_table_get_padding}, @@ -2786,13 +2443,6 @@ _edje_lua_table_set_align(lua_State *L) return 0; } -/** -@page luaref -@setters -@li Table.homogeneous -@li Table.padding: (horiz,vert) -@li Table.align: (horiz,vert) -*/ const luaL_Reg lTable_set[] = { {"homogeneous", _edje_lua_table_set_homogeneous}, {"padding", _edje_lua_table_set_padding}, @@ -2832,13 +2482,6 @@ _edje_lua_table_fn_clear(lua_State *L) return 0; } -/** -@page luaref -@methods -@li Table.pack(child,col,row,colspan,rowspan) -@li Table.unpack(child) -@li Table.clear(clear) -*/ const luaL_Reg lTable_fn[] = { {"pack", _edje_lua_table_fn_pack}, {"unpack", _edje_lua_table_fn_unpack}, @@ -2846,11 +2489,6 @@ const luaL_Reg lTable_fn[] = { {NULL, NULL} // sentinel }; -/** -@page luaref -@luaclass{Description,Description Class} -*/ - const luaL_Reg lDescription_get[]; const luaL_Reg lDescription_set[]; @@ -3320,41 +2958,6 @@ _edje_lua_description_get_visible(lua_State *L) return 1; } -/** -@page luaref -@attributes -@li Description.alignment: (x,y) -@li Description.min: (w,h) -@li Description.max: (w,h) -@li Description.step: (w,h) -@li Description.aspect: (x,y) -@li Description.aspect_pref -@li Description.color: (r,g,b,a) -@li Description.color2: (r,g,b,a) -@li Description.color3: (r,g,b,a) -@li Description.color_class -@li Description.rel1: (x,y) -@li Description.rel1_to: (to_x,to_y) -@li Description.rel1_offset: (x,y) -@li Description.rel2: (x,y) -@li Description.rel2_to: (to_x,to_y) -@li Description.rel2_offset: (x,y) -@li Description.image (not yet implemented) -@li Description.border: (l,r,t,b) -@li Description.fill_smooth -@li Description.fill_pos: (rel_x,rel_y,offset_x,offset_y) -@li Description.fill_size: (rel_x,rel_y,offset_x,offset_y) -@li Description.text -@li Description.text_class -@li Description.text_font -@li Description.text_style -@li Description.text_size -@li Description.text_fit: (x,y) -@li Description.text_min: (x,y) -@li Description.text_max: (x,y) -@li Description.text_align: (x,y) -@li Description.visible -*/ const luaL_Reg lDescription_get[] = { {"alignment", _edje_lua_description_get_alignment}, {"min", _edje_lua_description_get_min}, @@ -3846,41 +3449,6 @@ _edje_lua_description_set_visible(lua_State *L) return 0; } -/** -@page luaref -@setters -@li Description.alignment: (x,y) -@li Description.min: (w,h) -@li Description.max: (w,h) -@li Description.step: (w,h) -@li Description.aspect: (x,y) -@li Description.aspect_pref -@li Description.color: (r,g,b,a) -@li Description.color2: (r,g,b,a) -@li Description.color3: (r,g,b,a) -@li Description.color_class -@li Description.rel1: (x,y) -@li Description.rel1_to: (to_x,to_y) -@li Description.rel1_offset: (x,y) -@li Description.rel2: (x,y) -@li Description.rel2_to: (to_x,to_y) -@li Description.rel2_offset: (x,y) -@li Description.image -@li Description.border: (l,r,t,b) -@li Description.fill_smooth -@li Description.fill_pos: (rel_x,rel_y,offset_x,offset_y) -@li Description.fill_size: (rel_x,rel_y,offset_x,offset_y) -@li Description.text -@li Description.text_class -@li Description.text_font -@li Description.text_style -@li Description.text_size -@li Description.text_fit: (x,y) -@li Description.text_min: (x,y) -@li Description.text_max: (x,y) -@li Description.text_align: (x,y) -@li Description.visible -*/ const luaL_Reg lDescription_set[] = { {"alignment", _edje_lua_description_set_alignment}, {"min", _edje_lua_description_set_min}, @@ -3916,14 +3484,6 @@ const luaL_Reg lDescription_set[] = { {NULL, NULL} // sentinel }; -/** -@page luaref -@luaclass{Part,Part Class} - -Parts are objects, that is, they inherit the methods from the @ref Object class. -They also contain the following methods and attributes: - -*/ const luaL_Reg lPart_get[]; const luaL_Reg lPart_set[]; @@ -4163,26 +3723,6 @@ _edje_lua_part_get_table_col_row_size(lua_State *L) static int _edje_lua_part_fn_custom_state(lua_State *L); -/** -@page luaref -@attributes -@li @ref Object Part.swallow -@li Part.drag_dir -@li Part.drag_value: (dx,dy) -@li Part.drag_size: (dx,dy) -@li Part.drag_step: (dx,dy) -@li Part.drag_page: (dx,dy) -@li Part.type -@li Part.effect -@li Part.mouse_events -@li Part.states_list -@li Part.state: (state,value) -@li Part.text -@li Part.text_selection -@li Part.text_cursor_geometry: (x,y,w,h) -@li Part.geometry: (x,y,w,h) -@li Part.part_col_row_size: (cols,rows) -*/ const luaL_Reg lPart_get[] = { {"custom_state", _edje_lua_part_fn_custom_state}, {"Swallow", _edje_lua_part_get_swallow}, //TODO it the capital S correct? @@ -4324,20 +3864,6 @@ _edje_lua_part_set_drag_page(lua_State *L) return 0; } -/** -@page luaref -@setters -@li Part.drag_value: (dx,dy) -@li Part.drag_size: (dx,dy) -@li Part.drag_step: (dx,dy) -@li Part.drag_page: (dx,dy) -@li Part.effect -@li Part.mouse_events -@li Part.repeat_events -@li Part.state: (state,value) -@li Part.tween_state -@li Part.text -*/ const luaL_Reg lPart_set[] = { {"drag_value", _edje_lua_part_set_drag_value}, {"drag_size", _edje_lua_part_set_drag_size}, @@ -4568,26 +4094,6 @@ _edje_lua_part_fn_box_remove_all(lua_State *L) return 1; } -/** -@page luaref -@methods -@li Part:swallow(obj) -@li Part:unswallow() -@li @ref PartDescription Part:custom_state(state_name, state_val) -@li Part:text_select_none -@li Part:text_select_all -@li Part:text_insert(text) -@li Part:table_pack(child, row, colspan, rowspan) -@li Part:table_unpack(child) -@li Part:table_clear(clear) -@li Part:box_append(item) -@li Part:box_prepend(item) -@li Part:box_insert_before(item, before) -@li Part:box_insert_at(item, index) -@li Part:box_remove(item) -@li Part:box_remove_at(item, index) -@li Part:box_remove_all(clear) -*/ const luaL_Reg lPart_fn[] = { {"swallow", _edje_lua_part_fn_swallow}, {"unswallow", _edje_lua_part_fn_unswallow}, @@ -4612,14 +4118,6 @@ const luaL_Reg lPart_fn[] = { {NULL, NULL} // sentinel }; -/** -@page luaref -@luaclass{Group,Group Class} - -Groups are objects, that is, they inherit the methods from the general -@ref Object Class. -They also contain the following methods and attributes: -*/ const luaL_Reg lGroup_mt[]; const luaL_Reg lGroup_get[]; @@ -4807,21 +4305,6 @@ _edje_lua_group_get_frametime(lua_State *L) return 1; } -/** -@page luaref -@attributes -@li Group.group -@li Group.mouse: (x,y) -@li Group.mouse_buttons -@li Group.size_min: (w,h) -@li Group.size_max: (w,h) -@li Group.scale -@li Group.load_error -@li Group.load_error_str -@li Group.play -@li Group.animation -@li Group.frametime -*/ const luaL_Reg lGroup_get[] = { {"group", _edje_lua_group_get_group}, {"mouse", _edje_lua_group_get_mouse}, @@ -4927,18 +4410,6 @@ _edje_lua_group_set_frametime(lua_State *L) edje_frametime_set(luaL_checknumber(L, 2)); return 0; } -/** -@page luaref -@setters -@li Group.group -@li Group.size_min: (w,h) -@li Group.size_max: (w,h) -@li Group.scale -@li Group.play -@li Group.animation -@li Group.text_change_cb -@li Group.frametime -*/ const luaL_Reg lGroup_set[] = { {"group", _edje_lua_group_set_group}, {"size_min", _edje_lua_group_set_size_min}, @@ -5322,22 +4793,6 @@ _edje_lua_group_fn_thaw(lua_State *L) return 0; } -/** -@page luaref -@methods -@li @ref Timer Group:timer(secs, callback) -@li @ref Animator Group:animator(func) -@li @ref Poller Group:poller(interval, callback) -@li @ref Transform Group:transform() -@li Group:signal_emit(emission, source) -@li Group:message_send(message_type, id, msg) -@li Group:program_run(name) -@li Group:program_stop(name) -@li Group:signal_callback_add(emission, source, callback) -@li Group:signal_callback_del(emission, source) -@li Group:freeze() -@li Group:thaw() -*/ const luaL_Reg lGroup_fn[] = { {"timer", _edje_lua_group_fn_timer}, {"animator", _edje_lua_group_fn_animator}, diff --git a/legacy/edje/src/lib/edje_lua2.c b/legacy/edje/src/lib/edje_lua2.c index e3e8f32044..3c5bcdaf42 100644 --- a/legacy/edje/src/lib/edje_lua2.c +++ b/legacy/edje/src/lib/edje_lua2.c @@ -1,3 +1,167 @@ +/* + * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2 + */ + +/** + * @page luaref Edje LUA scripting + * + * @section intro Introduction + * + * LUA is intended for script-only objects at this point (with embryo left + * for augmenting standard programs). Since script-only objects effectively + * define objects entirely via LUA script (resize handling, event handling + * etc. etc.) this places many more demands on them, and thus a more powerful + * language is in order. LUA is that language. + * + * To get you started, here's an example: + * @code + * collections { + * group { name: "example"; + * lua_script_only: 1; + * lua_script { + * --// stick object private/local vars here + * local D; + * local count = 0; + * local fndata = 99; + * + * local function mycb3 (v) + * print("lua::callback transition " .. D.val .. " v: " .. v); + * d = {}; + * edje.size(d); + * print("lua::objsize= " .. d.w .. " , " .. d.h); + * sz = {w=v * 80, h=v * 40}; + * D.rect:geom(((d.w / 2) * math.sin(v * 2 * math.pi)) + ((d.w - sz.w) / 2), + * ((d.h / 2) * math.cos(v * 2 * math.pi)) + ((d.h - sz.h) / 2), + * sz.w, sz.h); + * D.rect:color(255, 128, v * 255, 255); + * D.rect:move(d); + * print("lua::pos= " .. d.x .. " , " .. d.y); + * + * r = D.rect:above(); + * if (r ~= nil) then + * print("lua::rcol"); + * r:color(20, v * 255, 60, 255); + * else + * print("lua::r none!!!!!!!!!!!!!!1"); + * end + * d = edje.size(); + * D.clip:geom(10, 10, d.w - 20, d.h - 20); + * c = D.clip:clipees(); + * for i=1,table.getn(c),1 do + * d = c[i]:geom(); + * print("lua::" .. i .. " geom = " .. d.x .. "," .. d.y .. " " .. d.w .. "x" .. d.h); + * end + * return true; + * end + * + * local function mycb2 () + * print("lua::callback animator " .. count); + * print("lua:: seconds: " .. edje.seconds()); + * print("lua:: looptime: " .. edje.looptime()); + * local date = edje.date(); + * print("lua:: date: " .. + * date.year .. "|" .. + * date.month .. "|" .. + * date.day .. "|" .. + * date.yearday .. "|" .. + * date.weekday .. "|" .. + * date.hour .. "|" .. + * date.min .. "|" .. + * date.sec + * ); + * return true; + * end + * + * local function mycb () + * print("lua::callback " .. count .. " fndata = " .. fndata); + * count = count + 1; --// keep count of calls - object data + * fndata = fndata + 3; --// play with object vars to see if they persist + * D.tim = edje.timer(0.25, mycb); --// inside cb add new timer + * D.ani = edje.animator(mycb2); + * return false; --// cease repeating the timer + * end + * + * --// init object here + * D = {}; --// data is empty table to start + * D.val = math.random(); --// start with soem random value so + * fndata = fndata + D.val; --// func data start point + * print("lua::init ... " .. D.val); + * edje.echo("lua::echo('hello world')"); + * --// actually add the timer to call mycb in 1.23 sec + * D.tim = edje.timer(1.23, mycb); + * D.tra = edje.transition(5.0, mycb3); + * + * if (edje.spanky) then edje.spanky(); end + * + * edje.messagesend(7, "none" ); + * edje.messagesend(7, "sig", "signal", "source"); + * edje.messagesend(7, "str", "hello world"); + * edje.messagesend(7, "int", 987); + * edje.messagesend(7, "float", 987.321); + * edje.messagesend(7, "strset", {"hello", "there", "world"}); + * edje.messagesend(7, "intset", {1, 2, 3}); + * edje.messagesend(7, "floatset", {1.1, 2.2, 3.3}); + * edje.messagesend(7, "strint", "hello world", 7); + * edje.messagesend(7, "strfloat", "hello world", 7.654); + * edje.messagesend(7, "strintset","hello world", {1, 2, 3}); + * + * D.rect = edje.rect(); + * D.rect:geom (5, 10, 50, 30); + * D.rect:color (255, 128, 60, 255); + * D.rect:show (); + * + * D.rect2 = edje.rect(); + * D.rect2:geom (50, 50, 50, 50); + * D.rect2:color (20, 30, 60, 120); + * D.rect2:show (); + * + * D.clip = edje.rect(); + * D.clip:geom (10, 10, 150, 150); + * D.clip:color (200, 200, 50, 200); + * D.clip:show (); + * + * D.rect2:clip(D.clip); + * D.rect:clip(D.clip); + * + * --// example of deleting something + * --// D.tim:del(); + * + * --// shutdown func - generally empty or not there. everything gcd for you + * function shutdown () + * print("lua::shutdown ... " .. D.val); + * end + * function show () + * print("lua::show ... " .. D.val); + * end + * function hide () + * print("lua::hide ... " .. D.val); + * end + * function move (x, y) + * print("lua::move ... " .. D.val); + * print(" x=" .. x .. " x=" .. y); + * end + * function resize (w, h) + * print("lua::resize ... " .. D.val); + * print(" w=" .. w .. " h=" .. h); + * end + * function message (id, type, v1, v2) + * print("lua::message ... " .. D.val); + * print(" id=" .. id .. " type=" .. type); + * --// handle youre message type here. chekc id + type then use v1 + * --// and/or v2 (or neither) appropriately. they are the same as + * --// the 2nd and 3rd param passed to edje.messagesend() (if any + * --// are passed at all) + * end + * function signal (sig, src) + * print("lua::signal ... " .. D.val); + * print(" sig=" .. sig .. " src=" .. src); + * end + * } + * } + * } + * @endcode + * + */ #ifdef HAVE_CONFIG_H # include #endif @@ -123,6 +287,7 @@ static int _elua_clipees(lua_State *L); static int _elua_type(lua_State *L); static int _elua_pass(lua_State *L); static int _elua_repeat(lua_State *L); +static int _elua_precise(lua_State *L); static int _elua_rect(lua_State *L); @@ -138,12 +303,31 @@ static jmp_buf panic_jmp; // // key up // // get dragable pos // // set dragable pos +// // set drag size, step, page +// // get drag size, step, page +// // dragable step +// // dragable page // // get part text // // set part text // // get swallow part // // set swallow part +// // unswallow part // // textclass change // // colorclass change +// // min size get <- ?? maybe set fn +// // max size get <- ?? maybe set fn +// // min size caclc (min/max restriction) +// // preload +// // preload cancel +// // play set +// // animation set +// // parts extends calc +// // part object get +// // part geometry get +// +// // LATER: all the entry calls +// // LATER: box and table calls +// // LATER: perspective stuff change // static const struct luaL_reg _elua_edje_api [] = { @@ -154,6 +338,7 @@ static const struct luaL_reg _elua_edje_api [] = {"timer", _elua_timer}, // add timer {"animator", _elua_animator}, // add animator {"transition", _elua_transition}, // add transition + // FIXME: need poller // system information (time, date blah blah) {"seconds", _elua_seconds}, // get seconds @@ -206,10 +391,14 @@ static const struct luaL_reg _elua_edje_evas_obj [] = {"type", _elua_type}, // get object type {"pass", _elua_pass}, // set pass events, get pass events {"repeat", _elua_repeat}, // set repeat events, get repeat events + {"precise", _elua_precise}, // set precise inside flag, get precise + // FIXME: set callbacks (mouse down, up, blah blah blah) + // // FIXME: set scale (explicit value) // FIXME: need to set auto-scale (same as scale: 1) - // FIXME: set precise inside - // FIXME: set callbacks (mouse down, up, blah blah blah) + + // FIXME: later - set render op, anti-alias, pointer mode (autograb, nograb) + // FIXME: later - // FIXME: map api here @@ -511,8 +700,10 @@ _edje_lua2_script_func_hide(Edje *ed) void _edje_lua2_script_func_move(Edje *ed) { + Eina_List *l; int err; - + + // FIXME: move all objects created by script lua_getglobal(ed->L, "move"); if (!lua_isnil(ed->L, -1)) { @@ -1694,6 +1885,23 @@ _elua_repeat(lua_State *L) return 1; } +static int +_elua_precise(lua_State *L) +{ + Edje_Lua_Obj *obj = (Edje_Lua_Obj *)lua_touserdata(L, 1); + Edje_Lua_Evas_Object *elo = (Edje_Lua_Evas_Object *)obj; + int n; + if (!obj) return 0; + if (!obj->is_evas_obj) return 0; + n = lua_gettop(L); + if (n == 2) + { + evas_object_precise_is_inside_set(elo->evas_obj, lua_toboolean(L, 2)); + } + lua_pushboolean(L, evas_object_precise_is_inside_get(elo->evas_obj)); + return 1; +} + //------------- static void _elua_evas_obj_free(void *obj)