25.4. Окно ввода текста

Следующим по частоте применения после информационных виджитов и виджита yes-no следует виджит ввода текстовой информации — Inputbox. Принцип работы данного виджита следующий:

♦ Мы определяем имя временного файла, в который будет записано введенное пользователем сообщение.

♦ Вызываем программу dialog с параметром --inputbox.

♦ Перенаправляем вывод программы во временный файл (программа выведет введенное пользователем значение).

♦ Выводим или обрабатываем каким-либо другим способом содержимое временного файла.

Листинг 25.4. Виджит Inputbox

#!/bin/sh

DIALOG=${DIALOG=dialog}

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

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

$DIALOG --title 'INPUT BOX' --clear

--inputbox 'Данный виджит используется для ввода

информации

Введите свое имя:' 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.

Листинг 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 'Данный пример демонстрирует работу независимых

 переключателей, реализуемых с помощью пакета Dialog

 Используйте ПРОБЕЛ для включения или выключения переключателей.

 

 Какие произведения вы читали?' 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

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату