color_classes { color_class { name: "test_colour"; color: 255 255 255 255; } } //fonts { // font: "Vera.ttf" "default"; //} images { image: "bubble.png" COMP; image: "test.png" COMP; } collections { group { name: "main"; lua_script_only: 1; lua_script { --// stick object private/local vars here local D; local text_geom; --// init object here D = {}; --// data is empty table to start --// send some random edje message 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.edje = edje.edje(); D.edje:file("plain/edje/group"); D.edje:show(); D.text = edje.text(); D.text:geom (50, 5, 150, 50); D.text:color (255, 0, 0, 255); D.text:font("Sans:style=Bold", 32); D.text:text("Lua rocks!"); text_geom = D.text:geom(); --// print(D.text:text()); D.text:show(); --// shutdown func - generally empty or not there. everything garbage collected for you function shutdown () --// print("lua::shutdown"); end function show () --// print("lua::show"); end function hide () --// print("lua::hide"); end function move (x, y) --// print("lua::move x=" .. x .. " x=" .. y); D.edje:move(0, 0); end function resize (w, h) --// print("lua::resize w=" .. w .. " h=" .. h); D.text:move((w - text_geom.w) / 2, (h - text_geom.h) / 8); D.edje:resize(w, h); end function message (id, type, ...) print("lua::message id=" .. id .. " type=" .. type); --// handle your message type here. check id + type then use the --// vararg appropriately. they are the same as the params passed --// to edje:messagesend() (if any are passed at all). Any array --// arguments are passed as a single table. if ("none" == type) then print("lua::message no args"); elseif ("strset" == type) then strs = ... ; print_table_start(strs, "", "lua::message strings"); elseif ("intset" == type) then ints = ... ; print_table_start(ints, "", "lua::message ints"); elseif ("floatset" == type) then floats = ... ; print_table_start(floats, "", "lua::message floats"); elseif ("strintset" == type) then str, ints = ... ; print("lua::message " .. str); print_table_start(ints, "", "lua::message ints"); elseif ("strfloatset" == type) then str, floats = ... ; print("lua::message " .. str); print_table_start(floats, "", "lua::message floats"); else print("lua::message " .. ... ); end end function signal (sig, src) print("lua::signal sig= " .. sig .. " src= " .. src); end } } // The group name NEEDS a / in it, // or the part below that tries to swallow it won't work. // Leaving just the lua part visible. group { name: "bubbles/lua"; lua_script_only: 1; lua_script { local bubbles = { }; local bubbleCols = 8; local bubbleRows = 6; for i = 1, bubbleRows do row = { }; for j = 1, bubbleCols do image = edje.image(); image:image("bubble.png"); image:show(); table.insert(row, image); end table.insert(bubbles, row); end function resize (w, h) for i = 1, bubbleRows do for j = 1, bubbleCols do w1 = w / bubbleCols; h1 = h / bubbleRows; bubbles[i][j]:geom((j - 1) * w1, (i - 1) * h1, w1, h1); if ((1 == i) or (1 == j) or (bubbleRows == i) or (bubbleCols == j)) then bubbles[i][j]:color(0, 255, 0, 200); else bubbles[i][j]:color(math.random(200) + 55, 0, math.random(255) + 55, 200); end end end end } } group { name: "plain/edje/group"; parts { part { name: "background"; type: RECT; mouse_events: 0; description { state: "default" 0.0; color: 0 0 0 255; } } // A lua group embedded in an edje group. part { name: "bubbles_lua"; type: GROUP; source: "bubbles/lua"; mouse_events: 0; description { state: "default" 0.0; } } part { name: "background_image"; type: IMAGE; mouse_events: 0; description { state: "default" 0.0; aspect_preference: HORIZONTAL; color_class: "test_colour"; image { normal: "test.png"; } } } part { name: "some_text"; type: TEXT; mouse_events: 0; description { state: "default" 0; text { text: "This is test text."; text_class: "test_text_class"; } } } } } }