[Genlist] add textblock style in 2text.1icon and dialogue/2text.1icon.6
[platform/core/uifw/efl-theme-tizen.git] / themes / widgets / scroller.edc
1 /*
2  * efl-theme-tizen
3  * Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
4  *
5  * Licensed under the Apache License, Version 2.0 (the License);
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *     http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an AS IS BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17
18
19
20 /*
21  * vim:ts=3
22 */
23 group { name: "elm/scroller/base/default";
24    alias: "elm/carousel/base/default";
25    alias: "elm/scroller/base/map_bubble";
26    alias: "elm/gengrid/base/no_effect";
27    alias: "elm/genlist/base/no_effect";
28
29    data {
30       item: "focus_highlight" "on";
31    }
32
33    script {
34       public sbvis_v, sbvis_h, sbalways_v, sbalways_h, sbvis_timer;
35       public sh_v, sh_h, sh_timer, edge_timer;
36       public timer0(val) {
37          new v;
38          v = get_int(sbvis_v);
39          if (v) {
40             v = get_int(sbalways_v);
41             if (!v) {
42                emit("do-hide-vbar", "");
43                set_int(sbvis_v, 0);
44             }
45          }
46          v = get_int(sbvis_h);
47          if (v) {
48             v = get_int(sbalways_h);
49             if (!v) {
50                emit("do-hide-hbar", "");
51                set_int(sbvis_h, 0);
52             }
53          }
54          set_int(sbvis_timer, 0);
55          return 0;
56       }
57       public timer1(val) {
58          emit("do-hide-vshadow", "");
59          emit("do-hide-hshadow", "");
60          set_int(sh_timer, 0);
61          return 0;
62       }
63       public timer2(val) {
64          emit("do-hide-vshadow", "");
65          emit("do-hide-hshadow", "");
66          set_int(edge_timer, 0);
67          return 0;
68       }
69    }
70    images {
71       image: SCROLLER_DEFAULT_SCROLLBAR_VBAR_IMAGE COMP;
72       image: SCROLLER_DEFAULT_SCROLLBAR_HBAR_IMAGE COMP;
73    }
74    parts {
75       part { name: "bg";
76          type: RECT;
77          scale: 1;
78          description { state: "default" 0.0;
79             rel1.offset: 0 0;
80             rel2.offset: -1 -1;
81             color: 255 255 255 0;
82          }
83       }
84       part { name: "clipper";
85          type: RECT;
86          mouse_events: 0;
87          scale: 1;
88          description { state: "default" 0.0;
89             rel1.to: "bg";
90             rel2.to: "bg";
91             rel1.offset: 0 0;
92             rel2.offset: -1 -1;
93          }
94       }
95       part { name: "elm.swallow.content";
96          clip_to: "clipper";
97          type: SWALLOW;
98          scale: 1;
99          description { state: "default" 0.0;
100             rel1.to: "bg";
101             rel2.to: "bg";
102             rel1.offset: 0 0;
103             rel2.offset: -1 -1;
104          }
105       }
106       part { name: "sb_vbar_clip_master";
107          type: RECT;
108          mouse_events: 0;
109          scale: 1;
110          description { state: "default" 0.0;
111          }
112          description { state: "hidden" 0.0;
113             visible: 0;
114             color: 255 255 255 0;
115          }
116       }
117       part { name: "sb_vbar_clip";
118          clip_to: "sb_vbar_clip_master";
119          type: RECT;
120          mouse_events: 0;
121          scale: 1;
122          description { state: "default" 0.0;
123          }
124          description { state: "hidden" 0.0;
125             visible: 0;
126             color: 255 255 255 0;
127          }
128       }
129       part { name: "sb_vbar";
130          type: RECT;
131          mouse_events: 0;
132          scale: 1;
133          description { state: "default" 0.0;
134             fixed: 1 1;
135             visible: 0;
136             min: SCROLLER_DEFAULT_SCROLLBAR_VBAR_MIN_SIZE_INC;
137             align: 1.0 0.0;
138             rel1 {
139                relative: 1.0 0.0;
140                offset:   0 0;
141                to_y:     "elm.swallow.content";
142                to_x:     "elm.swallow.content";
143             }
144             rel2 {
145                relative: 1.0 1.0;
146                offset:   -1 1;
147                to_y:     "elm.swallow.content";
148                to_x:     "elm.swallow.content";
149             }
150          }
151       }
152       part { name: "elm.dragable.vbar";
153          clip_to: "sb_vbar_clip";
154          mouse_events: 0;
155          scale: 1;
156          dragable {
157             x: 0 0 0;
158             y: 1 1 0;
159             confine: "sb_vbar";
160          }
161          description { state: "default" 0.0;
162             fixed: 1 1;
163             min: SCROLLER_DEFAULT_SCROLLBAR_VBAR_MIN_SIZE_INC;
164             max: SCROLLER_DEFAULT_SCROLLBAR_VBAR_MAX_SIZE_INC;
165             rel1 {
166                relative: 0.5  0.5;
167                offset:   0    0;
168                to: "sb_vbar";
169             }
170             rel2 {
171                relative: 0.5  0.5;
172                offset:   0    0;
173                to: "sb_vbar";
174             }
175             image {
176                normal: SCROLLER_DEFAULT_SCROLLBAR_VBAR_IMAGE;
177                border: SCROLLER_DEFAULT_SCROLLBAR_VBAR_IMAGE_BORDER;
178                border_scale: 1;
179                middle: DEFAULT;
180             }
181          }
182       }
183       part { name: "sb_hbar_clip_master";
184          type: RECT;
185          mouse_events: 0;
186          scale: 1;
187          description { state: "default" 0.0;
188          }
189          description { state: "hidden" 0.0;
190             visible: 0;
191             color: 255 255 255 0;
192          }
193       }
194       part { name: "sb_hbar_clip";
195          clip_to: "sb_hbar_clip_master";
196          type: RECT;
197          mouse_events: 0;
198          scale: 1;
199          description { state: "default" 0.0;
200          }
201          description { state: "hidden" 0.0;
202             visible: 0;
203             color: 255 255 255 0;
204          }
205       }
206       part { name: "sb_hbar";
207          type: RECT;
208          mouse_events: 0;
209          scale: 1;
210          description { state: "default" 0.0;
211             fixed: 1 1;
212             visible: 0;
213             min: SCROLLER_DEFAULT_SCROLLBAR_HBAR_MIN_SIZE_INC;
214             align: 0.0 1.0;
215             rel1 {
216                relative: 0.0 1.0;
217                offset:   0 0;
218                to_x:     "elm.swallow.content";
219                to_y:     "elm.swallow.content";
220             }
221             rel2 {
222                relative: 1.0 1.0;
223                offset:   -1 -1;
224                to_x:     "elm.swallow.content";
225                to_y:     "elm.swallow.content";
226             }
227          }
228       }
229       part { name: "elm.dragable.hbar";
230          clip_to: "sb_hbar_clip";
231          mouse_events: 0;
232          scale: 1;
233          dragable {
234             x: 1 1 0;
235             y: 0 0 0;
236             confine: "sb_hbar";
237          }
238          description { state: "default" 0.0;
239             fixed: 1 1;
240             min: SCROLLER_DEFAULT_SCROLLBAR_HBAR_MIN_SIZE_INC;
241             max: SCROLLER_DEFAULT_SCROLLBAR_HBAR_MAX_SIZE_INC;
242             rel1 {
243                relative: 0.5  0.5;
244                offset:   0    0;
245                to: "sb_hbar";
246             }
247             rel2 {
248                relative: 0.5  0.5;
249                offset:   0    0;
250                to: "sb_hbar";
251             }
252             image {
253                normal: SCROLLER_DEFAULT_SCROLLBAR_HBAR_IMAGE;
254                border: SCROLLER_DEFAULT_SCROLLBAR_HBAR_IMAGE_BORDER;
255                border_scale: 1;
256                middle: DEFAULT;
257             }
258          }
259       }
260       part { name: "disabler";
261          type: RECT;
262          scale: 1;
263          description { state: "default" 0.0;
264             rel1.to: "clipper";
265             rel2.to: "clipper";
266             color: 0 0 0 0;
267             visible: 0;
268          }
269          description { state: "disabled" 0.0;
270             inherit: "default" 0.0;
271             visible: 1;
272             color: 128 128 128 128;
273          }
274       }
275    }
276    programs {
277       program { name: "load";
278          signal: "load";
279          source: "";
280          script {
281             set_state(PART:"sb_hbar_clip", "hidden", 0.0);
282             set_state(PART:"sb_vbar_clip", "hidden", 0.0);
283             set_int(sbvis_h, 0);
284             set_int(sbvis_v, 0);
285             set_int(sbalways_v, 0);
286             set_int(sbalways_h, 0);
287             set_int(sbvis_timer, 0);
288             emit("reload", "elm");
289          }
290       }
291
292       program { name: "vbar_show";
293          signal: "elm,action,show,vbar";
294          source: "elm";
295          action:  STATE_SET "default" 0.0;
296          target: "sb_vbar_clip_master";
297       }
298       program { name: "vbar_hide";
299          signal: "elm,action,hide,vbar";
300          source: "elm";
301          action:  STATE_SET "hidden" 0.0;
302          target: "sb_vbar_clip_master";
303       }
304       program { name: "vbar_show_always";
305          signal: "elm,action,show_always,vbar";
306          source: "elm";
307          script {
308             new v;
309             v = get_int(sbvis_v);
310             v |= get_int(sbalways_v);
311             if (!v) {
312                set_int(sbalways_v, 1);
313                emit("do-show-vbar", "");
314                set_int(sbvis_v, 1);
315             }
316          }
317       }
318       program { name: "vbar_show_notalways";
319          signal: "elm,action,show_notalways,vbar";
320          source: "elm";
321          script {
322             new v;
323             v = get_int(sbalways_v);
324             if (v) {
325                set_int(sbalways_v, 0);
326                v = get_int(sbvis_v);
327                if (!v) {
328                   emit("do-hide-vbar", "");
329                   set_int(sbvis_v, 0);
330                }
331             }
332          }
333       }
334       program { name: "sb_vbar_show";
335          signal: "do-show-vbar";
336          source: "";
337          action:  STATE_SET "default" 0.0;
338          transition: LINEAR 0.5;
339          target: "sb_vbar_clip";
340       }
341       program { name: "sb_vbar_hide";
342          signal: "do-hide-vbar";
343          source: "";
344          action:  STATE_SET "hidden" 0.0;
345          transition: LINEAR 0.5;
346          target: "sb_vbar_clip";
347       }
348
349       program { name: "hbar_show";
350          signal: "elm,action,show,hbar";
351          source: "elm";
352          action:  STATE_SET "default" 0.0;
353          target: "sb_hbar_clip_master";
354       }
355       program { name: "hbar_hide";
356          signal: "elm,action,hide,hbar";
357          source: "elm";
358          action:  STATE_SET "hidden" 0.0;
359          target: "sb_hbar_clip_master";
360       }
361       program { name: "hbar_show_always";
362          signal: "elm,action,show_always,hbar";
363          source: "elm";
364          script {
365             new v;
366             v = get_int(sbvis_h);
367             v |= get_int(sbalways_h);
368             if (!v) {
369                set_int(sbalways_h, 1);
370                emit("do-show-hbar", "");
371                set_int(sbvis_h, 1);
372             }
373          }
374       }
375       program { name: "hbar_show_notalways";
376          signal: "elm,action,show_notalways,hbar";
377          source: "elm";
378          script {
379             new v;
380             v = get_int(sbalways_h);
381             if (v) {
382                set_int(sbalways_h, 0);
383                v = get_int(sbvis_h);
384                if (!v) {
385                   emit("do-hide-hbar", "");
386                   set_int(sbvis_h, 0);
387                }
388             }
389          }
390       }
391       program { name: "sb_hbar_show";
392          signal: "do-show-hbar";
393          source: "";
394          action:  STATE_SET "default" 0.0;
395          transition: LINEAR 0.5;
396          target: "sb_hbar_clip";
397       }
398       program { name: "sb_hbar_hide";
399          signal: "do-hide-hbar";
400          source: "";
401          action:  STATE_SET "hidden" 0.0;
402          transition: LINEAR 0.5;
403          target: "sb_hbar_clip";
404       }
405
406       program { name: "scroll";
407          signal: "elm,action,scroll";
408          source: "elm";
409          script {
410             new v;
411             v = get_int(sbvis_v);
412             v |= get_int(sbalways_v);
413             if (!v) {
414                emit("do-show-vbar", "");
415                set_int(sbvis_v, 1);
416             }
417             v = get_int(sbvis_h);
418             v |= get_int(sbalways_h);
419             if (!v) {
420                emit("do-show-hbar", "");
421                set_int(sbvis_h, 1);
422             }
423             v = get_int(sbvis_timer);
424             if (v > 0) cancel_timer(v);
425             v = timer(1.0, "timer0", 0);
426             set_int(sbvis_timer, v);
427          }
428       }
429       program { name: "disable";
430          signal: "elm,state,disabled";
431          source: "elm";
432          action: STATE_SET "disabled" 0.0;
433          target: "disabler";
434       }
435       program { name: "enable";
436          signal: "elm,state,enabled";
437          source: "elm";
438          action: STATE_SET "default" 0.0;
439          target: "disabler";
440       }
441       program { name: "show";
442          signal: "show";
443          source: "";
444          script {
445             new v;
446             emit("do-show-vbar", "");
447             set_int(sbvis_v, 1);
448             v = get_int(sbalways_v);
449             if (!v) {
450               v = get_int(sbvis_timer);
451               if (v > 0) cancel_timer(v);
452               v = timer(1.0, "timer0", 0);
453               set_int(sbvis_timer, v);
454             }
455             emit("do-show-hbar", "");
456             set_int(sbvis_h, 1);
457             v = get_int(sbalways_h);
458             if (!v) {
459               v = get_int(sbvis_timer);
460               if (v > 0) cancel_timer(v);
461               v = timer(1.0, "timer0", 0);
462               set_int(sbvis_timer, v);
463             }
464          }
465       }
466    }
467 }
468
469 group { name: "elm/scroller/base/handler";
470    alias: "elm/carousel/base/handler";
471
472    data {
473       item: "focus_highlight" "on";
474    }
475    script {
476       public sbvis_v, sbvis_h, sbalways_v, sbalways_h, sbvis_timer;
477       public sh_timer, edge_timer;
478       public timer0(val) {
479          new v;
480          v = get_int(sbvis_v);
481          if (v) {
482             v = get_int(sbalways_v);
483             if (!v) {
484                emit("do-hide-vbar", "");
485                set_int(sbvis_v, 0);
486             }
487          }
488          v = get_int(sbvis_h);
489          if (v) {
490             v = get_int(sbalways_h);
491             if (!v) {
492                emit("do-hide-hbar", "");
493                set_int(sbvis_h, 0);
494             }
495          }
496          set_int(sbvis_timer, 0);
497          return 0;
498       }
499       public timer1(val) {
500          emit("do-hide-vshadow", "");
501          emit("do-hide-hshadow", "");
502          set_int(sh_timer, 0);
503          return 0;
504       }
505       public timer2(val) {
506          emit("do-hide-vshadow", "");
507          emit("do-hide-hshadow", "");
508          set_int(edge_timer, 0);
509          return 0;
510       }
511    }
512    images {
513       image: "00_fast_scroll_handler_top.png" COMP;
514       image: "00_fast_scroll_handler_center.png" COMP;
515       image: "00_fast_scroll_handler_bottom.png" COMP;
516       image: "00_fast_scroll_handler_left_h.png" COMP;
517       image: "00_fast_scroll_handler_center_h.png" COMP;
518       image: "00_fast_scroll_handler_right_h.png" COMP;
519    }
520    parts {
521       part { name: "bg";
522          type: RECT;
523          scale: 1;
524          description { state: "default" 0.0;
525             rel1.offset: 0 0;
526             rel2.offset: -1 -1;
527             color: 255 255 255 0;
528          }
529       }
530       part { name: "clipper";
531          type: RECT;
532          mouse_events: 0;
533          scale: 1;
534          description { state: "default" 0.0;
535             rel1.to: "bg";
536             rel2.to: "bg";
537             rel1.offset: 0 0;
538             rel2.offset: -1 -1;
539          }
540       }
541       part { name: "elm.swallow.content";
542          clip_to: "clipper";
543          type: SWALLOW;
544          scale: 1;
545          description { state: "default" 0.0;
546             rel1.to: "bg";
547             rel2.to: "bg";
548             rel1.offset: 0 0;
549             rel2.offset: -1 -1;
550          }
551       }
552       part { name: "sb_vbar_clip_master";
553          type: RECT;
554          mouse_events: 0;
555          scale: 1;
556          description { state: "default" 0.0;
557          }
558          description { state: "hidden" 0.0;
559             visible: 0;
560             color: 255 255 255 0;
561          }
562       }
563       part { name: "sb_vbar_clip";
564          clip_to: "sb_vbar_clip_master";
565          type: RECT;
566          mouse_events: 0;
567          scale: 1;
568          description { state: "default" 0.0;
569          }
570          description { state: "hidden" 0.0;
571             visible: 0;
572             color: 255 255 255 0;
573          }
574       }
575       part { name: "sb_vbar";
576          type: RECT;
577          mouse_events: 0;
578          scale: 1;
579          description { state: "default" 0.0;
580             fixed: 1 1;
581             visible: 0;
582             min: SCROLLER_HANDLER_SCROLLBAR_VBAR_MIN_SIZE_INC;
583             align: 1.0 0.0;
584             rel1 {
585                relative: 1.0 0.0;
586                to_y:     "elm.swallow.content";
587                to_x:     "elm.swallow.content";
588             }
589             rel2 {
590                relative: 1.0 1.0;
591                to_y:     "sb_hbar";
592                to_x:     "elm.swallow.content";
593             }
594          }
595       }
596       part { name: "elm.dragable.vbar";
597          type: RECT;
598          clip_to: "sb_vbar_clip";
599          mouse_events: 1;
600          scale: 1;
601          dragable {
602             x: 0 0 0;
603             y: 1 1 0;
604             confine: "sb_vbar";
605          }
606          description { state: "default" 0.0;
607             fixed: 1 1;
608             color: 0 0 0 0;
609             min: SCROLLER_HANDLER_SCROLLBAR_VBAR_MIN_SIZE_INC;
610             max: 30 99999;
611             rel1 {
612                relative: 0.5  0.5;
613                offset:   0    0;
614                to: "sb_vbar";
615             }
616             rel2 {
617                relative: 0.5  0.5;
618                offset:   0    0;
619                to: "sb_vbar";
620             }
621          }
622       }
623       part { name: "scrollbar_handler_image_top";
624          clip_to: "sb_vbar_clip";
625          mouse_events: 0;
626          scale: 1;
627          description { state: "default" 0.0;
628             fixed: 1 1;
629             rel1.relative: 0.0 0.0;
630             rel1.to: "elm.dragable.vbar";
631             rel2.relative: 1.0 0.0;
632             rel2.to: "scrollbar_handler_image_middle";
633             visible: 1;
634             image {
635                normal: "00_fast_scroll_handler_top.png";
636                border: 36 0 31 0;
637                border_scale: 1;
638             }
639          }
640       }
641       part { name: "scrollbar_handler_image_middle";
642          clip_to: "sb_vbar_clip";
643          mouse_events: 0;
644          scale: 1;
645          description { state: "default" 0.0;
646             fixed: 1 1;
647             rel1.relative: 0.5 0.5;
648             rel1.to: "elm.dragable.vbar";
649             rel2.relative: 0.5 0.5;
650             rel2.to: "elm.dragable.vbar";
651             visible: 1;
652             min: SCROLLER_HANDLER_SCROLLBAR_VBAR_MIDDLE_MIN_SIZE_INC;
653             image {
654                normal: "00_fast_scroll_handler_center.png";
655                border: 36 0 0 0;
656                border_scale: 1;
657             }
658          }
659       }
660       part { name: "scrollbar_handler_image_bottom";
661          clip_to: "sb_vbar_clip";
662          mouse_events: 0;
663          scale: 1;
664          description { state: "default" 0.0;
665             fixed: 1 1;
666             rel1.relative: 0.0 1.0;
667             rel1.to: "scrollbar_handler_image_middle";
668             rel2.relative: 1.0 1.0;
669             rel2.to: "elm.dragable.vbar";
670             visible: 1;
671             image {
672                normal: "00_fast_scroll_handler_bottom.png";
673                border: 36 0 0 36;
674                border_scale: 1;
675             }
676          }
677       }
678       part { name: "sb_hbar_clip_master";
679          type: RECT;
680          mouse_events: 0;
681          scale: 1;
682          description { state: "default" 0.0;
683          }
684          description { state: "hidden" 0.0;
685             visible: 0;
686             color: 255 255 255 0;
687          }
688       }
689       part { name: "sb_hbar_clip";
690          clip_to: "sb_hbar_clip_master";
691          type: RECT;
692          mouse_events: 0;
693          scale: 1;
694          description { state: "default" 0.0;
695          }
696          description { state: "hidden" 0.0;
697             visible: 0;
698             color: 255 255 255 0;
699          }
700       }
701       part { name: "sb_hbar";
702          type: RECT;
703          mouse_events: 0;
704          scale: 1;
705          description { state: "default" 0.0;
706             fixed: 1 1;
707             visible: 0;
708             min: SCROLLER_HANDLER_SCROLLBAR_HBAR_MIN_SIZE_INC;
709             align: 0.0 1.0;
710             rel1 {
711                relative: 0.0 1.0;
712                to_x:     "elm.swallow.content";
713                to_y:     "elm.swallow.content";
714             }
715             rel2 {
716                relative: 0.0 1.0;
717                offset: -1 -1;
718                to_x: "sb_vbar";
719                to_y:     "elm.swallow.content";
720             }
721          }
722       }
723       part { name: "elm.dragable.hbar";
724          type: RECT;
725          clip_to: "sb_hbar_clip";
726          mouse_events: 1;
727          scale: 1;
728          dragable {
729             x: 1 1 0;
730             y: 0 0 0;
731             confine: "sb_hbar";
732          }
733          description { state: "default" 0.0;
734             fixed: 1 1;
735             color: 0 0 0 0;
736             min: SCROLLER_HANDLER_SCROLLBAR_HBAR_MIN_SIZE_INC;
737             max: 99999 30;
738             rel1 {
739                relative: 0.5  0.5;
740                offset:   0    0;
741                to: "sb_hbar";
742             }
743             rel2 {
744                relative: 0.5  0.5;
745                offset:   0    0;
746                to: "sb_hbar";
747             }
748          }
749       }
750       part { name: "h_scrollbar_handler_image_left";
751          clip_to: "sb_hbar_clip";
752          mouse_events: 0;
753          scale: 1;
754          description { state: "default" 0.0;
755             fixed: 1 1;
756             rel1.relative: 0.0 0.0;
757             rel1.to: "elm.dragable.hbar";
758             rel2.relative: 0.0 1.0;
759             rel2.to: "scrollbar_handler_image_hor";
760             visible: 1;
761             image {
762                normal: "00_fast_scroll_handler_left_h.png";
763                border: 31 0 36 0;
764                border_scale: 1;
765             }
766          }
767       }
768       part { name: "scrollbar_handler_image_hor";
769          clip_to: "sb_hbar_clip";
770          mouse_events: 0;
771          scale: 1;
772          description { state: "default" 0.0;
773          fixed: 1 1;
774             rel1.relative: 0.5 0.5;
775             rel1.to: "elm.dragable.hbar";
776             rel2.relative: 0.5 0.5;
777             rel2.to: "elm.dragable.hbar";
778             visible: 1;
779             min: SCROLLER_HANDLER_SCROLLBAR_HBAR_MIDDLE_MIN_SIZE_INC;
780             image {
781                normal: "00_fast_scroll_handler_center_h.png";
782                border: 0 0 36 0;
783                border_scale: 1;
784             }
785          }
786       }
787       part { name: "h_scrollbar_handler_image_right";
788          clip_to: "sb_hbar_clip";
789          mouse_events: 0;
790          scale: 1;
791          description { state: "default" 0.0;
792             fixed: 1 1;
793             rel1.relative: 1.0 0.0;
794             rel1.to: "scrollbar_handler_image_hor";
795             rel2.relative: 1.0 1.0;
796             rel2.to: "elm.dragable.hbar";
797             visible: 1;
798             image {
799                normal: "00_fast_scroll_handler_right_h.png";
800                border: 0 36 36 0;
801                border_scale: 1;
802             }
803          }
804       }
805       part { name: "disabler";
806          type: RECT;
807          scale: 1;
808          description { state: "default" 0.0;
809             rel1.to: "clipper";
810             rel2.to: "clipper";
811             color: 0 0 0 0;
812             visible: 0;
813          }
814          description { state: "disabled" 0.0;
815             inherit: "default" 0.0;
816             visible: 1;
817             color: 128 128 128 128;
818          }
819       }
820    }
821    programs {
822       program { name: "load";
823          signal: "load";
824          source: "";
825          script {
826             set_state(PART:"sb_hbar_clip", "hidden", 0.0);
827             set_state(PART:"sb_vbar_clip", "hidden", 0.0);
828             set_int(sbvis_h, 0);
829             set_int(sbvis_v, 0);
830             set_int(sbalways_v, 0);
831             set_int(sbalways_h, 0);
832             set_int(sbvis_timer, 0);
833             emit("reload", "elm");
834          }
835       }
836       program { name: "vbar_show";
837          signal: "elm,action,show,vbar";
838          source: "elm";
839          action: STATE_SET "default" 0.0;
840          target: "sb_vbar_clip_master";
841       }
842       program { name: "vbar_hide";
843          signal: "elm,action,hide,vbar";
844          source: "elm";
845          action: STATE_SET "hidden" 0.0;
846          target: "sb_vbar_clip_master";
847       }
848       program { name: "vbar_show_always";
849          signal: "elm,action,show_always,vbar";
850          source: "elm";
851          script {
852             new v;
853             v = get_int(sbvis_v);
854             v |= get_int(sbalways_v);
855             if (!v) {
856                set_int(sbalways_v, 1);
857                emit("do-show-vbar", "");
858                set_int(sbvis_v, 1);
859             }
860          }
861       }
862       program { name: "vbar_show_notalways";
863          signal: "elm,action,show_notalways,vbar";
864          source: "elm";
865          script {
866             new v;
867             v = get_int(sbalways_v);
868             if (v) {
869                set_int(sbalways_v, 0);
870                v = get_int(sbvis_v);
871                if (!v) {
872                   emit("do-hide-vbar", "");
873                   set_int(sbvis_v, 0);
874                }
875             }
876          }
877       }
878       program { name: "vbar_press";
879          signal: "mouse,down,1";
880          source: "elm.dragable.vbar";
881          action:  SIGNAL_EMIT "elm,vbar,press" "elm";
882       }
883       program { name: "vbar_unpress";
884          signal: "mouse,up,1";
885          source: "elm.dragable.vbar";
886          action:  SIGNAL_EMIT "elm,vbar,unpress" "elm";
887       }
888       program { name: "sb_vbar_show";
889          signal: "do-show-vbar";
890          source: "";
891          action: STATE_SET "default" 0.0;
892          transition: LINEAR 0.5;
893          target: "sb_vbar_clip";
894       }
895       program { name: "sb_vbar_hide";
896          signal: "do-hide-vbar";
897          source: "";
898          action: STATE_SET "hidden" 0.0;
899          transition: LINEAR 0.5;
900          target: "sb_vbar_clip";
901       }
902       program { name: "hbar_show";
903          signal: "elm,action,show,hbar";
904          source: "elm";
905          action: STATE_SET "default" 0.0;
906          target: "sb_hbar_clip_master";
907       }
908       program { name: "hbar_hide";
909          signal: "elm,action,hide,hbar";
910          source: "elm";
911          action:  STATE_SET "hidden" 0.0;
912          target: "sb_hbar_clip_master";
913       }
914       program { name: "hbar_show_always";
915          signal: "elm,action,show_always,hbar";
916          source: "elm";
917          script {
918             new v;
919             v = get_int(sbvis_h);
920             v |= get_int(sbalways_h);
921             if (!v) {
922                set_int(sbalways_h, 1);
923                emit("do-show-hbar", "");
924                set_int(sbvis_h, 1);
925             }
926          }
927       }
928       program { name: "hbar_show_notalways";
929          signal: "elm,action,show_notalways,hbar";
930          source: "elm";
931          script {
932             new v;
933             v = get_int(sbalways_h);
934             if (v) {
935                set_int(sbalways_h, 0);
936                v = get_int(sbvis_h);
937                if (!v) {
938                   emit("do-hide-hbar", "");
939                   set_int(sbvis_h, 0);
940                }
941             }
942          }
943       }
944       program { name: "hbar_press";
945          signal: "mouse,down,1";
946          source: "elm.dragable.hbar";
947          action:  SIGNAL_EMIT "elm,hbar,press" "elm";
948       }
949       program { name: "hbar_unpress";
950          signal: "mouse,up,1";
951          source: "elm.dragable.hbar";
952          action:  SIGNAL_EMIT "elm,hbar,unpress" "elm";
953       }
954       program { name: "sb_hbar_show";
955          signal: "do-show-hbar";
956          source: "";
957          action: STATE_SET "default" 0.0;
958          transition: LINEAR 0.5;
959          target: "sb_hbar_clip";
960       }
961       program { name: "sb_hbar_hide";
962          signal: "do-hide-hbar";
963          source: "";
964          action: STATE_SET "hidden" 0.0;
965          transition: LINEAR 0.5;
966          target: "sb_hbar_clip";
967       }
968
969       program { name: "scroll";
970          signal: "elm,action,scroll";
971          source: "elm";
972          script {
973             new v;
974             v = get_int(sbvis_v);
975             v |= get_int(sbalways_v);
976             if (!v) {
977                emit("do-show-vbar", "");
978                set_int(sbvis_v, 1);
979             }
980             v = get_int(sbvis_h);
981             v |= get_int(sbalways_h);
982             if (!v) {
983                emit("do-show-hbar", "");
984                set_int(sbvis_h, 1);
985             }
986             v = get_int(sbvis_timer);
987             if (v > 0) cancel_timer(v);
988             v = timer(1.0, "timer0", 0);
989             set_int(sbvis_timer, v);
990          }
991       }
992       program { name: "disable";
993          signal: "elm,state,disabled";
994          source: "elm";
995          action: STATE_SET "disabled" 0.0;
996          target: "disabler";
997       }
998       program { name: "enable";
999          signal: "elm,state,enabled";
1000          source: "elm";
1001          action: STATE_SET "default" 0.0;
1002          target: "disabler";
1003       }
1004       program { name: "show";
1005          signal: "show";
1006          source: "";
1007          script {
1008             new v;
1009             emit("do-show-vbar", "");
1010             set_int(sbvis_v, 1);
1011             v = get_int(sbalways_v);
1012             if (!v) {
1013               v = get_int(sbvis_timer);
1014               if (v > 0) cancel_timer(v);
1015               v = timer(1.0, "timer0", 0);
1016               set_int(sbvis_timer, v);
1017             }
1018             emit("do-show-hbar", "");
1019             set_int(sbvis_h, 1);
1020             v = get_int(sbalways_h);
1021             if (!v) {
1022               v = get_int(sbvis_timer);
1023               if (v > 0) cancel_timer(v);
1024               v = timer(1.0, "timer0", 0);
1025               set_int(sbvis_timer, v);
1026             }
1027          }
1028       }
1029    }
1030 }
1031
1032 group { name: "elm/genlist/base/default";
1033    alias: "elm/genscroller/base/default";
1034    alias: "elm/list/base/default";
1035    inherit: "elm/scroller/base/default";
1036
1037    images {
1038       image: "00_overscrolling_top.png" COMP;
1039       image: "00_overscrolling_bottom.png" COMP;
1040       image: "00_overscrolling_left.png" COMP;
1041       image: "00_overscrolling_right.png" COMP;
1042    }
1043
1044    parts {
1045       part { name: "vshadow_clip";
1046          type: RECT;
1047          mouse_events: 0;
1048          scale: 1;
1049          description { state: "default" 0.0;
1050          }
1051          description { state: "hidden" 0.0;
1052             visible: 0;
1053             color: 255 255 255 0;
1054          }
1055       }
1056       part { name: "hshadow_clip";
1057          type: RECT;
1058          mouse_events: 0;
1059          scale: 1;
1060          description { state: "default" 0.0;
1061          }
1062          description { state: "hidden" 0.0;
1063             visible: 0;
1064             color: 255 255 255 0;
1065          }
1066       }
1067       part { name: "shadow_top";
1068          clip_to: "vshadow_clip";
1069          type: IMAGE;
1070          scale: 1;
1071          mouse_events: 0;
1072          description { state: "default" 0.0;
1073             min: 0 30;
1074             fixed: 1 1;
1075             align: 0.5 0.0;
1076             color: 255 255 255 100;
1077             rel1.relative: 0.0 0.0;
1078             rel2.relative: 1.0 0.0;
1079             rel1.to: "elm.swallow.content";
1080             rel2.to: "elm.swallow.content";
1081             image.normal: "00_overscrolling_top.png";
1082          }
1083          description { state: "hidden" 0.0;
1084             inherit: "default" 0.0;
1085             visible: 0;
1086          }
1087       }
1088       part { name: "shadow_bottom";
1089          clip_to: "vshadow_clip";
1090          type: IMAGE;
1091          scale: 1;
1092          mouse_events: 0;
1093          description { state: "default" 0.0;
1094             min: 0 30;
1095             fixed: 1 1;
1096             align: 0.5 1.0;
1097             color: 255 255 255 100;
1098             rel1.relative: 0.0 1.0;
1099             rel2.relative: 1.0 1.0;
1100             rel1.to: "elm.swallow.content";
1101             rel2.to: "elm.swallow.content";
1102             image.normal: "00_overscrolling_bottom.png";
1103          }
1104          description { state: "hidden" 0.0;
1105             inherit: "default" 0.0;
1106             visible: 0;
1107          }
1108       }
1109       part { name: "shadow_left";
1110          clip_to: "hshadow_clip";
1111          type: IMAGE;
1112          scale: 1;
1113          mouse_events: 0;
1114          description { state: "default" 0.0;
1115             min: 30 0;
1116             fixed: 1 1;
1117             align: 0.0 0.5;
1118             color: 255 255 255 100;
1119             rel1.relative: 0.0 0.0;
1120             rel2.relative: 0.0 1.0;
1121             rel1.to: "elm.swallow.content";
1122             rel2.to: "elm.swallow.content";
1123             image.normal: "00_overscrolling_left.png";
1124          }
1125          description { state: "hidden" 0.0;
1126             inherit: "default" 0.0;
1127             visible: 0;
1128          }
1129       }
1130       part { name: "shadow_right";
1131          clip_to: "hshadow_clip";
1132          type: IMAGE;
1133          scale: 1;
1134          mouse_events: 0;
1135          description { state: "default" 0.0;
1136             min: 30 0;
1137             fixed: 1 1;
1138             align: 1.0 0.5;
1139             color: 255 255 255 100;
1140             rel1.relative: 1.0 0.0;
1141             rel2.relative: 1.0 1.0;
1142             rel1.to: "elm.swallow.content";
1143             rel2.to: "elm.swallow.content";
1144             image.normal: "00_overscrolling_right.png";
1145          }
1146          description { state: "hidden" 0.0;
1147             inherit: "default" 0.0;
1148             visible: 0;
1149          }
1150       }
1151       part { name: "padding_jump_to_top";
1152          type: SPACER;
1153          scale: 1;
1154          description { state: "default" 0.0;
1155             min: BUTTON_JUMP_TOP_PADDING_TO_SCROLLER_MIN_MAX_INC;
1156             max: BUTTON_JUMP_TOP_PADDING_TO_SCROLLER_MIN_MAX_INC;
1157             rel1.relative: 1.0 0.0;
1158             rel2.relative: 1.0 0.0;
1159             rel1.to: "elm.swallow.content";
1160             rel2.to: "elm.swallow.content";
1161             fixed: 1 1;
1162             align: 1.0 0.0;
1163          }
1164       }
1165       part { name: "elm.swallow.jump_to_top";
1166          type: SWALLOW;
1167          scale: 1;
1168          description { state: "default" 0.0;
1169             rel1 {
1170                to: "padding_jump_to_top";
1171                relative: 0.0 1.0;
1172             }
1173             rel2 {
1174                to: "padding_jump_to_top";
1175                relative: 0.0 1.0;
1176             }
1177             fixed: 1 1;
1178             align: 1.0 0.0;
1179          }
1180       }
1181       part { name: "padding_jump_to_left";
1182          type: SPACER;
1183          scale: 1;
1184          description { state: "default" 0.0;
1185             min: BUTTON_JUMP_LEFT_PADDING_TO_SCROLLER_MIN_MAX_INC;
1186             max: BUTTON_JUMP_LEFT_PADDING_TO_SCROLLER_MIN_MAX_INC;
1187             rel1.relative: 0.0 1.0;
1188             rel2.relative: 0.0 1.0;
1189             rel1.to: "elm.swallow.content";
1190             rel2.to: "elm.swallow.content";
1191             fixed: 1 1;
1192             align: 0.0 1.0;
1193          }
1194       }
1195       part { name: "elm.swallow.jump_to_left";
1196          type: SWALLOW;
1197          scale: 1;
1198          description { state: "default" 0.0;
1199             rel1 {
1200                to: "padding_jump_to_left";
1201                relative: 1.0 0.0;
1202             }
1203             rel2 {
1204                to: "padding_jump_to_left";
1205                relative: 1.0 0.0;
1206             }
1207             fixed: 1 1;
1208             align: 0.0 1.0;
1209          }
1210       }
1211    }
1212    programs {
1213       program { name: "load";
1214          script {
1215             set_state(PART:"sb_hbar_clip", "hidden", 0.0);
1216             set_state(PART:"sb_vbar_clip", "hidden", 0.0);
1217             set_state(PART:"vshadow_clip", "hidden", 0.0);
1218             set_state(PART:"hshadow_clip", "hidden", 0.0);
1219             set_int(sbvis_h, 0);
1220             set_int(sbvis_v, 0);
1221             set_int(sbalways_v, 0);
1222             set_int(sbalways_h, 0);
1223             set_int(sbvis_timer, 0);
1224             set_int(sh_v, 0);
1225             set_int(sh_timer, 0);
1226             set_int(edge_timer, 0);
1227             emit("reload", "elm");
1228          }
1229       }
1230       program { name: "vshadow_show";
1231          signal: "do-show-vshadow";
1232          source: "";
1233          action:  STATE_SET "default" 0.0;
1234          transition: LINEAR 0.5;
1235          target: "vshadow_clip";
1236       }
1237       program { name: "vshadow_hide";
1238          signal: "do-hide-vshadow";
1239          source: "";
1240          action:  STATE_SET "hidden" 0.0;
1241          transition: LINEAR 0.2;
1242          target: "vshadow_clip";
1243       }
1244       program { name: "hshadow_show";
1245          signal: "do-show-hshadow";
1246          source: "";
1247          action:  STATE_SET "default" 0.0;
1248          transition: LINEAR 0.5;
1249          target: "hshadow_clip";
1250       }
1251       program { name: "hshadow_hide";
1252          signal: "do-hide-hshadow";
1253          source: "";
1254          action:  STATE_SET "hidden" 0.0;
1255          transition: LINEAR 0.2;
1256          target: "hshadow_clip";
1257       }
1258       program { name: "scroll";
1259          signal: "elm,action,scroll";
1260          source: "elm";
1261          script {
1262             new v;
1263             v = get_int(sbvis_v);
1264             v |= get_int(sbalways_v);
1265             if (!v) {
1266                emit("do-show-vbar", "");
1267                set_int(sbvis_v, 1);
1268             }
1269             v = get_int(sbvis_h);
1270             v |= get_int(sbalways_h);
1271             if (!v) {
1272                emit("do-show-hbar", "");
1273                set_int(sbvis_h, 1);
1274             }
1275             v = get_int(sbvis_timer);
1276             if (v > 0) cancel_timer(v);
1277             v = timer(1, "timer0", 0);
1278             set_int(sbvis_timer, v);
1279          }
1280       }
1281       program { name: "scroll_up";
1282          signal: "elm,action,scroll,up";
1283          source: "elm";
1284          after: "scroll_vertical";
1285       }
1286       program { name: "scroll_down";
1287          signal: "elm,action,scroll,down";
1288          source: "elm";
1289          after: "scroll_vertical";
1290       }
1291       program { name: "scroll_vertical";
1292          script {
1293             new v;
1294             v = get_int(edge_timer);
1295             if (!v) {
1296                set_state(PART:"shadow_top", "default", 0.0);
1297                set_state(PART:"shadow_bottom", "default", 0.0);
1298                emit("do-show-vshadow", "");
1299                v = get_int(sh_timer);
1300                if (v > 0) cancel_timer(v);
1301                v = timer(0.1, "timer1", 0);
1302                set_int(sh_timer, v);
1303             }
1304          }
1305       }
1306       program { name: "scroll_left";
1307          signal: "elm,action,scroll,left";
1308          source: "elm";
1309          after: "scroll_horizontal";
1310       }
1311       program { name: "scroll_right";
1312          signal: "elm,action,scroll,right";
1313          source: "elm";
1314          after: "scroll_horizontal";
1315       }
1316       program { name: "scroll_horizontal";
1317          script {
1318             new v;
1319             v = get_int(edge_timer);
1320             if (!v) {
1321                set_state(PART:"shadow_left", "default", 0.0);
1322                set_state(PART:"shadow_right", "default", 0.0);
1323                emit("do-show-hshadow", "");
1324                v = get_int(sh_timer);
1325                if (v > 0) cancel_timer(v);
1326                v = timer(0.1, "timer1", 0);
1327                set_int(sh_timer, v);
1328             }
1329          }
1330       }
1331       program { name: "edge_top";
1332          signal: "elm,edge,top";
1333          source: "elm";
1334          script {
1335             set_state(PART:"shadow_top", "hidden", 0.0);
1336             set_state(PART:"shadow_bottom", "hidden", 0.0);
1337          }
1338          after: "edge_vertical";
1339       }
1340       program { name: "edge_bottom";
1341          signal: "elm,edge,bottom";
1342          source: "elm";
1343          script {
1344             set_state(PART:"shadow_top", "hidden", 0.0);
1345             set_state(PART:"shadow_bottom", "hidden", 0.0);
1346          }
1347          after: "edge_vertical";
1348       }
1349       program { name: "edge_left";
1350          signal: "elm,edge,left";
1351          source: "elm";
1352          script {
1353             set_state(PART:"shadow_left", "hidden", 0.0);
1354             set_state(PART:"shadow_right", "hidden", 0.0);
1355          }
1356          after: "edge_horizontal";
1357       }
1358       program { name: "edge_right";
1359          signal: "elm,edge,right";
1360          source: "elm";
1361          script {
1362             set_state(PART:"shadow_left", "hidden", 0.0);
1363             set_state(PART:"shadow_right", "hidden", 0.0);
1364          }
1365          after: "edge_horizontal";
1366       }
1367       program { name: "edge_vertical";
1368          script {
1369             new v;
1370             v = get_int(sh_timer);
1371             if (v > 0) cancel_timer(v);
1372             v = get_int(edge_timer);
1373             if (!v) {
1374                 emit("do-show-vshadow", "");
1375             }
1376             if (v > 0) cancel_timer(v);
1377             v = timer(0.1, "timer2", 0);
1378             set_int(edge_timer, v);
1379          }
1380       }
1381       program { name: "edge_horizontal";
1382          script {
1383             new v;
1384             v = get_int(sh_timer);
1385             if (v > 0) cancel_timer(v);
1386             v = get_int(edge_timer);
1387             if (!v) {
1388                 emit("do-show-hshadow", "");
1389             }
1390             if (v > 0) cancel_timer(v);
1391             v = timer(0.1, "timer2", 0);
1392             set_int(edge_timer, v);
1393          }
1394       }
1395    }
1396 }
1397
1398 group { name: "elm/genlist/base/handler";
1399    alias: "elm/genscroller/base/handler";
1400    alias: "elm/list/base/handler";
1401    inherit: "elm/scroller/base/handler";
1402
1403    images {
1404       image: "00_overscrolling_top.png" COMP;
1405       image: "00_overscrolling_bottom.png" COMP;
1406       image: "00_overscrolling_left.png" COMP;
1407       image: "00_overscrolling_right.png" COMP;
1408    }
1409
1410    parts {
1411       part { name: "vshadow_clip";
1412          type: RECT;
1413          mouse_events: 0;
1414          scale: 1;
1415          description { state: "default" 0.0;
1416          }
1417          description { state: "hidden" 0.0;
1418             visible: 0;
1419             color: 255 255 255 0;
1420          }
1421       }
1422       part { name: "hshadow_clip";
1423          type: RECT;
1424          mouse_events: 0;
1425          scale: 1;
1426          description { state: "default" 0.0;
1427          }
1428          description { state: "hidden" 0.0;
1429             visible: 0;
1430             color: 255 255 255 0;
1431          }
1432       }
1433       part { name: "shadow_top";
1434          clip_to: "vshadow_clip";
1435          type: IMAGE;
1436          scale: 1;
1437          mouse_events: 0;
1438          description { state: "default" 0.0;
1439             min: 0 30;
1440             fixed: 1 1;
1441             align: 0.5 0.0;
1442             color: 255 255 255 100;
1443             rel1.relative: 0.0 0.0;
1444             rel2.relative: 1.0 0.0;
1445             rel1.to: "elm.swallow.content";
1446             rel2.to: "elm.swallow.content";
1447             image.normal: "00_overscrolling_top.png";
1448          }
1449          description { state: "hidden" 0.0;
1450             inherit: "default" 0.0;
1451             visible: 0;
1452          }
1453       }
1454       part { name: "shadow_bottom";
1455          clip_to: "vshadow_clip";
1456          type: IMAGE;
1457          scale: 1;
1458          mouse_events: 0;
1459          description { state: "default" 0.0;
1460             min: 0 30;
1461             fixed: 1 1;
1462             align: 0.5 1.0;
1463             color: 255 255 255 100;
1464             rel1.relative: 0.0 1.0;
1465             rel2.relative: 1.0 1.0;
1466             rel1.to: "elm.swallow.content";
1467             rel2.to: "elm.swallow.content";
1468             image.normal: "00_overscrolling_bottom.png";
1469          }
1470          description { state: "hidden" 0.0;
1471             inherit: "default" 0.0;
1472             visible: 0;
1473          }
1474       }
1475       part { name: "shadow_left";
1476          clip_to: "hshadow_clip";
1477          type: IMAGE;
1478          scale: 1;
1479          mouse_events: 0;
1480          description { state: "default" 0.0;
1481             min: 30 0;
1482             fixed: 1 1;
1483             align: 0.0 0.5;
1484             color: 255 255 255 100;
1485             rel1.relative: 0.0 0.0;
1486             rel2.relative: 0.0 1.0;
1487             rel1.to: "elm.swallow.content";
1488             rel2.to: "elm.swallow.content";
1489             image.normal: "00_overscrolling_left.png";
1490          }
1491          description { state: "hidden" 0.0;
1492             inherit: "default" 0.0;
1493             visible: 0;
1494          }
1495       }
1496       part { name: "shadow_right";
1497          clip_to: "hshadow_clip";
1498          type: IMAGE;
1499          scale: 1;
1500          mouse_events: 0;
1501          description { state: "default" 0.0;
1502             min: 30 0;
1503             fixed: 1 1;
1504             align: 1.0 0.5;
1505             color: 255 255 255 100;
1506             rel1.relative: 1.0 0.0;
1507             rel2.relative: 1.0 1.0;
1508             rel1.to: "elm.swallow.content";
1509             rel2.to: "elm.swallow.content";
1510             image.normal: "00_overscrolling_right.png";
1511          }
1512          description { state: "hidden" 0.0;
1513             inherit: "default" 0.0;
1514             visible: 0;
1515          }
1516       }
1517    }
1518    programs {
1519       program { name: "load";
1520          signal: "load";
1521          source: "";
1522          script {
1523             set_state(PART:"sb_hbar_clip", "hidden", 0.0);
1524             set_state(PART:"sb_vbar_clip", "hidden", 0.0);
1525             set_state(PART:"vshadow_clip", "hidden", 0.0);
1526             set_state(PART:"hshadow_clip", "hidden", 0.0);
1527             set_int(sbvis_h, 0);
1528             set_int(sbvis_v, 0);
1529             set_int(sbalways_v, 0);
1530             set_int(sbalways_h, 0);
1531             set_int(sbvis_timer, 0);
1532             set_int(sh_timer, 0);
1533             set_int(edge_timer, 0);
1534             emit("reload", "elm");
1535          }
1536       }
1537       program { name: "vbar_show_always";
1538          signal: "elm,action,show_always,vbar";
1539          source: "elm";
1540          script {
1541             new v;
1542             v = get_int(sbvis_v);
1543             v |= get_int(sbalways_v);
1544             if (!v) {
1545                set_int(sbalways_v, 1);
1546                emit("do-show-vbar", "");
1547                set_int(sbvis_v, 1);
1548             }
1549          }
1550       }
1551       program { name: "vbar_show_notalways";
1552          signal: "elm,action,show_notalways,vbar";
1553          source: "elm";
1554          script {
1555             new v;
1556             v = get_int(sbalways_v);
1557             if (v) {
1558                set_int(sbalways_v, 0);
1559                v = get_int(sbvis_v);
1560                if (!v) {
1561                   emit("do-hide-vbar", "");
1562                   set_int(sbvis_v, 0);
1563                }
1564             }
1565          }
1566       }
1567       program { name: "hbar_show_always";
1568          signal: "elm,action,show_always,hbar";
1569          source: "elm";
1570          script {
1571             new v;
1572             v = get_int(sbvis_h);
1573             v |= get_int(sbalways_h);
1574             if (!v) {
1575                set_int(sbalways_h, 1);
1576                emit("do-show-hbar", "");
1577                set_int(sbvis_h, 1);
1578             }
1579          }
1580       }
1581       program { name: "hbar_show_notalways";
1582          signal: "elm,action,show_notalways,hbar";
1583          source: "elm";
1584          script {
1585             new v;
1586             v = get_int(sbalways_h);
1587             if (v) {
1588                set_int(sbalways_h, 0);
1589                v = get_int(sbvis_h);
1590                if (!v) {
1591                   emit("do-hide-hbar", "");
1592                   set_int(sbvis_h, 0);
1593                }
1594             }
1595          }
1596       }
1597       program { name: "vshadow_show";
1598          signal: "do-show-vshadow";
1599          source: "";
1600          action:  STATE_SET "default" 0.0;
1601          transition: LINEAR 0.5;
1602          target: "vshadow_clip";
1603       }
1604       program { name: "vshadow_hide";
1605          signal: "do-hide-vshadow";
1606          source: "";
1607          action:  STATE_SET "hidden" 0.0;
1608          transition: LINEAR 0.2;
1609          target: "vshadow_clip";
1610       }
1611       program { name: "hshadow_show";
1612          signal: "do-show-hshadow";
1613          source: "";
1614          action:  STATE_SET "default" 0.0;
1615          transition: LINEAR 0.5;
1616          target: "hshadow_clip";
1617       }
1618       program { name: "hshadow_hide";
1619          signal: "do-hide-hshadow";
1620          source: "";
1621          action:  STATE_SET "hidden" 0.0;
1622          transition: LINEAR 0.2;
1623          target: "hshadow_clip";
1624       }
1625       program { name: "scroll";
1626          signal: "elm,action,scroll";
1627          source: "elm";
1628          script {
1629             new v;
1630             v = get_int(sbvis_v);
1631             v |= get_int(sbalways_v);
1632             if (!v) {
1633                emit("do-show-vbar", "");
1634                set_int(sbvis_v, 1);
1635             }
1636             v = get_int(sbvis_h);
1637             v |= get_int(sbalways_h);
1638             if (!v) {
1639                emit("do-show-hbar", "");
1640                set_int(sbvis_h, 1);
1641             }
1642             v = get_int(sbvis_timer);
1643             if (v > 0) cancel_timer(v);
1644             v = timer(1, "timer0", 0);
1645             set_int(sbvis_timer, v);
1646          }
1647       }
1648       program { name: "scroll_up";
1649          signal: "elm,action,scroll,up";
1650          source: "elm";
1651          after: "scroll_vertical";
1652       }
1653       program { name: "scroll_down";
1654          signal: "elm,action,scroll,down";
1655          source: "elm";
1656          after: "scroll_vertical";
1657       }
1658       program { name: "scroll_vertical";
1659          script {
1660             new v;
1661             v = get_int(edge_timer);
1662             if (!v) {
1663                set_state(PART:"shadow_top", "default", 0.0);
1664                set_state(PART:"shadow_bottom", "default", 0.0);
1665                emit("do-show-vshadow", "");
1666                v = get_int(sh_timer);
1667                if (v > 0) cancel_timer(v);
1668                v = timer(0.1, "timer1", 0);
1669                set_int(sh_timer, v);
1670             }
1671          }
1672       }
1673       program { name: "scroll_left";
1674          signal: "elm,action,scroll,left";
1675          source: "elm";
1676          after: "scroll_horizontal";
1677       }
1678       program { name: "scroll_right";
1679          signal: "elm,action,scroll,right";
1680          source: "elm";
1681          after: "scroll_horizontal";
1682       }
1683       program { name: "scroll_horizontal";
1684          script {
1685             new v;
1686             v = get_int(edge_timer);
1687             if (!v) {
1688                set_state(PART:"shadow_left", "default", 0.0);
1689                set_state(PART:"shadow_right", "default", 0.0);
1690                emit("do-show-hshadow", "");
1691                v = get_int(sh_timer);
1692                if (v > 0) cancel_timer(v);
1693                v = timer(0.1, "timer1", 0);
1694                set_int(sh_timer, v);
1695             }
1696          }
1697       }
1698       program { name: "edge_top";
1699          signal: "elm,edge,top";
1700          source: "elm";
1701          script {
1702             set_state(PART:"shadow_top", "hidden", 0.0);
1703             set_state(PART:"shadow_bottom", "hidden", 0.0);
1704          }
1705          after: "edge_vertical";
1706       }
1707       program { name: "edge_bottom";
1708          signal: "elm,edge,bottom";
1709          source: "elm";
1710          script {
1711             set_state(PART:"shadow_top", "hidden", 0.0);
1712             set_state(PART:"shadow_bottom", "hidden", 0.0);
1713          }
1714          after: "edge_vertical";
1715       }
1716       program { name: "edge_left";
1717          signal: "elm,edge,left";
1718          source: "elm";
1719          script {
1720             set_state(PART:"shadow_left", "hidden", 0.0);
1721             set_state(PART:"shadow_right", "hidden", 0.0);
1722          }
1723          after: "edge_horizontal";
1724       }
1725       program { name: "edge_right";
1726          signal: "elm,edge,right";
1727          source: "elm";
1728          script {
1729             set_state(PART:"shadow_left", "hidden", 0.0);
1730             set_state(PART:"shadow_right", "hidden", 0.0);
1731          }
1732          after: "edge_horizontal";
1733       }
1734       program { name: "edge_vertical";
1735          script {
1736             new v;
1737             v = get_int(sh_timer);
1738             if (v > 0) cancel_timer(v);
1739             v = get_int(edge_timer);
1740             if (!v) {
1741                 emit("do-show-vshadow", "");
1742             }
1743             if (v > 0) cancel_timer(v);
1744             v = timer(0.1, "timer2", 0);
1745             set_int(edge_timer, v);
1746          }
1747       }
1748       program { name: "edge_horizontal";
1749          script {
1750             new v;
1751             v = get_int(sh_timer);
1752             if (v > 0) cancel_timer(v);
1753             v = get_int(edge_timer);
1754             if (!v) {
1755                 emit("do-show-hshadow", "");
1756             }
1757             if (v > 0) cancel_timer(v);
1758             v = timer(0.1, "timer2", 0);
1759             set_int(edge_timer, v);
1760          }
1761       }
1762    }
1763 }
1764
1765 group { name: "elm/gengrid/base/default";
1766    inherit: "elm/genlist/base/default";
1767
1768    images {
1769        image: "00_grid_overscrolling_top.png" COMP;
1770        image: "00_grid_overscrolling_bottom.png" COMP;
1771        image: "00_grid_overscrolling_left.png" COMP;
1772        image: "00_grid_overscrolling_right.png" COMP;
1773    }
1774
1775    parts {
1776       part { name: "shadow_top";
1777          description { state: "default" 0.0;
1778             min: 0 405;
1779             image.normal: "00_grid_overscrolling_top.png";
1780          }
1781       }
1782       part { name: "shadow_bottom";
1783          description { state: "default" 0.0;
1784             min: 0 405;
1785             image.normal: "00_grid_overscrolling_bottom.png";
1786          }
1787       }
1788       part { name: "shadow_left";
1789          description { state: "default" 0.0;
1790             min: 405 0;
1791             image.normal: "00_grid_overscrolling_left.png";
1792          }
1793       }
1794       part { name: "shadow_right";
1795          description { state: "default" 0.0;
1796             min: 405 0;
1797             image.normal: "00_grid_overscrolling_right.png";
1798          }
1799       }
1800    }
1801 }
1802
1803 group { name: "elm/gengrid/base/handler";
1804    inherit: "elm/genlist/base/handler";
1805
1806    parts {
1807       part { name: "shadow_top";
1808          description { state: "default" 0.0;
1809             min: 0 405;
1810             image.normal: "00_grid_overscrolling_top.png";
1811          }
1812       }
1813       part { name: "shadow_bottom";
1814          description { state: "default" 0.0;
1815             min: 0 405;
1816             image.normal: "00_grid_overscrolling_bottom.png";
1817          }
1818       }
1819       part { name: "shadow_left";
1820          description { state: "default" 0.0;
1821             min: 405 0;
1822             image.normal: "00_grid_overscrolling_left.png";
1823          }
1824       }
1825       part { name: "shadow_right";
1826          description { state: "default" 0.0;
1827             min: 405 0;
1828             image.normal: "00_grid_overscrolling_right.png";
1829          }
1830       }
1831    }
1832 }
1833
1834 group { name: "elm/scroller/contents/default";
1835    parts {
1836       part { name: "elm.swallow.content";
1837          type: SWALLOW;
1838          description { state: "default" 0.0;
1839          }
1840       }
1841       part { name: "elm.swallow.content_r";
1842          type: SWALLOW;
1843          description { state: "default" 0.0;
1844             fixed: 1 1;
1845             rel1 {
1846                 relative: 1.0 0.0;
1847                 to: "elm.swallow.content";
1848             }
1849             rel2 {
1850                 relative: 2.0 1.0;
1851                 to: "elm.swallow.content";
1852             }
1853          }
1854       }
1855       part { name: "elm.swallow.content_b";
1856          type: SWALLOW;
1857          description { state: "default" 0.0;
1858             fixed: 1 1;
1859             rel1 {
1860                 relative: 0.0 1.0;
1861                 to: "elm.swallow.content";
1862             }
1863             rel2 {
1864                 relative: 1.0 2.0;
1865                 to: "elm.swallow.content";
1866             }
1867          }
1868       }
1869       part { name: "elm.swallow.content_rb";
1870          type: SWALLOW;
1871          description { state: "default" 0.0;
1872             fixed: 1 1;
1873             rel1 {
1874                 relative: 1.0 1.0;
1875                 to: "elm.swallow.content";
1876             }
1877             rel2 {
1878                 relative: 2.0 2.0;
1879                 to: "elm.swallow.content";
1880             }
1881          }
1882       }
1883    }
1884 }
1885