# Библиотека *gui*

Библиотека содержит функции для доступа к свойствам UI элементов. Вместо gui следует использовать объектную обертку, предоставляющую доступ к свойствам через мета-методы __index, __newindex:

```lua
print(document.some_button.text) -- где 'some_button' - id элемета
document.some_button.text = "новый текст"
```

В скрипте макета `layouts/файл_макета.xml` - `layouts/файл_макета.xml.lua` уже доступна переменная **document** содержащая объект класса Document

```python
gui.str(text: str, context: str) -> str
```

Возращает переведенный текст.

```python
gui.get_viewport() -> {int, int}
```

Возвращает размер главного контейнера (окна).

```python
gui.get_env(document: str) -> table
```

Возвращает окружение (таблица глобальных переменных) указанного документа.

```python
gui.get_locales_info() -> таблица таблиц где
   ключ - id локали в формате isolangcode_ISOCOUNTRYCODE
   значение - таблица {
       name: str # название локали на её языке
   }
```

Возвращает информацию о всех загруженных локалях (res/texts/\*).

```lua
gui.clear_markup(
    -- язык разметки ("md" - Markdown)
    language: str, 
    -- текст с разметкой
    text: str
) -> str
```

Удаляет разметку из текста.

```lua
gui.escape_markup(
    -- язык разметки ("md" - Markdown)
    language: str, 
    -- текст с разметкой
    text: str
) -> str
```

Экранирует разметку в тексте.

```lua
gui.alert(
    -- сообщение (не переводится автоматически, используйте gui.str(...))
    message: str,
    -- функция, вызываемая при закрытии
    on_ok: function() -> nil
)
```

Выводит окно с сообщением. **Не** останавливает выполнение кода.

```lua
gui.confirm(
    -- сообщение (не переводится автоматически, используйте gui.str(...))
    message: str,
    -- функция, вызываемая при подтвержении
    on_confirm: function() -> nil,
    -- функция, вызываемая при отказе/отмене
    [опционально] on_deny: function() -> nil,
    -- текст кнопки подтвержения (по-умолчанию: "Да")
    -- используйте пустую строку для значения по-умолчанию, если нужно указать no_text.
    [опционально] yes_text: str,
    -- текст кнопки отказа (по-умолчанию: "Нет")
    [опционально] no_text: str,
)
```

Запрашивает у пользователя подтверждение действия. **Не** останавливает выполнение кода.

```lua
gui.load_document(
    -- Путь к xml файлу страницы. Пример: `core:layouts/pages/main.xml`
    path: str,
    -- Имя (id) документа. Пример: `core:pages/main`
    name: str
    -- Таблица параметров, передаваемых в событие on_open
    args: table
) --> str
```

Загружает UI документ с его скриптом, возвращает имя документа, если успешно загружен.

```lua
gui.root: Document
```

Корневой UI документ
