collections { group { name: "Toggler"; script { public button_toggle_state; } parts { part { name: "background"; type: RECT; mouse_events: 0; description { state: "default" 0.0; color: 255 255 255 255; rel1 { relative: 0.0 0.0; offset: 0 0; } rel2 { relative: 1.0 1.0; offset: 0 0; } } } part { name: "toggle"; type: RECT; mouse_events: 1; description { state: "default" 0.0; color: 255 0 0 255; rel1 { relative: 0.0 0.0; offset: 10 10; } rel2 { relative: 1.0 1.0; offset: -10 -10; } } description { state: "on" 0.0; color: 0 0 255 255; rel1 { relative: 0.0 0.0; offset: 10 10; } rel2 { relative: 1.0 1.0; offset: -10 -10; } } } } programs { program { name: "group_loaded"; signal: "load"; source: ""; script { set_int(button_toggle_state, 0); } } program { name: "toggle_icon_mouse_clicked"; signal: "mouse,clicked,1"; source: "toggle"; script { if(get_int(button_toggle_state) == 0) { set_int(button_toggle_state, 1); emit("toggle,on", ""); } else { set_int(button_toggle_state, 0); emit("toggle,off", ""); } } } program { name: "toggle_on"; signal: "toggle,on"; source: ""; action: STATE_SET "on" 0.0; target: "toggle"; transition: SINUSOIDAL 0.5; } program { name: "toggle_off"; signal: "toggle,off"; source: ""; action: STATE_SET "default" 0.0; target: "toggle"; transition: SINUSOIDAL 0.5; } } } }