collections { #define BOX_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"; \ } \ } \ } BOX_ITEM("Item1", 0, 128, 128, 128) BOX_ITEM("Item2", 128, 0, 128, 128) BOX_ITEM("Item3", 128, 128, 0, 128) BOX_ITEM("Item4", 0, 0, 0, 128) group { name: "DaBox"; 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: "Box"; type: BOX; box { items { item { type: GROUP; source: "Item1"; min: 50 50; } item { type: GROUP; source: "Item2"; min: 25 25; padding: 0 0 3 3; } item { type: GROUP; source: "Item3"; min: 75 75; //weight: 1.0 1.0; } item { type: GROUP; source: "Item4"; //align: -1.0 -1.0; //min: 50 50; } } } description { state: "default" 0.0; rel1 { to: "Inside"; } rel2 { to: "Inside"; } box { layout: "horizontal"; padding: 1 1; align: 0.5 0.5; } } #define box_layout(NAME) description { \ state: NAME 0.0; \ inherit: "default" 0.0; \ box { \ layout: NAME; \ padding: 1 1; \ align: 0.5 0.5; \ } \ } box_layout("horizontal") box_layout("vertical") box_layout("horizontal_homogeneous") box_layout("vertical_homogeneous") box_layout("horizontal_max") box_layout("vertical_max") box_layout("horizontal_flow") box_layout("vertical_flow") box_layout("stack") box_layout("custom_layout") } } programs { #define set_layout(NAME) program { \ name: "set,"NAME; \ signal: "set,"NAME; \ source: "*"; \ action: STATE_SET NAME 0.0; \ target: "Box"; \ } set_layout("horizontal") set_layout("vertical") set_layout("horizontal_homogeneous") set_layout("vertical_homogeneous") set_layout("horizontal_max") set_layout("vertical_max") set_layout("horizontal_flow") set_layout("vertical_flow") set_layout("stack") set_layout("custom_layout") } } }