Виджит используется так же, как и предыдущие: название виджита (yesno), текстовое сообщение, размеры виджита. Программа dialog возвращает следующие значения:
♦ 0, если пользователь нажал кнопку Yes;
♦ 1, если пользователь нажал кнопку No;
♦ 255, если пользователь нажал клавишу Esc.
25.4. Окно ввода текста
Следующим по частоте применения после информационных виджитов и виджита yes-no следует виджит ввода текстовой информации — Inputbox. Принцип работы данного виджита следующий:
♦ Мы определяем имя временного файла, в который будет записано введенное пользователем сообщение.
♦ Вызываем программу
dialog
с параметром
– -inputbox
.
♦ Перенаправляем вывод программы во временный файл (программа выведет введенное пользователем значение).
♦ Выводим или обрабатываем каким-либо другим способом содержимое временного файла.
– -inputbox "Данный виджит используется для ввода \
информации \n\n \
Введите свое имя:" 16 51 2 > $tempfile
retval=$?
case $retval in
0)
echo "Вы ввели `cat $tempfile`";;
1)
echo "Нажата Cancel";;
255)
if test -s $tempfile ; then
cat $tempfile
else
echo "Нажата ESC."
fi
;;
esac
Рис. 25.3. Виджит InputBox
Значения, возвращаемые программой
dialog
:
♦ 0, если пользователь что-то ввел и нажал Enter или просто нажал <Ввод>, не введя ничего (тогда временный файл будет пуст);
♦ 1, если пользователь нажал Cancel;
♦ 255, если пользователь нажал Esc.
25.5. Зависимые и независимые переключатели
Программа
dialog
позволяет вам использовать в своих сценариях зависимые и независимые переключатели. Зависимые переключатели реализуются виджитом radiolist,
а независимые — checklist.
--checklist "Данный пример демонстрирует работу независимых \n\
переключателей, реализуемых с помощью пакета Dialog \n\
Используйте ПРОБЕЛ для включения или выключения переключателей.\
\n\n\
Какие произведения вы читали?" 20 61 5 \
"Почти как люди" "Саймак" off \
"Фауст" "Гете" ON \
"Мастер и Маргарита" "Булгаков" off \
"Мир теней" "Саймак" off \
"Демон" "Лермонтов" on 2> $tempfile
retval=$?
choice=`cat $tempfile`
case $retval in
0)
echo "Вы выбрали '$choice'";;
1)
echo "Нажата Cancel";;
255)
echo "Нажата ESC";;
esac
Рис. 25.4. Независимые переключатели
Выбранные пользователем значения помещаются во временный файл, который вам нужно будет обработать. Сейчас мы просто выведем его на консоль. Элемент списка checklist может находиться в одном из положений — On или Off. Эти значения не чувствительны к регистру. Во временный файл выводятся только включенные переключатели.
Работа с виджитом radiolist осуществляется так же, как и в виджитом checklist, за исключением того, что может быть активным лишь один элемент и во временный файл будет записан именно этот элемент.