From 67b5cf70d7a48bf9333e448b0d1ca53aacc252ea Mon Sep 17 00:00:00 2001 From: Elijah Saxon Date: Fri, 8 Jul 2005 19:21:46 +0000 Subject: made it so that helpers are dynamically defined. --- handlers/easydialog.sh | 73 +++++++++++++++++++++++++++++++++++++++++++------- handlers/ldap.helper | 1 + handlers/mysql.helper | 1 + handlers/rdiff.helper | 15 ++++++----- handlers/sys.helper | 1 + 5 files changed, 76 insertions(+), 15 deletions(-) (limited to 'handlers') 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 diff --git a/handlers/ldap.helper b/handlers/ldap.helper index 44b08cb..7670817 100644 --- a/handlers/ldap.helper +++ b/handlers/ldap.helper @@ -1,3 +1,4 @@ +HELPERS="$HELPERS ldap:ldap_database_backup" ldap_create_file() { while true; do diff --git a/handlers/mysql.helper b/handlers/mysql.helper index 765f228..759ee26 100644 --- a/handlers/mysql.helper +++ b/handlers/mysql.helper @@ -1,3 +1,4 @@ +HELPERS="$HELPERS mysql:mysql_database_backup" do_mysql_user() { inputBox "mysql action wizard" "specify a system user:" diff --git a/handlers/rdiff.helper b/handlers/rdiff.helper index 2efbe11..2ad2a49 100644 --- a/handlers/rdiff.helper +++ b/handlers/rdiff.helper @@ -1,10 +1,13 @@ + +HELPERS="$HELPERS rdiff:incremental_remote_filesystem_backup" + do_rdiff_dest() { - startForm "rdiff action wizard" + formBegin "rdiff action wizard" formItem "keep" "$rdiff_keep" formItem "dest_directory" "$rdiff_directory" formItem "dest_host" "$rdiff_host" formItem "dest_user" "$rdiff_user" - displayForm + formDisplay [ $? = 1 ] && return; set -- $REPLY @@ -18,7 +21,7 @@ do_rdiff_dest() { } do_rdiff_src() { - startForm "rdiff action wizard: includes" + formBegin "rdiff action wizard: includes" formItem include /var/spool/cron/crontabs formItem include /var/backups formItem include /etc @@ -29,7 +32,7 @@ do_rdiff_src() { formItem include formItem include formItem include - displayForm + formDisplay [ $? = 1 ] && return; rdiff_includes= @@ -39,11 +42,11 @@ do_rdiff_src() { done set +o noglob - startForm "rdiff action wizard: excludes" + formBegin "rdiff action wizard: excludes" formItem exclude '/home/*/.gnupg' formItem exclude formItem exclude - displayForm + formDisplay [ $? = 1 ] && return; rdiff_excludes= diff --git a/handlers/sys.helper b/handlers/sys.helper index 22eb01d..c97f53f 100644 --- a/handlers/sys.helper +++ b/handlers/sys.helper @@ -1,3 +1,4 @@ +HELPERS="$HELPERS sys:general_hardware_and_system_info" sys_wizard() { require_packages hwinfo -- cgit v1.2.3