Dear List, I want to access a BOX element's items from python code to change the text on it. Please see this picture: http://laszlo.krekacs.googlepages.com/flowed_outofarea.png
Looks like accessing by part name is not possible because the items are swallowed from external group. Also accessing them via embryo script (.edc) file seems impossible too (I could have implement some signaling between python and embryo). There are basically two way accessing them using C: 1) accessing them via eina iterator (complicated) 2) adding each element from C program, thats way we can access them through a variable. I would prefer this one, because of its simplicity, however I do not find the corresponding python functions. C has this function: evas_object_box_add() and evas_object_box_add_to(). In trunk/evas/src/lib/canvas/evas_object_box.c:477. I didnt find it in python bindings. I examined how other function is wrapped into python, like evas_object_image_add(). C: evas_object_image.c Python: trunk/BINDINGS/python/python-evas/include/evas/c_evas.pxd:507 trunk/BINDINGS/python/python-evas/evas/evas.c_evas_object.image.pxi:132 Looks like thats only what is required (c_evas.pxd:507): Evas_Object *evas_object_image_add(Evas *e) So Im asking if it is possible to add at least evas_object_box_add() to python bindings? If the above is true, it would be as simple as adding this line: Evas_Object *evas_object_box_add(Evas *e) However I lack the knowledge what exactly required to compile the python bindings. So I cant try out myself. I began to read what are these .pxd and .pxi files at http://wiki.cython.org/FAQ, but dont really see the whole picture. I post the example python code[1], if somebody want to play with it (the goal is to be able to change the items' texts): http://pastebin.ca/1543898 http://pastebin.ca/1543897 Every idea, pointers are much appreciated! Best regards, Laszlo [1]: Python: #!/usr/bin/env python import ecore import ecore.evas import edje import sys import os edje_obj_item0 = None def load_edje(canvas = "", edje_file = "", group = ""): """ Create an edje.Edje object from a file @canvas: canvas object @file: filename as string @group: groupname as string @returns: edje object """ try: edje_obj = edje.Edje(canvas, file=edje_file, group=group) return edje_obj except Exception, e: # should be EdjeLoadError, but it's wrong on python2.5 raise SystemExit("Failed to load Edje file: %s" % edje_file) def update_screen(): edje_obj_item0.part_text_set('text', 'Updated after one sec') def init_gui(): """Initialize the main window """ f = ecore.evas.SoftwareX11 ee = f(w=320, h=640) edje.frametime_set(1.0 / 15) # Load and setup UI ee.title = "Edje App Launcher Demo" ee.name_class = ("Edje_App_Launcher_Demo", "Edje_App_Launcher_Demo") canvas = ee.evas edje_file = os.path.join(os.path.dirname(sys.argv[0]), "01-app_launcher.edj") edje_obj_main = load_edje(canvas, edje_file, "main") edje_obj_main.size = canvas.size edje_obj_main.show() ee.data["edje"] = edje_obj_main edje_obj_main.focus = True global edje_obj_item0 #edje_obj_item0 = load_edje(canvas, edje_file, "item0") edje_obj_item1 = load_edje(canvas, edje_file, "item1") edje_obj_item2 = load_edje(canvas, edje_file, "item2") edje_obj_item3 = load_edje(canvas, edje_file, "item3") edje_obj_item4 = load_edje(canvas, edje_file, "item4") edje_obj_item5 = load_edje(canvas, edje_file, "item5") edje_obj_item0 = edje_obj_main.part_swallow_get('item0') ee.show() edje_obj_item0.part_text_set('text','Overwritten') edje_obj_item0.size = canvas.size edje_obj_item0.show() ecore.timer_add(1.0, update_screen) ecore.main_loop_begin() if __name__ == '__main__': init_gui() ------------------------------------------------------------------- 01-app_launcher.edc: images { image: "background.jpeg" LOSSY 95; image: "audio_player.png" COMP; image: "image_viewer.png" COMP; image: "video_player.png" COMP; image: "web_browser.png" COMP; } styles { style { name: "style"; base: "font=DejaVuSans font_size=20 text_class=item align=top valign=center color=#000 wrap=word"; tag: "numbering" "+ style=soft_outline outline_color=#7fa3ed color=#d8e0e3"; } } collections { group { name: "main"; min: 800 480; script { public selected = 0; public pulsing = 0; public stop_pulsing_timer_id = 0; const Float:pulse_timeout = 10.0; public unselect() { if (get_int(selected) == 0) return; run_program(get_int(selected)); set_int(selected, 0); } public stop_pulsing() { if (get_int(pulsing) == 0) return; set_state(get_int(pulsing), "default", 0.0); set_int(pulsing, 0); if (get_int(stop_pulsing_timer_id) != 0) { cancel_timer(get_int(stop_pulsing_timer_id)); set_int(stop_pulsing_timer_id, 0); } } public stop_pulsing_cb(val) { stop_pulsing(); return 0; } } parts { part { name: "background"; type: IMAGE; mouse_events: 0; description { state: "default" 0.0; rel1 { relative: 0.0 0.0; } rel2 { relative: 1.0 1.0; offset: -1 -1; } image { normal: "background.jpeg"; } } } #define ICON(part_name, relx, rely, part_label) \ part { \ name: part_name"_area"; \ type: RECT; \ mouse_events: 1; \ description { \ state: "default" 0.0; \ rel1 { relative: relx rely; offset: -96 -96; } \ rel2 { relative: relx rely; offset: 95 95; } \ color: 0 0 0 0; \ } \ } \ part { \ name: part_name"_pulser"; \ type: IMAGE; \ mouse_events: 0; \ description { \ state: "default" 0.0; \ rel1 { relative: 0.5 0.5; offset: -64 -64; } \ rel2 { relative: 0.5 0.5; offset: 63 63; } \ color: 0 0 0 0; \ image { normal: part_name".png"; } \ } \ description { \ state: "selected" 0.0; \ inherit: "default" 0.0; \ rel1 { relative: 0.5 0.5; offset: -64 -64; } \ rel2 { relative: 0.5 0.5; offset: 63 63; } \ color: 255 255 255 128; \ } \ description { \ state: "selected" 1.0; \ inherit: "default" 0.0; \ rel1 { relative: 0.5 0.5; offset: -96 -96; } \ rel2 { relative: 0.5 0.5; offset: 95 95; } \ color: 255 255 255 0; \ } \ } \ part { \ name: part_name; \ type: IMAGE; \ mouse_events: 0; \ description { \ state: "default" 0.0; \ rel1 { relative: relx rely; offset: -32 -32; } \ rel2 { relative: relx rely; offset: 31 31; } \ image { normal: part_name".png"; } \ } \ description { \ state: "selected" 0.0; \ inherit: "default" 0.0; \ rel1 { relative: 0.5 0.5; offset: -64 -64; } \ rel2 { relative: 0.5 0.5; offset: 63 63; } \ } \ } \ part { \ name: part_name"_label"; \ type: TEXT; \ effect: SHADOW; \ mouse_events: 0; \ description { \ state: "default" 0.0; \ rel1 { relative: relx rely; offset: -100 33; } \ rel2 { relative: relx rely; offset: 99 53; } \ align: 0.5 0.5; \ color: 255 255 255 255; \ color2: 0 0 0 255; \ color3: 0 0 0 255; \ text { \ font: "Sans"; \ size: 18; \ text: part_label; \ min: 1 1; \ fit: 1 1; \ } \ } \ description { \ state: "selected" 0.0; \ inherit: "default" 0.0; \ rel1 { relative: 0.5 0.5; offset: -128 -25; } \ rel2 { relative: 0.5 0.5; offset: 127 24; } \ } \ } ICON("web_browser", 0.25, 0.25, "Web Browser") ICON("audio_player", 0.75, 0.25, "Audio Player") ICON("image_viewer", 0.25, 0.75, "Image Viewer") ICON("video_player", 0.75, 0.75, "Video Player") part { name: box_bg; type: RECT; mouse_events: 1; description { state: "default" 0.0; rel1 { relative: 0.2 0.1;} rel2 { relative: 0.9 0.3;} color: 255 255 255 155; } } part { name: "area"; type: BOX; mouse_events:1; description { state: "default" 0.0; align: 0.0 0.0; color: 255 255 255 255; rel1 { relative: 0.0 0.0; to: box_bg; } rel2 { relative: 1.0 1.0; to: box_bg; } box { layout: "horizontal_flow"; padding: 0 2; align: 0.5 0.5; } } box { items { item { type: GROUP; source:"item0"; } item { type: GROUP; source:"item1"; } item { type: GROUP; source:"item2"; } item { type: GROUP; source:"item3"; } item { type: GROUP; source:"item4"; } item { type: GROUP; source:"item5"; } item { type: GROUP; source:"item6"; } } } } } programs { #define ICON_PROGRAMS(part_name) \ program { \ name: "set_selected_"part_name; \ signal: "mouse,clicked,1"; \ source: part_name"_area"; \ script { \ const pid = PROGRAM:"unselect_"part_name; \ if (get_int(selected) == pid) \ return; \ stop_pulsing(); \ unselect(); \ set_int(selected, pid); \ emit("selected", part_name); \ } \ } \ program { \ name: "select_"part_name; \ signal: "selected"; \ source: part_name; \ action: STATE_SET "selected" 0.0; \ target: part_name; \ target: part_name"_label"; \ transition: LINEAR 0.2; \ after: "start_pulse_"part_name; \ } \ program { \ name: "start_pulse_"part_name; \ script { \ stop_pulsing(); \ set_int(pulsing, PART:part_name"_pulser"); \ new i = timer(pulse_timeout, "stop_pulsing_cb", 0); \ set_int(stop_pulsing_timer_id, i); \ run_program(PROGRAM:"shrink_"part_name); \ } \ } \ program { \ name: "shrink_"part_name; \ action: STATE_SET "selected" 0.0; \ target: part_name"_pulser"; \ after: "grow_"part_name; \ } \ program { \ name: "grow_"part_name; \ action: STATE_SET "selected" 1.0; \ target: part_name"_pulser"; \ transition: LINEAR 0.5; \ after: "check_continue_pulsing_"part_name; \ } \ program { \ name: "check_continue_pulsing_"part_name; \ script { \ if (get_int(pulsing) == PART:part_name"_pulser") \ run_program(PROGRAM:"shrink_"part_name); \ else \ set_state(PART:part_name"_pulser", "default", 0.0); \ } \ } \ program { \ name: "unselect_"part_name; \ signal: "unselect_"part_name; \ action: STATE_SET "default" 0.0; \ target: part_name; \ target: part_name"_label"; \ target: part_name"_pulser"; \ transition: LINEAR 0.2; \ } ICON_PROGRAMS("web_browser") ICON_PROGRAMS("audio_player") ICON_PROGRAMS("image_viewer") ICON_PROGRAMS("video_player") } } group { name: "item0"; parts { part { name: "bg"; type: RECT; mouse_events:1; description { state: "default" 0.0; color: 0 0 0 255; rel1 { relative: 0.0 0.0; } rel2 { relative: 1.0 1.0;} } description { state: "pressed" 0.0; inherit: "default" 0.0; color: 255 255 255 255; } } part { name: "bg_inner"; type: RECT; mouse_events:0; description { state: "default" 0.0; color: 255 255 255 255; rel1 { relative: 0.0 0.0; to: bg; offset: 1 1; } rel2 { relative: 1.0 1.0; to: bg; offset: -2 -2; } } description { state: "pressed" 0.0; inherit: "default" 0.0; color: 0 0 0 255; } } part { name: "text"; type: TEXT; mouse_events:0; description { visible: 1; state: "default" 0.0; color: 0 0 0 255; align: 0.1 0.1; text { align: 0.5 0.5; size: 20; font: DejaVuSans; text: "Kossuth"; min: 1 1; } rel1 { relative: 0.1 0.1; } rel2 { relative: 0.9 0.9; } } description { state: "pressed" 0.0; inherit: "default" 0.0; color: 255 255 255 255; } } } programs { program { name: "item_pressed"; signal: "mouse,down,1"; source: "bg"; action: STATE_SET "pressed" 0.0; target: "bg"; target: "bg_inner"; target: "text"; } program { name: "item_released"; signal: "mouse,up,1"; source: "bg"; action: STATE_SET "default" 0.0; target: "bg"; target: "bg_inner"; target: "text"; } } } group { name: "item1"; parts { part { name: "bg"; type: RECT; mouse_events:1; description { state: "default" 0.0; color: 0 0 0 255; rel1 { relative: 0.0 0.0; } rel2 { relative: 1.0 1.0;} } description { state: "pressed" 0.0; inherit: "default" 0.0; color: 255 255 255 255; } } part { name: "bg_inner"; type: RECT; mouse_events:0; description { state: "default" 0.0; color: 255 255 255 255; rel1 { relative: 0.0 0.0; to: bg; offset: 1 1; } rel2 { relative: 1.0 1.0; to: bg; offset: -2 -2; } } description { state: "pressed" 0.0; inherit: "default" 0.0; color: 0 0 0 255; } } part { name: "text"; type: TEXT; mouse_events:0; description { visible: 1; state: "default" 0.0; color: 0 0 0 255; align: 0.1 0.1; text { align: 0.5 0.5; size: 20; font: DejaVuSans; text: "és"; min: 1 1; } rel1 { relative: 0.1 0.1; } rel2 { relative: 0.9 0.9; } } description { state: "pressed" 0.0; inherit: "default" 0.0; color: 255 255 255 255; } } } programs { program { name: "item_pressed"; signal: "mouse,down,1"; source: "bg"; action: STATE_SET "pressed" 0.0; target: "bg"; target: "bg_inner"; target: "text"; } program { name: "item_released"; signal: "mouse,up,1"; source: "bg"; action: STATE_SET "default" 0.0; target: "bg"; target: "bg_inner"; target: "text"; } } } group { name: "item2"; parts { part { name: "bg"; type: RECT; mouse_events:1; description { state: "default" 0.0; color: 0 0 0 255; rel1 { relative: 0.0 0.0; } rel2 { relative: 1.0 1.0;} } description { state: "pressed" 0.0; inherit: "default" 0.0; color: 255 255 255 255; } } part { name: "bg_inner"; type: RECT; mouse_events:0; description { state: "default" 0.0; color: 255 255 255 255; rel1 { relative: 0.0 0.0; to: bg; offset: 1 1; } rel2 { relative: 1.0 1.0; to: bg; offset: -2 -2; } } description { state: "pressed" 0.0; inherit: "default" 0.0; color: 0 0 0 255; } } part { name: "text"; type: TEXT; mouse_events:0; description { visible: 1; state: "default" 0.0; color: 0 0 0 255; align: 0.1 0.1; text { align: 0.5 0.5; size: 20; font: DejaVuSans; text: "valamint"; min: 1 1; } rel1 { relative: 0.1 0.1; } rel2 { relative: 0.9 0.9; } } description { state: "pressed" 0.0; inherit: "default" 0.0; color: 255 255 255 255; } } } programs { program { name: "item_pressed"; signal: "mouse,down,1"; source: "bg"; action: STATE_SET "pressed" 0.0; target: "bg"; target: "bg_inner"; target: "text"; } program { name: "item_released"; signal: "mouse,up,1"; source: "bg"; action: STATE_SET "default" 0.0; target: "bg"; target: "bg_inner"; target: "text"; } } } group { name: "item3"; parts { part { name: "bg"; type: RECT; mouse_events:1; description { state: "default" 0.0; color: 0 0 0 255; rel1 { relative: 0.0 0.0; } rel2 { relative: 1.0 1.0;} } description { state: "pressed" 0.0; inherit: "default" 0.0; color: 255 255 255 255; } } part { name: "bg_inner"; type: RECT; mouse_events:0; description { state: "default" 0.0; color: 255 255 255 255; rel1 { relative: 0.0 0.0; to: bg; offset: 1 1; } rel2 { relative: 1.0 1.0; to: bg; offset: -2 -2; } } description { state: "pressed" 0.0; inherit: "default" 0.0; color: 0 0 0 255; } } part { name: "text"; type: TEXT; mouse_events:0; description { visible: 1; state: "default" 0.0; color: 0 0 0 255; align: 0.1 0.1; text { align: 0.5 0.5; size: 20; font: DejaVuSans; text: "Batthyány"; min: 1 1; } rel1 { relative: 0.1 0.1; } rel2 { relative: 0.9 0.9; } } description { state: "pressed" 0.0; inherit: "default" 0.0; color: 255 255 255 255; } } } programs { program { name: "item_pressed"; signal: "mouse,down,1"; source: "bg"; action: STATE_SET "pressed" 0.0; target: "bg"; target: "bg_inner"; target: "text"; } program { name: "item_released"; signal: "mouse,up,1"; source: "bg"; action: STATE_SET "default" 0.0; target: "bg"; target: "bg_inner"; target: "text"; } } } group { name: "item4"; parts { part { name: "bg"; type: RECT; mouse_events:1; description { state: "default" 0.0; color: 0 0 0 255; rel1 { relative: 0.0 0.0; } rel2 { relative: 1.0 1.0;} } description { state: "pressed" 0.0; inherit: "default" 0.0; color: 255 255 255 255; } } part { name: "bg_inner"; type: RECT; mouse_events:0; description { state: "default" 0.0; color: 255 255 255 255; rel1 { relative: 0.0 0.0; to: bg; offset: 1 1; } rel2 { relative: 1.0 1.0; to: bg; offset: -2 -2; } } description { state: "pressed" 0.0; inherit: "default" 0.0; color: 0 0 0 255; } } part { name: "text"; type: TEXT; mouse_events:0; description { visible: 1; state: "default" 0.0; color: 0 0 0 255; align: 0.1 0.1; text { align: 0.5 0.5; size: 20; font: DejaVuSans; text: "Batthyány"; min: 1 1; } rel1 { relative: 0.1 0.1; } rel2 { relative: 0.9 0.9; } } description { state: "pressed" 0.0; inherit: "default" 0.0; color: 255 255 255 255; } } } programs { program { name: "item_pressed"; signal: "mouse,down,1"; source: "bg"; action: STATE_SET "pressed" 0.0; target: "bg"; target: "bg_inner"; target: "text"; } program { name: "item_released"; signal: "mouse,up,1"; source: "bg"; action: STATE_SET "default" 0.0; target: "bg"; target: "bg_inner"; target: "text"; } } } group { name: "item5"; parts { part { name: "bg"; type: RECT; mouse_events:1; description { state: "default" 0.0; color: 0 0 0 255; rel1 { relative: 0.0 0.0; } rel2 { relative: 1.0 1.0;} } description { state: "pressed" 0.0; inherit: "default" 0.0; color: 255 255 255 255; } } part { name: "bg_inner"; type: RECT; mouse_events:0; description { state: "default" 0.0; color: 255 255 255 255; rel1 { relative: 0.0 0.0; to: bg; offset: 1 1; } rel2 { relative: 1.0 1.0; to: bg; offset: -2 -2; } } description { state: "pressed" 0.0; inherit: "default" 0.0; color: 0 0 0 255; } } part { name: "text"; type: TEXT; mouse_events:0; description { visible: 1; state: "default" 0.0; color: 0 0 0 255; align: 0.1 0.1; text { align: 0.5 0.5; size: 20; font: DejaVuSans; text: "Batthyány"; min: 1 1; } rel1 { relative: 0.1 0.1; } rel2 { relative: 0.9 0.9; } } description { state: "pressed" 0.0; inherit: "default" 0.0; color: 255 255 255 255; } } } programs { program { name: "item_pressed"; signal: "mouse,down,1"; source: "bg"; action: STATE_SET "pressed" 0.0; target: "bg"; target: "bg_inner"; target: "text"; } program { name: "item_released"; signal: "mouse,up,1"; source: "bg"; action: STATE_SET "default" 0.0; target: "bg"; target: "bg_inner"; target: "text"; } } } group { name: "item6"; parts { part { name: "bg"; type: RECT; mouse_events:1; description { state: "default" 0.0; color: 0 0 0 255; rel1 { relative: 0.0 0.0; } rel2 { relative: 1.0 1.0;} } description { state: "pressed" 0.0; inherit: "default" 0.0; color: 255 255 255 255; } } part { name: "bg_inner"; type: RECT; mouse_events:0; description { state: "default" 0.0; color: 255 255 255 255; rel1 { relative: 0.0 0.0; to: bg; offset: 1 1; } rel2 { relative: 1.0 1.0; to: bg; offset: -2 -2; } } description { state: "pressed" 0.0; inherit: "default" 0.0; color: 0 0 0 255; } } part { name: "text"; type: TEXT; mouse_events:0; description { visible: 1; state: "default" 0.0; color: 0 0 0 255; align: 0.1 0.1; text { align: 0.5 0.5; size: 20; font: DejaVuSans; text: "Batthyány"; min: 1 1; } rel1 { relative: 0.1 0.1; } rel2 { relative: 0.9 0.9; } } description { state: "pressed" 0.0; inherit: "default" 0.0; color: 255 255 255 255; } } } programs { program { name: "item_pressed"; signal: "mouse,down,1"; source: "bg"; action: STATE_SET "pressed" 0.0; target: "bg"; target: "bg_inner"; target: "text"; } program { name: "item_released"; signal: "mouse,up,1"; source: "bg"; action: STATE_SET "default" 0.0; target: "bg"; target: "bg_inner"; target: "text"; } } } group { name: "item7"; parts { part { name: "bg"; type: RECT; mouse_events:1; description { state: "default" 0.0; color: 0 0 0 255; rel1 { relative: 0.0 0.0; } rel2 { relative: 1.0 1.0;} } description { state: "pressed" 0.0; inherit: "default" 0.0; color: 255 255 255 255; } } part { name: "bg_inner"; type: RECT; mouse_events:0; description { state: "default" 0.0; color: 255 255 255 255; rel1 { relative: 0.0 0.0; to: bg; offset: 1 1; } rel2 { relative: 1.0 1.0; to: bg; offset: -2 -2; } } description { state: "pressed" 0.0; inherit: "default" 0.0; color: 0 0 0 255; } } part { name: "text"; type: TEXT; mouse_events:0; description { visible: 1; state: "default" 0.0; color: 0 0 0 255; align: 0.1 0.1; text { align: 0.5 0.5; size: 20; font: DejaVuSans; text: "Batthyány"; min: 1 1; } rel1 { relative: 0.1 0.1; } rel2 { relative: 0.9 0.9; } } description { state: "pressed" 0.0; inherit: "default" 0.0; color: 255 255 255 255; } } } programs { program { name: "item_pressed"; signal: "mouse,down,1"; source: "bg"; action: STATE_SET "pressed" 0.0; target: "bg"; target: "bg_inner"; target: "text"; } program { name: "item_released"; signal: "mouse,up,1"; source: "bg"; action: STATE_SET "default" 0.0; target: "bg"; target: "bg_inner"; target: "text"; } } } group { name: "item8"; parts { part { name: "bg"; type: RECT; mouse_events:1; description { state: "default" 0.0; color: 0 0 0 255; rel1 { relative: 0.0 0.0; } rel2 { relative: 1.0 1.0;} } description { state: "pressed" 0.0; inherit: "default" 0.0; color: 255 255 255 255; } } part { name: "bg_inner"; type: RECT; mouse_events:0; description { state: "default" 0.0; color: 255 255 255 255; rel1 { relative: 0.0 0.0; to: bg; offset: 1 1; } rel2 { relative: 1.0 1.0; to: bg; offset: -2 -2; } } description { state: "pressed" 0.0; inherit: "default" 0.0; color: 0 0 0 255; } } part { name: "text"; type: TEXT; mouse_events:0; description { visible: 1; state: "default" 0.0; color: 0 0 0 255; align: 0.1 0.1; text { align: 0.5 0.5; size: 20; font: DejaVuSans; text: "Batthyány"; min: 1 1; } rel1 { relative: 0.1 0.1; } rel2 { relative: 0.9 0.9; } } description { state: "pressed" 0.0; inherit: "default" 0.0; color: 255 255 255 255; } } } programs { program { name: "item_pressed"; signal: "mouse,down,1"; source: "bg"; action: STATE_SET "pressed" 0.0; target: "bg"; target: "bg_inner"; target: "text"; } program { name: "item_released"; signal: "mouse,up,1"; source: "bg"; action: STATE_SET "default" 0.0; target: "bg"; target: "bg_inner"; target: "text"; } } } group { name: "item9"; parts { part { name: "bg"; type: RECT; mouse_events:1; description { state: "default" 0.0; color: 0 0 0 255; rel1 { relative: 0.0 0.0; } rel2 { relative: 1.0 1.0;} } description { state: "pressed" 0.0; inherit: "default" 0.0; color: 255 255 255 255; } } part { name: "bg_inner"; type: RECT; mouse_events:0; description { state: "default" 0.0; color: 255 255 255 255; rel1 { relative: 0.0 0.0; to: bg; offset: 1 1; } rel2 { relative: 1.0 1.0; to: bg; offset: -2 -2; } } description { state: "pressed" 0.0; inherit: "default" 0.0; color: 0 0 0 255; } } part { name: "text"; type: TEXT; mouse_events:0; description { visible: 1; state: "default" 0.0; color: 0 0 0 255; align: 0.1 0.1; text { align: 0.5 0.5; size: 20; font: DejaVuSans; text: "Batthyány"; min: 1 1; } rel1 { relative: 0.1 0.1; } rel2 { relative: 0.9 0.9; } } description { state: "pressed" 0.0; inherit: "default" 0.0; color: 255 255 255 255; } } } programs { program { name: "item_pressed"; signal: "mouse,down,1"; source: "bg"; action: STATE_SET "pressed" 0.0; target: "bg"; target: "bg_inner"; target: "text"; } program { name: "item_released"; signal: "mouse,up,1"; source: "bg"; action: STATE_SET "default" 0.0; target: "bg"; target: "bg_inner"; target: "text"; } } } group { name: "item10"; parts { part { name: "bg"; type: RECT; mouse_events:1; description { state: "default" 0.0; color: 0 0 0 255; rel1 { relative: 0.0 0.0; } rel2 { relative: 1.0 1.0;} } description { state: "pressed" 0.0; inherit: "default" 0.0; color: 255 255 255 255; } } part { name: "bg_inner"; type: RECT; mouse_events:0; description { state: "default" 0.0; color: 255 255 255 255; rel1 { relative: 0.0 0.0; to: bg; offset: 1 1; } rel2 { relative: 1.0 1.0; to: bg; offset: -2 -2; } } description { state: "pressed" 0.0; inherit: "default" 0.0; color: 0 0 0 255; } } part { name: "text"; type: TEXT; mouse_events:0; description { visible: 1; state: "default" 0.0; color: 0 0 0 255; align: 0.1 0.1; text { align: 0.5 0.5; size: 20; font: DejaVuSans; text: "Batthyány"; min: 1 1; } rel1 { relative: 0.1 0.1; } rel2 { relative: 0.9 0.9; } } description { state: "pressed" 0.0; inherit: "default" 0.0; color: 255 255 255 255; } } } programs { program { name: "item_pressed"; signal: "mouse,down,1"; source: "bg"; action: STATE_SET "pressed" 0.0; target: "bg"; target: "bg_inner"; target: "text"; } program { name: "item_released"; signal: "mouse,up,1"; source: "bg"; action: STATE_SET "default" 0.0; target: "bg"; target: "bg_inner"; target: "text"; } } } ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel