collections { group { name: "elm/button/base/chucknorris"; alias: "elm/button/base/default"; parts { part { name: "border"; type: RECT; description { state: "default" 0.0; color: 0 0 0 255; } description { state: "in" 0.0; color: 50 180 180 255; } } part { name: "base"; type: RECT; mouse_events: 1; description { state: "default" 0.0; rel1.to: "border"; rel1.offset: 1 1; rel2.to: "border"; rel2.offset: -2 -2; } description { state: "disabled" 0.0; inherit: "default" 0.0; color: 230 230 230 255; } } part { name: "elm.swallow.content"; type: SWALLOW; mouse_events: 0; description { state: "default" 0.0; fixed: 1 0; visible: 0; align: 0.0 0.5; rel1.offset: 4 4; rel2.offset: 3 -5; rel2.relative: 0.0 1.0; } description { state: "visible" 0.0; inherit: "default" 0.0; visible: 1; aspect: 1.0 1.0; aspect_preference: VERTICAL; rel2.offset: 4 -5; } description { state: "icononly" 0.0; inherit: "default" 0.0; fixed: 0 0; visible: 1; align: 0.5 0.5; aspect: 1.0 1.0; aspect_preference: VERTICAL; rel2.offset: -5 -5; rel2.relative: 1.0 1.0; } } part { name: "elm.text"; type: TEXT; mouse_events: 0; scale: 1; description { state: "default" 0.0; visible: 0; rel1.to_x: "elm.swallow.content"; rel1.relative: 1.0 0.0; rel1.offset: 0 4; rel2.offset: -5 -5; color: 0 0 0 255; text { font: "Sans"; size: 10; min: 0 0; text_class: "button"; } } description { state: "visible" 0.0; inherit: "default" 0.0; visible: 1; text.min: 1 1; } description { state: "disabled" 0.0; inherit: "default" 0.0; } description { state: "disabled_visible" 0.0; inherit: "default" 0.0; visible: 1; text.min: 1 1; } } programs { program { name: "button_mouse_in"; signal: "mouse,in"; source: "base"; action: STATE_SET "in" 0.0; target: "border"; } program { name: "button_mouse_out"; signal: "mouse,out"; source: "base"; action: STATE_SET "default" 0.0; target: "border"; } program { name: "button_unclick"; signal: "mouse,up,1"; source: "base"; action: SIGNAL_EMIT "elm,action,click" ""; } program { name: "button_click"; signal: "mouse,down,1"; source: "base"; } program { name: "text_show"; signal: "elm,state,text,visible"; source: "elm"; script { new st[31]; new Float:vl; get_state(PART:"elm.swallow.content", st, 30, vl); if (!strcmp(st, "icononly")) set_state(PART:"elm.swallow.content", "visible", 0.0); set_state(PART:"elm.text", "visible", 0.0); } } program { name: "text_hide"; signal: "elm,state,text,hidden"; source: "elm"; script { new st[31]; new Float:vl; get_state(PART:"elm.swallow.content", st, 30, vl); if (!strcmp(st, "visible")) set_state(PART:"elm.swallow.content", "icononly", 0.0); set_state(PART:"elm.text", "default", 0.0); } } program { name: "icon_show"; signal: "elm,state,icon,visible"; source: "elm"; script { new st[31]; new Float:vl; get_state(PART:"elm.text", st, 30, vl); if (!strcmp(st, "visible")) set_state(PART:"elm.swallow.content", "visible", 0.0); else set_state(PART:"elm.swallow.content", "icononly", 0.0); } } program { name: "icon_hide"; signal: "elm,state,icon,hidden"; source: "elm"; action: STATE_SET "default" 0.0; target: "elm.swallow.content"; } program { name: "disable"; signal: "elm,state,disabled"; source: "elm"; action: STATE_SET "disabled" 0.0; target: "base"; after: "disable_text"; } program { name: "disable_text"; script { new st[31]; new Float:vl; get_state(PART:"elm.text", st, 30, vl); if (!strcmp(st, "visible")) set_state(PART:"elm.text", "disabled_visible", 0.0); else set_state(PART:"elm.text", "disabled", 0.0); } } program { name: "enable"; signal: "elm,state,enabled"; source: "elm"; action: STATE_SET "default" 0.0; target: "base"; after: "enable_text"; } program { name: "enable_text"; script { new st[31]; new Float:vl; get_state(PART:"elm.text", st, 30, vl); if (!strcmp(st, "disabled_visible")) set_state(PART:"elm.text", "visible", 0.0); else set_state(PART:"elm.text", "default", 0.0); } } } } }