1a9823cb3b30499a2dc060318a3b442819c54ec8
[profile/ivi/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/default";
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
445    alias: "elm/list/base/handler";
446    alias: "elm/genlist/base/handler";
447    alias: "elm/carousel/base/handler";
448
449    data {
450       item: "focus_highlight" "on";
451    }
452    script {
453       public sbvis_v, sbvis_h, sbalways_v, sbalways_h, sbvis_timer;
454       public timer0(val) {
455          new v;
456          v = get_int(sbvis_v);
457          if (v) {
458             v = get_int(sbalways_v);
459             if (!v) {
460                emit("do-hide-vbar", "");
461                set_int(sbvis_v, 0);
462             }
463          }
464          v = get_int(sbvis_h);
465          if (v) {
466             v = get_int(sbalways_h);
467             if (!v) {
468                emit("do-hide-hbar", "");
469                set_int(sbvis_h, 0);
470             }
471          }
472          set_int(sbvis_timer, 0);
473          return 0;
474       }
475    }
476    images {
477       image: "bt_sm_shine.png" COMP;
478       image: "bt_sm_hilight.png" COMP;
479       image: "sb_runnerh.png" COMP;
480       image: "00_scroll_bar_handler_top.png" COMP;
481       image: "00_scroll_bar_handler_middle.png" COMP;
482       image: "00_scroll_bar_handler_bottom.png" COMP;
483       image: "00_scroll_bar_handler_left.png" COMP;
484       image: "00_scroll_bar_handler_hor.png" COMP;
485       image: "00_scroll_bar_handler_right.png" COMP;
486       image: "sl_bt2_2.png" COMP;
487       image: "shelf_inset.png" COMP;
488    }
489    parts {
490       part { name: "bg";
491          type: RECT;
492          scale: 1;
493          description { state: "default" 0.0;
494             rel1.offset: 0 0;
495             rel2.offset: -1 -1;
496             color: 255 255 255 0;
497          }
498       }
499       part { name: "clipper";
500          type: RECT;
501          mouse_events: 0;
502          scale: 1;
503          description { state: "default" 0.0;
504             rel1.to: "bg";
505             rel2.to: "bg";
506             rel1.offset: 0 0;
507             rel2.offset: -1 -1;
508          }
509       }
510       part { name: "elm.swallow.content";
511          clip_to: "clipper";
512          type: SWALLOW;
513          scale: 1;
514          description { state: "default" 0.0;
515             rel1.to: "bg";
516             rel2.to: "bg";
517             rel1.offset: 0 0;
518             rel2.offset: -1 -1;
519          }
520       }
521       part { name: "conf_over";
522          mouse_events:  0;
523          scale: 1;
524          description { state: "default" 0.0;
525             rel1.to: "bg";
526             rel2.to: "bg";
527             visible: 0;
528             image {
529                normal: "shelf_inset.png";
530                border: 7 7 7 7;
531                middle: 0;
532             }
533             fill.smooth : 0;
534          }
535          description { state: "enabled" 0.0;
536             inherit: "default" 0.0;
537             color: 200 155 0 255;
538          }
539       }
540       part { name: "focus_highlight";
541          mouse_events: 0;
542          scale: 1;
543          description { state: "default" 0.0;
544             rel1.offset: -1 -1;
545             rel2.offset: 0 0;
546             image {
547                normal: "sl_bt2_2.png";
548                border: 7 7 7 7;
549                middle: 0;
550             }
551             fill.smooth : 0;
552             color: 200 155 0 0;
553          }
554          description { state: "enabled" 0.0;
555             inherit: "default" 0.0;
556             color: 200 155 0 255;
557          }
558       }
559       part { name: "sb_vbar_clip_master";
560          type: RECT;
561          mouse_events: 0;
562          scale: 1;
563          description { state: "default" 0.0;
564          }
565          description { state: "hidden" 0.0;
566             visible: 0;
567             color: 255 255 255 0;
568          }
569       }
570       part { name: "sb_vbar_clip";
571          clip_to: "sb_vbar_clip_master";
572          type: RECT;
573          mouse_events: 0;
574          scale: 1;
575          description { state: "default" 0.0;
576          }
577          description { state: "hidden" 0.0;
578             visible: 0;
579             color: 255 255 255 0;
580          }
581       }
582       part { name: "sb_vbar";
583          type: RECT;
584          mouse_events: 0;
585          scale: 1;
586          description { state: "default" 0.0;
587             fixed: 1 1;
588             visible: 0;
589             min: SCROLLER_HANDLER_SCROLLBAR_VBAR_MIN_SIZE_INC;
590             align: 1.0 0.0;
591             rel1 {
592                relative: 1.0 0.0;
593                offset: SCROLLER_HANDLER_SCROLLBAR_PADDING_INC SCROLLER_HANDLER_SCROLLBAR_PADDING_INC;
594                to_y:     "elm.swallow.content";
595                to_x:     "elm.swallow.content";
596             }
597             rel2 {
598                relative: 1.0 1.0;
599                offset: (-SCROLLER_HANDLER_SCROLLBAR_PADDING_INC-1) (-SCROLLER_HANDLER_SCROLLBAR_PADDING_INC-1);
600                to_y:     "sb_hbar";
601                to_x:     "elm.swallow.content";
602             }
603          }
604       }
605       part { name: "elm.dragable.vbar";
606          clip_to: "sb_vbar_clip";
607          mouse_events: 1;
608          scale: 1;
609          dragable {
610             x: 0 0 0;
611             y: 1 1 0;
612             confine: "sb_vbar";
613          }
614          description { state: "default" 0.0;
615             fixed: 1 1;
616             min: SCROLLER_HANDLER_SCROLLBAR_VBAR_MIN_SIZE_INC;
617             max: 30 99999;
618             rel1 {
619                relative: 0.5  0.5;
620                offset:   0    0;
621                to: "sb_vbar";
622             }
623             rel2 {
624                relative: 0.5  0.5;
625                offset:   0    0;
626                to: "sb_vbar";
627             }
628          }
629       }
630       part { name: "scrollbar_handler_image_top";
631          clip_to: "sb_vbar_clip";
632          mouse_events: 0;
633          scale: 1;
634          description { state: "default" 0.0;
635             fixed: 1 1;
636             rel1.relative: 0.0 0.0;
637             rel1.to: "elm.dragable.vbar";
638             rel2.relative: 1.0 0.0;
639             rel2.to: "scrollbar_handler_image_middle";
640             visible: 1;
641             image {
642                normal: "00_scroll_bar_handler_top.png";
643                border: 5 5 5 0;
644                border_scale: 1;
645             }
646          }
647       }
648       part { name: "scrollbar_handler_image_middle";
649          clip_to: "sb_vbar_clip";
650          mouse_events: 0;
651          scale: 1;
652          description { state: "default" 0.0;
653             fixed: 1 1;
654             rel1.relative: 0.5 0.5;
655             rel1.to: "elm.dragable.vbar";
656             rel2.relative: 0.5 0.5;
657             rel2.to: "elm.dragable.vbar";
658             visible: 1;
659             min: SCROLLER_HANDLER_SCROLLBAR_VBAR_MIDDLE_MIN_SIZE_INC;
660             image {
661                normal: "00_scroll_bar_handler_middle.png";
662                border: 5 5 0 0;
663                border_scale: 1;
664             }
665          }
666       }
667       part { name: "scrollbar_handler_image_bottom";
668          clip_to: "sb_vbar_clip";
669          mouse_events: 0;
670          scale: 1;
671          description { state: "default" 0.0;
672             fixed: 1 1;
673             rel1.relative: 0.0 1.0;
674             rel1.to: "scrollbar_handler_image_middle";
675             rel2.relative: 1.0 1.0;
676             rel2.to: "elm.dragable.vbar";
677             visible: 1;
678             image {
679                normal: "00_scroll_bar_handler_bottom.png";
680                border: SCROLLER_HANDLER_SCROLLBAR_VBAR_BOTTOM_BORDER;
681                border_scale: 1;
682             }
683          }
684       }
685       part { name: "sb_vbar_over1";
686          clip_to: "sb_vbar_clip";
687          mouse_events: 0;
688          scale: 1;
689          description { state: "default" 0.0;
690             rel1.to: "elm.dragable.vbar";
691             rel2.relative: 1.0 0.5;
692             rel2.to: "elm.dragable.vbar";
693             visible: 0;
694             image {
695                normal: "bt_sm_hilight.png";
696                border: 6 6 6 0;
697                border_scale: 1;
698             }
699          }
700       }
701       part { name: "sb_vbar_over2";
702          clip_to: "sb_vbar_clip";
703          mouse_events: 0;
704          scale: 1;
705          description { state: "default" 0.0;
706             rel1.to: "elm.dragable.vbar";
707             rel2.to: "elm.dragable.vbar";
708             visible: 0;
709             image {
710                normal: "bt_sm_shine.png";
711                border: 6 6 6 0;
712                border_scale: 1;
713             }
714          }
715       }
716       part { name: "sb_hbar_clip_master";
717          type: RECT;
718          mouse_events: 0;
719          scale: 1;
720          description { state: "default" 0.0;
721          }
722          description { state: "hidden" 0.0;
723             visible: 0;
724             color: 255 255 255 0;
725          }
726       }
727       part { name: "sb_hbar_clip";
728          clip_to: "sb_hbar_clip_master";
729          type: RECT;
730          mouse_events: 0;
731          scale: 1;
732          description { state: "default" 0.0;
733          }
734          description { state: "hidden" 0.0;
735             visible: 0;
736             color: 255 255 255 0;
737          }
738       }
739       part { name: "sb_hbar";
740          type: RECT;
741          mouse_events: 0;
742          scale: 1;
743          description { state: "default" 0.0;
744             fixed: 1 1;
745             visible: 0;
746             min: SCROLLER_HANDLER_SCROLLBAR_HBAR_MIN_SIZE_INC;
747             align: 0.0 1.0;
748             rel1 {
749                relative: 0.0 1.0;
750                offset: SCROLLER_HANDLER_SCROLLBAR_PADDING_INC SCROLLER_HANDLER_SCROLLBAR_PADDING_INC;
751                to_x:     "elm.swallow.content";
752                to_y:     "elm.swallow.content";
753             }
754             rel2 {
755                relative: 0.0 1.0;
756                offset: -1 -1;
757                offset: (-SCROLLER_HANDLER_SCROLLBAR_PADDING_INC-1) (-SCROLLER_HANDLER_SCROLLBAR_PADDING_INC-1);
758                to_x: "sb_vbar";
759                to_y:     "elm.swallow.content";
760             }
761          }
762       }
763       part { name: "elm.dragable.hbar";
764          clip_to: "sb_hbar_clip";
765          mouse_events: 1;
766          scale: 1;
767          dragable {
768             x: 1 1 0;
769             y: 0 0 0;
770             confine: "sb_hbar";
771          }
772          description { state: "default" 0.0;
773             fixed: 1 1;
774             min: SCROLLER_HANDLER_SCROLLBAR_HBAR_MIN_SIZE_INC;
775             max: 99999 30;
776             rel1 {
777                relative: 0.5  0.5;
778                offset:   0    0;
779                to: "sb_hbar";
780             }
781             rel2 {
782                relative: 0.5  0.5;
783                offset:   0    0;
784                to: "sb_hbar";
785             }
786          }
787       }
788       part { name: "h_scrollbar_handler_image_left";
789          clip_to: "sb_hbar_clip";
790          mouse_events: 0;
791          scale: 1;
792          description { state: "default" 0.0;
793             fixed: 1 1;
794             rel1.relative: 0.0 0.0;
795             rel1.to: "elm.dragable.hbar";
796             rel2.relative: 0.0 1.0;
797             rel2.to: "scrollbar_handler_image_hor";
798             visible: 1;
799             image {
800                normal: "00_scroll_bar_handler_left.png";
801                border: 5 0 5 5;
802                border_scale: 1;
803             }
804          }
805       }
806       part { name: "scrollbar_handler_image_hor";
807          clip_to: "sb_hbar_clip";
808          mouse_events: 0;
809          scale: 1;
810          description { state: "default" 0.0;
811          fixed: 1 1;
812             rel1.relative: 0.5 0.5;
813             rel1.to: "elm.dragable.hbar";
814             rel2.relative: 0.5 0.5;
815             rel2.to: "elm.dragable.hbar";
816             visible: 1;
817             min: SCROLLER_HANDLER_SCROLLBAR_HBAR_MIDDLE_MIN_SIZE_INC;
818             image {
819                normal: "00_scroll_bar_handler_hor.png";
820                border: 0 0 5 5;
821                border_scale: 1;
822             }
823          }
824       }
825       part { name: "h_scrollbar_handler_image_right";
826          clip_to: "sb_hbar_clip";
827          mouse_events: 0;
828          scale: 1;
829          description { state: "default" 0.0;
830             fixed: 1 1;
831             rel1.relative: 1.0 0.0;
832             rel1.to: "scrollbar_handler_image_hor";
833             rel2.relative: 1.0 1.0;
834             rel2.to: "elm.dragable.hbar";
835             visible: 1;
836             image {
837                normal: "00_scroll_bar_handler_right.png";
838                border: SCROLLER_HANDLER_SCROLLBAR_VBAR_RIGHT_BORDER;
839                border_scale: 1;
840             }
841          }
842       }
843       part { name: "sb_hbar_over1";
844          clip_to: "sb_hbar_clip";
845          mouse_events: 0;
846          scale: 1;
847          description { state: "default" 0.0;
848             rel1.to: "elm.dragable.hbar";
849             rel2.relative: 1.0 0.5;
850             rel2.to: "elm.dragable.hbar";
851             visible: 0;
852             image {
853                normal: "bt_sm_hilight.png";
854                border: 4 4 4 0;
855                border_scale: 1;
856             }
857          }
858       }
859       part { name: "sb_hbar_over2";
860          clip_to: "sb_hbar_clip";
861          mouse_events: 0;
862          scale: 1;
863          description { state: "default" 0.0;
864             rel1.to: "elm.dragable.hbar";
865             rel2.to: "elm.dragable.hbar";
866             visible: 0;
867             image {
868                normal: "bt_sm_shine.png";
869                border: 4 4 4 0;
870                border_scale: 1;
871             }
872          }
873       }
874       part { name: "disabler";
875          type: RECT;
876          scale: 1;
877          description { state: "default" 0.0;
878             rel1.to: "clipper";
879             rel2.to: "clipper";
880             color: 0 0 0 0;
881             visible: 0;
882          }
883          description { state: "disabled" 0.0;
884             inherit: "default" 0.0;
885             visible: 1;
886             color: 128 128 128 128;
887          }
888       }
889    }
890    programs {
891       program { name: "load";
892          signal: "load";
893          source: "";
894          script {
895             set_state(PART:"sb_hbar_clip", "hidden", 0.0);
896             set_state(PART:"sb_vbar_clip", "hidden", 0.0);
897             set_int(sbvis_h, 0);
898             set_int(sbvis_v, 0);
899             set_int(sbalways_v, 0);
900             set_int(sbalways_h, 0);
901             set_int(sbvis_timer, 0);
902          }
903       }
904       program { name: "vbar_show";
905          signal: "elm,action,show,vbar";
906          source: "elm";
907          action: STATE_SET "default" 0.0;
908          target: "sb_vbar_clip_master";
909       }
910       program { name: "vbar_hide";
911          signal: "elm,action,hide,vbar";
912          source: "elm";
913          action: STATE_SET "hidden" 0.0;
914          target: "sb_vbar_clip_master";
915       }
916       program { name: "vbar_show_always";
917          signal: "elm,action,show_always,vbar";
918          source: "elm";
919          script {
920             new v;
921             v = get_int(sbvis_v);
922             v |= get_int(sbalways_v);
923             if (!v) {
924                set_int(sbalways_v, 1);
925                emit("do-show-vbar", "");
926                set_int(sbvis_v, 1);
927             }
928          }
929       }
930       program { name: "vbar_show_notalways";
931          signal: "elm,action,show_notalways,vbar";
932          source: "elm";
933          script {
934             new v;
935             v = get_int(sbalways_v);
936             if (v) {
937                set_int(sbalways_v, 0);
938                v = get_int(sbvis_v);
939                if (!v) {
940                   emit("do-hide-vbar", "");
941                   set_int(sbvis_v, 0);
942                }
943             }
944          }
945       }
946       program { name: "sb_vbar_show";
947          signal: "do-show-vbar";
948          source: "";
949          action: STATE_SET "default" 0.0;
950          transition: LINEAR 0.5;
951          target: "sb_vbar_clip";
952       }
953       program { name: "sb_vbar_hide";
954          signal: "do-hide-vbar";
955          source: "";
956          action: STATE_SET "hidden" 0.0;
957          transition: LINEAR 0.5;
958          target: "sb_vbar_clip";
959       }
960       program { name: "hbar_show";
961          signal: "elm,action,show,hbar";
962          source: "elm";
963          action: STATE_SET "default" 0.0;
964          target: "sb_hbar_clip_master";
965       }
966       program { name: "hbar_hide";
967          signal: "elm,action,hide,hbar";
968          source: "elm";
969          action:  STATE_SET "hidden" 0.0;
970          target: "sb_hbar_clip_master";
971       }
972       program { name: "hbar_show_always";
973          signal: "elm,action,show_always,hbar";
974          source: "elm";
975          script {
976             new v;
977             v = get_int(sbvis_h);
978             v |= get_int(sbalways_h);
979             if (!v) {
980                set_int(sbalways_h, 1);
981                emit("do-show-hbar", "");
982                set_int(sbvis_h, 1);
983             }
984          }
985       }
986       program { name: "hbar_show_notalways";
987          signal: "elm,action,show_notalways,hbar";
988          source: "elm";
989          script {
990             new v;
991             v = get_int(sbalways_h);
992             if (v) {
993                set_int(sbalways_h, 0);
994                v = get_int(sbvis_h);
995                if (!v) {
996                   emit("do-hide-hbar", "");
997                   set_int(sbvis_h, 0);
998                }
999             }
1000          }
1001       }
1002       program { name: "sb_hbar_show";
1003          signal: "do-show-hbar";
1004          source: "";
1005          action: STATE_SET "default" 0.0;
1006          transition: LINEAR 0.5;
1007          target: "sb_hbar_clip";
1008       }
1009       program { name: "sb_hbar_hide";
1010          signal: "do-hide-hbar";
1011          source: "";
1012          action: STATE_SET "hidden" 0.0;
1013          transition: LINEAR 0.5;
1014          target: "sb_hbar_clip";
1015       }
1016
1017       program { name: "scroll";
1018          signal: "elm,action,scroll";
1019          source: "elm";
1020          script {
1021             new v;
1022             v = get_int(sbvis_v);
1023             v |= get_int(sbalways_v);
1024             if (!v) {
1025                emit("do-show-vbar", "");
1026                set_int(sbvis_v, 1);
1027             }
1028             v = get_int(sbvis_h);
1029             v |= get_int(sbalways_h);
1030             if (!v) {
1031                emit("do-show-hbar", "");
1032                set_int(sbvis_h, 1);
1033             }
1034             v = get_int(sbvis_timer);
1035             if (v > 0) cancel_timer(v);
1036             v = timer(1.0, "timer0", 0);
1037             set_int(sbvis_timer, v);
1038          }
1039       }
1040
1041       program { name: "highlight_show";
1042          signal: "elm,action,focus_highlight,show";
1043          source: "elm";
1044          action: STATE_SET "enabled" 0.0;
1045          transition: ACCELERATE 0.3;
1046          target: "focus_highlight";
1047          target: "conf_over";
1048       }
1049       program { name: "highlight_hide";
1050          signal: "elm,action,focus_highlight,hide";
1051          source: "elm";
1052          action: STATE_SET "default" 0.0;
1053          transition: DECELERATE 0.3;
1054          target: "focus_highlight";
1055          target: "conf_over";
1056       }
1057       program { name: "disable";
1058          signal: "elm,state,disabled";
1059          source: "elm";
1060          action: STATE_SET "disabled" 0.0;
1061          target: "disabler";
1062       }
1063       program { name: "enable";
1064          signal: "elm,state,enabled";
1065          source: "elm";
1066          action: STATE_SET "default" 0.0;
1067          target: "disabler";
1068       }
1069    }
1070 }
1071
1072 group { name: "elm/genlist/base/default";
1073    alias: "elm/genscroller/base/default";
1074    alias: "elm/gengrid/base/default";
1075    alias: "elm/list/base/default";
1076    inherit: "elm/scroller/base/default";
1077
1078    images {
1079       image: "00_overscrolling_top.png" COMP;
1080       image: "00_overscrolling_bottom.png" COMP;
1081       image: "00_overscrolling_left.png" COMP;
1082       image: "00_overscrolling_right.png" COMP;
1083    }
1084
1085    parts {
1086       part { name: "shadow_clip";
1087          type: RECT;
1088          mouse_events: 0;
1089          scale: 1;
1090          description { state: "default" 0.0;
1091          }
1092          description { state: "hidden" 0.0;
1093             visible: 0;
1094             color: 255 255 255 0;
1095          }
1096       }
1097       part { name: "shadow_top";
1098          clip_to: "shadow_clip";
1099          type: IMAGE;
1100          scale: 1;
1101          description { state: "default" 0.0;
1102             min: 0 30;
1103             fixed: 1 1;
1104             align: 0.5 0.0;
1105             color: 255 255 255 100;
1106             rel1.relative: 0.0 0.0;
1107             rel2.relative: 1.0 0.0;
1108             rel1.to: "elm.swallow.content";
1109             rel2.to: "elm.swallow.content";
1110             image.normal: "00_overscrolling_top.png";
1111          }
1112          description { state: "edge" 0.0;
1113             inherit: "default" 0.0;
1114             color: 255 255 255 255;
1115          }
1116       }
1117       part { name: "shadow_bottom";
1118          clip_to: "shadow_clip";
1119          type: IMAGE;
1120          scale: 1;
1121          description { state: "default" 0.0;
1122             min: 0 30;
1123             fixed: 1 1;
1124             align: 0.5 1.0;
1125             color: 255 255 255 100;
1126             rel1.relative: 0.0 1.0;
1127             rel2.relative: 1.0 1.0;
1128             rel1.to: "elm.swallow.content";
1129             rel2.to: "elm.swallow.content";
1130             image.normal: "00_overscrolling_bottom.png";
1131          }
1132          description { state: "edge" 0.0;
1133             inherit: "default" 0.0;
1134             color: 255 255 255 255;
1135          }
1136       }
1137       part { name: "shadow_left";
1138          clip_to: "shadow_clip";
1139          type: IMAGE;
1140          scale: 1;
1141          description { state: "default" 0.0;
1142             min: 30 0;
1143             fixed: 1 1;
1144             align: 0.0 0.5;
1145             color: 255 255 255 100;
1146             rel1.relative: 0.0 0.0;
1147             rel2.relative: 0.0 1.0;
1148             rel1.to: "elm.swallow.content";
1149             rel2.to: "elm.swallow.content";
1150             image.normal: "00_overscrolling_left.png";
1151          }
1152          description { state: "edge" 0.0;
1153             inherit: "default" 0.0;
1154             color: 255 255 255 255;
1155          }
1156       }
1157       part { name: "shadow_right";
1158          clip_to: "shadow_clip";
1159          type: IMAGE;
1160          scale: 1;
1161          description { state: "default" 0.0;
1162             min: 30 0;
1163             fixed: 1 1;
1164             align: 1.0 0.5;
1165             color: 255 255 255 100;
1166             rel1.relative: 1.0 0.0;
1167             rel2.relative: 1.0 1.0;
1168             rel1.to: "elm.swallow.content";
1169             rel2.to: "elm.swallow.content";
1170             image.normal: "00_overscrolling_right.png";
1171          }
1172          description { state: "edge" 0.0;
1173             inherit: "default" 0.0;
1174             color: 255 255 255 255;
1175          }
1176       }
1177    }
1178    programs {
1179       program { name: "load";
1180          script {
1181             set_state(PART:"sb_hbar_clip", "hidden", 0.0);
1182             set_state(PART:"sb_vbar_clip", "hidden", 0.0);
1183             set_state(PART:"shadow_clip", "hidden", 0.0);
1184             set_int(sbvis_h, 0);
1185             set_int(sbvis_v, 0);
1186             set_int(sbalways_v, 0);
1187             set_int(sbalways_h, 0);
1188             set_int(sbvis_timer, 0);
1189             set_int(sh_v, 0);
1190             set_int(sh_timer, 0);
1191             set_int(edge_timer, 0);
1192          }
1193       }
1194       program { name: "vshadow_show";
1195          signal: "do-show-vshadow";
1196          source: "";
1197          action:  STATE_SET "default" 0.0;
1198          transition: LINEAR 0.5;
1199          target: "shadow_clip";
1200       }
1201       program { name: "vshadow_hide";
1202          signal: "do-hide-vshadow";
1203          source: "";
1204          action:  STATE_SET "hidden" 0.0;
1205          transition: LINEAR 0.5;
1206          target: "shadow_clip";
1207       }
1208       program { name: "scroll";
1209          signal: "elm,action,scroll";
1210          source: "elm";
1211          script {
1212             new v;
1213             v = get_int(sbvis_v);
1214             v |= get_int(sbalways_v);
1215             if (!v) {
1216                emit("do-show-vbar", "");
1217                set_int(sbvis_v, 1);
1218             }
1219             v = get_int(sbvis_h);
1220             v |= get_int(sbalways_h);
1221             if (!v) {
1222                emit("do-show-hbar", "");
1223                set_int(sbvis_h, 1);
1224             }
1225             v = get_int(sbvis_timer);
1226             if (v > 0) cancel_timer(v);
1227             v = timer(1, "timer0", 0);
1228             set_int(sbvis_timer, v);
1229
1230             v = get_int(edge_timer);
1231             if (!v) {
1232                set_state(PART:"shadow_top", "default", 0.0);
1233                set_state(PART:"shadow_bottom", "default", 0.0);
1234                set_state(PART:"shadow_left", "default", 0.0);
1235                set_state(PART:"shadow_right", "default", 0.0);
1236                emit("do-show-vshadow", "");
1237                v = get_int(sh_timer);
1238                if (v > 0) cancel_timer(v);
1239                v = timer(0.2, "timer1", 0);
1240                set_int(sh_timer, v);
1241             }
1242          }
1243       }
1244       program { name: "edge_top";
1245          signal: "elm,edge,top";
1246          source: "elm";
1247          after: "edge";
1248       }
1249       program { name: "edge_bottom";
1250          signal: "elm,edge,bottom";
1251          source: "elm";
1252          after: "edge";
1253       }
1254       program { name: "edge_left";
1255          signal: "elm,edge,left";
1256          source: "elm";
1257          after: "edge";
1258       }
1259       program { name: "edge_right";
1260          signal: "elm,edge,right";
1261          source: "elm";
1262          after: "edge";
1263       }
1264       program { name: "edge";
1265          script {
1266             new v;
1267             v = get_int(sh_timer);
1268             if (v > 0) cancel_timer(v);
1269             set_state(PART:"shadow_top", "edge", 0.0);
1270             set_state(PART:"shadow_bottom", "edge", 0.0);
1271             set_state(PART:"shadow_left", "edge", 0.0);
1272             set_state(PART:"shadow_right", "edge", 0.0);
1273             v = get_int(edge_timer);
1274             if (!v) {
1275                 emit("do-show-vshadow", "");
1276             }
1277             if (v > 0) cancel_timer(v);
1278             v = timer(0.2, "timer2", 0);
1279             set_int(edge_timer, v);
1280          }
1281       }
1282       program { name: "show";
1283          signal: "show";
1284          source: "";
1285          script {
1286             new v;
1287             emit("do-show-vbar", "");
1288             set_int(sbvis_v, 1);
1289             v = get_int(sbalways_v);
1290             if (!v) {
1291               v = get_int(sbvis_timer);
1292               if (v > 0) cancel_timer(v);
1293               v = timer(1.0, "timer0", 0);
1294               set_int(sbvis_timer, v);
1295             }
1296             emit("do-show-hbar", "");
1297             set_int(sbvis_h, 1);
1298             v = get_int(sbalways_h);
1299             if (!v) {
1300               v = get_int(sbvis_timer);
1301               if (v > 0) cancel_timer(v);
1302               v = timer(1.0, "timer0", 0);
1303               set_int(sbvis_timer, v);
1304             }
1305          }
1306       }
1307    }
1308 }