Диалоги#

Диалоги используются для отображения сообщений, запроса подтверждения или ввода данных и информирования пользователя о выполнении продолжительной операции.

Для работы с диалогами используется объект:

ru.bitec.app.gtk.gl.Dialogs

В Avi этот объект доступен через переменную dialogs.

Для выбора объекта или нескольких объектов можно открыть выборку в режиме openLookup(). Этот сценарий описан на странице «Выборка».

Стандартные диалоги#

Отображение сообщения#

Метод showMessage() отображает текст в модальном окне.

Пример:

dialogs.showMessage(
  "Текст, который увидит пользователь"
)

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

Диалог со стандартными кнопками#

Метод showMsgDialog() открывает диалог указанного типа с сообщением и набором стандартных кнопок.

Типы диалогов определены в:

ru.bitec.app.gtk.gl.msgdlg.MsgDlg

Типы кнопок определены в:

ru.bitec.app.gtk.gl.msgdlgbutton.MsgDlgButton

Пример диалога подтверждения с кнопками Да и Нет:

val dialogResult = dialogs.showMsgDialog(
  MsgDlg.confirmation,
  "Включить автонумерацию?",
  List(
    MsgDlgButton.yes,
    MsgDlgButton.no
  )
)

if (dialogResult == MsgDlgButton.yes) {
  // Обработка нажатия кнопки «Да»
} else if (dialogResult == MsgDlgButton.no) {
  // Обработка нажатия кнопки «Нет»
}

Результат метода содержит выбранную пользователем кнопку.

Диалог с произвольными кнопками#

Метод showButtonsDialog() открывает диалог с произвольным набором кнопок.

Метод используется, если требуемые варианты ответа отсутствуют среди стандартных кнопок MsgDlgButton.

Пример:

dialogs.showButtonsDialog(
  caption = "",
  text = "Удалить форму или убрать ссылку на вид отчетности?",
  colCount = 2,
  buttons = List(
    List("Удалить"),
    List("Убрать ссылку")
  ),
  imageCollectionName = "ToolBarPrimaryHot",
  focusButtonNumber = 0L
) match {
  case 0L =>
    // Обработка нажатия кнопки «Удалить»

  case 1L =>
    // Обработка нажатия кнопки «Убрать ссылку»
}

Параметры метода:

  • caption — заголовок окна;

  • text — текст сообщения;

  • colCount — количество колонок для размещения кнопок;

  • buttons — набор кнопок;

  • imageCollectionName — коллекция изображений;

  • focusButtonNumber — номер кнопки, которая получает фокус при открытии диалога.

Метод возвращает номер выбранной кнопки. Нумерация начинается с 0.

Запрос строки#

Метод showPromptDialog() открывает диалог для ввода строки.

В метод передаются:

  • заголовок окна;

  • текст диалога;

  • значение по умолчанию.

Пример:

val dialogResult = dialogs
  .showPromptDialog(
    "Заголовок окна",
    "Текст диалога",
    "Значение по умолчанию"
  )
  .ns

if (dialogResult.isNotNullOrEmpty) {
  // Обработка введённого значения
}

Результат метода содержит введённую пользователем строку.

Запрос подтверждения#

Метод showConfirmDialog() открывает диалог типа Подтверждение с кнопками Да и Нет.

Пример:

val dialogResult =
  dialogs.showConfirmDialog(
    "Текст диалога"
  )

if (dialogResult) {
  // Пользователь нажал «Да»
}

Метод возвращает true, если пользователь подтвердил действие.

Информационное окно#

Информационное окно используется, чтобы сообщить пользователю о выполнении продолжительной операции.

Для работы с ним применяются методы:

  • showInfoForm() — отображает информационное окно;

  • hideInfoForm() — скрывает информационное окно;

  • withInfoForm() — отображает информационное окно на время выполнения переданной функции.

Управление информационным окном#

Метод showInfoForm() отображает окно с переданным текстом. Пользователь не может самостоятельно закрыть это окно.

Для закрытия необходимо вызвать hideInfoForm().

Пример:

dialogs.showInfoForm(
  "Внимание, идет загрузка Госреестра типов СИ"
)

try {
  thisApi().download()
} finally {
  dialogs.hideInfoForm()
}

Вызов hideInfoForm() размещён в блоке finally, поэтому информационное окно будет скрыто и после успешного выполнения операции, и при возникновении ошибки.

Выполнение функции с информационным окном#

Метод withInfoForm() отображает информационное окно, выполняет переданную функцию и скрывает окно после её завершения.

Предыдущий пример можно записать следующим образом:

dialogs.withInfoForm(
  "Внимание, идет загрузка Госреестра типов СИ"
) {
  thisApi().download()
}

Метод обеспечивает закрытие информационного окна после завершения переданной функции.

Диалог настройки стиля#

Метод showEditPaintStyleDialog() открывает диалог настройки стилей оформления текстовых полей.

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