## Описание

Быстрое меню находится снизу диалогового окна и содержит часто используемые кнопки:  
![New Visual Novell](./images/new_vn.jpg)

Переменная `quick_menu` отвечает за включение (`True`, по умолчанию) или отключение (`False`) этого меню.

***

## Свойства кнопок

Об изменении свойств кнопок (размеры, изображения, шрифт и т. д.) читайте в статье
[Интерфейс (gui)](./Интерфейс-(gui)#user-content-Кнопка-быстрого-меню).

***

## Добавление

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

Списком (`list`) кнопок является `quick_menu_screen.items`.

Добавление своей кнопки:  
`quick_menu_screen.items.append(['Screenshot', make_screenshot])`

Добавляемый объект является массивом со следующими элементами:
1. Строка с названием кнопки (автоматически будет применена система перевода);
2. Функция, которая будет вызвана при нажатии на кнопку;
3. Необязательный аргумент - вызываемый объект (`callable` - например, функция),
возвращающий `True` (если кнопку нужно показать) или `False` (если нет).

Т. к. `quick_menu_screen.items` является простым массивом, то доступны все его методы.  
Вот более сложный пример:
```python
my_score = 0

def my_secret_func():
	# remove button from list
	i = 0
	while i < len(quick_menu_screen.items):
		if quick_menu_screen.items[i][0] == 'Something':
			quick_menu_screen.items.pop(i)
			break
		i += 1
	
	notification.out('Something')

quick_menu_screen.items.insert(1, ['Something', my_secret_func, Eval('my_score > 10')])
```
Здесь кнопка "вставляется" (`insert`) так, что после этого занимает место `1` (отчёт идёт с `0`).  
Также стоит обратить внимание на условие отображения: значение переменной `my_score` должно быть больше 10.
Для упрощения проверки рекомендуется ввести (или скопипастить) в консоль (`Shift+O`) код `my_score = 11`.

Ну и перед удалением производится поиск элемента.  
Почему бы просто не вызвать `quick_menu_screen.items.pop(1)`, ведь именно в индекс `1` мы его и добавляли?  
Специально для случая, когда после этого кода что-то могло вставить ещё одну кнопку перед нашей.

***

## Объяснение Eval

"Вызов" экземпляра класса `Eval` возвращает то, что вернул бы код, который был передан ему при создании.  
Пример:
```python
my_var = 5
def my_func(a):
	return a * 2

e = Eval('my_var * my_func(2) + 3')
answer1 = e() # 23

def instead_eval():
	return my_var * my_func(2) + 3
answer2 = instead_eval() # 23
```

***

## Перевод

Перевод выполняется довольно просто (это код верхнего уровня - не в блоках `init`, `label` и т. д.):
```renpy
translate russian strings:
	
	old 'Screenshot'
	new 'Скриншот'
	
	old 'Something'
	new 'Что-то'
```

Подробнее читайте в статье
[Система переводов](./Система-переводов).

***

## Стиль контейнера кнопок

Располагается в переменной `style.quick_hbox`.  
Изменив его, вы можете, например, сдвинуть все кнопки в левый или правый угол.  
Настоятельно не рекомендуется каким-либо образом устанавливать ему размер.

Простой, в общем-то, код всего быстрого меню можно посмотреть в файле `Ren-Engine/rpy/screens/quick_menu.rpy`.

***

[Далее ->](./Настройка-паузы)  
[<- Назад](./Интерфейс-(gui))
