123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- #!/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
|