Использование диалоговых окон KDE в shell-скриптах

Материал из rrv-wiki
Перейти к навигации Перейти к поиску

Kdialog

Для красивого оформления скриптов с помощью диалоговых окон можно достичь используя kdialog.

Рассмотрим на примере диалога password

#!/bin/sh

# Создаем переменную $tempfile во временном файле, который удаляется после завершения работы скрипта.
# Эта часть примера взята здесь
tempfile=`mktemp 2>/dev/null` || tempfile=/tmp/temp$$
trap "rm -f $tempfile" 0 1 2 5 15
# Обратите внимание, что в случае отсутствия утилиты mktemp временный файл
# создается не безопасным способом, то есть временный файл будет доступен на чтение другим пользователям.
# Возможно в вашей системе в место утилиты mktemp используется утилита tempfile.

# Теперь непосредственно вызов диалога:
kdialog --title "Заголовок окна" --password "Введите пароль:" > $tempfile
# пароль записываться в созданный нами файл

# Проверим какую кнопку нажал пользователь, "Ok" или "Сancel"
# код ошибки находится в переменной $?
if [ $? = 0 ]; then
   echo " Вы выбрали: OK"
# записываем пароль в переменную $pass
   pass=`cat $tempfile`
# очищаем файл с паролем
   cat /dev/null > $tempfile
   echo $pass
 else
   echo " Вы выбрали: Cancel"
fi

В kdialog доступны следующие параметры:

  • --yesno <text> - Вопросительный диалог с кнопками да/нет
  • --yesnocancel <text> - Вопросительный диалог с кнопками да/нет/отмена
  • --warningyesno <text> - Предупредительный диалог с кнопками да/нет
  • --warningcontinuecancel <text> - Предупредительный диалог с кнопками продолжить/отмена
  • --warningyesnocancel <text> - Предупредительный диалог с кнопками да/нет/отмена
  • --sorry <text> - Диалог с сообщением об ошибке
  • --error <text> - Диалог "Ошибка"
  • --msgbox <text> - Информационный диалог
  • --inputbox <text> <init> - Диалог ввода
  • --password <text> - Диалог ввода пароля
  • --textbox <file> [width] [height] - Диалог с текстом
  • --textinputbox <text> <init> [width] [height] - Диалог ввода текста
  • --combobox <text> [tag item] [tag item] ... - Диалог с выпадающим списком (ComboBox)
  • --menu <text> [tag item] [tag item] ... - Диалог с меню
  • --checklist <text> [tag item status] ... - Диалог с опциями
  • --radiolist <text> [tag item status] ... - Диалог с радиокнопками
  • --passivepopup <text> <timeout> - Пассивное всплывающее окно
  • --getopenfilename [startDir] [filter] - Диалог открытия существующего файла
  • --getsavefilename [startDir] [filter] - Диалог сохранения файла
  • --getexistingdirectory [startDir] - Диалог выбора существующего каталога
  • --getopenurl [startDir] [filter] - Диалог открытия существующего ресурса (URL)
  • --getsaveurl [startDir] [filter] - Диалог сохранения ресурса (URL)
  • --geticon [group] [context] - Диалог выбора значков
  • --progressbar <text> [totalsteps] - Диалог хода процесса, возвращает ссылку DCOP для коммуникации
  • --title <text> - Заголовок диалога
  • --default <text> - Запись по умолчанию для использования с выпадающими списками и меню
  • --multiple - Позволяет параметрам --getopenurl и --getopenfilename возвращать несколько файлов
  • --separate-output - Возвращает список элементов в отдельных строках (для опций checklist и file open с --multiple)
  • --print-winid - Выводит winid каждого диалога
  • --embed <winid> - Делает диалог прозрачным для приложений X, указанных по winid
  • --dontagain <file:entry> - Файл конфигурации и имя параметра для сохранения состояния "не показывать/спросить снова". При выборе отказа от дальнейшего вывода подобных сообщений создается файл ~/.kde/share/config/file(если не существует) в который добавляется строчка entry=false

Ссылки по теме

Dialog - использование диалогов в shel-скриптах