/** Group: efl/scroller (@since 1.23) Part Rectangle: efl.draggable.horizontal_bar (required) Part Rectangle: efl.draggable.vertical_bar (required) Part Swallow: efl.background (required) Part Swallow: efl.content (required) Part Swallow: efl.overlay (required) Signal: efl,action,scroll Signal: efl,horizontal_bar,visible,off Signal: efl,horizontal_bar,visible,on Signal: efl,vertical_bar,visible,off Signal: efl,vertical_bar,visible,on Group: efl/scroller:noclip (@since 1.23) Part Rectangle: efl.draggable.horizontal_bar (required) Part Rectangle: efl.draggable.vertical_bar (required) Part Swallow: efl.background (required) Part Swallow: efl.content (required) Part Swallow: efl.overlay (required) Signal: efl,action,scroll Signal: efl,horizontal_bar,visible,off Signal: efl,horizontal_bar,visible,on Signal: efl,vertical_bar,visible,off Signal: efl,vertical_bar,visible,on Group: efl/scroller:popup/no_inset_shadow (@since 1.23) Part Rectangle: efl.draggable.horizontal_bar (required) Part Rectangle: efl.draggable.vertical_bar (required) Part Swallow: efl.background (required) Part Swallow: efl.content (required) Part Swallow: efl.overlay (required) Signal: efl,action,scroll Signal: efl,horizontal_bar,visible,off Signal: efl,horizontal_bar,visible,on Signal: efl,vertical_bar,visible,off Signal: efl,vertical_bar,visible,on */ group { name: "efl/scroller"; data.item: "version" "123"; images.image: "shadow_circle_horiz.png" COMP; images.image: "shadow_circle_vert.png" COMP; data.item: "focus_highlight" "on"; parts { program { signal: "load"; source: ""; script { emit("reload", "efl"); } } ////////////////////////////////////////////////////////////////////// part { name: "bg"; type: RECT; description { state: "default" 0.0; rel.to: "efl.background"; color: 0 0 0 0; color_class: "scroller_bg"; } } part { name: "clipper"; type: RECT; description { state: "default" 0.0; rel.to: "efl.background"; } } part { name: "efl.background"; type: SWALLOW; // scale: 1; clip_to: "clipper"; description { state: "default" 0.0; // rel1.offset: 2 2; // rel2.offset: -3 -3; // offscale; } } part { name: "efl.content"; type: SWALLOW; clip_to: "clipper"; description { state: "default" 0.0; rel.to: "efl.background"; } } part { name: "efl.overlay"; type: SWALLOW; clip_to: "clipper"; description { state: "default" 0.0; rel.to: "efl.content"; } } part { name: "sh_top"; mouse_events: 0; scale: 1; clip_to: "sh_clip"; description { state: "default" 0.0; color: 255 255 255 0; rel.to: "efl.content"; rel1.offset: 0 -1; rel2.offset: -1 -1; rel2.relative: 1.0 0.0; image.normal: "shadow_circle_horiz.png"; visible: 0; offscale; } description { state: "visible" 0.0; inherit: "default" 0.0; color: 255 255 255 128; rel1.offset: 0 -16; rel2.offset: -1 15; visible: 1; } } program { signal: "efl,action,show,up"; source: "efl"; action: STATE_SET "visible" 0.0; transition: DECELERATE 0.3; target: "sh_top"; } program { signal: "efl,action,hide,up"; source: "efl"; action: STATE_SET "default" 0.0; transition: DECELERATE 0.3; target: "sh_top"; } part { name: "sh_bottom"; mouse_events: 0; scale: 1; clip_to: "sh_clip"; description { state: "default" 0.0; color: 255 255 255 0; rel.to: "efl.content"; rel1.relative: 0.0 1.0; rel1.offset: 0 0; rel2.offset: -1 0; image.normal: "shadow_circle_horiz.png"; visible: 0; offscale; } description { state: "visible" 0.0; inherit: "default" 0.0; color: 255 255 255 128; rel1.offset: 0 -16; rel2.offset: -1 15; visible: 1; } } program { signal: "efl,action,show,down"; source: "efl"; action: STATE_SET "visible" 0.0; transition: DECELERATE 0.3; target: "sh_bottom"; } program { signal: "efl,action,hide,down"; source: "efl"; action: STATE_SET "default" 0.0; transition: DECELERATE 0.3; target: "sh_bottom"; } part { name: "sh_left"; mouse_events: 0; scale: 1; clip_to: "sh_clip"; description { state: "default" 0.0; color: 255 255 255 0; rel.to: "efl.content"; rel1.offset: -1 0; rel2.offset: -1 -1; rel2.relative: 0.0 1.0; image.normal: "shadow_circle_vert.png"; visible: 0; offscale; } description { state: "visible" 0.0; inherit: "default" 0.0; color: 255 255 255 128; rel1.offset: -16 0; rel2.offset: 15 -1; visible: 1; } } program { signal: "efl,action,show,left"; source: "efl"; action: STATE_SET "visible" 0.0; transition: DECELERATE 0.3; target: "sh_left"; } program { signal: "efl,action,hide,left"; source: "efl"; action: STATE_SET "default" 0.0; transition: DECELERATE 0.3; target: "sh_left"; } part { name: "sh_right"; mouse_events: 0; scale: 1; clip_to: "sh_clip"; description { state: "default" 0.0; color: 255 255 255 0; rel.to: "efl.content"; rel1.relative: 1.0 0.0; rel1.offset: 0 0; rel2.offset: 0 -1; image.normal: "shadow_circle_vert.png"; visible: 0; offscale; } description { state: "visible" 0.0; inherit: "default" 0.0; color: 255 255 255 128; rel1.offset: -16 0; rel2.offset: 15 -1; visible: 1; } } program { signal: "efl,action,show,right"; source: "efl"; action: STATE_SET "visible" 0.0; transition: DECELERATE 0.3; target: "sh_right"; } program { signal: "efl,action,hide,right"; source: "efl"; action: STATE_SET "default" 0.0; transition: DECELERATE 0.3; target: "sh_right"; } part { name: "sh_clip"; type: RECT; description { state: "default" 0.0; rel.to: "efl.background"; } } ////////////////////////////////////////////////////////////////////// // vert bar //////////////////////////////////////////////////////////////// part { name: "sb_vbar_show"; type: RECT; description { state: "default" 0.0; } description { state: "hidden" 0.0; inherit: "default" 0.0; visible: 0; } } part { name: "sb_vbar"; type: RECT; scale: 1; description { state: "default" 0.0; fixed: 1 1; min: 15 1; align: 1.0 0.0; rel1.relative: 1.0 0.0; rel1.offset: -1 0; rel2.relative: 1.0 0.0; rel2.to_y: "sb_hbar"; } description { state: "hidden" 0.0; inherit: "default" 0.0; min: 0 0; max: 0 999999; } } part { name: "sb_vbar_p1"; type: RECT; clip_to: "sb_vbar"; description { state: "default" 0.0; color: 0 0 0 0; rel1.to: "sb_vbar"; rel2.relative: 1.0 0.0; rel2.to: "efl.draggable.vertical_bar"; fixed: 1 1; } } part { name: "sb_vbar_p2"; type: RECT; clip_to: "sb_vbar"; description { state: "default" 0.0; color: 0 0 0 0; rel1.relative: 0.0 1.0; rel1.to: "efl.draggable.vertical_bar"; rel2.to: "sb_vbar"; fixed: 1 1; } } part { name: "efl.draggable.vertical_bar"; type: RECT; clip_to: "sb_vbar"; scale: 1; dragable.x: 0 0 0; dragable.y: 1 1 0; dragable.confine: "sb_vbar"; description { state: "default" 0.0; fixed: 1 1; min: 15 15; rel1.relative: 0.5 0.5; rel1.to: "sb_vbar"; rel2.relative: 0.5 0.5; rel2.to: "sb_vbar"; color: 0 0 0 0; } description { state: "hidden" 0.0; inherit: "default" 0.0; min: 0 0; } description { state: "clicked" 0.0; inherit: "default" 0.0; } } part { name: "sb_vbar_over"; type: RECT; repeat_events: 1; scale: 1; description { state: "default" 0.0; color: 0 0 0 0; rel1.to: "sb_vbar"; rel1.offset: -45 0; rel2.to: "sb_vbar"; fixed: 1 1; offscale; } } program { signal: "mouse,in"; source: "sb_vbar_over"; action: STATE_SET "over" 0.0; transition: DECELERATE 0.2; target: "base_vbar"; } program { signal: "mouse,out"; source: "sb_vbar_over"; action: STATE_SET "default" 0.0; transition: DECELERATE 0.2; target: "base_vbar"; } part { name: "y_vbar_up_mapper"; type: SPACER; scale: 1; repeat_events: 1; description { state: "default" 0.0; min: 4 2; max: 4 2; fixed: 1 1; align: 0.0 0.0; rel1.to: "sb_vbar"; rel2.to: "sb_vbar"; } description { state: "hidden" 0.0; inherit: "default" 0.0; min: 0 0; max: 0 0; } } part { name: "y_vbar_up"; type: SPACER; scale: 1; repeat_events: 1; description { state: "default" 0.0; min: 4 2; max: 4 2; fixed: 1 1; align: 0.0 0.0; rel1.to: "efl.draggable.vertical_bar"; rel2.to: "efl.draggable.vertical_bar"; } description { state: "hidden" 0.0; inherit: "default" 0.0; min: 0 0; max: 0 0; } } part { name: "y_vbar_down_mapper"; type: SPACER; scale: 1; repeat_events: 1; description { state: "default" 0.0; min: 4 2; max: 4 2; fixed: 1 1; align: 0.0 1.0; rel1.to: "sb_vbar"; rel2.to: "sb_vbar"; } description { state: "hidden" 0.0; inherit: "default" 0.0; min: 0 0; max: 0 0; } } part { name: "y_vbar_down"; type: SPACER; scale: 1; repeat_events: 1; description { state: "default" 0.0; min: 4 2; max: 4 2; fixed: 1 1; align: 0.0 1.0; rel1.to: "efl.draggable.vertical_bar"; rel2.to: "efl.draggable.vertical_bar"; } description { state: "hidden" 0.0; inherit: "default" 0.0; min: 0 0; max: 0 0; } } program { signal: "efl,vertical_bar,visible,on"; source: "efl"; action: STATE_SET "default" 0.0; target: "sb_vbar"; target: "sb_vbar_show"; target: "efl.draggable.vertical_bar"; target: "y_vbar_up_mapper"; target: "y_vbar_up"; target: "y_vbar_down_mapper"; target: "y_vbar_down"; } program { signal: "efl,vertical_bar,visible,off"; source: "efl"; action: STATE_SET "hidden" 0.0; target: "sb_vbar"; target: "sb_vbar_show"; target: "efl.draggable.vertical_bar"; target: "y_vbar_up_mapper"; target: "y_vbar_up"; target: "y_vbar_down_mapper"; target: "y_vbar_down"; } program { signal: "mouse,down,1*"; source: "sb_vbar_p1"; action: DRAG_VAL_PAGE 0.0 -1.0; target: "efl.draggable.vertical_bar"; } program { signal: "mouse,down,1*"; source: "sb_vbar_p2"; action: DRAG_VAL_PAGE 0.0 1.0; target: "efl.draggable.vertical_bar"; } // program { signal: "efl,action,show,up"; source: "efl"; // } // program { signal: "efl,action,show,down"; source: "efl"; // } // program { signal: "efl,action,hide,up"; source: "efl"; // } // program { signal: "efl,action,hide,down"; source: "efl"; // } // program { signal: "efl,action,scroll"; source: "efl"; // } // program { signal: "efl,loop_y,set"; source: "efl"; // } // program { signal: "efl,loop_y,unset"; source: "efl"; // } // horiz bar ///////////////////////////////////////////////////////////// part { name: "sb_hbar_show"; type: RECT; description { state: "default" 0.0; } description { state: "hidden" 0.0; inherit: "default" 0.0; visible: 0; } } part { name: "sb_hbar"; type: RECT; mouse_events: 0; scale: 1; description { state: "default" 0.0; fixed: 1 1; min: 1 15; align: 0.0 1.0; rel1.relative: 0.0 1.0; rel1.offset: 0 -1; rel2.relative: 0.0 1.0; rel2.to_x: "sb_vbar"; } description { state: "hidden" 0.0; inherit: "default" 0.0; min: 0 0; max: 999999 0; } } part { name: "sb_hbar_p1"; type: RECT; clip_to: "sb_hbar"; description { state: "default" 0.0; color: 0 0 0 0; rel1.to: "sb_hbar"; rel2.relative: 0.0 1.0; rel2.to: "efl.draggable.horizontal_bar"; fixed: 1 1; } } part { name: "sb_hbar_p2"; type: RECT; clip_to: "sb_hbar"; description { state: "default" 0.0; color: 0 0 0 0; rel1.relative: 1.0 0.0; rel1.to: "efl.draggable.horizontal_bar"; rel2.to: "sb_hbar"; fixed: 1 1; } } part { name: "efl.draggable.horizontal_bar"; type: RECT; scale: 1; clip_to: "sb_hbar"; dragable.x: 1 1 0; dragable.y: 0 0 0; dragable.confine: "sb_hbar"; description { state: "default" 0.0; fixed: 1 1; min: 15 15; rel1.relative: 0.5 0.5; rel1.to: "sb_hbar"; rel2.relative: 0.5 0.5; rel2.to: "sb_hbar"; color: 0 0 0 0; } description { state: "hidden" 0.0; inherit: "default" 0.0; min: 0 0; } description { state: "clicked" 0.0; inherit: "default" 0.0; } } part { name: "sb_hbar_over"; type: RECT; repeat_events: 1; scale: 1; description { state: "default" 0.0; color: 0 0 0 0; rel1.to: "sb_hbar"; rel1.offset: 0 -45; rel2.to: "sb_hbar"; fixed: 1 1; offscale; } } program { signal: "mouse,in"; source: "sb_hbar_over"; action: STATE_SET "over" 0.0; transition: DECELERATE 0.2; target: "base_hbar"; } program { signal: "mouse,out"; source: "sb_hbar_over"; action: STATE_SET "default" 0.0; transition: DECELERATE 0.2; target: "base_hbar"; } part { name: "x_hbar_left_mapper"; type: SPACER; scale: 1; repeat_events: 1; description { state: "default" 0.0; min: 2 4; max: 2 4; fixed: 1 1; align: 0.0 1.0; rel1.to: "sb_hbar"; rel2.to: "sb_hbar"; } description { state: "hidden" 0.0; inherit: "default" 0.0; min: 0 0; max: 0 0; } } part { name: "x_hbar_left"; type: SPACER; scale: 1; repeat_events: 1; description { state: "default" 0.0; min: 2 4; max: 2 4; fixed: 1 1; align: 0.0 1.0; rel1.to: "efl.draggable.horizontal_bar"; rel2.to: "efl.draggable.horizontal_bar"; } description { state: "hidden" 0.0; inherit: "default" 0.0; min: 0 0; max: 0 0; } } part { name: "x_hbar_right_mapper"; type: SPACER; scale: 1; repeat_events: 1; description { state: "default" 0.0; min: 2 4; max: 2 4; fixed: 1 1; align: 1.0 1.0; rel1.to: "sb_hbar"; rel2.to: "sb_hbar"; } description { state: "hidden" 0.0; inherit: "default" 0.0; min: 0 0; max: 0 0; } } part { name: "x_hbar_right"; type: SPACER; scale: 1; repeat_events: 1; description { state: "default" 0.0; min: 2 4; max: 2 4; fixed: 1 1; align: 1.0 1.0; rel1.to: "efl.draggable.horizontal_bar"; rel2.to: "efl.draggable.horizontal_bar"; } description { state: "hidden" 0.0; inherit: "default" 0.0; min: 0 0; max: 0 0; } } program { signal: "efl,horizontal_bar,visible,on"; source: "efl"; action: STATE_SET "default" 0.0; target: "sb_hbar"; target: "sb_hbar_show"; target: "efl.draggable.horizontal_bar"; target: "x_hbar_left_mapper"; target: "x_hbar_left"; target: "x_hbar_right_mapper"; target: "x_hbar_right"; } program { signal: "efl,horizontal_bar,visible,off"; source: "efl"; action: STATE_SET "hidden" 0.0; target: "sb_hbar"; target: "sb_hbar_show"; target: "efl.draggable.horizontal_bar"; target: "x_hbar_left_mapper"; target: "x_hbar_left"; target: "x_hbar_right_mapper"; target: "x_hbar_right"; } program { signal: "mouse,down,1*"; source: "sb_hbar_p1"; action: DRAG_VAL_PAGE -1.0 0.0; target: "efl.draggable.horizontal_bar"; } program { signal: "mouse,down,1*"; source: "sb_hbar_p2"; action: DRAG_VAL_PAGE 1.0 0.0; target: "efl.draggable.horizontal_bar"; } // program { signal: "efl,action,show,left"; source: "efl"; // } // program { signal: "efl,action,show,right"; source: "efl"; // } // program { signal: "efl,action,hide,left"; source: "efl"; // } // program { signal: "efl,action,hide,right"; source: "efl"; // } // program { signal: "efl,action,scroll"; source: "efl"; // } // program { signal: "efl,loop_x,set"; source: "efl"; // } // program { signal: "efl,loop_x,unset"; source: "efl"; // } ////////////////////////////////////////////////////////////////////// part { name: "color_vbar"; type: RECT; mouse_events: 0; clip_to: "sb_vbar_show"; description { state: "default" 0.0; fixed: 1 1; color: 51 153 255 255; } description { state: "disabled" 0.0; inherit: "default" 0.0; color: 80 80 80 255; } description { state: "clicked" 0.0; inherit: "default" 0.0; color: 255 255 255 255; } } part { name: "base_vbar"; type: RECT; mouse_events: 0; scale: 1; clip_to: "color_vbar"; description { state: "default" 0.0; fixed: 1 1; rel.to: "efl.draggable.vertical_bar"; min: 5 15; max: 5 999999; align: 1.0 0.5; } description { state: "over" 0.0; inherit: "default" 0.0; min: 15 15; max: 15 999999; } } ////////////////////////////////////////////////////////////////////// part { name: "color_hbar"; type: RECT; mouse_events: 0; clip_to: "sb_hbar_show"; description { state: "default" 0.0; fixed: 1 1; color: 51 153 255 255; } description { state: "disabled" 0.0; inherit: "default" 0.0; color: 80 80 80 255; } description { state: "clicked" 0.0; inherit: "default" 0.0; color: 255 255 255 255; } } part { name: "base_hbar"; type: RECT; mouse_events: 0; scale: 1; clip_to: "color_hbar"; description { state: "default" 0.0; fixed: 1 1; rel.to: "efl.draggable.horizontal_bar"; min: 15 5; max: 999999 5; align: 0.5 1.0; } description { state: "over" 0.0; inherit: "default" 0.0; min: 15 15; max: 999999 15; } } ////////////////////////////////////////////////////////////////////// part { name: "dim_effect"; type: RECT; mouse_events: 0; description { state: "default" 0.0; color: 0 0 0 0; } description { state: "effect" 0.0; color: 32 32 32 255; } } } programs { program { signal: "efl,state,disabled"; source: "efl"; action: STATE_SET "disabled" 0.0; target: "color_hbar"; target: "color_vbar"; } program { signal: "efl,state,enabled"; source: "efl"; action: STATE_SET "default" 0.0; target: "color_hbar"; target: "color_vbar"; } program { signal: "mouse,down,1*"; source: "efl.draggable.vertical_bar"; action: STATE_SET "clicked" 0.0; target: "efl.draggable.vertical_bar"; target: "color_vbar"; } program { signal: "mouse,down,*"; source: "efl.draggable.vertical_bar"; action: SIGNAL_EMIT "efl,vertical_bar,press" "efl"; } program { signal: "mouse,up,1"; source: "efl.draggable.vertical_bar"; action: STATE_SET "default" 0.0; target: "efl.draggable.vertical_bar"; target: "color_vbar"; } program { signal: "mouse,up,*"; source: "efl.draggable.vertical_bar"; action: SIGNAL_EMIT "efl,vertical_bar,unpress" "efl"; } program { signal: "mouse,down,1*"; source: "efl.draggable.horizontal_bar"; action: STATE_SET "clicked" 0.0; target: "efl.draggable.horizontal_bar"; target: "color_hbar"; } program { signal: "mouse,down,*"; source: "efl.draggable.horizontal_bar"; action: SIGNAL_EMIT "efl,horizontal_bar,press" "efl"; } program { signal: "mouse,up,1"; source: "efl.draggable.horizontal_bar"; action: STATE_SET "default" 0.0; target: "efl.draggable.horizontal_bar"; target: "color_hbar"; } program { signal: "mouse,up,*"; source: "efl.draggable.horizontal_bar"; action: SIGNAL_EMIT "efl,horizontal_bar,unpress" "efl"; } program { signal: "efl,action,looping,left"; source: "efl"; action: STATE_SET "effect" 0.0; transition: LINEAR 0.3; target: "dim_effect"; after: "looping,left,done"; } program { name: "looping,left,done"; action: SIGNAL_EMIT "efl,looping,left,done" "efl"; } program { signal: "efl,action,looping,left,end"; source: "efl"; action: STATE_SET "default" 0.0; transition: LINEAR 0.3; target: "dim_effect"; } program { signal: "efl,action,looping,right"; source: "efl"; action: STATE_SET "effect" 0.0; transition: LINEAR 0.3; target: "dim_effect"; after: "looping,right,done"; } program { name: "looping,right,done"; action: SIGNAL_EMIT "efl,looping,right,done" "efl"; } program { signal: "efl,action,looping,right,end"; source: "efl"; action: STATE_SET "default" 0.0; transition: LINEAR 0.3; target: "dim_effect"; } program { signal: "efl,action,looping,up"; source: "efl"; action: STATE_SET "effect" 0.0; transition: LINEAR 0.3; target: "dim_effect"; after: "looping,up,done"; } program { name: "looping,up,done"; action: SIGNAL_EMIT "efl,looping,up,done" "efl"; } program { signal: "efl,action,looping,up,end"; source: "efl"; action: STATE_SET "default" 0.0; transition: LINEAR 0.3; target: "dim_effect"; } program { signal: "efl,action,looping,down"; source: "efl"; action: STATE_SET "effect" 0.0; transition: LINEAR 0.3; target: "dim_effect"; after: "looping,down,done"; } program { name: "looping,down,done"; action: SIGNAL_EMIT "efl,looping,down,done" "efl"; } program { signal: "efl,action,looping,down,end"; source: "efl"; action: STATE_SET "default" 0.0; transition: LINEAR 0.3; target: "dim_effect"; } } } group { name: "efl/scroller:noclip"; inherit: "efl/scroller"; parts { part { name: "clipper"; description { state: "default" 0.0; rel1.offset: -999999 -999999; rel2.offset: 999999 999999; } } part { name: "efl.background"; description { state: "default" 0.0; rel1.offset: 0 0; rel2.offset: -1 -1; } } part { name: "efl.content"; description { state: "default" 0.0; rel1.offset: 0 1; rel2.offset: -1 -1; } } part { name: "sh_clip"; type: RECT; description { state: "default" 0.0; visible: 0; } } } } group { name: "efl/scroller:popup/no_inset_shadow"; inherit: "efl/scroller"; parts { part { name: "efl.content"; type: SWALLOW; description { state: "default" 0.0; rel1.offset: 0 0; rel2.offset: 0 0; } } } }