Чтение онлайн

на главную - закладки

Жанры

Linux: Полное руководство

Аллен Питер В.

Шрифт:

♦ 1, если пользователь нажал Cancel;

♦ 255, если пользователь нажал Esc.

25.5. Зависимые и независимые переключатели

Программа

dialog
позволяет вам использовать в своих сценариях зависимые и независимые переключатели. Зависимые переключатели реализуются виджитом radiolist, а независимые — checklist.

Листинг 25.5. Независимые переключатели

#!/bin/sh

DIALOG=${DIALOG=dialog}

tempfile=`tempfile 2>/dev/null` || tempfile=/tmp/test$$

trap "rm -f $tempfile" 0 1 2 5 15

$DIALOG --backtitle "Пример" \

 --title "Независимые переключатели" \

 --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, за исключением того, что может быть активным лишь один элемент и во временный файл будет записан именно этот элемент.

Листинг 25.6. Зависимые переключатели

#!/bin/sh

DIALOG=${DIALOG=dialog}

tempfile=`tempfile 2>/dev/null` || tempfile=/tmp/test$$

trap 'rm -f $tempfile" 0 1 2 5 15

$DIALOG --backtitle "Пример" \

 --title "RADIOLIST BOX" --clear \

 --radiolist "Это список зависимых переключателей \n\

 Он позволяет выбрать только один вариант из списка \n\

 Какую из этих книг вы читали последней?" 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 "Этот виджит поможет вам организовать небольшое меню \n\

 MENU BOX предоставляет пользователю выбрать один вариант\

 из списка \n\

 Данный виджит также позволяет прокручивать возможные варианты \n\

 Вы можете использовать стрелки ВВЕРХ/ВНИЗ, а также клавиши \n\

 1-9 для выбора.\n\

 Выберите вашу ОС:" 2 0 71 4 \

"Linux" "А что, разве есть другие операционные системы" \

"FreeBSD" "Это лучшая ОС" \

"Windows" "Мы кроме Windows ничего не видели..." \

"MSDOS" "На моей двойке ничего другого не запускается :(" 2> $tempfile

retval=$?

choice=`cat $tempfile`

case $retval in

0)

Поделиться:
Популярные книги

Кодекс Охотника. Книга IX

Винокуров Юрий
9. Кодекс Охотника
Фантастика:
боевая фантастика
городское фэнтези
попаданцы
5.00
рейтинг книги
Кодекс Охотника. Книга IX

Седина в бороду, Босс… вразнос!

Трофимова Любовь
Юмор:
юмористическая проза
5.00
рейтинг книги
Седина в бороду, Босс… вразнос!

Простолюдин

Рокотов Алексей
1. Путь князя
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Простолюдин

Убивать чтобы жить 2

Бор Жорж
2. УЧЖ
Фантастика:
героическая фантастика
боевая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 2

Алекс и Алекс

Афанасьев Семен
1. Алекс и Алекс
Фантастика:
боевая фантастика
6.83
рейтинг книги
Алекс и Алекс

Император Пограничья 4

Астахов Евгений Евгеньевич
4. Император Пограничья
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Император Пограничья 4

Я уже князь. Книга XIX

Дрейк Сириус
19. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я уже князь. Книга XIX

Камень. Книга 3

Минин Станислав
3. Камень
Фантастика:
фэнтези
боевая фантастика
8.58
рейтинг книги
Камень. Книга 3

Эволюционер из трущоб. Том 2

Панарин Антон
2. Эволюционер из трущоб
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
Эволюционер из трущоб. Том 2

Запечатанный во тьме. Том 3

NikL
3. Хроники Арнея
Фантастика:
уся
эпическая фантастика
фэнтези
5.00
рейтинг книги
Запечатанный во тьме. Том 3

Император Пограничья 8

Астахов Евгений Евгеньевич
8. Император Пограничья
Фантастика:
городское фэнтези
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Император Пограничья 8

Воронцов. Перезагрузка. Книга 4

Тарасов Ник
4. Воронцов. Перезагрузка
Фантастика:
попаданцы
альтернативная история
фэнтези
фантастика: прочее
6.00
рейтинг книги
Воронцов. Перезагрузка. Книга 4

Газлайтер. Том 4

Володин Григорий
4. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 4

Я еще князь. Книга XX

Дрейк Сириус
20. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я еще князь. Книга XX