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

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

Жанры

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)

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

Правь, Британия!

дю Морье Дафна
Проза:
современная проза
6.25
рейтинг книги
Правь, Британия!

Роза ветров

Кас Маркус
6. Артефактор
Фантастика:
городское фэнтези
аниме
фэнтези
5.00
рейтинг книги
Роза ветров

Сильмистриум

Лазорева Ксения
Сансион
Фантастика:
ненаучная фантастика
боевая фантастика
космическая фантастика
космоопера
фантастика: прочее
4.71
рейтинг книги
Сильмистриум

Паралогии

Липовецкий Марк Наумович
Научная библиотека
Научно-образовательная:
культурология
5.00
рейтинг книги
Паралогии

Изгой. Трилогия

Михайлов Дем Алексеевич
Изгой
Фантастика:
фэнтези
8.45
рейтинг книги
Изгой. Трилогия

Пламенев. Книга 3-7

Карелин Сергей Витальевич
Пламенев
Фантастика:
аниме
уся
фэнтези
сянься
5.00
рейтинг книги
Пламенев. Книга 3-7

Неучтенный элемент. Том 2

NikL
2. Антимаг. Вне системы
Фантастика:
городское фэнтези
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 2

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

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

Дважды одаренный. Том II

Тарс Элиан
2. Дважды одаренный
Фантастика:
городское фэнтези
альтернативная история
аниме
5.25
рейтинг книги
Дважды одаренный. Том II

Искусство войны

Иванов Владимир
Фантастика:
космическая фантастика
5.00
рейтинг книги
Искусство войны

"Фантастика 2025-71". Компиляция. Книги 1-10

Ланцов Михаил Алексеевич
Фантастика 2025. Компиляция
Фантастика:
фэнтези
боевая фантастика
попаданцы
5.00
рейтинг книги
Фантастика 2025-71. Компиляция. Книги 1-10

Последний Паладин. Том 10

Саваровский Роман
10. Путь Паладина
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Последний Паладин. Том 10

Система Возвышения. (цикл 1-8) - Николай Раздоров

Раздоров Николай
Система Возвышения
Фантастика:
боевая фантастика
4.65
рейтинг книги
Система Возвышения. (цикл 1-8) - Николай Раздоров

Бандит

Щепетнов Евгений Владимирович
1. Петр Синельников
Фантастика:
фэнтези
7.92
рейтинг книги
Бандит