[Scroller] change the shadow effect of the list and add gengrid shadow effect
[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          }
289       }
290
291       program { name: "vbar_show";
292          signal: "elm,action,show,vbar";
293          source: "elm";
294          action:  STATE_SET "default" 0.0;
295          target: "sb_vbar_clip_master";
296       }
297       program { name: "vbar_hide";
298          signal: "elm,action,hide,vbar";
299          source: "elm";
300          action:  STATE_SET "hidden" 0.0;
301          target: "sb_vbar_clip_master";
302       }
303       program { name: "vbar_show_always";
304          signal: "elm,action,show_always,vbar";
305          source: "elm";
306          script {
307             new v;
308             v = get_int(sbvis_v);
309             v |= get_int(sbalways_v);
310             if (!v) {
311                set_int(sbalways_v, 1);
312                emit("do-show-vbar", "");
313                set_int(sbvis_v, 1);
314             }
315          }
316       }
317       program { name: "vbar_show_notalways";
318          signal: "elm,action,show_notalways,vbar";
319          source: "elm";
320          script {
321             new v;
322             v = get_int(sbalways_v);
323             if (v) {
324                set_int(sbalways_v, 0);
325                v = get_int(sbvis_v);
326                if (!v) {
327                   emit("do-hide-vbar", "");
328                   set_int(sbvis_v, 0);
329                }
330             }
331          }
332       }
333       program { name: "sb_vbar_show";
334          signal: "do-show-vbar";
335          source: "";
336          action:  STATE_SET "default" 0.0;
337          transition: LINEAR 0.5;
338          target: "sb_vbar_clip";
339       }
340       program { name: "sb_vbar_hide";
341          signal: "do-hide-vbar";
342          source: "";
343          action:  STATE_SET "hidden" 0.0;
344          transition: LINEAR 0.5;
345          target: "sb_vbar_clip";
346       }
347
348       program { name: "hbar_show";
349          signal: "elm,action,show,hbar";
350          source: "elm";
351          action:  STATE_SET "default" 0.0;
352          target: "sb_hbar_clip_master";
353       }
354       program { name: "hbar_hide";
355          signal: "elm,action,hide,hbar";
356          source: "elm";
357          action:  STATE_SET "hidden" 0.0;
358          target: "sb_hbar_clip_master";
359       }
360       program { name: "hbar_show_always";
361          signal: "elm,action,show_always,hbar";
362          source: "elm";
363          script {
364             new v;
365             v = get_int(sbvis_h);
366             v |= get_int(sbalways_h);
367             if (!v) {
368                set_int(sbalways_h, 1);
369                emit("do-show-hbar", "");
370                set_int(sbvis_h, 1);
371             }
372          }
373       }
374       program { name: "hbar_show_notalways";
375          signal: "elm,action,show_notalways,hbar";
376          source: "elm";
377          script {
378             new v;
379             v = get_int(sbalways_h);
380             if (v) {
381                set_int(sbalways_h, 0);
382                v = get_int(sbvis_h);
383                if (!v) {
384                   emit("do-hide-hbar", "");
385                   set_int(sbvis_h, 0);
386                }
387             }
388          }
389       }
390       program { name: "sb_hbar_show";
391          signal: "do-show-hbar";
392          source: "";
393          action:  STATE_SET "default" 0.0;
394          transition: LINEAR 0.5;
395          target: "sb_hbar_clip";
396       }
397       program { name: "sb_hbar_hide";
398          signal: "do-hide-hbar";
399          source: "";
400          action:  STATE_SET "hidden" 0.0;
401          transition: LINEAR 0.5;
402          target: "sb_hbar_clip";
403       }
404
405       program { name: "scroll";
406          signal: "elm,action,scroll";
407          source: "elm";
408          script {
409             new v;
410             v = get_int(sbvis_v);
411             v |= get_int(sbalways_v);
412             if (!v) {
413                emit("do-show-vbar", "");
414                set_int(sbvis_v, 1);
415             }
416             v = get_int(sbvis_h);
417             v |= get_int(sbalways_h);
418             if (!v) {
419                emit("do-show-hbar", "");
420                set_int(sbvis_h, 1);
421             }
422             v = get_int(sbvis_timer);
423             if (v > 0) cancel_timer(v);
424             v = timer(1.0, "timer0", 0);
425             set_int(sbvis_timer, v);
426          }
427       }
428       program { name: "disable";
429          signal: "elm,state,disabled";
430          source: "elm";
431          action: STATE_SET "disabled" 0.0;
432          target: "disabler";
433       }
434       program { name: "enable";
435          signal: "elm,state,enabled";
436          source: "elm";
437          action: STATE_SET "default" 0.0;
438          target: "disabler";
439       }
440    }
441 }
442
443 group { name: "elm/scroller/base/handler";
444    alias: "elm/carousel/base/handler";
445
446    data {
447       item: "focus_highlight" "on";
448    }
449    script {
450       public sbvis_v, sbvis_h, sbalways_v, sbalways_h, sbvis_timer;
451       public sh_timer, edge_timer;
452       public timer0(val) {
453          new v;
454          v = get_int(sbvis_v);
455          if (v) {
456             v = get_int(sbalways_v);
457             if (!v) {
458                emit("do-hide-vbar", "");
459                set_int(sbvis_v, 0);
460             }
461          }
462          v = get_int(sbvis_h);
463          if (v) {
464             v = get_int(sbalways_h);
465             if (!v) {
466                emit("do-hide-hbar", "");
467                set_int(sbvis_h, 0);
468             }
469          }
470          set_int(sbvis_timer, 0);
471          return 0;
472       }
473       public timer1(val) {
474          emit("do-hide-vshadow", "");
475          emit("do-hide-hshadow", "");
476          set_int(sh_timer, 0);
477          return 0;
478       }
479       public timer2(val) {
480          emit("do-hide-vshadow", "");
481          emit("do-hide-hshadow", "");
482          set_int(edge_timer, 0);
483          return 0;
484       }
485    }
486    images {
487       image: "bt_sm_shine.png" COMP;
488       image: "bt_sm_hilight.png" COMP;
489       image: "sb_runnerh.png" COMP;
490       image: "00_scroll_bar_handler_top.png" COMP;
491       image: "00_scroll_bar_handler_middle.png" COMP;
492       image: "00_scroll_bar_handler_bottom.png" COMP;
493       image: "00_scroll_bar_handler_left.png" COMP;
494       image: "00_scroll_bar_handler_hor.png" COMP;
495       image: "00_scroll_bar_handler_right.png" COMP;
496       image: "sl_bt2_2.png" COMP;
497       image: "shelf_inset.png" COMP;
498    }
499    parts {
500       part { name: "bg";
501          type: RECT;
502          scale: 1;
503          description { state: "default" 0.0;
504             rel1.offset: 0 0;
505             rel2.offset: -1 -1;
506             color: 255 255 255 0;
507          }
508       }
509       part { name: "clipper";
510          type: RECT;
511          mouse_events: 0;
512          scale: 1;
513          description { state: "default" 0.0;
514             rel1.to: "bg";
515             rel2.to: "bg";
516             rel1.offset: 0 0;
517             rel2.offset: -1 -1;
518          }
519       }
520       part { name: "elm.swallow.content";
521          clip_to: "clipper";
522          type: SWALLOW;
523          scale: 1;
524          description { state: "default" 0.0;
525             rel1.to: "bg";
526             rel2.to: "bg";
527             rel1.offset: 0 0;
528             rel2.offset: -1 -1;
529          }
530       }
531       part { name: "conf_over";
532          mouse_events:  0;
533          scale: 1;
534          description { state: "default" 0.0;
535             rel1.to: "bg";
536             rel2.to: "bg";
537             visible: 0;
538             image {
539                normal: "shelf_inset.png";
540                border: 7 7 7 7;
541                middle: 0;
542             }
543             fill.smooth : 0;
544          }
545          description { state: "enabled" 0.0;
546             inherit: "default" 0.0;
547             color: 200 155 0 255;
548          }
549       }
550       part { name: "focus_highlight";
551          mouse_events: 0;
552          scale: 1;
553          description { state: "default" 0.0;
554             rel1.offset: -1 -1;
555             rel2.offset: 0 0;
556             image {
557                normal: "sl_bt2_2.png";
558                border: 7 7 7 7;
559                middle: 0;
560             }
561             fill.smooth : 0;
562             color: 200 155 0 0;
563          }
564          description { state: "enabled" 0.0;
565             inherit: "default" 0.0;
566             color: 200 155 0 255;
567          }
568       }
569       part { name: "sb_vbar_clip_master";
570          type: RECT;
571          mouse_events: 0;
572          scale: 1;
573          description { state: "default" 0.0;
574          }
575          description { state: "hidden" 0.0;
576             visible: 0;
577             color: 255 255 255 0;
578          }
579       }
580       part { name: "sb_vbar_clip";
581          clip_to: "sb_vbar_clip_master";
582          type: RECT;
583          mouse_events: 0;
584          scale: 1;
585          description { state: "default" 0.0;
586          }
587          description { state: "hidden" 0.0;
588             visible: 0;
589             color: 255 255 255 0;
590          }
591       }
592       part { name: "sb_vbar";
593          type: RECT;
594          mouse_events: 0;
595          scale: 1;
596          description { state: "default" 0.0;
597             fixed: 1 1;
598             visible: 0;
599             min: SCROLLER_HANDLER_SCROLLBAR_VBAR_MIN_SIZE_INC;
600             align: 1.0 0.0;
601             rel1 {
602                relative: 1.0 0.0;
603                to_y:     "elm.swallow.content";
604                to_x:     "elm.swallow.content";
605             }
606             rel2 {
607                relative: 1.0 1.0;
608                to_y:     "sb_hbar";
609                to_x:     "elm.swallow.content";
610             }
611          }
612       }
613       part { name: "elm.dragable.vbar";
614          type: RECT;
615          clip_to: "sb_vbar_clip";
616          mouse_events: 1;
617          scale: 1;
618          dragable {
619             x: 0 0 0;
620             y: 1 1 0;
621             confine: "sb_vbar";
622          }
623          description { state: "default" 0.0;
624             fixed: 1 1;
625             color: 0 0 0 0;
626             min: SCROLLER_HANDLER_SCROLLBAR_VBAR_MIN_SIZE_INC;
627             max: 30 99999;
628             rel1 {
629                relative: 0.5  0.5;
630                offset:   0    0;
631                to: "sb_vbar";
632             }
633             rel2 {
634                relative: 0.5  0.5;
635                offset:   0    0;
636                to: "sb_vbar";
637             }
638          }
639       }
640       part { name: "scrollbar_handler_image_top";
641          clip_to: "sb_vbar_clip";
642          mouse_events: 0;
643          scale: 1;
644          description { state: "default" 0.0;
645             fixed: 1 1;
646             rel1.relative: 0.0 0.0;
647             rel1.to: "elm.dragable.vbar";
648             rel2.relative: 1.0 0.0;
649             rel2.to: "scrollbar_handler_image_middle";
650             visible: 1;
651             image {
652                normal: "00_scroll_bar_handler_top.png";
653                border: 11 24 31 0;
654                border_scale: 1;
655             }
656          }
657       }
658       part { name: "scrollbar_handler_image_middle";
659          clip_to: "sb_vbar_clip";
660          mouse_events: 0;
661          scale: 1;
662          description { state: "default" 0.0;
663             fixed: 1 1;
664             rel1.relative: 0.5 0.5;
665             rel1.to: "elm.dragable.vbar";
666             rel2.relative: 0.5 0.5;
667             rel2.to: "elm.dragable.vbar";
668             visible: 1;
669             min: SCROLLER_HANDLER_SCROLLBAR_VBAR_MIDDLE_MIN_SIZE_INC;
670             image {
671                normal: "00_scroll_bar_handler_middle.png";
672                border: 11 24 0 0;
673                border_scale: 1;
674             }
675          }
676       }
677       part { name: "scrollbar_handler_image_bottom";
678          clip_to: "sb_vbar_clip";
679          mouse_events: 0;
680          scale: 1;
681          description { state: "default" 0.0;
682             fixed: 1 1;
683             rel1.relative: 0.0 1.0;
684             rel1.to: "scrollbar_handler_image_middle";
685             rel2.relative: 1.0 1.0;
686             rel2.to: "elm.dragable.vbar";
687             visible: 1;
688             image {
689                normal: "00_scroll_bar_handler_bottom.png";
690                border: 11 24 0 36;
691                border_scale: 1;
692             }
693          }
694       }
695       part { name: "sb_vbar_over1";
696          clip_to: "sb_vbar_clip";
697          mouse_events: 0;
698          scale: 1;
699          description { state: "default" 0.0;
700             rel1.to: "elm.dragable.vbar";
701             rel2.relative: 1.0 0.5;
702             rel2.to: "elm.dragable.vbar";
703             visible: 0;
704             image {
705                normal: "bt_sm_hilight.png";
706                border: 6 6 6 0;
707                border_scale: 1;
708             }
709          }
710       }
711       part { name: "sb_vbar_over2";
712          clip_to: "sb_vbar_clip";
713          mouse_events: 0;
714          scale: 1;
715          description { state: "default" 0.0;
716             rel1.to: "elm.dragable.vbar";
717             rel2.to: "elm.dragable.vbar";
718             visible: 0;
719             image {
720                normal: "bt_sm_shine.png";
721                border: 6 6 6 0;
722                border_scale: 1;
723             }
724          }
725       }
726       part { name: "sb_hbar_clip_master";
727          type: RECT;
728          mouse_events: 0;
729          scale: 1;
730          description { state: "default" 0.0;
731          }
732          description { state: "hidden" 0.0;
733             visible: 0;
734             color: 255 255 255 0;
735          }
736       }
737       part { name: "sb_hbar_clip";
738          clip_to: "sb_hbar_clip_master";
739          type: RECT;
740          mouse_events: 0;
741          scale: 1;
742          description { state: "default" 0.0;
743          }
744          description { state: "hidden" 0.0;
745             visible: 0;
746             color: 255 255 255 0;
747          }
748       }
749       part { name: "sb_hbar";
750          type: RECT;
751          mouse_events: 0;
752          scale: 1;
753          description { state: "default" 0.0;
754             fixed: 1 1;
755             visible: 0;
756             min: SCROLLER_HANDLER_SCROLLBAR_HBAR_MIN_SIZE_INC;
757             align: 0.0 1.0;
758             rel1 {
759                relative: 0.0 1.0;
760                to_x:     "elm.swallow.content";
761                to_y:     "elm.swallow.content";
762             }
763             rel2 {
764                relative: 0.0 1.0;
765                offset: -1 -1;
766                to_x: "sb_vbar";
767                to_y:     "elm.swallow.content";
768             }
769          }
770       }
771       part { name: "elm.dragable.hbar";
772          type: RECT;
773          clip_to: "sb_hbar_clip";
774          mouse_events: 1;
775          scale: 1;
776          dragable {
777             x: 1 1 0;
778             y: 0 0 0;
779             confine: "sb_hbar";
780          }
781          description { state: "default" 0.0;
782             fixed: 1 1;
783             color: 0 0 0 0;
784             min: SCROLLER_HANDLER_SCROLLBAR_HBAR_MIN_SIZE_INC;
785             max: 99999 30;
786             rel1 {
787                relative: 0.5  0.5;
788                offset:   0    0;
789                to: "sb_hbar";
790             }
791             rel2 {
792                relative: 0.5  0.5;
793                offset:   0    0;
794                to: "sb_hbar";
795             }
796          }
797       }
798       part { name: "h_scrollbar_handler_image_left";
799          clip_to: "sb_hbar_clip";
800          mouse_events: 0;
801          scale: 1;
802          description { state: "default" 0.0;
803             fixed: 1 1;
804             rel1.relative: 0.0 0.0;
805             rel1.to: "elm.dragable.hbar";
806             rel2.relative: 0.0 1.0;
807             rel2.to: "scrollbar_handler_image_hor";
808             visible: 1;
809             image {
810                normal: "00_scroll_bar_handler_left.png";
811                border: 31 0 11 24;
812                border_scale: 1;
813             }
814          }
815       }
816       part { name: "scrollbar_handler_image_hor";
817          clip_to: "sb_hbar_clip";
818          mouse_events: 0;
819          scale: 1;
820          description { state: "default" 0.0;
821          fixed: 1 1;
822             rel1.relative: 0.5 0.5;
823             rel1.to: "elm.dragable.hbar";
824             rel2.relative: 0.5 0.5;
825             rel2.to: "elm.dragable.hbar";
826             visible: 1;
827             min: SCROLLER_HANDLER_SCROLLBAR_HBAR_MIDDLE_MIN_SIZE_INC;
828             image {
829                normal: "00_scroll_bar_handler_hor.png";
830                border: 0 0 11 24;
831                border_scale: 1;
832             }
833          }
834       }
835       part { name: "h_scrollbar_handler_image_right";
836          clip_to: "sb_hbar_clip";
837          mouse_events: 0;
838          scale: 1;
839          description { state: "default" 0.0;
840             fixed: 1 1;
841             rel1.relative: 1.0 0.0;
842             rel1.to: "scrollbar_handler_image_hor";
843             rel2.relative: 1.0 1.0;
844             rel2.to: "elm.dragable.hbar";
845             visible: 1;
846             image {
847                normal: "00_scroll_bar_handler_right.png";
848                border: 0 36 11 24;
849                border_scale: 1;
850             }
851          }
852       }
853       part { name: "sb_hbar_over1";
854          clip_to: "sb_hbar_clip";
855          mouse_events: 0;
856          scale: 1;
857          description { state: "default" 0.0;
858             rel1.to: "elm.dragable.hbar";
859             rel2.relative: 1.0 0.5;
860             rel2.to: "elm.dragable.hbar";
861             visible: 0;
862             image {
863                normal: "bt_sm_hilight.png";
864                border: 4 4 4 0;
865                border_scale: 1;
866             }
867          }
868       }
869       part { name: "sb_hbar_over2";
870          clip_to: "sb_hbar_clip";
871          mouse_events: 0;
872          scale: 1;
873          description { state: "default" 0.0;
874             rel1.to: "elm.dragable.hbar";
875             rel2.to: "elm.dragable.hbar";
876             visible: 0;
877             image {
878                normal: "bt_sm_shine.png";
879                border: 4 4 4 0;
880                border_scale: 1;
881             }
882          }
883       }
884       part { name: "disabler";
885          type: RECT;
886          scale: 1;
887          description { state: "default" 0.0;
888             rel1.to: "clipper";
889             rel2.to: "clipper";
890             color: 0 0 0 0;
891             visible: 0;
892          }
893          description { state: "disabled" 0.0;
894             inherit: "default" 0.0;
895             visible: 1;
896             color: 128 128 128 128;
897          }
898       }
899    }
900    programs {
901       program { name: "load";
902          signal: "load";
903          source: "";
904          script {
905             set_state(PART:"sb_hbar_clip", "hidden", 0.0);
906             set_state(PART:"sb_vbar_clip", "hidden", 0.0);
907             set_int(sbvis_h, 0);
908             set_int(sbvis_v, 0);
909             set_int(sbalways_v, 0);
910             set_int(sbalways_h, 0);
911             set_int(sbvis_timer, 0);
912          }
913       }
914       program { name: "vbar_show";
915          signal: "elm,action,show,vbar";
916          source: "elm";
917          action: STATE_SET "default" 0.0;
918          target: "sb_vbar_clip_master";
919       }
920       program { name: "vbar_hide";
921          signal: "elm,action,hide,vbar";
922          source: "elm";
923          action: STATE_SET "hidden" 0.0;
924          target: "sb_vbar_clip_master";
925       }
926       program { name: "vbar_show_always";
927          signal: "elm,action,show_always,vbar";
928          source: "elm";
929          script {
930             new v;
931             v = get_int(sbvis_v);
932             v |= get_int(sbalways_v);
933             if (!v) {
934                set_int(sbalways_v, 1);
935                emit("do-show-vbar", "");
936                set_int(sbvis_v, 1);
937             }
938          }
939       }
940       program { name: "vbar_show_notalways";
941          signal: "elm,action,show_notalways,vbar";
942          source: "elm";
943          script {
944             new v;
945             v = get_int(sbalways_v);
946             if (v) {
947                set_int(sbalways_v, 0);
948                v = get_int(sbvis_v);
949                if (!v) {
950                   emit("do-hide-vbar", "");
951                   set_int(sbvis_v, 0);
952                }
953             }
954          }
955       }
956       program { name: "vbar_press";
957          signal: "mouse,down,1";
958          source: "elm.dragable.vbar";
959          action:  SIGNAL_EMIT "elm,vbar,press" "elm";
960       }
961       program { name: "vbar_unpress";
962          signal: "mouse,up,1";
963          source: "elm.dragable.vbar";
964          action:  SIGNAL_EMIT "elm,vbar,unpress" "elm";
965       }
966       program { name: "sb_vbar_show";
967          signal: "do-show-vbar";
968          source: "";
969          action: STATE_SET "default" 0.0;
970          transition: LINEAR 0.5;
971          target: "sb_vbar_clip";
972       }
973       program { name: "sb_vbar_hide";
974          signal: "do-hide-vbar";
975          source: "";
976          action: STATE_SET "hidden" 0.0;
977          transition: LINEAR 0.5;
978          target: "sb_vbar_clip";
979       }
980       program { name: "hbar_show";
981          signal: "elm,action,show,hbar";
982          source: "elm";
983          action: STATE_SET "default" 0.0;
984          target: "sb_hbar_clip_master";
985       }
986       program { name: "hbar_hide";
987          signal: "elm,action,hide,hbar";
988          source: "elm";
989          action:  STATE_SET "hidden" 0.0;
990          target: "sb_hbar_clip_master";
991       }
992       program { name: "hbar_show_always";
993          signal: "elm,action,show_always,hbar";
994          source: "elm";
995          script {
996             new v;
997             v = get_int(sbvis_h);
998             v |= get_int(sbalways_h);
999             if (!v) {
1000                set_int(sbalways_h, 1);
1001                emit("do-show-hbar", "");
1002                set_int(sbvis_h, 1);
1003             }
1004          }
1005       }
1006       program { name: "hbar_show_notalways";
1007          signal: "elm,action,show_notalways,hbar";
1008          source: "elm";
1009          script {
1010             new v;
1011             v = get_int(sbalways_h);
1012             if (v) {
1013                set_int(sbalways_h, 0);
1014                v = get_int(sbvis_h);
1015                if (!v) {
1016                   emit("do-hide-hbar", "");
1017                   set_int(sbvis_h, 0);
1018                }
1019             }
1020          }
1021       }
1022       program { name: "hbar_press";
1023          signal: "mouse,down,1";
1024          source: "elm.dragable.hbar";
1025          action:  SIGNAL_EMIT "elm,hbar,press" "elm";
1026       }
1027       program { name: "hbar_unpress";
1028          signal: "mouse,up,1";
1029          source: "elm.dragable.hbar";
1030          action:  SIGNAL_EMIT "elm,hbar,unpress" "elm";
1031       }
1032       program { name: "sb_hbar_show";
1033          signal: "do-show-hbar";
1034          source: "";
1035          action: STATE_SET "default" 0.0;
1036          transition: LINEAR 0.5;
1037          target: "sb_hbar_clip";
1038       }
1039       program { name: "sb_hbar_hide";
1040          signal: "do-hide-hbar";
1041          source: "";
1042          action: STATE_SET "hidden" 0.0;
1043          transition: LINEAR 0.5;
1044          target: "sb_hbar_clip";
1045       }
1046
1047       program { name: "scroll";
1048          signal: "elm,action,scroll";
1049          source: "elm";
1050          script {
1051             new v;
1052             v = get_int(sbvis_v);
1053             v |= get_int(sbalways_v);
1054             if (!v) {
1055                emit("do-show-vbar", "");
1056                set_int(sbvis_v, 1);
1057             }
1058             v = get_int(sbvis_h);
1059             v |= get_int(sbalways_h);
1060             if (!v) {
1061                emit("do-show-hbar", "");
1062                set_int(sbvis_h, 1);
1063             }
1064             v = get_int(sbvis_timer);
1065             if (v > 0) cancel_timer(v);
1066             v = timer(1.0, "timer0", 0);
1067             set_int(sbvis_timer, v);
1068          }
1069       }
1070
1071       program { name: "highlight_show";
1072          signal: "elm,action,focus_highlight,show";
1073          source: "elm";
1074          action: STATE_SET "enabled" 0.0;
1075          transition: ACCELERATE 0.3;
1076          target: "focus_highlight";
1077          target: "conf_over";
1078       }
1079       program { name: "highlight_hide";
1080          signal: "elm,action,focus_highlight,hide";
1081          source: "elm";
1082          action: STATE_SET "default" 0.0;
1083          transition: DECELERATE 0.3;
1084          target: "focus_highlight";
1085          target: "conf_over";
1086       }
1087       program { name: "disable";
1088          signal: "elm,state,disabled";
1089          source: "elm";
1090          action: STATE_SET "disabled" 0.0;
1091          target: "disabler";
1092       }
1093       program { name: "enable";
1094          signal: "elm,state,enabled";
1095          source: "elm";
1096          action: STATE_SET "default" 0.0;
1097          target: "disabler";
1098       }
1099    }
1100 }
1101
1102 group { name: "elm/genlist/base/default";
1103    alias: "elm/genscroller/base/default";
1104    alias: "elm/list/base/default";
1105    inherit: "elm/scroller/base/default";
1106
1107    images {
1108       image: "00_overscrolling_top.png" COMP;
1109       image: "00_overscrolling_bottom.png" COMP;
1110       image: "00_overscrolling_left.png" COMP;
1111       image: "00_overscrolling_right.png" COMP;
1112    }
1113
1114    parts {
1115       part { name: "vshadow_clip";
1116          type: RECT;
1117          mouse_events: 0;
1118          scale: 1;
1119          description { state: "default" 0.0;
1120          }
1121          description { state: "hidden" 0.0;
1122             visible: 0;
1123             color: 255 255 255 0;
1124          }
1125       }
1126       part { name: "hshadow_clip";
1127          type: RECT;
1128          mouse_events: 0;
1129          scale: 1;
1130          description { state: "default" 0.0;
1131          }
1132          description { state: "hidden" 0.0;
1133             visible: 0;
1134             color: 255 255 255 0;
1135          }
1136       }
1137       part { name: "shadow_top";
1138          clip_to: "vshadow_clip";
1139          type: IMAGE;
1140          scale: 1;
1141          mouse_events: 0;
1142          description { state: "default" 0.0;
1143             min: 0 30;
1144             fixed: 1 1;
1145             align: 0.5 0.0;
1146             color: 255 255 255 100;
1147             rel1.relative: 0.0 0.0;
1148             rel2.relative: 1.0 0.0;
1149             rel1.to: "elm.swallow.content";
1150             rel2.to: "elm.swallow.content";
1151             image.normal: "00_overscrolling_top.png";
1152          }
1153          description { state: "edge" 0.0;
1154             inherit: "default" 0.0;
1155             color: 255 255 255 255;
1156          }
1157          description { state: "hidden" 0.0;
1158             inherit: "default" 0.0;
1159             visible: 0;
1160          }
1161       }
1162       part { name: "shadow_bottom";
1163          clip_to: "vshadow_clip";
1164          type: IMAGE;
1165          scale: 1;
1166          mouse_events: 0;
1167          description { state: "default" 0.0;
1168             min: 0 30;
1169             fixed: 1 1;
1170             align: 0.5 1.0;
1171             color: 255 255 255 100;
1172             rel1.relative: 0.0 1.0;
1173             rel2.relative: 1.0 1.0;
1174             rel1.to: "elm.swallow.content";
1175             rel2.to: "elm.swallow.content";
1176             image.normal: "00_overscrolling_bottom.png";
1177          }
1178          description { state: "edge" 0.0;
1179             inherit: "default" 0.0;
1180             color: 255 255 255 255;
1181          }
1182          description { state: "hidden" 0.0;
1183             inherit: "default" 0.0;
1184             visible: 0;
1185          }
1186       }
1187       part { name: "shadow_left";
1188          clip_to: "hshadow_clip";
1189          type: IMAGE;
1190          scale: 1;
1191          mouse_events: 0;
1192          description { state: "default" 0.0;
1193             min: 30 0;
1194             fixed: 1 1;
1195             align: 0.0 0.5;
1196             color: 255 255 255 100;
1197             rel1.relative: 0.0 0.0;
1198             rel2.relative: 0.0 1.0;
1199             rel1.to: "elm.swallow.content";
1200             rel2.to: "elm.swallow.content";
1201             image.normal: "00_overscrolling_left.png";
1202          }
1203          description { state: "edge" 0.0;
1204             inherit: "default" 0.0;
1205             color: 255 255 255 255;
1206          }
1207          description { state: "hidden" 0.0;
1208             inherit: "default" 0.0;
1209             visible: 0;
1210          }
1211       }
1212       part { name: "shadow_right";
1213          clip_to: "hshadow_clip";
1214          type: IMAGE;
1215          scale: 1;
1216          mouse_events: 0;
1217          description { state: "default" 0.0;
1218             min: 30 0;
1219             fixed: 1 1;
1220             align: 1.0 0.5;
1221             color: 255 255 255 100;
1222             rel1.relative: 1.0 0.0;
1223             rel2.relative: 1.0 1.0;
1224             rel1.to: "elm.swallow.content";
1225             rel2.to: "elm.swallow.content";
1226             image.normal: "00_overscrolling_right.png";
1227          }
1228          description { state: "edge" 0.0;
1229             inherit: "default" 0.0;
1230             color: 255 255 255 255;
1231          }
1232          description { state: "hidden" 0.0;
1233             inherit: "default" 0.0;
1234             visible: 0;
1235          }
1236       }
1237       part { name: "padding_jump_to_top";
1238          type: SPACER;
1239          scale: 1;
1240          description { state: "default" 0.0;
1241             min: BUTTON_JUMP_TOP_PADDING_TO_SCROLLER_MIN_MAX_INC;
1242             max: BUTTON_JUMP_TOP_PADDING_TO_SCROLLER_MIN_MAX_INC;
1243             rel1.relative: 1.0 0.0;
1244             rel2.relative: 1.0 0.0;
1245             rel1.to: "elm.swallow.content";
1246             rel2.to: "elm.swallow.content";
1247             fixed: 1 1;
1248             align: 1.0 0.0;
1249          }
1250       }
1251       part { name: "elm.swallow.jump_to_top";
1252          type: SWALLOW;
1253          scale: 1;
1254          description { state: "default" 0.0;
1255             rel1 {
1256                to: "padding_jump_to_top";
1257                relative: 0.0 1.0;
1258             }
1259             rel2 {
1260                to: "padding_jump_to_top";
1261                relative: 0.0 1.0;
1262             }
1263             fixed: 1 1;
1264             align: 1.0 0.0;
1265          }
1266       }
1267       part { name: "padding_jump_to_left";
1268          type: SPACER;
1269          scale: 1;
1270          description { state: "default" 0.0;
1271             min: BUTTON_JUMP_LEFT_PADDING_TO_SCROLLER_MIN_MAX_INC;
1272             max: BUTTON_JUMP_LEFT_PADDING_TO_SCROLLER_MIN_MAX_INC;
1273             rel1.relative: 0.0 1.0;
1274             rel2.relative: 0.0 1.0;
1275             rel1.to: "elm.swallow.content";
1276             rel2.to: "elm.swallow.content";
1277             fixed: 1 1;
1278             align: 0.0 1.0;
1279          }
1280       }
1281       part { name: "elm.swallow.jump_to_left";
1282          type: SWALLOW;
1283          scale: 1;
1284          description { state: "default" 0.0;
1285             rel1 {
1286                to: "padding_jump_to_left";
1287                relative: 1.0 0.0;
1288             }
1289             rel2 {
1290                to: "padding_jump_to_left";
1291                relative: 1.0 0.0;
1292             }
1293             fixed: 1 1;
1294             align: 0.0 1.0;
1295          }
1296       }
1297    }
1298    programs {
1299       program { name: "load";
1300          script {
1301             set_state(PART:"sb_hbar_clip", "hidden", 0.0);
1302             set_state(PART:"sb_vbar_clip", "hidden", 0.0);
1303             set_state(PART:"vshadow_clip", "hidden", 0.0);
1304             set_state(PART:"hshadow_clip", "hidden", 0.0);
1305             set_int(sbvis_h, 0);
1306             set_int(sbvis_v, 0);
1307             set_int(sbalways_v, 0);
1308             set_int(sbalways_h, 0);
1309             set_int(sbvis_timer, 0);
1310             set_int(sh_v, 0);
1311             set_int(sh_timer, 0);
1312             set_int(edge_timer, 0);
1313          }
1314       }
1315       program { name: "vshadow_show";
1316          signal: "do-show-vshadow";
1317          source: "";
1318          action:  STATE_SET "default" 0.0;
1319          transition: LINEAR 0.5;
1320          target: "vshadow_clip";
1321       }
1322       program { name: "vshadow_hide";
1323          signal: "do-hide-vshadow";
1324          source: "";
1325          action:  STATE_SET "hidden" 0.0;
1326          transition: LINEAR 0.5;
1327          target: "vshadow_clip";
1328       }
1329       program { name: "hshadow_show";
1330          signal: "do-show-hshadow";
1331          source: "";
1332          action:  STATE_SET "default" 0.0;
1333          transition: LINEAR 0.5;
1334          target: "hshadow_clip";
1335       }
1336       program { name: "hshadow_hide";
1337          signal: "do-hide-hshadow";
1338          source: "";
1339          action:  STATE_SET "hidden" 0.0;
1340          transition: LINEAR 0.5;
1341          target: "hshadow_clip";
1342       }
1343       program { name: "scroll";
1344          signal: "elm,action,scroll";
1345          source: "elm";
1346          script {
1347             new v;
1348             v = get_int(sbvis_v);
1349             v |= get_int(sbalways_v);
1350             if (!v) {
1351                emit("do-show-vbar", "");
1352                set_int(sbvis_v, 1);
1353             }
1354             v = get_int(sbvis_h);
1355             v |= get_int(sbalways_h);
1356             if (!v) {
1357                emit("do-show-hbar", "");
1358                set_int(sbvis_h, 1);
1359             }
1360             v = get_int(sbvis_timer);
1361             if (v > 0) cancel_timer(v);
1362             v = timer(1, "timer0", 0);
1363             set_int(sbvis_timer, v);
1364          }
1365       }
1366       program { name: "scroll_up";
1367          signal: "elm,action,scroll,up";
1368          source: "elm";
1369          after: "scroll_vertical";
1370       }
1371       program { name: "scroll_down";
1372          signal: "elm,action,scroll,down";
1373          source: "elm";
1374          after: "scroll_vertical";
1375       }
1376       program { name: "scroll_vertical";
1377          script {
1378             new v;
1379             v = get_int(edge_timer);
1380             if (!v) {
1381                set_state(PART:"shadow_top", "default", 0.0);
1382                set_state(PART:"shadow_bottom", "default", 0.0);
1383                emit("do-show-vshadow", "");
1384                v = get_int(sh_timer);
1385                if (v > 0) cancel_timer(v);
1386                v = timer(0.2, "timer1", 0);
1387                set_int(sh_timer, v);
1388             }
1389          }
1390       }
1391       program { name: "scroll_left";
1392          signal: "elm,action,scroll,left";
1393          source: "elm";
1394          after: "scroll_horizontal";
1395       }
1396       program { name: "scroll_right";
1397          signal: "elm,action,scroll,right";
1398          source: "elm";
1399          after: "scroll_horizontal";
1400       }
1401       program { name: "scroll_horizontal";
1402          script {
1403             new v;
1404             v = get_int(edge_timer);
1405             if (!v) {
1406                set_state(PART:"shadow_left", "default", 0.0);
1407                set_state(PART:"shadow_right", "default", 0.0);
1408                emit("do-show-hshadow", "");
1409                v = get_int(sh_timer);
1410                if (v > 0) cancel_timer(v);
1411                v = timer(0.2, "timer1", 0);
1412                set_int(sh_timer, v);
1413             }
1414          }
1415       }
1416       program { name: "edge_top";
1417          signal: "elm,edge,top";
1418          source: "elm";
1419          script {
1420             set_state(PART:"shadow_top", "edge", 0.0);
1421             set_state(PART:"shadow_bottom", "hidden", 0.0);
1422          }
1423          after: "edge_vertical";
1424       }
1425       program { name: "edge_bottom";
1426          signal: "elm,edge,bottom";
1427          source: "elm";
1428          script {
1429             set_state(PART:"shadow_top", "hidden", 0.0);
1430             set_state(PART:"shadow_bottom", "edge", 0.0);
1431          }
1432          after: "edge_vertical";
1433       }
1434       program { name: "edge_left";
1435          signal: "elm,edge,left";
1436          source: "elm";
1437          script {
1438             set_state(PART:"shadow_left", "edge", 0.0);
1439             set_state(PART:"shadow_right", "hidden", 0.0);
1440          }
1441          after: "edge_horizontal";
1442       }
1443       program { name: "edge_right";
1444          signal: "elm,edge,right";
1445          source: "elm";
1446          script {
1447             set_state(PART:"shadow_left", "hidden", 0.0);
1448             set_state(PART:"shadow_right", "edge", 0.0);
1449          }
1450          after: "edge_horizontal";
1451       }
1452       program { name: "edge_vertical";
1453          script {
1454             new v;
1455             v = get_int(sh_timer);
1456             if (v > 0) cancel_timer(v);
1457             v = get_int(edge_timer);
1458             if (!v) {
1459                 emit("do-show-vshadow", "");
1460             }
1461             if (v > 0) cancel_timer(v);
1462             v = timer(0.2, "timer2", 0);
1463             set_int(edge_timer, v);
1464          }
1465       }
1466       program { name: "edge_horizontal";
1467          script {
1468             new v;
1469             v = get_int(sh_timer);
1470             if (v > 0) cancel_timer(v);
1471             v = get_int(edge_timer);
1472             if (!v) {
1473                 emit("do-show-hshadow", "");
1474             }
1475             if (v > 0) cancel_timer(v);
1476             v = timer(0.2, "timer2", 0);
1477             set_int(edge_timer, v);
1478          }
1479       }
1480       program { name: "show";
1481          signal: "show";
1482          source: "";
1483          script {
1484             new v;
1485             emit("do-show-vbar", "");
1486             set_int(sbvis_v, 1);
1487             v = get_int(sbalways_v);
1488             if (!v) {
1489               v = get_int(sbvis_timer);
1490               if (v > 0) cancel_timer(v);
1491               v = timer(1.0, "timer0", 0);
1492               set_int(sbvis_timer, v);
1493             }
1494             emit("do-show-hbar", "");
1495             set_int(sbvis_h, 1);
1496             v = get_int(sbalways_h);
1497             if (!v) {
1498               v = get_int(sbvis_timer);
1499               if (v > 0) cancel_timer(v);
1500               v = timer(1.0, "timer0", 0);
1501               set_int(sbvis_timer, v);
1502             }
1503          }
1504       }
1505    }
1506 }
1507
1508 group { name: "elm/genlist/base/handler";
1509    alias: "elm/genscroller/base/handler";
1510    alias: "elm/list/base/handler";
1511    inherit: "elm/scroller/base/handler";
1512
1513    images {
1514       image: "00_overscrolling_top.png" COMP;
1515       image: "00_overscrolling_bottom.png" COMP;
1516       image: "00_overscrolling_left.png" COMP;
1517       image: "00_overscrolling_right.png" COMP;
1518    }
1519
1520    parts {
1521       part { name: "vshadow_clip";
1522          type: RECT;
1523          mouse_events: 0;
1524          scale: 1;
1525          description { state: "default" 0.0;
1526          }
1527          description { state: "hidden" 0.0;
1528             visible: 0;
1529             color: 255 255 255 0;
1530          }
1531       }
1532       part { name: "hshadow_clip";
1533          type: RECT;
1534          mouse_events: 0;
1535          scale: 1;
1536          description { state: "default" 0.0;
1537          }
1538          description { state: "hidden" 0.0;
1539             visible: 0;
1540             color: 255 255 255 0;
1541          }
1542       }
1543       part { name: "shadow_top";
1544          clip_to: "vshadow_clip";
1545          type: IMAGE;
1546          scale: 1;
1547          mouse_events: 0;
1548          description { state: "default" 0.0;
1549             min: 0 30;
1550             fixed: 1 1;
1551             align: 0.5 0.0;
1552             color: 255 255 255 100;
1553             rel1.relative: 0.0 0.0;
1554             rel2.relative: 1.0 0.0;
1555             rel1.to: "elm.swallow.content";
1556             rel2.to: "elm.swallow.content";
1557             image.normal: "00_overscrolling_top.png";
1558          }
1559          description { state: "edge" 0.0;
1560             inherit: "default" 0.0;
1561             color: 255 255 255 255;
1562          }
1563          description { state: "hidden" 0.0;
1564             inherit: "default" 0.0;
1565             visible: 0;
1566          }
1567       }
1568       part { name: "shadow_bottom";
1569          clip_to: "vshadow_clip";
1570          type: IMAGE;
1571          scale: 1;
1572          mouse_events: 0;
1573          description { state: "default" 0.0;
1574             min: 0 30;
1575             fixed: 1 1;
1576             align: 0.5 1.0;
1577             color: 255 255 255 100;
1578             rel1.relative: 0.0 1.0;
1579             rel2.relative: 1.0 1.0;
1580             rel1.to: "elm.swallow.content";
1581             rel2.to: "elm.swallow.content";
1582             image.normal: "00_overscrolling_bottom.png";
1583          }
1584          description { state: "edge" 0.0;
1585             inherit: "default" 0.0;
1586             color: 255 255 255 255;
1587          }
1588          description { state: "hidden" 0.0;
1589             inherit: "default" 0.0;
1590             visible: 0;
1591          }
1592       }
1593       part { name: "shadow_left";
1594          clip_to: "hshadow_clip";
1595          type: IMAGE;
1596          scale: 1;
1597          mouse_events: 0;
1598          description { state: "default" 0.0;
1599             min: 30 0;
1600             fixed: 1 1;
1601             align: 0.0 0.5;
1602             color: 255 255 255 100;
1603             rel1.relative: 0.0 0.0;
1604             rel2.relative: 0.0 1.0;
1605             rel1.to: "elm.swallow.content";
1606             rel2.to: "elm.swallow.content";
1607             image.normal: "00_overscrolling_left.png";
1608          }
1609          description { state: "edge" 0.0;
1610             inherit: "default" 0.0;
1611             color: 255 255 255 255;
1612          }
1613          description { state: "hidden" 0.0;
1614             inherit: "default" 0.0;
1615             visible: 0;
1616          }
1617       }
1618       part { name: "shadow_right";
1619          clip_to: "hshadow_clip";
1620          type: IMAGE;
1621          scale: 1;
1622          mouse_events: 0;
1623          description { state: "default" 0.0;
1624             min: 30 0;
1625             fixed: 1 1;
1626             align: 1.0 0.5;
1627             color: 255 255 255 100;
1628             rel1.relative: 1.0 0.0;
1629             rel2.relative: 1.0 1.0;
1630             rel1.to: "elm.swallow.content";
1631             rel2.to: "elm.swallow.content";
1632             image.normal: "00_overscrolling_right.png";
1633          }
1634          description { state: "edge" 0.0;
1635             inherit: "default" 0.0;
1636             color: 255 255 255 255;
1637          }
1638          description { state: "hidden" 0.0;
1639             inherit: "default" 0.0;
1640             visible: 0;
1641          }
1642       }
1643    }
1644    programs {
1645       program { name: "load";
1646          signal: "load";
1647          source: "";
1648          script {
1649             set_state(PART:"sb_hbar_clip", "hidden", 0.0);
1650             set_state(PART:"sb_vbar_clip", "hidden", 0.0);
1651             set_state(PART:"vshadow_clip", "hidden", 0.0);
1652             set_state(PART:"hshadow_clip", "hidden", 0.0);
1653             set_int(sbvis_h, 0);
1654             set_int(sbvis_v, 0);
1655             set_int(sbalways_v, 0);
1656             set_int(sbalways_h, 0);
1657             set_int(sbvis_timer, 0);
1658             set_int(sh_timer, 0);
1659             set_int(edge_timer, 0);
1660          }
1661       }
1662       program { name: "vbar_show_always";
1663          signal: "elm,action,show_always,vbar";
1664          source: "elm";
1665          script {
1666             new v;
1667             v = get_int(sbvis_v);
1668             v |= get_int(sbalways_v);
1669             if (!v) {
1670                set_int(sbalways_v, 1);
1671                emit("do-show-vbar", "");
1672                set_int(sbvis_v, 1);
1673             }
1674          }
1675       }
1676       program { name: "vbar_show_notalways";
1677          signal: "elm,action,show_notalways,vbar";
1678          source: "elm";
1679          script {
1680             new v;
1681             v = get_int(sbalways_v);
1682             if (v) {
1683                set_int(sbalways_v, 0);
1684                v = get_int(sbvis_v);
1685                if (!v) {
1686                   emit("do-hide-vbar", "");
1687                   set_int(sbvis_v, 0);
1688                }
1689             }
1690          }
1691       }
1692       program { name: "hbar_show_always";
1693          signal: "elm,action,show_always,hbar";
1694          source: "elm";
1695          script {
1696             new v;
1697             v = get_int(sbvis_h);
1698             v |= get_int(sbalways_h);
1699             if (!v) {
1700                set_int(sbalways_h, 1);
1701                emit("do-show-hbar", "");
1702                set_int(sbvis_h, 1);
1703             }
1704          }
1705       }
1706       program { name: "hbar_show_notalways";
1707          signal: "elm,action,show_notalways,hbar";
1708          source: "elm";
1709          script {
1710             new v;
1711             v = get_int(sbalways_h);
1712             if (v) {
1713                set_int(sbalways_h, 0);
1714                v = get_int(sbvis_h);
1715                if (!v) {
1716                   emit("do-hide-hbar", "");
1717                   set_int(sbvis_h, 0);
1718                }
1719             }
1720          }
1721       }
1722       program { name: "vshadow_show";
1723          signal: "do-show-vshadow";
1724          source: "";
1725          action:  STATE_SET "default" 0.0;
1726          transition: LINEAR 0.5;
1727          target: "vshadow_clip";
1728       }
1729       program { name: "vshadow_hide";
1730          signal: "do-hide-vshadow";
1731          source: "";
1732          action:  STATE_SET "hidden" 0.0;
1733          transition: LINEAR 0.5;
1734          target: "vshadow_clip";
1735       }
1736       program { name: "hshadow_show";
1737          signal: "do-show-hshadow";
1738          source: "";
1739          action:  STATE_SET "default" 0.0;
1740          transition: LINEAR 0.5;
1741          target: "hshadow_clip";
1742       }
1743       program { name: "hshadow_hide";
1744          signal: "do-hide-hshadow";
1745          source: "";
1746          action:  STATE_SET "hidden" 0.0;
1747          transition: LINEAR 0.5;
1748          target: "hshadow_clip";
1749       }
1750       program { name: "scroll";
1751          signal: "elm,action,scroll";
1752          source: "elm";
1753          script {
1754             new v;
1755             v = get_int(sbvis_v);
1756             v |= get_int(sbalways_v);
1757             if (!v) {
1758                emit("do-show-vbar", "");
1759                set_int(sbvis_v, 1);
1760             }
1761             v = get_int(sbvis_h);
1762             v |= get_int(sbalways_h);
1763             if (!v) {
1764                emit("do-show-hbar", "");
1765                set_int(sbvis_h, 1);
1766             }
1767             v = get_int(sbvis_timer);
1768             if (v > 0) cancel_timer(v);
1769             v = timer(1, "timer0", 0);
1770             set_int(sbvis_timer, v);
1771          }
1772       }
1773       program { name: "scroll_up";
1774          signal: "elm,action,scroll,up";
1775          source: "elm";
1776          after: "scroll_vertical";
1777       }
1778       program { name: "scroll_down";
1779          signal: "elm,action,scroll,down";
1780          source: "elm";
1781          after: "scroll_vertical";
1782       }
1783       program { name: "scroll_vertical";
1784          script {
1785             new v;
1786             v = get_int(edge_timer);
1787             if (!v) {
1788                set_state(PART:"shadow_top", "default", 0.0);
1789                set_state(PART:"shadow_bottom", "default", 0.0);
1790                emit("do-show-vshadow", "");
1791                v = get_int(sh_timer);
1792                if (v > 0) cancel_timer(v);
1793                v = timer(0.2, "timer1", 0);
1794                set_int(sh_timer, v);
1795             }
1796          }
1797       }
1798       program { name: "scroll_left";
1799          signal: "elm,action,scroll,left";
1800          source: "elm";
1801          after: "scroll_horizontal";
1802       }
1803       program { name: "scroll_right";
1804          signal: "elm,action,scroll,right";
1805          source: "elm";
1806          after: "scroll_horizontal";
1807       }
1808       program { name: "scroll_horizontal";
1809          script {
1810             new v;
1811             v = get_int(edge_timer);
1812             if (!v) {
1813                set_state(PART:"shadow_left", "default", 0.0);
1814                set_state(PART:"shadow_right", "default", 0.0);
1815                emit("do-show-hshadow", "");
1816                v = get_int(sh_timer);
1817                if (v > 0) cancel_timer(v);
1818                v = timer(0.2, "timer1", 0);
1819                set_int(sh_timer, v);
1820             }
1821          }
1822       }
1823       program { name: "edge_top";
1824          signal: "elm,edge,top";
1825          source: "elm";
1826          script {
1827             set_state(PART:"shadow_top", "edge", 0.0);
1828             set_state(PART:"shadow_bottom", "hidden", 0.0);
1829          }
1830          after: "edge_vertical";
1831       }
1832       program { name: "edge_bottom";
1833          signal: "elm,edge,bottom";
1834          source: "elm";
1835          script {
1836             set_state(PART:"shadow_top", "hidden", 0.0);
1837             set_state(PART:"shadow_bottom", "edge", 0.0);
1838          }
1839          after: "edge_vertical";
1840       }
1841       program { name: "edge_left";
1842          signal: "elm,edge,left";
1843          source: "elm";
1844          script {
1845             set_state(PART:"shadow_left", "edge", 0.0);
1846             set_state(PART:"shadow_right", "hidden", 0.0);
1847          }
1848          after: "edge_horizontal";
1849       }
1850       program { name: "edge_right";
1851          signal: "elm,edge,right";
1852          source: "elm";
1853          script {
1854             set_state(PART:"shadow_left", "hidden", 0.0);
1855             set_state(PART:"shadow_right", "edge", 0.0);
1856          }
1857          after: "edge_horizontal";
1858       }
1859       program { name: "edge_vertical";
1860          script {
1861             new v;
1862             v = get_int(sh_timer);
1863             if (v > 0) cancel_timer(v);
1864             v = get_int(edge_timer);
1865             if (!v) {
1866                 emit("do-show-vshadow", "");
1867             }
1868             if (v > 0) cancel_timer(v);
1869             v = timer(0.2, "timer2", 0);
1870             set_int(edge_timer, v);
1871          }
1872       }
1873       program { name: "edge_horizontal";
1874          script {
1875             new v;
1876             v = get_int(sh_timer);
1877             if (v > 0) cancel_timer(v);
1878             v = get_int(edge_timer);
1879             if (!v) {
1880                 emit("do-show-hshadow", "");
1881             }
1882             if (v > 0) cancel_timer(v);
1883             v = timer(0.2, "timer2", 0);
1884             set_int(edge_timer, v);
1885          }
1886       }
1887       program { name: "show";
1888          signal: "show";
1889          source: "";
1890          script {
1891             new v;
1892             emit("do-show-vbar", "");
1893             set_int(sbvis_v, 1);
1894             v = get_int(sbalways_v);
1895             if (!v) {
1896               v = get_int(sbvis_timer);
1897               if (v > 0) cancel_timer(v);
1898               v = timer(1.0, "timer0", 0);
1899               set_int(sbvis_timer, v);
1900             }
1901             emit("do-show-hbar", "");
1902             set_int(sbvis_h, 1);
1903             v = get_int(sbalways_h);
1904             if (!v) {
1905               v = get_int(sbvis_timer);
1906               if (v > 0) cancel_timer(v);
1907               v = timer(1.0, "timer0", 0);
1908               set_int(sbvis_timer, v);
1909             }
1910          }
1911       }
1912    }
1913 }
1914
1915 group { name: "elm/gengrid/base/default";
1916    inherit: "elm/genlist/base/default";
1917
1918    images {
1919        image: "00_grid_overscrolling_top.png" COMP;
1920        image: "00_grid_overscrolling_bottom.png" COMP;
1921        image: "00_grid_overscrolling_left.png" COMP;
1922        image: "00_grid_overscrolling_right.png" COMP;
1923    }
1924
1925    parts {
1926       part { name: "shadow_top";
1927          description { state: "default" 0.0;
1928             min: 0 405;
1929             image.normal: "00_grid_overscrolling_top.png";
1930          }
1931          description { state: "edge" 0.0;
1932             inherit: "default" 0.0;
1933             color: 255 255 255 255;
1934          }
1935       }
1936       part { name: "shadow_bottom";
1937          description { state: "default" 0.0;
1938             min: 0 405;
1939             image.normal: "00_grid_overscrolling_bottom.png";
1940          }
1941          description { state: "edge" 0.0;
1942             inherit: "default" 0.0;
1943             color: 255 255 255 255;
1944          }
1945       }
1946       part { name: "shadow_left";
1947          description { state: "default" 0.0;
1948             min: 405 0;
1949             image.normal: "00_grid_overscrolling_left.png";
1950          }
1951          description { state: "edge" 0.0;
1952             inherit: "default" 0.0;
1953             color: 255 255 255 255;
1954          }
1955       }
1956       part { name: "shadow_right";
1957          description { state: "default" 0.0;
1958             min: 405 0;
1959             image.normal: "00_grid_overscrolling_right.png";
1960          }
1961          description { state: "edge" 0.0;
1962             inherit: "default" 0.0;
1963             color: 255 255 255 255;
1964          }
1965       }
1966    }
1967 }
1968
1969 group { name: "elm/gengrid/base/handler";
1970    inherit: "elm/genlist/base/handler";
1971
1972    parts {
1973       part { name: "shadow_top";
1974          description { state: "default" 0.0;
1975             min: 0 405;
1976             image.normal: "00_grid_overscrolling_top.png";
1977          }
1978          description { state: "edge" 0.0;
1979             inherit: "default" 0.0;
1980             color: 255 255 255 255;
1981          }
1982       }
1983       part { name: "shadow_bottom";
1984          description { state: "default" 0.0;
1985             min: 0 405;
1986             image.normal: "00_grid_overscrolling_bottom.png";
1987          }
1988          description { state: "edge" 0.0;
1989             inherit: "default" 0.0;
1990             color: 255 255 255 255;
1991          }
1992       }
1993       part { name: "shadow_left";
1994          description { state: "default" 0.0;
1995             min: 405 0;
1996             image.normal: "00_grid_overscrolling_left.png";
1997          }
1998          description { state: "edge" 0.0;
1999             inherit: "default" 0.0;
2000             color: 255 255 255 255;
2001          }
2002       }
2003       part { name: "shadow_right";
2004          description { state: "default" 0.0;
2005             min: 405 0;
2006             image.normal: "00_grid_overscrolling_right.png";
2007          }
2008          description { state: "edge" 0.0;
2009             inherit: "default" 0.0;
2010             color: 255 255 255 255;
2011          }
2012       }
2013    }
2014 }