group { name: "elm/button/base/default"; images.image: "button_normal.png" COMP; images.image: "button_outline.png" COMP; #define ICON 1 #define LABEL 2 #define MASK 3 #define DISABLE 4 script { public btmode; public eval_mode(m) { new m1 = m & MASK; new d = m & DISABLE; if (m1 == (ICON | LABEL)) { if (!d) { set_state(PART:"elm.swallow.content", "visible", 0.0); set_state(PART:"sizer.content", "visible", 0.0); set_state(PART:"elm.text", "visible", 0.0); set_state(PART:"icon_clip", "default", 0.0); set_state(PART:"event", "default", 0.0); } else { set_state(PART:"elm.swallow.content", "visible", 0.0); set_state(PART:"sizer.content", "visible", 0.0); set_state(PART:"elm.text", "disabled_visible", 0.0); set_state(PART:"icon_clip", "disabled", 0.0); set_state(PART:"event", "disabled", 0.0); } } else if (m1 == (ICON)) { if (!d) { set_state(PART:"elm.swallow.content", "icononly", 0.0); set_state(PART:"sizer.content", "icononly", 0.0); set_state(PART:"elm.text", "default", 0.0); set_state(PART:"icon_clip", "default", 0.0); set_state(PART:"event", "default", 0.0); } else { set_state(PART:"elm.swallow.content", "icononly", 0.0); set_state(PART:"sizer.content", "icononly", 0.0); set_state(PART:"elm.text", "default", 0.0); set_state(PART:"icon_clip", "disabled", 0.0); set_state(PART:"event", "disabled", 0.0); } } else if (m1 == (LABEL)) { if (!d) { set_state(PART:"elm.swallow.content", "default", 0.0); set_state(PART:"sizer.content", "default", 0.0); set_state(PART:"elm.text", "textonly", 0.0); set_state(PART:"icon_clip", "default", 0.0); set_state(PART:"event", "default", 0.0); } else { set_state(PART:"elm.swallow.content", "default", 0.0); set_state(PART:"sizer.content", "default", 0.0); set_state(PART:"elm.text", "disabled_textonly", 0.0); set_state(PART:"icon_clip", "disabled", 0.0); set_state(PART:"event", "disabled", 0.0); } } else { if (!d) { set_state(PART:"elm.swallow.content", "default", 0.0); set_state(PART:"sizer.content", "default", 0.0); set_state(PART:"elm.text", "icononly", 0.0); set_state(PART:"icon_clip", "default", 0.0); set_state(PART:"event", "default", 0.0); } else { set_state(PART:"elm.swallow.content", "default", 0.0); set_state(PART:"sizer.content", "default", 0.0); set_state(PART:"elm.text", "icononly", 0.0); set_state(PART:"icon_clip", "disabled", 0.0); set_state(PART:"event", "disabled", 0.0); } } } } styles { style { name: "button_style_default"; base: "font="FN" font_size=8 text_class=tb_plain color=#ffffffff align=center"; FN_TAG_BR; } style { name: "button_style_focused"; base: "font="FN" font_size=8 text_class=tb_plain color=#000000ff align=center"; FN_TAG_BR; } style { name: "button_style_disabled"; base: "font="FN" font_size=8 text_class=tb_plain color=#000000ff align=center"; FN_TAG_BR; } } parts { part { name: "base"; mouse_events: 0; description { state: "default" 0.0; image.normal: "button_outline.png"; image.border: 3 3 3 3; image.middle: SOLID; rel1.offset: 0 0; rel2.offset: -1 -1; fill.smooth: 0; } description { state: "focus" 0.0; inherit: "default" 0.0; image.normal: "button_normal.png"; } description { state: "clicked" 0.0; inherit: "default" 0.0; image.normal: "button_normal.png"; } } part { name: "icon_clip"; type: RECT; description { state: "default" 0.0; } description { state: "disabled" 0.0; inherit: "default" 0.0; color: 255 255 255 64; } } part { name: "elm.swallow.content"; type: SWALLOW; mouse_events: 0; clip_to: "icon_clip"; description { state: "default" 0.0; fixed: 1 0; align: 0.0 0.5; rel1.offset: 6 5; rel1.to: "base"; rel2.relative: 0.0 1.0; rel2.offset: 6 -8; rel2.to: "base"; visible: 0; } description { state: "visible" 0.0; inherit: "default" 0.0; fixed: 1 0; aspect: 1.0 1.0; visible: 1; } description { state: "icononly" 0.0; inherit: "default" 0.0; fixed: 0 0; align: 0.5 0.5; rel2.relative: 1.0 1.0; rel2.offset: -7 -8; visible: 1; } } part { name: "sizer.content"; type: TEXT; mouse_events: 0; scale: 1; description { state: "default" 0.0; // fixed: 1 1; visible: 0; text { font: FN; size: 7; min: 0 0; text_class: "button_text"; } } description { state: "visible" 0.0; inherit: "default" 0.0; rel1.to: "elm.swallow.content"; rel2.to: "elm.swallow.content"; text { min: 1 1; ellipsis: -1; text: "M"; } } description { state: "icononly" 0.0; inherit: "default" 0.0; rel1.to: "elm.swallow.content"; rel2.to: "elm.swallow.content"; text { min: 1 1; ellipsis: -1; text: "M"; } } } part { name: "elm.text"; type: TEXTBLOCK; mouse_events: 0; description { state: "default" 0.0; rel1.offset: 0 5; rel1.relative: 1.0 0.0; rel1.to_x: "elm.swallow.content"; rel1.to_y: "base"; rel2.offset: -8 -8; rel2.to: "base"; text { style: "button_style_default"; min: 0 1; } visible: 0; } description { state: "unfocus" 0.0; inherit: "default" 0.0; visible: 1; } description { state: "focus" 0.0; inherit: "default" 0.0; text { style: "button_style_focused"; min: 0 1; } visible: 1; } description { state: "clicked" 0.0; inherit: "default" 0.0; text { style: "button_style_focused"; min: 0 1; } visible: 1; } description { state: "unclicked" 0.0; inherit: "default" 0.0; visible: 1; } description { state: "visible" 0.0; inherit: "default" 0.0; rel1.offset: 2 5; text.min: 1 1; text.ellipsis: -1; visible: 1; } description { state: "textonly" 0.0; inherit: "default" 0.0; text.min: 1 1; text.ellipsis: -1; visible: 1; } description { state: "disabled_visible" 0.0; inherit: "default" 0.0; rel1.offset: 2 5; text.min: 1 1; text.ellipsis: -1; text { style: "button_style_disabled"; min: 0 1; } visible: 1; } description { state: "disabled_textonly" 0.0; inherit: "default" 0.0; text.min: 1 1; text.ellipsis: -1; text { style: "button_style_disabled"; min: 0 1; } visible: 1; } } part { name: "event"; type: RECT; description { state: "default" 0.0; color: 0 0 0 0; } description { state: "disabled" 0.0; inherit: "default" 0.0; visible: 0; } } } programs { program { signal: "elm,action,unfocus"; source: "elm"; action: STATE_SET "unfocus" 0.0; target: "base"; target: "elm.text"; } program { signal: "elm,action,focus"; source: "elm"; action: STATE_SET "focus" 0.0; target: "base"; target: "elm.text"; } program { signal: "mouse,down,1"; source: "event"; action: SIGNAL_EMIT "elm,action,press" "elm"; after: "button_click_anim"; } program { name: "button_click_anim"; action: STATE_SET "clicked" 0.0; target: "base"; target: "elm.text"; } program { name: "button_unclick"; signal: "mouse,up,1"; source: "event"; action: SIGNAL_EMIT "elm,action,unpress" "elm"; after: "button_unclick_anim"; } program { name: "button_unclick_anim"; action: STATE_SET "unclicked" 0.0; target: "base"; target: "elm.text"; } program { name: "button_activate"; signal: "elm,anim,activate"; source: "elm"; action: STATE_SET "clicked" 0.0; target: "base"; after: "button_unpressed_anim"; } program { name: "button_unpressed_anim"; action: STATE_SET "default" 0.0; in: 0.5 0.0; target: "base"; } program { signal: "mouse,clicked,1"; source: "event"; action: SIGNAL_EMIT "elm,action,click" "elm"; } program { name: "button_text_visible"; signal: "elm,state,text,visible"; source: "elm"; script { new m = get_int(btmode); m |= LABEL; set_int(btmode, m); eval_mode(m); } } program { name: "button_text_hidden"; signal: "elm,state,text,hidden"; source: "elm"; script { new m = get_int(btmode); m &= ~LABEL; set_int(btmode, m); eval_mode(m); } } program { name: "button_icon_visible"; signal: "elm,state,icon,visible"; source: "elm"; script { new m = get_int(btmode); m |= ICON; set_int(btmode, m); eval_mode(m); } } program { name: "button_icon_hidden"; signal: "elm,state,icon,hidden"; source: "elm"; action: STATE_SET "default" 0.0; script { new m = get_int(btmode); m &= ~ICON; set_int(btmode, m); eval_mode(m); } } program { name: "button_state_disabled"; signal: "elm,state,disabled"; source: "elm"; script { new m = get_int(btmode); m |= DISABLE; set_int(btmode, m); eval_mode(m); } } program { name: "button_state_enabled"; signal: "elm,state,enabled"; source: "elm"; script { new m = get_int(btmode); m &= ~DISABLE; set_int(btmode, m); eval_mode(m); } } } #undef ICON #undef LABEL #undef MASK #undef DISABLE } group { name: "elm/button/base/list"; images.image: "button_normal.png" COMP; images.image: "button_outline.png" COMP; #define ICON 1 #define LABEL 2 #define MASK 3 #define DISABLE 4 script { public btmode; public eval_mode(m) { new m1 = m & MASK; new d = m & DISABLE; if (m1 == (ICON | LABEL)) { if (!d) { set_state(PART:"elm.swallow.content", "visible", 0.0); set_state(PART:"sizer.content", "visible", 0.0); set_state(PART:"elm.text", "visible", 0.0); set_state(PART:"icon_clip", "default", 0.0); set_state(PART:"event", "default", 0.0); } else { set_state(PART:"elm.swallow.content", "visible", 0.0); set_state(PART:"sizer.content", "visible", 0.0); set_state(PART:"elm.text", "disabled_visible", 0.0); set_state(PART:"icon_clip", "disabled", 0.0); set_state(PART:"event", "disabled", 0.0); } } else if (m1 == (ICON)) { if (!d) { set_state(PART:"elm.swallow.content", "icononly", 0.0); set_state(PART:"sizer.content", "icononly", 0.0); set_state(PART:"elm.text", "default", 0.0); set_state(PART:"icon_clip", "default", 0.0); set_state(PART:"event", "default", 0.0); } else { set_state(PART:"elm.swallow.content", "icononly", 0.0); set_state(PART:"sizer.content", "icononly", 0.0); set_state(PART:"elm.text", "default", 0.0); set_state(PART:"icon_clip", "disabled", 0.0); set_state(PART:"event", "disabled", 0.0); } } else if (m1 == (LABEL)) { if (!d) { set_state(PART:"elm.swallow.content", "default", 0.0); set_state(PART:"sizer.content", "default", 0.0); set_state(PART:"elm.text", "textonly", 0.0); set_state(PART:"icon_clip", "default", 0.0); set_state(PART:"event", "default", 0.0); } else { set_state(PART:"elm.swallow.content", "default", 0.0); set_state(PART:"sizer.content", "default", 0.0); set_state(PART:"elm.text", "disabled_textonly", 0.0); set_state(PART:"icon_clip", "disabled", 0.0); set_state(PART:"event", "disabled", 0.0); } } else { if (!d) { set_state(PART:"elm.swallow.content", "default", 0.0); set_state(PART:"sizer.content", "default", 0.0); set_state(PART:"elm.text", "icononly", 0.0); set_state(PART:"icon_clip", "default", 0.0); set_state(PART:"event", "default", 0.0); } else { set_state(PART:"elm.swallow.content", "default", 0.0); set_state(PART:"sizer.content", "default", 0.0); set_state(PART:"elm.text", "icononly", 0.0); set_state(PART:"icon_clip", "disabled", 0.0); set_state(PART:"event", "disabled", 0.0); } } } } styles { style { name: "button_list_style_default"; base: "font="FN" font_size=8 text_class=tb_plain color=#ffffffff align=auto"; FN_TAG_BR; } style { name: "button_list_style_focused"; base: "font="FN" font_size=8 text_class=tb_plain color=#000000ff align=auto"; FN_TAG_BR; } style { name: "button_list_style_disabled"; base: "font="FN" font_size=8 text_class=tb_plain color=#000000ff align=auto"; FN_TAG_BR; } } parts { part { name: "base"; type: RECT; mouse_events: 0; description { state: "default" 0.0; rel1.offset: 0 0; rel2.offset: -1 -1; color_class: "button_list"; } description { state: "focus" 0.0; inherit: "default" 0.0; color_class: "button_list_focus"; } description { state: "clicked" 0.0; inherit: "default" 0.0; color_class: "button_list_focus"; } } part { name: "icon_clip"; type: RECT; description { state: "default" 0.0; } description { state: "disabled" 0.0; inherit: "default" 0.0; color: 0 0 0 255; } } part { name: "elm.swallow.content"; type: SWALLOW; mouse_events: 0; clip_to: "icon_clip"; description { state: "default" 0.0; fixed: 1 0; align: 0.0 0.5; rel1.to: "base"; rel2.relative: 0.0 1.0; rel2.to: "base"; visible: 0; } description { state: "visible" 0.0; inherit: "default" 0.0; fixed: 1 0; aspect: 1.0 1.0; visible: 1; } description { state: "icononly" 0.0; inherit: "default" 0.0; fixed: 0 0; align: 0.5 0.5; rel2.relative: 1.0 1.0; visible: 1; } } part { name: "sizer.content"; type: TEXT; mouse_events: 0; scale: 1; description { state: "default" 0.0; visible: 0; text { font: FN; size: 7; min: 0 0; text_class: "button_text"; } } description { state: "visible" 0.0; inherit: "default" 0.0; rel1.to: "elm.swallow.content"; rel2.to: "elm.swallow.content"; text { min: 1 1; ellipsis: -1; text: "M"; } } description { state: "icononly" 0.0; inherit: "default" 0.0; rel1.to: "elm.swallow.content"; rel2.to: "elm.swallow.content"; text { min: 1 1; ellipsis: -1; text: "M"; } } } part { name: "elm.text"; type: TEXTBLOCK; mouse_events: 0; description { state: "default" 0.0; rel1.offset: 0 0; rel1.relative: 1.0 0.0; rel1.to_x: "elm.swallow.content"; rel1.to_y: "base"; rel2.offset: 0 0; rel2.to: "base"; text { style: "button_list_style_default"; min: 0 1; } visible: 0; } description { state: "unfocus" 0.0; inherit: "default" 0.0; visible: 1; } description { state: "focus" 0.0; inherit: "default" 0.0; text { style: "button_list_style_focused"; } visible: 1; } description { state: "clicked" 0.0; inherit: "default" 0.0; text { style: "button_list_style_focused"; } visible: 1; } description { state: "unclicked" 0.0; inherit: "default" 0.0; visible: 1; } description { state: "visible" 0.0; inherit: "default" 0.0; text.min: 1 1; text.ellipsis: -1; visible: 1; } description { state: "textonly" 0.0; inherit: "default" 0.0; text.min: 1 1; text.ellipsis: -1; visible: 1; } description { state: "disabled_visible" 0.0; inherit: "default" 0.0; text { style: "button_list_style_disabled"; min: 1 1; } visible: 1; } description { state: "disabled_textonly" 0.0; inherit: "default" 0.0; text { style: "button_list_style_disabled"; min: 1 1; ellipsis: -1; } visible: 1; } } part { name: "event"; type: RECT; ignore_flags: ON_HOLD; description { state: "default" 0.0; color: 0 0 0 0; } description { state: "disabled" 0.0; inherit: "default" 0.0; visible: 0; } } } programs { program { signal: "elm,action,unfocus"; source: "elm"; action: STATE_SET "unfocus" 0.0; target: "base"; target: "elm.text"; } program { signal: "elm,action,focus"; source: "elm"; action: STATE_SET "focus" 0.0; target: "base"; target: "elm.text"; } program { signal: "mouse,down,1"; source: "event"; action: SIGNAL_EMIT "elm,action,press" "elm"; after: "button_click_anim"; } program { name: "button_click_anim"; action: STATE_SET "clicked" 0.0; target: "base"; target: "elm.text"; } program { name: "button_unclick"; signal: "mouse,up,1"; source: "event"; action: SIGNAL_EMIT "elm,action,unpress" "elm"; after: "button_unclick_anim"; } program { name: "button_unclick_anim"; action: STATE_SET "unclicked" 0.0; target: "base"; target: "elm.text"; } program { name: "button_activate"; signal: "elm,anim,activate"; source: "elm"; action: STATE_SET "clicked" 0.0; target: "base"; after: "button_unpressed_anim"; } program { name: "button_unpressed_anim"; action: STATE_SET "default" 0.0; in: 0.5 0.0; target: "base"; } program { signal: "mouse,clicked,1"; source: "event"; action: SIGNAL_EMIT "elm,action,click" "elm"; } program { signal: "elm,state,text,visible"; source: "elm"; script { new m = get_int(btmode); m |= LABEL; set_int(btmode, m); eval_mode(m); } } program { signal: "elm,state,text,hidden"; source: "elm"; script { new m = get_int(btmode); m &= ~LABEL; set_int(btmode, m); eval_mode(m); } } program { signal: "elm,state,icon,visible"; source: "elm"; script { new m = get_int(btmode); m |= ICON; set_int(btmode, m); eval_mode(m); } } program { signal: "elm,state,icon,hidden"; source: "elm"; action: STATE_SET "default" 0.0; script { new m = get_int(btmode); m &= ~ICON; set_int(btmode, m); eval_mode(m); } } program { signal: "elm,state,disabled"; source: "elm"; script { new m = get_int(btmode); m |= DISABLE; set_int(btmode, m); eval_mode(m); } } program { signal: "elm,state,enabled"; source: "elm"; script { new m = get_int(btmode); m &= ~DISABLE; set_int(btmode, m); eval_mode(m); } } } #undef ICON #undef LABEL #undef MASK #undef DISABLE }