group { name: "elm/progressbar/horizontal/default"; images.image: "inset_bar_horiz_base.png" COMP; images.image: "inset_bar_horiz_glow_base.png" COMP; images.image: "inset_bar_horiz_glow_inv_base.png" COMP; images.image: "inset_bar_horiz_glow_mid_base.png" COMP; #define ICON 1 #define LABEL 2 #define DISABLE 4 script { public slmode; public eval_mode(m) { new ic = m & ICON; new l = m & LABEL; new d = m & DISABLE; if (l) { if (!d) { set_state(PART:"elm.text", "visible", 0.0); } else { set_state(PART:"elm.text", "disabled_visible", 0.0); } } else { set_state(PART:"elm.text", "default", 0.0); } if (ic) { set_state(PART:"elm.swallow.content", "visible", 0.0); set_state(PART:"sizer.content", "visible", 0.0); } else { set_state(PART:"elm.swallow.content", "default", 0.0); set_state(PART:"sizer.content", "default", 0.0); } if (!d) { set_state(PART:"dis_clip", "default", 0.0); } else { set_state(PART:"dis_clip", "disabled", 0.0); } } } parts { part { name: "dis_clip"; type: RECT; description { state: "default" 0.0; rel1.to: "elm.swallow.content"; rel2.to: "elm.swallow.content"; } description { state: "disabled" 0.0; inherit: "default" 0.0; color: 255 255 255 64; } } part { name: "pulse_clip"; type: RECT; description { state: "default" 0.0; rel1.relative: -2.0 -2.0; rel2.relative: 3.0 3.0; visible: 0; } description { state: "pulse" 0.0; inherit: "default" 0.0; visible: 1; } } part { name: "fract_clip"; type: RECT; description { state: "default" 0.0; rel1.relative: -2.0 -2.0; rel2.relative: 3.0 3.0; } description { state: "pulse" 0.0; inherit: "default" 0.0; visible: 0; } } part { name: "elm.swallow.content"; type: SWALLOW; clip_to: "dis_clip"; description { state: "default" 0.0; visible: 0; align: 0.0 0.5; rel1.offset: 0 2; rel2.offset: -1 -3; 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; rel1.offset: 2 2; rel2.offset: 2 -3; } } 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: 6; min: 0 0; text_class: "progressbar_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"; } } } part { name: "elm.text"; type: TEXT; mouse_events: 0; scale: 1; description { state: "default" 0.0; fixed: 1 1; align: 0.0 0.5; rel1.to_x: "elm.swallow.content"; rel1.relative: 1.0 0.0; rel1.offset: -1 2; rel2.to_x: "elm.swallow.content"; rel2.relative: 1.0 1.0; rel2.offset: -1 -3; color: FN_COL_DEFAULT; color_class: "progressbar_text"; text { font: FN; size: 6; text_class: "progressbar"; min: 0 0; align: 0.0 0.5; } visible: 0; } description { state: "visible" 0.0; inherit: "default" 0.0; fixed: 1 0; visible: 1; rel1.offset: 2 2; rel2.offset: 2 -3; text.min: 1 1; text.ellipsis: -1; } description { state: "disabled_visible" 0.0; inherit: "visible" 0.0; color_class: "progressbar_text_disabled"; color: FN_COL_DISABLE; } } part { name: "bg"; description { state: "default" 0.0; min: 16 10; max: -1 10; rel1.to_x: "elm.text"; rel1.relative: 1.0 0.0; rel1.offset: 3 0; rel2.offset: -3 0; image.normal: "inset_bar_horiz_base.png"; image.border: 1 1 0 0; } } part { name: "ins0"; type: SPACER; description { state: "default" 0.0; fixed: 1 0; rel1.to: "bg"; rel2.to: "bg"; rel2.relative: 0.0 1.0; min: 5 10; align: 0.0 0.5; } } part { name: "ins1"; type: SPACER; description { state: "default" 0.0; fixed: 1 0; rel1.to: "bg"; rel1.relative: 1.0 0.0; rel2.to: "bg"; min: 5 10; align: 1.0 0.5; } } part { name: "inside"; type: SPACER; description { state: "default" 0.0; min: 4 4; rel1.to: "ins0"; rel1.relative: 1.0 0.0; rel2.to: "ins1"; rel2.relative: 0.0 1.0; } } part { name: "elm.swallow.bar"; type: SWALLOW; mouse_events: 0; description { state: "default" 0.0; rel1.to: "inside"; rel2.to: "inside"; } } part { name: "elm.cur.progressbar"; mouse_events: 0; type: SPACER; dragable.confine: "inside"; dragable.x: 1 1 1; dragable.y: 0 0 0; description { state: "default" 0.0; fixed: 1 1; min: 8 4; max: 8 4; rel1.to: "inside"; rel2.to: "inside"; } } part { name: "barend"; type: SPACER; scale: 1; description { state: "default" 0.0; fixed: 1 0; min: 14 10; rel1.to_x: "elm.cur.progressbar"; rel1.relative: 1.0 0.0; rel2.to_x: "elm.cur.progressbar"; rel2.relative: 1.0 1.0; align: 0.0 0.5; } description { state: "inv" 0.0; inherit: "default" 0.0; rel1.relative: 0.0 0.0; rel2.relative: 0.0 1.0; align: 1.0 0.5; } } part { name: "bar"; type: IMAGE; clip_to: "fract_clip"; description { state: "default" 0.0; rel1.to_x: "ins0"; rel1.to_y: "bg"; rel1.relative: 0.5 0.2; rel2.to_x: "barend"; rel2.to_y: "bg"; rel2.relative: 0.9 0.8; image.normal: "inset_bar_horiz_glow_base.png"; image.border: 0 0 0 0; } description { state: "inv" 0.0; inherit: "default" 0.0; rel1.to_x: "barend"; rel1.relative: 0.5 0.2; rel2.to_x: "ins1"; rel2.relative: 0.9 0.8; image.normal: "inset_bar_horiz_glow_inv_base.png"; image.border: 0 0 0 0; } } part { name: "insidep0"; type: SPACER; scale: 1; description { state: "default" 0.0; fixed: 1 0; min: 20 10; rel1.to_x: "inside"; rel1.relative: 0.0 0.0; rel2.to_x: "inside"; rel2.relative: 0.0 1.0; align: 1.0 0.5; } } part { name: "insidep1"; type: SPACER; scale: 1; description { state: "default" 0.0; fixed: 1 0; min: 20 10; rel1.to_x: "inside"; rel1.relative: 1.0 0.0; rel2.to_x: "inside"; rel2.relative: 1.0 1.0; align: 0.0 0.5; } } part { name: "pulse"; clip_to: "pulse_clip"; scale: 1; description { state: "default" 0.0; fixed: 1 1; min: 64 10; max: 64 10; rel1.to_x: "insidep0"; rel1.to_y: "bar"; rel1.relative: 0.0 0.0; rel2.to_x: "insidep1"; rel2.to_y: "bar"; rel2.relative: 1.0 1.0; image.normal: "inset_bar_horiz_glow_mid_base.png"; align: 0.0 0.5; } description { state: "end" 0.0; inherit: "default" 0.0; align: 1.0 0.5; } } part { name: "elm.text.status"; type: TEXT; mouse_events: 0; scale: 1; description { state: "default" 0.0; fixed: 1 1; rel1.to: "inside"; rel2.to: "inside"; color_class: "progress_status"; align: 1.0 0.5; text { font: FN; size: 6; min: 0 1; text_class: "progress_status"; align: 1.0 0.5; } color: FN_COL_HIGHLIGHT_CLICKED; visible: 1; } description { state: "hidden" 0.0; inherit: "default" 0.0; visible: 0; } } } programs { program { name: "inverted-on"; signal: "elm,state,inverted,on"; source: "elm"; action: STATE_SET "inv" 0.0; target: "bar"; target: "barend"; } program { name: "inverted-off"; signal: "elm,state,inverted,off"; source: "elm"; action: STATE_SET "default" 0.0; target: "bar"; target: "barend"; } program { name: "pulse-mode0"; signal: "elm,state,pulse"; source: "elm"; action: STATE_SET "hidden" 0.0; target: "elm.text.status"; after: "pulse-mode1"; } program { name: "pulse-mode1"; signal: "elm,state,pulse,start"; source: "elm"; action: STATE_SET "pulse" 0.0; target: "fract_clip"; } program { name: "pulse-start"; signal: "elm,state,pulse,start"; source: "elm"; action: STATE_SET "pulse" 0.0; target: "pulse_clip"; target: "fract_clip"; after: "pulse0"; } program { name: "pulse0"; action: STATE_SET "end" 0.0; transition: SINUSOIDAL 0.8; target: "pulse"; after: "pulse1"; } program { name: "pulse1"; action: STATE_SET "default" 0.0; transition: SINUSOIDAL 0.8; target: "pulse"; after: "pulse0"; } program { name: "fraction"; signal: "elm,state,fraction"; source: "elm"; action: STATE_SET "default" 0.0; target: "elm.text.status"; after: "pulse-stop"; } program { name: "elmpulse-stop"; signal: "elm,state,pulse,stop"; source: "elm"; action: ACTION_STOP; target: "pulse0"; target: "pulse1"; after: "pulse-stop"; } program { name: "pulse-stop"; action: STATE_SET "default" 0.0; target: "pulse_clip"; } program { name: "units-visible"; signal: "elm,state,units,visible"; source: "elm"; action: STATE_SET "default" 0.0; target: "elm.text.status"; } program { name: "units-hidden"; signal: "elm,state,units,hidden"; source: "elm"; action: STATE_SET "hidden" 0.0; target: "elm.text.status"; } program { name: "text-visible"; signal: "elm,state,text,visible"; source: "elm"; script { new m = get_int(slmode); m |= LABEL; set_int(slmode, m); eval_mode(m); } } program { name: "text-hidden"; signal: "elm,state,text,hidden"; source: "elm"; script { new m = get_int(slmode); m &= ~LABEL; set_int(slmode, m); eval_mode(m); } } program { name: "icon-visible"; signal: "elm,state,icon,visible"; source: "elm"; script { new m = get_int(slmode); m |= ICON; set_int(slmode, m); eval_mode(m); } } program { name: "icon-hidden"; signal: "elm,state,icon,hidden"; source: "elm"; script { new m = get_int(slmode); m &= ~ICON; set_int(slmode, m); eval_mode(m); } } program { name: "state-disabled"; signal: "elm,state,disabled"; source: "elm"; script { new m = get_int(slmode); m |= DISABLE; set_int(slmode, m); eval_mode(m); } } program { name: "state-enabled"; signal: "elm,state,enabled"; source: "elm"; script { new m = get_int(slmode); m &= ~DISABLE; set_int(slmode, m); eval_mode(m); } } } #undef ICON #undef LABEL #undef UNITS #undef DISABLE } group { name: "elm/progressbar/vertical/default"; images.image: "inset_bar_vert_base.png" COMP; images.image: "inset_bar_vert_glow_base.png" COMP; images.image: "inset_bar_vert_glow_inv_base.png" COMP; images.image: "inset_bar_vert_glow_mid_base.png" COMP; #define ICON 1 #define LABEL 2 #define DISABLE 4 script { public slmode; public eval_mode(m) { new ic = m & ICON; new l = m & LABEL; new d = m & DISABLE; if (l) { if (!d) { set_state(PART:"elm.text", "visible", 0.0); } else { set_state(PART:"elm.text", "disabled_visible", 0.0); } } else { set_state(PART:"elm.text", "default", 0.0); } if (ic) { set_state(PART:"elm.swallow.content", "visible", 0.0); set_state(PART:"sizer.content", "visible", 0.0); } else { set_state(PART:"elm.swallow.content", "default", 0.0); set_state(PART:"sizer.content", "default", 0.0); } if (!d) { set_state(PART:"dis_clip", "default", 0.0); } else { set_state(PART:"dis_clip", "disabled", 0.0); } } } parts { part { name: "dis_clip"; type: RECT; description { state: "default" 0.0; rel1.to: "elm.swallow.content"; rel2.to: "elm.swallow.content"; } description { state: "disabled" 0.0; inherit: "default" 0.0; color: 255 255 255 64; } } part { name: "pulse_clip"; type: RECT; description { state: "default" 0.0; rel1.relative: -2.0 -2.0; rel2.relative: 3.0 3.0; visible: 0; } description { state: "pulse" 0.0; inherit: "default" 0.0; visible: 1; } } part { name: "fract_clip"; type: RECT; description { state: "default" 0.0; rel1.relative: -2.0 -2.0; rel2.relative: 3.0 3.0; } description { state: "pulse" 0.0; inherit: "default" 0.0; visible: 0; } } part { name: "elm.swallow.content"; type: SWALLOW; clip_to: "dis_clip"; description { state: "default" 0.0; visible: 0; align: 0.5 0.0; rel1.offset: 2 0; rel2.offset: -3 -1; rel2.relative: 1.0 0.0; } description { state: "visible" 0.0; inherit: "default" 0.0; visible: 1; aspect: 1.0 1.0; aspect_preference: HORIZONTAL; rel1.offset: 2 2; rel2.offset: -3 2; } } 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: 6; min: 0 0; text_class: "progressbar_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"; } } } part { name: "elm.text"; type: TEXT; mouse_events: 0; scale: 1; description { state: "default" 0.0; fixed: 1 1; align: 0.5 0.0; rel1.to_y: "elm.swallow.content"; rel1.relative: 0.0 1.0; rel1.offset: 2 -1; rel2.to_y: "elm.swallow.content"; rel2.relative: 1.0 1.0; rel2.offset: -3 -1; color: FN_COL_DEFAULT; color_class: "progressbar_text"; text { font: FN; size: 6; text_class: "progressbar"; min: 0 0; align: 0.5 0.0; } visible: 0; } description { state: "visible" 0.0; inherit: "default" 0.0; fixed: 0 1; visible: 1; rel1.offset: 2 2; rel2.offset: -3 2; text.min: 1 1; text.ellipsis: -1; } description { state: "disabled_visible" 0.0; inherit: "visible" 0.0; color_class: "progressbar_text_disabled"; color: FN_COL_DISABLE; } } part { name: "bg"; scale: 1; description { state: "default" 0.0; min: 10 10; max: 10 -1; rel1.to_y: "elm.text"; rel1.relative: 0.0 1.0; rel1.offset: 3 3; rel2.offset: -4 -4; image.normal: "inset_bar_vert_base.png"; image.border: 0 0 32 32; image.border_scale_by: 0.25; image.border_scale: 1; } } part { name: "ins0"; type: SPACER; scale: 1; description { state: "default" 0.0; fixed: 0 1; rel1.to: "bg"; rel2.to: "bg"; rel2.relative: 1.0 0.0; min: 10 5; align: 0.5 0.0; } } part { name: "ins1"; type: SPACER; scale: 1; description { state: "default" 0.0; fixed: 0 1; rel1.to: "bg"; rel1.relative: 0.0 1.0; rel2.to: "bg"; min: 10 5; align: 0.5 1.0; } } part { name: "inside"; type: SPACER; description { state: "default" 0.0; min: 4 4; rel1.to: "ins0"; rel1.relative: 0.0 1.0; rel2.to: "ins1"; rel2.relative: 1.0 0.0; } } part { name: "elm.swallow.bar"; type: SWALLOW; mouse_events: 0; description { state: "default" 0.0; rel1.to: "inside"; rel2.to: "inside"; } } part { name: "elm.cur.progressbar"; mouse_events: 0; type: SPACER; scale: 1; dragable.confine: "inside"; dragable.x: 0 0 0; dragable.y: 1 1 1; description { state: "default" 0.0; fixed: 1 1; min: 4 8; max: 4 8; rel1.to: "inside"; rel2.to: "inside"; } } part { name: "barend"; type: SPACER; scale: 1; description { state: "default" 0.0; fixed: 0 1; min: 16 14; rel1.to_y: "elm.cur.progressbar"; rel1.relative: 0.0 1.0; rel2.to_y: "elm.cur.progressbar"; rel2.relative: 1.0 1.0; align: 0.5 0.0; } description { state: "inv" 0.0; inherit: "default" 0.0; rel1.relative: 0.0 0.0; rel2.relative: 1.0 0.0; align: 0.5 1.0; } } part { name: "bar"; clip_to: "fract_clip"; scale: 1; description { state: "default" 0.0; rel1.to_y: "ins0"; rel1.to_x: "bg"; rel1.relative: -0.25 (12/16); rel2.to_y: "barend"; rel2.to_x: "bg"; rel2.relative: 1.25 1.0; image.normal: "inset_bar_vert_glow_base.png"; image.border: 0 0 0 72; image.border_scale_by: 0.25; image.border_scale: 1; } description { state: "inv" 0.0; inherit: "default" 0.0; rel1.to_y: "barend"; rel1.relative: -0.25 0.0; rel2.to_y: "ins1"; rel2.relative: 1.25 (4/16); image.normal: "inset_bar_vert_glow_inv_base.png"; image.border: 0 0 72 0; } } part { name: "insidep0"; type: SPACER; scale: 1; description { state: "default" 0.0; fixed: 0 1; min: 16 20; rel1.to_y: "inside"; rel1.relative: 0.0 0.0; rel2.to_y: "inside"; rel2.relative: 1.0 0.0; align: 0.5 1.0; } } part { name: "insidep1"; type: SPACER; scale: 1; description { state: "default" 0.0; fixed: 0 1; min: 16 20; rel1.to_y: "inside"; rel1.relative: 0.0 1.0; rel2.to_y: "inside"; rel2.relative: 1.0 1.0; align: 0.5 0.0; } } part { name: "pulse"; clip_to: "pulse_clip"; scale: 1; description { state: "default" 0.0; fixed: 1 1; min: 24 64; max: 24 64; rel1.to_y: "insidep0"; rel1.to_x: "bar"; rel1.relative: 0.0 0.0; rel2.to_y: "insidep1"; rel2.to_x: "bar"; rel2.relative: 1.0 1.0; image.normal: "inset_bar_vert_glow_mid_base.png"; align: 0.5 0.0; } description { state: "end" 0.0; inherit: "default" 0.0; align: 0.5 1.0; } } part { name: "statbox"; type: SPACER; scale: 1; description { state: "default" 0.0; fixed: 1 1; rel1.to: "inside"; rel2.to: "inside"; aspect: 1.0 1.0; aspect_preference: NONE; } } part { name: "elm.text.status"; type: TEXT; mouse_events: 0; scale: 1; description { state: "default" 0.0; fixed: 1 1; rel1.to: "statbox"; rel2.to: "statbox"; color_class: "progress_status"; align: 1.0 0.5; text { font: FN; size: 6; min: 0 1; text_class: "progress_status"; align: 1.0 0.5; } color: FN_COL_HIGHLIGHT_CLICKED; visible: 1; map.on: 1; map.smooth: 0; map.rotation.center: "statbox"; map.rotation.z: 90; } description { state: "hidden" 0.0; inherit: "default" 0.0; visible: 0; } } } programs { program { name: "inverted-on"; signal: "elm,state,inverted,on"; source: "elm"; action: STATE_SET "inv" 0.0; target: "bar"; target: "barend"; } program { name: "inverted-off"; signal: "elm,state,inverted,off"; source: "elm"; action: STATE_SET "default" 0.0; target: "bar"; target: "barend"; } program { name: "pulse-mode0"; signal: "elm,state,pulse"; source: "elm"; action: STATE_SET "hidden" 0.0; target: "elm.text.status"; after: "pulse-mode1"; } program { name: "pulse-mode1"; signal: "elm,state,pulse,start"; source: "elm"; action: STATE_SET "pulse" 0.0; target: "fract_clip"; } program { name: "pulse-start"; signal: "elm,state,pulse,start"; source: "elm"; action: STATE_SET "pulse" 0.0; target: "pulse_clip"; target: "fract_clip"; after: "pulse0"; } program { name: "pulse0"; action: STATE_SET "end" 0.0; transition: SINUSOIDAL 0.8; target: "pulse"; after: "pulse1"; } program { name: "pulse1"; action: STATE_SET "default" 0.0; transition: SINUSOIDAL 0.8; target: "pulse"; after: "pulse0"; } program { name: "fraction"; signal: "elm,state,fraction"; source: "elm"; action: STATE_SET "default" 0.0; target: "elm.text.status"; after: "pulse-stop"; } program { name: "elmpulsestop"; signal: "elm,state,pulse,stop"; source: "elm"; action: ACTION_STOP; target: "pulse0"; target: "pulse1"; after: "pulse-stop"; } program { name: "pulse-stop"; action: STATE_SET "default" 0.0; target: "pulse_clip"; } program { name: "unit-visible"; signal: "elm,state,units,visible"; source: "elm"; action: STATE_SET "default" 0.0; target: "elm.text.status"; } program { name: "unit-hidden"; signal: "elm,state,units,hidden"; source: "elm"; action: STATE_SET "hidden" 0.0; target: "elm.text.status"; } program { name: "text-visible"; signal: "elm,state,text,visible"; source: "elm"; script { new m = get_int(slmode); m |= LABEL; set_int(slmode, m); eval_mode(m); } } program { name: "text-hidden"; signal: "elm,state,text,hidden"; source: "elm"; script { new m = get_int(slmode); m &= ~LABEL; set_int(slmode, m); eval_mode(m); } } program { name: "icon-visible"; signal: "elm,state,icon,visible"; source: "elm"; script { new m = get_int(slmode); m |= ICON; set_int(slmode, m); eval_mode(m); } } program { name: "icon-hidden"; signal: "elm,state,icon,hidden"; source: "elm"; script { new m = get_int(slmode); m &= ~ICON; set_int(slmode, m); eval_mode(m); } } program { name: "elmdisabled"; signal: "elm,state,disabled"; source: "elm"; script { new m = get_int(slmode); m |= DISABLE; set_int(slmode, m); eval_mode(m); } } program { name: "elmenabled"; signal: "elm,state,enabled"; source: "elm"; script { new m = get_int(slmode); m &= ~DISABLE; set_int(slmode, m); eval_mode(m); } } } #undef ICON #undef LABEL #undef UNITS #undef DISABLE } group { name: "elm/progressbar/horizontal/wheel"; alias: "elm/progressbar/vertical/wheel"; images.image: "knob_round_busy.png" COMP; images.image: "glow_round_corners.png" COMP; parts { part { name: "elm.swallow.bar" ; type: SWALLOW; mouse_events: 0; description { state: "default" 0.0; min: 0 0; max: 0 0; visible: 0; } } part { name: "elm.swallow.content"; type: SWALLOW; description { state: "default" 0.0; min: 0 0; max: 0 0; visible: 0; } } part { name: "busy_clip"; type: RECT; description { state: "default" 0.0; visible: 0; color: 255 255 255 0; } description { state: "active" 0.0; visible: 1; color: 255 255 255 255; } } part { name: "knob"; mouse_events: 0; scale: 1; description { state: "default" 0.0; image.normal: "knob_round_busy.png"; min: 40 40; max: 40 40; } } part { name: "knob_spinner"; mouse_events: 0; clip_to: "busy_clip"; description { state: "default" 0.0; fixed: 1 1; rel1.to: "knob"; rel2.to: "knob"; image.normal: "glow_round_corners.png"; map.on: 1; map.smooth: 1; map.rotation.center: "knob"; } description { state: "spin" 0.0; inherit: "default" 0.0; map.rotation.z: 360; } } } programs { program { name: "spin"; signal: "elm,state,pulse,start"; source: "elm"; action: STATE_SET "spin" 0.0; transition: LINEAR 1.0; target: "knob_spinner"; after: "spin2"; } program { name: "spin2"; action: STATE_SET "default" 0.0; target: "knob_spinner"; after: "spin"; } program { signal: "elm,state,pulse,start"; source: "elm"; action: STATE_SET "active" 0.0; transition: SINUSOIDAL 0.25; target: "busy_clip"; } program { signal: "elm,state,pulse,stop"; source: "elm"; action: STATE_SET "default" 0.0; transition: SINUSOIDAL 1.0; target: "busy_clip"; after: "spin3"; } program { name: "spin3"; action: ACTION_STOP; target: "spin"; target: "spin2"; after: "spin4"; } program { name: "spin4"; action: STATE_SET "default" 0.0; target: "knob_spinner"; } } }