forked from enlightenment/efl
parent
854ccebd14
commit
0cdb510001
|
@ -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)
|
||||
|
|
|
@ -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 <config.h>
|
||||
#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},
|
||||
|
|
|
@ -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 <config.h>
|
||||
#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)
|
||||
|
|
Loading…
Reference in New Issue