tizen 2.3 release
[framework/uifw/elementary.git] / data / objects / test_external.edc
1
2 #define COMMON_EXTERNAL_UNDER \
3          part { name: "clip"; \
4             type: RECT; \
5             description { state: "default" 0.0; \
6             } \
7          } \
8          part { name: "under"; \
9             mouse_events: 0; \
10             clip_to: "clip"; \
11             description { state: "default" 0.0; \
12                align: 0.5 0.0; \
13                aspect: 2.6255 2.6255; \
14                image.normal: "sky.jpg"; \
15             } \
16          }
17
18 #define COMMON_EXTERNAL_OVER \
19          part { name: "over"; \
20             mouse_events: 0; \
21             clip_to: "clip"; \
22             description { state: "default" 0.0; \
23                fill { \
24                   smooth: 0; \
25                   origin { \
26                      relative: 0.0 0.0; \
27                      offset: 0 0; \
28                   } \
29                   size { \
30                      relative: 1.84722 1.0; \
31                      offset: 0 0; \
32                   } \
33                } \
34                image.normal: "clo.png"; \
35             } \
36             description { state: "drift" 0.0; \
37                inherit: "default" 0.0; \
38                fill { \
39                   origin { \
40                      relative: 1.84722 0.0; \
41                      offset: 0 0; \
42                   } \
43                   size { \
44                      relative: 1.84722 1.0; \
45                      offset: 0 0; \
46                   } \
47                } \
48             } \
49          }
50
51 #define COMMON_EXTERNAL_PROGRAM \
52          program { name: "anim1"; \
53             signal: "load"; \
54             source: ""; \
55             action: STATE_SET "drift" 0.0; \
56             transition: LINEAR 10.0; \
57             target: "over"; \
58             after: "anim2"; \
59          } \
60          program { name: "anim2"; \
61             action: STATE_SET "default" 0.0; \
62             target: "over"; \
63             after: "anim1"; \
64          }
65
66 images {
67    image: "sky.jpg" COMP;
68    image: "clo.png" LOSSY 60;
69 }
70
71 collections {
72    group { name: "external/button";
73       parts {
74          COMMON_EXTERNAL_UNDER
75          part { name: "ext_label1";
76             type: EXTERNAL;
77             source: "elm/label";
78             clip_to: "clip";
79             description { state: "default" 0.0;
80                max: 200 50;
81                align: 0.5 0.0;
82                params {
83                   string: "label" "<b>Label and Buttons are edje externals</>\
84 <br>Click buttons to perform edje animations.<br><b>BUG</>: disabled style.";
85                }
86             }
87          }
88          part { name: "ext_button1";
89             type: EXTERNAL;
90             source: "elm/button";
91             clip_to: "clip";
92             description { state: "default" 0.0;
93                max: 200 50;
94                align: 0.5 0.0;
95                rel1.offset: 0 60;
96                params {
97                   string: "label" "icon + label";
98                   string: "icon" "home";
99                }
100             }
101          }
102          part { name: "ext_button2";
103             type: EXTERNAL;
104             source: "elm/button";
105             clip_to: "clip";
106             description { state: "default" 0.0;
107                max: 200 50;
108                align: 0.5 0.0;
109                rel1.offset: 0 120;
110                params {
111                   string: "label" "only label";
112                }
113             }
114          }
115          part { name: "ext_button3";
116             type: EXTERNAL;
117             source: "elm/button";
118             clip_to: "clip";
119             description { state: "default" 0.0;
120                max: 50 50;
121                align: 0.5 0.0;
122                rel1.offset: 0 180;
123                params {
124                   string: "icon" "home";
125                }
126             }
127             description { state: "left" 0.0;
128                inherit: "default" 0.0;
129                align: 0.2 0.0;
130             }
131             description { state: "right" 0.0;
132                inherit: "default" 0.0;
133                align: 0.8 0.0;
134             }
135          }
136          part { name: "ext_button4";
137             type: EXTERNAL;
138             source: "elm/button";
139             clip_to: "clip";
140             description { state: "default" 0.0;
141                max: 200 50;
142                align: 0.5 0.0;
143                rel1.offset: 0 240;
144                params {
145                   string: "label" "anchor style";
146                   string: "style" "anchor";
147                }
148             }
149          }
150          part { name: "ext_button5";
151             type: EXTERNAL;
152             source: "elm/button";
153             clip_to: "clip";
154             description { state: "default" 0.0;
155                max: 200 50;
156                align: 0.5 0.0;
157                rel1.offset: 0 300;
158                params {
159                   string: "label" "disabled";
160                   string: "icon" "home";
161                   bool: "disabled" 1;
162                }
163             }
164          }
165          COMMON_EXTERNAL_OVER
166       }
167       programs {
168          COMMON_EXTERNAL_PROGRAM  
169          program { name: "btn1_click";
170             signal: "clicked";
171             source: "ext_button1";
172             action: STATE_SET "left" 0.0;
173             transition: SINUSOIDAL 0.6 CURRENT;
174             target: "ext_button3";
175          }
176          program { name: "btn2_click";
177             signal: "clicked";
178             source: "ext_button2";
179             action: STATE_SET "right" 0.0;
180             transition: SINUSOIDAL 0.6 CURRENT;
181             target: "ext_button3";
182          }
183          program { name: "btn4_click";
184             signal: "clicked";
185             source: "ext_button4";
186             action: STATE_SET "default" 0.0;
187             transition: SINUSOIDAL 0.6 CURRENT;
188             target: "ext_button3";
189          }
190       }
191    }
192    group { name: "external/slider";
193       parts {
194          COMMON_EXTERNAL_UNDER
195          part { name: "ext_label1";
196             type: EXTERNAL;
197             source: "elm/label";
198             clip_to: "clip";
199             description { state: "default" 0.0;
200                max: 200 50;
201                align: 0.5 0.0;
202                params {
203                   string: "label" "<b>All the Widgets and the Interaction are pure edje</>\
204 <br>The first one is linked with the 3 verticals.<br><b>BUG</>: vertical+disabled.";
205                }
206             }
207          }
208          part { name: "ext_slider1";
209             type: EXTERNAL;
210             source: "elm/slider";
211             clip_to: "clip";
212             description { state: "default" 0.0;
213                max: 300 50;
214                align: 0.5 0.0;
215                rel1.offset: 0 60;
216                params {
217                   string: "label" "Horizontal";
218                   string: "icon" "home";
219                   string: "unit format" "%.1f units";
220                   string: "indicator format" "%.0f";
221                   double: "min" -100.0;
222                   double: "max" 100.0;
223                }
224             }
225          }
226          part { name: "ext_slider2";
227             type: EXTERNAL;
228             source: "elm/slider";
229             clip_to: "clip";
230             description { state: "default" 0.0;
231                max: 300 50;
232                align: 0.5 0.0;
233                rel1.offset: 0 90;
234                params {
235                   string: "label" "Disabled";
236                   string: "icon" "home";
237                   bool: "disabled" 1;
238                   double: "value" 0.5;
239                }
240             }
241          }
242          part { name: "ext_slider3";
243             type: EXTERNAL;
244             source: "elm/slider";
245             clip_to: "clip";
246             description { state: "default" 0.0;
247                max: 300 50;
248                align: 0.5 0.0;
249                rel1.offset: 0 120;
250                params {
251                   string: "label" "Inverted";
252                   bool: "inverted" 1;
253                }
254             }
255          }
256          part { name: "ext_slider4";
257             type: EXTERNAL;
258             source: "elm/slider";
259             clip_to: "clip";
260             description { state: "default" 0.0;
261                max: 50 300;
262                align: 0.0 0.0;
263                rel1.offset: 20 160;
264                params {
265                   string: "label" "Horizontal";
266                   string: "icon" "home";
267                   bool: "horizontal" 0;
268                   string: "unit format" "%.0f u";
269                   string: "indicator format" "%.3f";
270                   double: "min" -100.0;
271                   double: "max" 100.0;
272                }
273             }
274             description { state: "anim" 0.0;
275                inherit: "default" 0.0;
276                rel1.offset: 140 160;
277             }
278          }
279          part { name: "ext_slider5";
280             type: EXTERNAL;
281             source: "elm/slider";
282             clip_to: "clip";
283             description { state: "default" 0.0;
284                max: 50 300;
285                align: 0.0 0.0;
286                rel1.offset: 80 160;
287                params {
288                   string: "label" "Inverted";
289                   string: "icon" "home";
290                   bool: "horizontal" 0;
291                   bool: "inverted" 1;
292                   string: "unit format" "%.0f u";
293                   string: "indicator format" "%.3f";
294                   double: "min" -100.0;
295                   double: "max" 100.0;
296                }
297             }
298             description { state: "anim" 0.0;
299                inherit: "default" 0.0;
300                rel1.offset: 200 160;
301             }
302          }
303          part { name: "ext_slider6";
304             type: EXTERNAL;
305             source: "elm/slider";
306             clip_to: "clip";
307             description { state: "default" 0.0;
308                max: 50 300;
309                align: 0.0 0.0;
310                rel1.offset: 140 160;
311                params {
312                   string: "label" "Disabled";
313                   string: "icon" "home";
314                   double: "min" -70.0;
315                   double: "max" 70.0;
316                   bool: "disabled" 1;
317                   bool: "horizontal" 0;
318                }
319             }
320             description { state: "anim" 0.0;
321                inherit: "default" 0.0;
322                rel1.offset: 260 160;
323             }
324          }
325          part { name: "ext_button1";
326             type: EXTERNAL;
327             source: "elm/button";
328             clip_to: "clip";
329             description { state: "default" 0.0;
330                max: 80 40;
331                align: 0.0 0.0;
332                rel1.offset: 200 230;
333                params {
334                   string: "label" "reset all";
335                }
336             }
337             description { state: "anim" 0.0;
338                inherit: "default" 0.0;
339                rel1.offset: 30 230;
340             }
341          }
342          part { name: "ext_button2";
343             type: EXTERNAL;
344             source: "elm/button";
345             clip_to: "clip";
346             description { state: "default" 0.0;
347                max: 80 40;
348                align: 0.0 0.0;
349                rel1.offset: 200 270;
350                params {
351                   string: "label" "animate";
352                }
353             }
354             description { state: "anim" 0.0;
355                inherit: "default" 0.0;
356                rel1.offset: 30 270;
357             }
358          }
359          part { name: "ext_check1";
360             type: EXTERNAL;
361             source: "elm/check";
362             clip_to: "clip";
363             description { state: "default" 0.0;
364                max: 80 40;
365                align: 0.0 0.0;
366                rel1.offset: 200 310;
367                params {
368                   string: "label" "disable first";
369                }
370             }
371             description { state: "anim" 0.0;
372                inherit: "default" 0.0;
373                rel1.offset: 30 310;
374             }
375          }
376          COMMON_EXTERNAL_OVER
377       }
378       programs {
379          COMMON_EXTERNAL_PROGRAM  
380          program { name: "link";
381             signal: "changed";
382             source: "ext_slider1";
383             action: PARAM_COPY "ext_slider1" "value" "ext_slider4" "value";
384             after: "link2";
385          }
386          program { name: "link2";
387             action: PARAM_COPY "ext_slider1" "value" "ext_slider5" "value";
388             after: "link3";
389          }
390          program { name: "link3";
391             action: PARAM_COPY "ext_slider1" "value" "ext_slider6" "value";
392          }
393          program { name: "reset";
394             signal: "clicked";
395             source: "ext_button1";
396             action: PARAM_SET "ext_slider1" "value" 0.0;
397             after: "reset2";
398          }
399          program { name: "reset2";
400             action: PARAM_SET "ext_slider2" "value" 0.0;
401             after: "reset3";
402          }
403          program { name: "reset3";
404             action: PARAM_SET "ext_slider3" "value" 0.0;
405             after: "reset4";
406          }
407          program { name: "reset4";
408             action: PARAM_SET "ext_slider4" "value" 0.0;
409             after: "reset5";
410          }
411          program { name: "reset5";
412             action: PARAM_SET "ext_slider5" "value" 0.0;
413             after: "reset6";
414          }
415          program { name: "reset6";
416             action: PARAM_SET "ext_slider6" "value" 0.0;
417          }
418          program { name: "disable_first";
419             signal: "changed";
420             source: "ext_check1";
421             action: PARAM_COPY "ext_check1" "state" "ext_slider1" "disabled";
422          }
423          program { name: "animate";
424             signal: "clicked";
425             source: "ext_button2";
426             filter: "ext_slider4" "default" 0.0;
427             action: STATE_SET "anim" 0.0;
428             transition: SPRING 1.5 0.0 5.0;
429             target: "ext_slider4";
430             target: "ext_slider5";
431             target: "ext_slider6";
432             target: "ext_button1";
433             target: "ext_button2";
434             target: "ext_check1";
435          }
436          program { name: "animate_reverse";
437             signal: "clicked";
438             source: "ext_button2";
439             filter: "ext_slider4" "anim" 0.0;
440             action: STATE_SET "default" 0.0;
441             transition: BOUNCE 1.5 0.0 5.0;
442             target: "ext_slider4";
443             target: "ext_slider5";
444             target: "ext_slider6";
445             target: "ext_button1";
446             target: "ext_button2";
447             target: "ext_check1";
448          }
449       }
450    }
451    group { name: "external/scroller";
452       parts {
453          COMMON_EXTERNAL_UNDER
454          part { name: "ext_label1";
455             type: EXTERNAL;
456             source: "elm/label";
457             clip_to: "clip";
458             description { state: "default" 0.0;
459                max: 200 50;
460                align: 0.5 0.0;
461                params {
462                   string: "label" "<b>All the Widgets and the Interaction are pure edje</>\
463 <br>This is not a real test, just an experiment<br><b>BUG</>: clip issue, slider drag, lots of warning, ...";
464                }
465             }
466          }
467          part { name: "ext_scroller1";
468             type: EXTERNAL;
469             source: "elm/scroller";
470             clip_to: "clip";
471             description { state: "default" 0.0;
472                align: 0.5 0.0;
473                rel1.offset: 10 60;
474                rel2 {
475                   to_y: "ext_button1";
476                   relative: 1.0 0.0;
477                   offset: -10 -10;
478                }
479                params {
480                   string: "content" "external/slider";
481                }
482             }
483          }
484          part { name: "ext_button1";
485             type: EXTERNAL;
486             source: "elm/button";
487             clip_to: "clip";
488             description { state: "default" 0.0;
489                max: 80 40;
490                align: 0.0 1.0;
491                rel1.offset: 20 0;
492                rel2.offset: 0 -15;
493                params {
494                   string: "label" "content 1";
495                }
496             }
497          }
498          part { name: "ext_button2";
499             type: EXTERNAL;
500             source: "elm/button";
501             clip_to: "clip";
502             description { state: "default" 0.0;
503                max: 80 40;
504                align: 0.0 1.0;
505                rel1.offset: 100 0;
506                rel2.offset: 0 -15;
507                params {
508                   string: "label" "content 2";
509                }
510             }
511          }
512          part { name: "ext_button3";
513             type: EXTERNAL;
514             source: "elm/button";
515             clip_to: "clip";
516             description { state: "default" 0.0;
517                max: 80 40;
518                align: 0.0 1.0;
519                rel1.offset: 180 0;
520                rel2.offset: 0 -15;
521                params {
522                   string: "label" "content unset";
523                }
524             }
525          }
526          COMMON_EXTERNAL_OVER
527       }
528       programs {
529          COMMON_EXTERNAL_PROGRAM  
530          program { name: "bt1_click";
531             signal: "clicked";
532             source: "ext_button1";
533             action: PARAM_SET "ext_scroller1" "content" "external/button";
534             
535          }
536          program { name: "bt2_click";
537             signal: "clicked";
538             source: "ext_button2";
539             action: PARAM_SET "ext_scroller1" "content" "external/slider";
540          }
541          program { name: "bt3_click";
542             signal: "clicked";
543             source: "ext_button3";
544             action: PARAM_SET "ext_scroller1" "content" "";
545          }
546       }
547    }
548    group { name: "external/pbar";
549       parts {
550          COMMON_EXTERNAL_UNDER
551          part { name: "ext_label1";
552             type: EXTERNAL;
553             source: "elm/label";
554             clip_to: "clip";
555             description { state: "default" 0.0;
556                max: 200 50;
557                align: 0.5 0.0;
558                params {
559                   string: "label" "<b>All the Widgets are edje external</>\
560 <br>This test show how you can access external widgets from <br>\
561 embryo script and from C code.";
562                }
563             }
564          }
565          
566          part { name: "ext_pbar1";
567             type: EXTERNAL;
568             source: "elm/progressbar";
569             clip_to: "clip";
570             description { state: "default" 0.0;
571                max: 999 40;
572                align: 0.0 0.0;
573                rel1.offset: 0 60;
574                params {
575                   string: "unit format" "%.0f %%";
576                   double: "value" 0.5;
577                }
578             }
579          }
580          part { name: "ext_pbar2";
581             type: EXTERNAL;
582             source: "elm/progressbar";
583             clip_to: "clip";
584             description { state: "default" 0.0;
585                max: 999 40;
586                align: 0.0 0.0;
587                rel1.offset: 0 100;
588                params {
589                   string: "label" "infinite bouce";
590                   string: "unit format" "";
591                }
592             }
593          }
594          part { name: "ext_pbar3";
595             type: EXTERNAL;
596             source: "elm/progressbar";
597             clip_to: "clip";
598             description { state: "default" 0.0;
599                max: 999 40;
600                align: 0.0 0.0;
601                rel1.offset: 0 140;
602                params {
603                   string: "label" "inverted";
604                   string: "icon" "home";
605                   bool: "inverted" 1;
606                   string: "unit format" "%.3f units";
607                }
608             }
609          }
610          part { name: "ext_pbar4";
611             type: EXTERNAL;
612             source: "elm/progressbar";
613             clip_to: "clip";
614             description { state: "default" 0.0;
615                max: 50 999;
616                align: 0.1 0.0;
617                rel1.offset: 0 180;
618                rel2.offset: 0 -50;
619                params {
620                   string: "label" "percent";
621                   bool: "horizontal" 0;
622                }
623             }
624          }
625          part { name: "ext_pbar5";
626             type: EXTERNAL;
627             source: "elm/progressbar";
628             clip_to: "clip";
629             description { state: "default" 0.0;
630                max: 50 999;
631                align: 0.5 0.0;
632                rel1.offset: 0 180;
633                rel2.offset: 0 -100;
634                params {
635                   string: "label" "infinite bouce";
636                   bool: "horizontal" 0;
637                   string: "unit format" "";
638                }
639             }
640          }
641          part { name: "ext_pbar6";
642             type: EXTERNAL;
643             source: "elm/progressbar";
644             clip_to: "clip";
645             description { state: "default" 0.0;
646                max: 50 999;
647                align: 0.9 0.0;
648                rel1.offset: 0 180;
649                rel2.offset: 0 -50;
650                params {
651                   string: "label" "inverted";
652                   string: "icon" "home";
653                   bool: "horizontal" 0;
654                   bool: "inverted" 1;
655                   bool: "disabled" 1;
656                }
657             }
658          }
659          part { name: "ext_pbar7";
660             type: EXTERNAL;
661             source: "elm/progressbar";
662             clip_to: "clip";
663             description { state: "default" 0.0;
664                max: 50 999;
665                align: 0.5 0.0;
666                rel1.offset: 0 300;
667                rel2.offset: 0 -50;
668                params {
669                   string: "style" "wheel";
670                }
671             }
672          }
673          part { name: "ext_button1";
674             type: EXTERNAL;
675             source: "elm/button";
676             clip_to: "clip";
677             description { state: "default" 0.0;
678                max: 100 40;
679                align: 0.0 1.0;
680                rel1.offset: 0 0;
681                rel2.offset: 0 -15;
682                params {
683                   string: "label" "anim with edje";
684                }
685             }
686          }
687          part { name: "ext_button2";
688             type: EXTERNAL;
689             source: "elm/button";
690             clip_to: "clip";
691             description { state: "default" 0.0;
692                max: 100 40;
693                align: 0.5 1.0;
694                rel1.offset: 0 0;
695                rel2.offset: 0 -15;
696                params {
697                   string: "label" "...with embryo";
698                }
699             }
700          }
701          part { name: "ext_button3";
702             type: EXTERNAL;
703             source: "elm/button";
704             clip_to: "clip";
705             description { state: "default" 0.0;
706                max: 100 40;
707                align: 1.0 1.0;
708                rel1.offset: 0 0;
709                rel2.offset: 0 -15;
710                params {
711                   string: "label" "...or from C";
712                }
713             }
714          }
715          COMMON_EXTERNAL_OVER
716       }
717       programs {
718          COMMON_EXTERNAL_PROGRAM  
719          program { name: "anim_with_edje";
720             signal: "clicked";
721             source: "ext_button1";
722             action: PARAM_SET "ext_pbar1" "value" 0.0;
723             after: "disable_button1";
724          }
725          program { name: "disable_button1";
726             action: PARAM_SET "ext_button1" "disabled" 1;
727             after: "disable_button2";
728          }
729          program { name: "disable_button2";
730             action: PARAM_SET "ext_button2" "disabled" 1;
731             after: "disable_button3";
732          }
733          program { name: "disable_button3";
734             action: PARAM_SET "ext_button3" "disabled" 1;
735             after: "anim_0";
736          }
737          program { name: "anim_0";
738             action: PARAM_SET "ext_pbar1" "value" 0.0;
739             after: "anim_1";
740          }
741          program { name: "anim_1";
742             in: 0.3 0.0;
743             action: PARAM_SET "ext_pbar1" "value" 0.1;
744             after: "anim_2";
745          }
746          program { name: "anim_2";
747             in: 0.3 0.0;
748             action: PARAM_SET "ext_pbar1" "value" 0.2;
749             after: "anim_3";
750          }
751          program { name: "anim_3";
752             in: 0.3 0.0;
753             action: PARAM_SET "ext_pbar1" "value" 0.3;
754             after: "anim_4";
755          }
756          program { name: "anim_4";
757             in: 0.3 0.0;
758             action: PARAM_SET "ext_pbar1" "value" 0.4;
759             after: "anim_5";
760          }
761          program { name: "anim_5";
762             in: 0.3 0.0;
763             action: PARAM_SET "ext_pbar1" "value" 0.5;
764             after: "anim_6";
765          }
766          program { name: "anim_6";
767             in: 0.3 0.0;
768             action: PARAM_SET "ext_pbar1" "value" 0.6;
769             after: "anim_7";
770          }
771          program { name: "anim_7";
772             in: 0.3 0.0;
773             action: PARAM_SET "ext_pbar1" "value" 0.7;
774             after: "anim_8";
775          }
776          program { name: "anim_8";
777             in: 0.3 0.0;
778             action: PARAM_SET "ext_pbar1" "value" 0.8;
779             after: "anim_9";
780          }
781          program { name: "anim_9";
782             in: 0.3 0.0;
783             action: PARAM_SET "ext_pbar1" "value" 0.9;
784             after: "anim_10";
785          }
786          program { name: "anim_10";
787             in: 0.3 0.0;
788             action: PARAM_SET "ext_pbar1" "value" 1.0;
789             after: "reenable_button1";
790          }
791          program { name: "reenable_button1";
792             action: PARAM_SET "ext_button1" "disabled" 0;
793             after: "reenable_button2";
794          }
795          program { name: "reenable_button2";
796             action: PARAM_SET "ext_button2" "disabled" 0;
797             after: "reenable_button3";
798          }
799          program { name: "reenable_button3";
800             action: PARAM_SET "ext_button3" "disabled" 0;
801          }
802          script {
803             public my_value;
804             public timer_cb(unused) {
805                external_param_set_float(PART:"ext_pbar1", "value", get_float(my_value));
806                external_param_set_float(PART:"ext_pbar3", "value", get_float(my_value));
807                external_param_set_float(PART:"ext_pbar4", "value", get_float(my_value));
808                external_param_set_float(PART:"ext_pbar6", "value", get_float(my_value));
809                if (get_float(my_value) < 1.0)
810                {
811                   set_float(my_value, get_float(my_value) + 0.0123);
812                   timer(0.1, "timer_cb", unused);
813                }
814                else
815                {
816                   external_param_set_bool(PART:"ext_button1", "disabled", 0);
817                   external_param_set_bool(PART:"ext_button2", "disabled", 0);
818                   external_param_set_bool(PART:"ext_button3", "disabled", 0);
819                }
820             }
821          }
822          program { name: "bt2_click";
823             signal: "clicked";
824             source: "ext_button2";
825             script {
826                set_float(my_value, 0.0);
827                external_param_set_bool(PART:"ext_button1", "disabled", 1);
828                external_param_set_bool(PART:"ext_button2", "disabled", 1);
829                external_param_set_bool(PART:"ext_button3", "disabled", 1);
830                timer_cb(0);
831             }
832          }
833       }
834    }
835    group { name: "external/video";
836       parts {
837          COMMON_EXTERNAL_UNDER
838          part { name: "ext_label1";
839             type: EXTERNAL;
840             source: "elm/label";
841             clip_to: "clip";
842             description { state: "default" 0.0;
843                max: 200 50;
844                align: 0.5 0.0;
845                params {
846                   string: "label" "<b>Simple videoplayer in pure edje</>\
847 <br>Just choose a video file, click 'play' and enjoy your movie :)<br>\
848 <b>BUGS:</> Video don't emit signals, some external props are missing.";
849                }
850             }
851          }
852          part { name: "ext_video1";
853             type: EXTERNAL;
854             source: "elm/video";
855             clip_to: "clip";
856             description { state: "default" 0.0;
857                align: 0.5 0.0;
858                rel1.offset: 12 60;
859                rel2.offset: -12 60;
860             }
861          }
862          part { name: "ext_button1";
863             type: EXTERNAL;
864             source: "elm/button";
865             clip_to: "clip";
866             description { state: "default" 0.0;
867                max: 60 40;
868                align: 0.1 0.0;
869                rel1 {
870                   to: "ext_slider1";
871                   relative: 0.0 -1.0;
872                }
873                params {
874                   string: "label" "play";
875                   bool: "disabled" 1;
876                }
877             }
878          }
879          part { name: "ext_button2";
880             type: EXTERNAL;
881             source: "elm/button";
882             clip_to: "clip";
883             description { state: "default" 0.0;
884                max: 60 40;
885                align: 0.5 0.0;
886                rel1 {
887                   to: "ext_slider1";
888                   relative: 0.0 -1.0;
889                }
890                params {
891                   string: "label" "pause";
892                   bool: "disabled" 1;
893                }
894             }
895          }
896          part { name: "ext_button3";
897             type: EXTERNAL;
898             source: "elm/button";
899             clip_to: "clip";
900             description { state: "default" 0.0;
901                max: 60 40;
902                align: 0.9 0.0;
903                rel1 {
904                   to: "ext_slider1";
905                   relative: 0.0 -1.0;
906                }
907                params {
908                   string: "label" "stop";
909                   bool: "disabled" 1;
910                }
911             }
912          }
913          part { name: "ext_slider1";
914             type: EXTERNAL;
915             source: "elm/slider";
916             clip_to: "clip";
917             description { state: "default" 0.0;
918                max: 9999 40;
919                align: 0.0 0.0;
920                rel1 {
921                   to: "ext_slider2";
922                   relative: 0.0 -1.0;
923                }
924                params {
925                   string: "label" "Volume";
926                   string: "indicator format" "%.3f";
927                   bool: "disabled" 1;
928                }
929             }
930          }
931          part { name: "ext_slider2";
932             type: EXTERNAL;
933             source: "elm/slider";
934             clip_to: "clip";
935             description { state: "default" 0.0;
936                max: 9999 40;
937                align: 0.0 0.0;
938                rel1 {
939                   to: "ext_fsentry";
940                   relative: 0.0 -1.0;
941                }
942                params {
943                   string: "label" "Position";
944                   string: "indicator format" "%.1f sec";
945                   bool: "disabled" 1;
946                }
947             }
948          }
949          part { name: "ext_fsentry";
950             type: EXTERNAL;
951             source: "elm/fileselector_entry";
952             clip_to: "clip";
953             description { state: "default" 0.0;
954                max: 9999 40;
955                align: 0.0 1.0;
956                rel1.offset: 6 -6;
957                rel2.offset: -6 -6;
958                params {
959                   string: "label" "choose file";
960                }
961             }
962          }
963          COMMON_EXTERNAL_OVER
964       }
965       programs {
966          COMMON_EXTERNAL_PROGRAM  
967          program { name: "play_clicked";
968             signal: "clicked";
969             source: "ext_button1";
970             action: PARAM_SET "ext_video1" "play" 1;
971          }
972          program { name: "pause_click";
973             signal: "clicked";
974             source: "ext_button2";
975             action: PARAM_SET "ext_video1" "pause" 1;
976          }
977          program { name: "stop_clicked";
978             signal: "clicked";
979             source: "ext_button3";
980             action: PARAM_SET "ext_video1" "stop" 1;
981          }
982          program { name: "volume_slider";
983             signal: "changed";
984             source: "ext_slider1";
985             action: PARAM_COPY "ext_slider1" "value" "ext_video1" "audio level";
986          }
987          program { name: "position_slider";
988             signal: "changed";
989             source: "ext_slider2";
990             script {
991                new Float:len = external_param_get_float(PART:"ext_video1", "play length");
992                new Float:val = external_param_get_float(PART:"ext_slider2", "value");
993                external_param_set_float(PART:"ext_slider2", "max", len);
994                external_param_set_float(PART:"ext_video1", "play position", val);
995             }
996          }
997          program { name: "file_chosen";
998             signal: "file,chosen";
999             source: "ext_fsentry";
1000             action: PARAM_COPY "ext_fsentry" "path" "ext_video1" "uri";
1001             after: "enable_bt1";
1002             after: "enable_bt2";
1003             after: "enable_bt3";
1004             after: "enable_sl1";
1005             after: "enable_sl2";
1006             after: "update_volume_slider";
1007          }
1008          program { name: "enable_bt1";
1009             action: PARAM_SET "ext_button1" "disabled" 0;
1010          }
1011          program { name: "enable_bt2";
1012             action: PARAM_SET "ext_button2" "disabled" 0;
1013          }
1014          program { name: "enable_bt3";
1015             action: PARAM_SET "ext_button3" "disabled" 0;
1016          }
1017          program { name: "enable_sl1";
1018             action: PARAM_SET "ext_slider1" "disabled" 0;
1019          }
1020          program { name: "enable_sl2";
1021             action: PARAM_SET "ext_slider2" "disabled" 0;
1022          }
1023          program { name: "update_volume_slider";
1024             action: PARAM_COPY "ext_video1" "audio level" "ext_slider1" "value";
1025          }
1026       }
1027    }
1028 }