1#!/bin/bash
2
3export MLT_PROFILE=dv_pal
4export LC_NUMERIC=C
5
6function show_consumers( )
7{
8	awk -F '\t' '{ printf( "%d. %s\n", ++ i, $1 ); }' < consumers.ini
9}
10
11function get_consumer( )
12{
13	option=$1
14	[ "$option" != "" ] && [ $option -gt 0 ] && sed 's/\t\+/\t/g' < consumers.ini | cut -f 2 | head -n $option | tail -n -1
15}
16
17function show_menu( )
18{
19	sed 's/\t\+/\t/g' < demo.ini |
20	awk -F '\t' '{ printf( "%2d. %-30.30s", ++ i, $2 ); if ( i % 2 == 0 ) printf( "\n" ); } END { if ( i % 2 == 1 ) printf( "\n" ); }'
21}
22
23function check_dependencies( )
24{
25	option=$1
26	if [ $option -gt 0 ]
27	then
28		deps=`sed 's/\t\+/\t/g' < demo.ini | cut -f 3 | head -n $option | tail -n -1`
29		if [ "$deps" != "" ]
30		then
31			echo "$deps" |
32			tr ',' '\n' |
33			while read dep
34			do
35				ls $dep > /dev/null 2>&1
36				val=$?
37				[ $val != 0 ] && echo Failed to find $dep >&2 && echo $val
38			done
39		fi
40		echo 0
41	fi
42}
43
44function get_demo( )
45{
46	option=$1
47	if [ $option -gt 0 ]
48	then
49		cut -f 1 demo.ini | head -n $option | tail -n -1
50	fi
51}
52
53while [ 1 ]
54do
55
56	echo Select Consumer
57	echo
58
59	show_consumers
60
61	echo
62	echo 0. Exit
63	echo
64	echo -n "Option: "
65	read option
66	echo
67
68	[ "$option" == "0" ] && break
69
70	export MLT_CONSUMER=`get_consumer $option`
71
72	while [ "$option" != "0" -a "$MLT_CONSUMER" != "" ]
73	do
74		echo Choose Demo
75		echo
76
77		show_menu
78
79		echo
80		echo -n "Option: "
81		read option
82		echo
83
84		[ "$option" == "" ] && break
85
86		demo=`get_demo $option`
87		usable=`check_dependencies $option`
88
89		if [ "$usable" = "0" -a "$demo" != "" ]
90		then
91			if [ "$MLT_CONSUMER" == "xml:" ]
92			then	export XML_CONSUMER="xml:$demo.mlt"
93					bash $demo -consumer $XML_CONSUMER
94					melt +$demo.txt out=100 $demo.mlt $demo.mlt -filter watermark:watermark1.png composite.fill=1 composite.geometry=85%/5%:10%x10%
95			elif [ "$MLT_CONSUMER" == "xml" ]
96			then	bash $demo -consumer $MLT_CONSUMER | less
97			else	bash $demo -consumer $MLT_CONSUMER
98			fi
99		elif [ "$usable" != "" ]
100		then
101			echo
102			echo Unable to locate suitable files for the demo - please provide them.
103			read pause
104		fi
105
106		stty sane
107	done
108
109done
110