$DIALOG --backtitle 'Пример'
--title 'RADIOLIST BOX' --clear
--radiolist 'Это список зависимых переключателей
Он позволяет выбрать только один вариант из списка
Какую из этих книг вы читали последней?' 2 0 81 5
'Почти как люди' 'Саймак' off
'Фауст' 'Гете' off
'Мастер и Маргарита' 'Булгаков' ON
'Мир теней' 'Саймак' off
'Демон' 'Лермонтов' on 2> $tempfile
retval=$?
choice=`cat $tempfile`
case $retval in
0)
echo 'Вы выбрали '$choice'';;
1)
echo 'Нажата Cancel';;
255)
echo 'Нажата ESC';;
esac
25.6. Организация меню
Виджит MenuBox очень похож на radiolist — они прямо-таки братья-близнецы, только у menubox нет слева переключателя включено/выключено. Использовать MenuBox нужно так же, как и radiolist, но не указывая on или off для элементов меню.
Листинг 25.7. Меню
#!/bin/sh
DIALOG=${DIALOG=dialog}
tempfile=`tempfile 2>/dev/null` ||( tempfile=/tmp/test$$
trap 'rm -f $tempfile' 0 1 2 5 15
$DIALOG --clear --title 'MENU BOX'
--menu 'Этот виджит поможет вам организовать небольшое меню
MENU BOX предоставляет пользователю выбрать один вариант
из списка
Данный виджит также позволяет прокручивать возможные варианты
Вы можете использовать стрелки ВВЕРХ/ВНИЗ, а также клавиши
1-9 для выбора.
Выберите вашу ОС:' 2 0 71 4
'Linux' 'А что, разве есть другие операционные системы'
'FreeBSD' 'Это лучшая ОС'
'Windows' 'Мы кроме Windows ничего не видели...'
'MSDOS' 'На моей двойке ничего другого не запускается :(' 2> $tempfile
retval=$?
choice=`cat $tempfile`
case $retval in
0)
echo 'Ваш выбор '$choice'';;
1)
echo 'Нажата Cancel';;
255)
echo 'Нажата Esc.';;
esac
Рис. 25.5. Виджит menubox
25.7. Календарь
Этот виджит позволяет пользователю удобно ввести дату. Работать с ним нужно так: с помощью клавиши Tab выбираете нужный элемент управления: кнопка OK, Cancel, поле изменения месяца, поле изменения года, поле выбора числа; с помощью стрелок вверх/вниз указываете нужное значения месяца, года, числа и нажимаете <Ввод>. Выбранная вами дата будет отображена на консоли.
Листинг 25.8. Календарь
#!/bin/sh
: ${DIALOG=dialog}
USERDATE=`$DIALOG --stdout --title 'CALENDAR' —calendar
'Выберите дату...'
0 0 1 1 2004`
case $? in
0)
echo 'Вы выбрали дату: $USERDATE.';;
1)
echo 'Нажата Cancel.';;
255)
echo 'Диалог закрыт';;
esac
Рис. 25.6. Календарь
25.8. Шкала прогресса
Для информирования пользователя о ходе процесса, например, копирования или обработки файла, целесообразно использовать виджит gauge (шкала прогресса).