On Thu, Dec 18, 2008 at 7:20 AM, Cedric BAIL <cedric.b...@free.fr> wrote:
> On Thu, Dec 18, 2008 at 3:43 AM, Enlightenment SVN
> <no-re...@enlightenment.org> wrote:
>> Log:
>> And finally, edje table goes in
>> Author: sachiel
>> Date: 2008-12-17 18:43:20 -0800 (Wed, 17 Dec 2008)
>> New Revision: 38204
>
> I perhaps missed it, but could you post an example on how to use this ?
>
Sorry, committed late last night and forgot about it.
This is simple and boring, I'll try to come up with something
more interesting and showing a bit more during the day.
> --
> Cedric BAIL
>
> ------------------------------------------------------------------------------
> SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas, Nevada.
> The future of the web can't happen without you. Join us at MIX09 to help
> pave the way to the Next Web now. Learn more and register at
> http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/
> _______________________________________________
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>
#include <Ecore.h>
#include <Evas.h>
#include <Ecore_Evas.h>
#include <Edje.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
struct test_data {
Ecore_Evas *ee;
Evas *evas;
Evas_Object *bg;
Evas_Object *table;
};
static struct test_data d;
static void
on_keydown(void *data, Evas *evas, Evas_Object *o, void *einfo)
{
struct test_data *test = data;
Evas_Event_Key_Down *ev = einfo;
if (strcmp(ev->keyname, "Escape") == 0)
ecore_main_loop_quit();
if (strcmp(ev->keyname, "1") == 0)
edje_object_signal_emit(test->table, "set,NONE", "*");
if (strcmp(ev->keyname, "2") == 0)
edje_object_signal_emit(test->table, "set,TABLE", "*");
if (strcmp(ev->keyname, "3") == 0)
edje_object_signal_emit(test->table, "set,ITEM", "*");
}
static Evas_Object *
table_new(Evas *evas, const char *name, int x, int y, int w, int h)
{
Evas_Object *o;
o = edje_object_add(evas);
edje_object_file_set(o, "table.edj", "DaTable");
evas_object_move(o, x, y);
evas_object_resize(o, w, h);
evas_object_show(o);
evas_object_name_set(o, name);
return o;
}
static void
on_resize(Ecore_Evas *ee)
{
int w, h;
evas_output_viewport_get(d.evas, NULL, NULL, &w, &h);
evas_object_resize(d.bg, w, h);
evas_object_resize(d.table, w, h);
}
static void
on_destroy(Ecore_Evas *ee)
{
ecore_main_loop_quit();
}
int
main(int argc, char *argv[])
{
Ecore_Evas *ee;
int w, h, i;
Evas_Object *last;
Evas_Object *o;
struct table_elements {
int enabled, col, row, cols, rows;
} table_elements[9] = {
{1, 0, 0, 1, 1}, {1, 1, 0, 2, 1}, {0, 2, 0, 1, 1},
{1, 0, 1, 1, 1}, {0, 1, 1, 1, 1}, {1, 2, 1, 1, 1},
{0, 0, 2, 1, 1}, {1, 1, 2, 1, 1}, {1, 2, 2, 1, 1}
};
evas_init();
ecore_init();
ecore_evas_init();
edje_init();
ee = ecore_evas_new(NULL, 0, 0, 640, 480, NULL);
ecore_evas_show(ee);
d.ee = ee;
d.evas = ecore_evas_get(ee);
ecore_evas_callback_resize_set(ee, on_resize);
ecore_evas_callback_destroy_set(ee, on_destroy);
evas_output_viewport_get(d.evas, NULL, NULL, &w, &h);
d.bg = evas_object_rectangle_add(d.evas);
evas_object_resize(d.bg, w, h);
evas_object_show(d.bg);
evas_object_focus_set(d.bg, 1);
evas_object_event_callback_add(
d.bg, EVAS_CALLBACK_KEY_DOWN, on_keydown, &d);
d.table = table_new(d.evas, "table", 0, 0, w, h);
#if 0
for (i = 0; i < sizeof(table_elements)/sizeof(struct table_elements); i++) {
if (!table_elements[i].enabled) continue;
o = last = evas_object_rectangle_add(d.evas);
evas_object_resize(o, 50, 50);
evas_object_color_set(o, 128*i/100, 128/(i+1), i*i, 128);
evas_object_show(o);
if (!edje_object_part_table_pack(d.table, "Table", o, table_elements[i].col,
table_elements[i].row, table_elements[i].cols,
table_elements[i].rows))
return 1;
evas_object_size_hint_min_set(o, 50-i*3, 50+i*3);
}
#endif
/* o = evas_object_rectangle_add(d.evas);
evas_object_resize(o, 10, 10);
evas_object_color_set(o, 255, 0, 255, 255);
evas_object_show(o);
printf("inserting magenta before last\n");
edje_object_part_box_insert_before(d.box, "Box", o, last);*/
#if 0
o = evas_object_rectangle_add(d.evas);
evas_object_resize(o, 10, 10);
evas_object_color_set(o, 0, 255, 0, 255);
evas_object_show(o);
printf("inserting green at 3\n");
edje_object_part_box_insert_at(d.box, "Box", o, 3);
#endif
ecore_main_loop_begin();
edje_shutdown();
ecore_evas_shutdown();
ecore_shutdown();
evas_shutdown();
return 0;
}
collections {
#define TABLE_ITEM(NAME, R, G, B, A) \
group { \
name: NAME; \
parts { \
part { \
name: "it"; \
type: RECT; \
repeat_events: 0; \
description { \
state: "default" 0.0; \
min: 50 50; \
rel1 { relative: 0.0 0.0; }; \
rel2 { relative: 1.0 1.0; }; \
color: R G B A; \
} \
description { \
state: "alternate" 1.0; \
inherit: "default" 0.0; \
color: B R G A; \
} \
} \
} \
programs { \
program { \
name: "set,alternate"; \
signal: "mouse,down,1"; \
source: "it"; \
action: STATE_SET "alternate" 1.0; \
target: "it"; \
} \
program { \
name: "set,default"; \
signal: "mouse,down,3"; \
source: "it"; \
action: STATE_SET "default" 0.0; \
target: "it"; \
} \
} \
}
TABLE_ITEM("Item1", 0, 128, 128, 128)
TABLE_ITEM("Item2", 128, 0, 128, 128)
TABLE_ITEM("Item3", 128, 128, 0, 128)
TABLE_ITEM("Item4", 0, 0, 0, 128)
group {
name: "DaTable";
parts {
part {
name: "Border";
type: RECT;
description {
state: "default" 0.0;
rel1 { relative: 0.0 0.0; };
rel2 { relative: 1.0 1.0; };
color: 0 0 0 255;
}
}
part {
name: "Inside";
type: RECT;
description {
state: "default" 0.0;
color: 255 255 255 255;
rel1 {
offset: 5 5;
to: "Border";
}
rel2 {
offset: -5 -5;
to: "Border";
}
}
}
part {
name: "Table";
type: TABLE;
table {
items {
item {
type: GROUP;
source: "Item1";
min: 50 50;
position: 0 0;
}
item {
type: GROUP;
source: "Item2";
min: 25 25;
padding: 0 0 3 3;
position: 1 0;
span: 1 2;
}
item {
type: GROUP;
source: "Item3";
min: 75 75;
//weight: 1.0 1.0;
position: 0 1;
}
item {
type: GROUP;
source: "Item4";
//align: -1.0 -1.0;
//min: 50 50;
position: 0 2;
span: 2 1;
}
}
}
description {
state: "default" 0.0;
rel1 {
to: "Inside";
}
rel2 {
to: "Inside";
}
table {
homogeneous: NONE;
padding: 1 1;
align: 0.5 0.5;
}
}
#define table_homo(NAME) description { \
state: NAME 0.0; \
inherit: "default" 0.0; \
table { \
homogeneous: NAME; \
padding: 1 1; \
align: 0.5 0.5; \
} \
}
table_homo("NONE")
table_homo("TABLE")
table_homo("ITEM")
}
}
programs {
#define set_homo(NAME) program { \
name: "set,"NAME; \
signal: "set,"NAME; \
source: "*"; \
action: STATE_SET NAME 0.0; \
target: "Table"; \
}
set_homo("NONE")
set_homo("TABLE")
set_homo("ITEM")
}
}
}
------------------------------------------------------------------------------
SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas, Nevada.
The future of the web can't happen without you. Join us at MIX09 to help
pave the way to the Next Web now. Learn more and register at
http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel