Вход/Регистрация
Linux: Полное руководство
вернуться

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

Шрифт:

#!/bin/sh

DIALOG=${DIALOG=dialog}

$DIALOG --title "MESSAGE BOX" --clear \

– -msgbox "Этот виджит используется для вывода \

сообщений. Ждет, пока пользователь нажмет Enter" 10 41

case $? in

0)

 echo "OK";;

255)

 echo "Нажата ESC.";;

esac

Теперь разберемся, что есть что. Параметр --title программы dialog задает заголовок виджита (рис. 25.1) Параметр --msgbox сообщает программе тип виджита, который нужно отобразить. После этого параметра нужно указать текст сообщения, заключенный в кавычки. В тексте можно использовать управляющие последовательности (\b, \n, \t,\ a и др.). После сообщения задаются размеры виджита.

Рис. 25.1. Виджит Msgbox

Конструкция case проверяет возвращенное программой dialog значение. Если пользователь нажал OK (или <Ввод>), то программа возвращает 0, а если клавишу Esc, то 255.

Виджит Infobox следует использовать так:

Листинг 25.2. Использование виджита Infobox

#! /bin/sh

DIALOG=${DIALOG=dialog}

# ждем указанное количество секунд

left=10

unit="секунд"

while test $left != 0

do

 $DIALOG --sleep 1 \

 --title "INFO BOX" \

 --infobox "Это информационный бокс. Он отличается от \

 msgbox тем, что не ждёт, пока пользователь нажмет Enter, \

 а прекращает работу по истечении времени \

 (в данном примере - 10 секунд). \

 У вас $left $unit чтобы прочитать это сообщение..." 10 52

 left=`expr $left — 1`

 test $left = 1 && unit="second"

done

Параметр

– -sleep 1
означает, что программа
dialog
будет перерисовывать окно через одну секунду. Параметр
– -title
задает заголовок виджита,
– -infobox
 — определяет тип виджита, после определения виджита следует отображаемое сообщение, а потом — размер виджита.

В цикле while мы проверяем, сколько секунд осталось, уменьшая значение переменной left.

25.3. Виджит Yes-no

Часто встречаются диалоговые окна, спрашивающие пользователя, согласен ли он с действиями программы, например, «Вы точно хотите выйти?» или «Удалить этот файл?». Пользователю же предлагается два варианта ответа — Да или Нет. Для организации такого диалога предназначен виджит yes-no.

Следующий листинг демонстрирует работу с этим виджитом:

Листинг 25.3. Работа с виджитом yes-no

#!/bin/sh

DIALOG=${DIALOG=dialog}

$DIALOG --title "YES/NO BOX" --clear \

– -yesno "Отформатировать /dev/hda1?" 5 41

case $? in

0)

 echo "Да.";;

1)

 echo "Нет.";;

255)

 echo "ESC.";;

esac

Рис. 25.2. Виджит yes-no

Виджит используется так же, как и предыдущие: название виджита (yesno), текстовое сообщение, размеры виджита. Программа dialog возвращает следующие значения:

♦ 0, если пользователь нажал кнопку Yes;

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

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

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

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

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

♦ Вызываем программу

dialog
с параметром
– -inputbox
.

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

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

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

#!/bin/sh

DIALOG=${DIALOG=dialog}

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

  • Читать дальше
  • 1
  • ...
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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