winamp/Src/external_dependencies/openmpt-trunk/build/wine/dialog.sh
2024-09-24 14:54:57 +02:00

139 lines
2.4 KiB
Bash

#!/usr/bin/env sh
# Usage:
# dailog.sh [tui|gui] [--infobox|--messagebox|--yesno|--gauge] title message
# WARNING: no error checking is done
fake_dialog () {
case "$2" in
--infobox)
echo ""
echo "$3"
echo "$4"
echo ""
;;
--msgbox)
echo ""
echo "$3"
echo "$4"
read -p "Press [Enter] key to continue ... \$ " DIALOG_RESULT
echo ""
;;
--yesno)
while true ; do
echo ""
echo "$3"
echo "$4"
read -p "([yes], no) \$ " DIALOG_RESULT
echo ""
case "x$DIALOG_RESULT" in
xno)
DIALOG_RESULT="n"
break
;;
xNO)
DIALOG_RESULT="n"
break
;;
xyes)
DIALOG_RESULT="y"
break
;;
xYES)
DIALOG_RESULT="y"
break
;;
x)
DIALOG_RESULT="y"
break
;;
*)
;;
esac
done
case "$DIALOG_RESULT" in
n)
(exit 1)
;;
y)
(exit 0)
;;
*)
(exit 0)
;;
esac
;;
--textbox)
echo ""
echo "$3"
if command -v "less" 2>/dev/null 1>/dev/null ; then
less "$4"
else
if command -v "more" 2>/dev/null 1>/dev/null ; then
more "$4"
else
cat "$4"
read -p "Press [Enter] key to continue ... \$ " DIALOG_RESULT
fi
fi
echo ""
;;
*)
echo "$4"
;;
esac
}
fake_progress () {
echo ""
echo "$3"
echo "$4"
echo -n "0%..."
while IFS='' read -r line ; do
if [ '(' "$line" -gt 1 ')' -a '(' "$line" -lt 100 ')' ]; then
echo -n "$line%..."
fi
done
echo -n "100%"
echo ""
echo ""
}
if [ "$2" = "--gauge" ]; then
if [ "$1" = "tui" ]; then
DIALOG_LIST="dialog whiptail gdialog xdialog fake_progress"
else
DIALOG_LIST="zenity gdialog xdialog dialog whiptail fake_progress"
fi
for d in $DIALOG_LIST ; do
if [ "$d" = "fake_progress" ]; then
fake_progress "tui" "$2" "$3" "$4"
exit $?
else
if command -v "$d" 2>/dev/null 1>/dev/null ; then
if [ "$d" = "zenity" ]; then
exec $d --title "$3" --auto-close --progress "--text=$4" 0 0 0
else
exec $d --title "$3" "$2" "$4" 0 0 0
fi
fi
fi
done
else
if [ "$1" = "tui" ]; then
DIALOG_LIST="dialog whiptail gdialog xdialog fake_dialog"
else
DIALOG_LIST="gdialog xdialog dialog whiptail fake_dialog"
fi
for d in $DIALOG_LIST ; do
if [ "$d" = "fake_dialog" ]; then
fake_dialog "tui" "$2" "$3" "$4"
exit $?
else
if command -v "$d" 2>/dev/null 1>/dev/null ; then
exec $d --title "$3" "$2" "$4" 0 0
fi
fi
done
fi