Files
qode/docs/window.md
T
2026-11-01 01:54:53 +03:00

87 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Окно и ввод — `api.window`
Группа `api.window` управляет окном приложения, плавающим полем ввода и
списком выбора.
## Окно
| Метод | Описание |
| --- | --- |
| `api.window:close()` | Закрыть окно |
| `api.window:toggle_maximize()` | Развернуть окно / вернуть прежний размер |
| `api.window:set_maximized(true/false)` | Развернуть (`true`) или восстановить (`false`) окно |
| `api.window:minimize()` | Свернуть окно |
| `api.window:is_maximized()` | Развёрнуто ли окно прямо сейчас |
Команды окна не выполняются в момент вызова из Lua: они складываются в
очередь и применяются видом в начале следующего кадра.
## Плавающее поле ввода
`api.window:open_input(options)` открывает однострочное поле ввода чуть выше
центра окна. Параметры передаются таблицей:
| Поле | Описание |
| --- | --- |
| `title` | Текст над полем; если не задан, окно состоит из одной строки ввода |
| `placeholder` | Подсказка внутри пустого поля ввода |
| `callback` | `function(text)` — вызывается после Enter, когда окно уже закрыто |
Пока окно открыто, сочетания клавиш приложения не работают. Текст набирается
в поле; `Enter` подтверждает ввод и запускает `callback`, `Esc` и клик мышью
вне окна закрывают его без вызова колбэка.
```lua
api.window:open_input({
title = "Имя файла",
placeholder = "src/main.rs",
callback = function(text)
api.editor:open(text, {})
end,
})
```
## Плавающий список выбора
`api.window:open_select(options)` открывает список выбора чуть выше центра
окна. Параметры передаются таблицей:
| Поле | Описание |
| --- | --- |
| `items` | Непустой массив пунктов (см. ниже) |
| `selected` | id пункта, выделенного при открытии; если не задан или не найден — первый пункт |
| `title` | Текст над списком; отделяется горизонтальной чертой, без заголовка черты нет |
| `callback` | `function(id)` — вызывается после Enter, когда окно уже закрыто; получает id выбранного пункта |
Каждый пункт — таблица с полями:
| Поле | Описание |
| --- | --- |
| `label` | Отображаемое значение (обязательно) |
| `id` | Строка, которая вернётся в `callback` (обязательно) |
| `icon` | Имя иконки Lucide, например `"file"`; пустое или неизвестное имя — пункт без иконки |
| `description` | Серое описание справа от названия; обрезается троеточием, название имеет приоритет |
Каждый пункт занимает одну строку. Если иконка есть хотя бы у одного
пункта, у остальных остаётся пустое место такой же ширины, чтобы названия
начинались на одном уровне.
Пока список открыт, сочетания клавиш приложения не работают: стрелки меняют
выделение, `Home`/`End` прыгают к краям, `Enter` подтверждает выбор и вызывает
`callback` с id пункта, клик по пункту выбирает и подтверждает его, а `Esc` и
клик вне окна закрывают список без колбэка.
```lua
api.window:open_select({
title = "Режим",
selected = "release",
items = {
{ id = "debug", label = "Debug", icon = "file", description = "с отладкой" },
{ id = "release", label = "Release", icon = "folder" },
},
callback = function(id)
api.editor:set_active_text(id)
end,
})
```