aboutsummaryrefslogtreecommitdiff
path: root/handlers/easydialog.sh
diff options
context:
space:
mode:
Diffstat (limited to 'handlers/easydialog.sh')
-rw-r--r--handlers/easydialog.sh73
1 files changed, 64 insertions, 9 deletions
diff --git a/handlers/easydialog.sh b/handlers/easydialog.sh
index b96a5c1..5d70653 100644
--- a/handlers/easydialog.sh
+++ b/handlers/easydialog.sh
@@ -1,6 +1,7 @@
#!/bin/bash
# copyright 2002 lmoore@tump.com under the terms of the GNU LGPL.
+# additions 2005 collective@riseup.net
# whiptail has trouble being called in the foo=$(whiptail ...) fashion for
# some reason. this is very annoying. this means that we need to use
@@ -22,7 +23,7 @@ setApplicationTitle() {
}
setHelp() {
- HELP="$@"
+ HELP="$@"
}
setDimension() {
@@ -99,6 +100,8 @@ menuBox() {
_genericListBox --menu "$@"
}
+## a menu box with additional help info displayed
+## at the bottom of the window when an item is selected
menuBoxHelp() {
HELP="--item-help"
_genericListBox --menu "$@"
@@ -107,6 +110,7 @@ menuBoxHelp() {
return $status
}
+## a menu box with an addition button 'help'
menuBoxHelpFile() {
HELP="--help-button"
_genericListBox --menu "$@"
@@ -115,7 +119,6 @@ menuBoxHelpFile() {
return $status
}
-
checkBox() {
_genericListBox --checklist "$@"
}
@@ -140,8 +143,64 @@ passwordBox() {
return $status
}
+
+#########################################################
+## begin-item-display style lists
+##
+## these lists are built by calling fuctions multiple times.
+## this can make it easier to build your list in a loop
+##
+
+listBegin() {
+ _menu_title=$1
+ _menu_msg=$2
+ _menu_items=0
+ _menu_text=
+ _menu_labels=
+}
+
+listItem() {
+ _menu_labels[$_menu_items]=$1
+ _menu_text[$_menu_items]=$2
+ let "_menu_items += 1"
+}
+
+
+##
+## takes one of:
+## menu, checklist, radiolist
+##
+listDisplay() {
+ boxtype=$1
+ local temp=$(mktemp -t) || exit 1
+ trap "rm -f $temp" 0
+
+ (
+ echo -ne " $HELP $_DEFAULT "
+ echo -ne " --backtitle '$BACKTITLE' "
+ echo -ne " --title '$_menu_title' "
+ echo -ne " --$boxtype '$_menu_msg' "
+ echo -ne " $HEIGHT $WIDTH 10 "
+ for ((i=0; i < $_menu_items ; i++)); do
+ label=${_menu_labels[$i]}
+ text=${_menu_text[$i]}
+ echo -ne " $label '$text' "
+ done
+ ) | xargs $DIALOG 2> $temp
+
+ local status=$?
+ REPLY=""
+ [ $status = 0 ] && REPLY=`cat $temp`
+ rm -f $temp
+ _DEFAULT=
+ return $status
+}
+
+####################################################
+## FORM
+
_form_gap=2
-startForm() {
+formBegin() {
_form_title=$1
_form_items=0
_form_labels=
@@ -154,7 +213,7 @@ formItem() {
let "_form_items += 1"
}
-displayForm() {
+formDisplay() {
local temp=$(mktemp -t) || exit 1
max_length=0
@@ -167,17 +226,13 @@ displayForm() {
done
let "max_length += 2"
- local form=
local xpos=1
(
echo -n -e "--form '$_form_title' 0 0 20"
for ((i=0; i < $_form_items ; i++)); do
label=${_form_labels[$i]}
text=${_form_text[$i]}
-# if [ "$text" == "" ]; then
-# text='_empty_'
-# fi
- echo -n -e "$form $label $xpos 1 '$text' $xpos $max_length 30 30"
+ echo -n -e " $label $xpos 1 '$text' $xpos $max_length 30 30"
let "xpos += _form_gap"
done
) | xargs $DIALOG 2> $temp