25.2. Сообщения
25.2. Сообщения
Начнем с самого простого — отображения небольших текстовых сообщений. Для этой цели можно использовать два виджита — Infobox или Msgbox. Первый отличается от второго тем, что не ждет подтверждения пользователя о прочтении, а закрывается через некоторое время. Виджит Msgbox ждет, пока пользователь нажмет кнопку OK или клавишу Enter.
Рассмотрим пример использования виджита Msgbox:
Листинг 25.1. Виджит Msgbox
#!/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 сообщает программе тип виджита, который нужно отобразить. После этого параметра нужно указать текст сообщения, заключенный в кавычки. В тексте можно использовать управляющие последовательности (, , , 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.
Данный текст является ознакомительным фрагментом.