MineOS/Documentation/MineOSInterface.md

137 lines
7.1 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.

Oписание
======
MineOSInterface - это библиотека, поставляющаяся в комплекте с операционной системой MineOS. Она реализует основные системные виджеты, а также отвечает за все оконные манипуляции. В качестве интерфейсной основы она использует библиотеки **[GUI](https://github.com/IgorTimofeev/OpenComputers/blob/master/Documentation/GUI.md)** и **[doubleBuffering](https://github.com/IgorTimofeev/OpenComputers/blob/master/Documentation/doubleBuffering.md)**.
Кроме того, данная библиотека предоставляет таблицу с цветами интерфейса ОС по умолчанию:
![](https://i.imgur.com/xm40hG3.png)
Для произвольного изменения цветов отдельных элементов обращайтесь к ним напрямую: к примеру, через:
```lua
<окно>.backgroundPanel.colors.background = 0xFF00FF
```
Основные методы
======
MineOSInterface.**addWindow**(*table* window): *table* mainContainer, *table* window
-----------------------------------------------------------
| Тип | Аргумент | Описание |
| ------ | ------ | ------ |
| *table* | window | Объект окна, созданный методами, описанными ниже |
Добавляет созданное окно в окружение MineOS, регистрирует его иконку в Dock, а также добавляет ему несколько методов для пользовательской манипуляции.
| Тип свойства | Свойство |Описание |
| ------ | ------ | ------ |
| *function* | :**resize**(*int* width, *int* height) | Изменяет размеры окна на указанные, вызывая при этом callback-функцию .**onResize** |
| *callback-function* | .**onResize**(*int* newWidth, *int* newHeight) | Вызывается при изменении размеров окна. Как правило, этот метод используется для изменения размеров и координат содержимого окна после изменения размеров |
| *function* | :**close**() | Закрывает окно и удаляет его из системного окружения |
| *function* | :**minimize**() | Скрывает окно, однако оставляет возможность обратного показа путем клика на его иконку в Dock |
| *function* | :**maximize**() | Изменяет размеры окна под размер экрана, вызывая при этом callback-функцию .**onResize** |
Примеры реализации описаны ниже.
Методы для создания окон
======
MineOSInterface.**window**(*int* x, *int* y, *int* width, *int* height): *table* window
-----------------------------------------------------------
| Тип | Аргумент | Описание |
| ------ | ------ | ------ |
| *int* | x | Координата окна по оси X |
| *int* | x | Координата окна по оси Y |
| *int* | width | Ширина окна |
| *int* | height | Ширина окна |
Создает пустое окно без каких-либо элементов интерфейса. Данный объект является шаблоном для всех остальных.
Пример реализации:
```lua
local GUI = require("GUI")
local MineOSInterface = require("MineOSInterface")
------------------------------------------------------------------------------------------------------
local mainContainer, window = MineOSInterface.addWindow(MineOSInterface.window(1, 1, 88, 25))
window:addChild(GUI.panel(1, 1, window.width, window.height, 0x888888))
```
Результат:
![](https://i.imgur.com/lhrm0z6.png?1)
MineOSInterface.**filledWindow**(*int* x, *int* y, *int* width, *int* height, [*int* color]): *table* window
-----------------------------------------------------------
| Тип | Аргумент | Описание |
| ------ | ------ | ------ |
| *int* | x | Координата окна по оси X |
| *int* | x | Координата окна по оси Y |
| *int* | width | Ширина окна |
| *int* | height | Ширина окна |
| [*int* | color] | Опциональный цвет фоновой панели |
Создает окно с добавленной фоновой панелью, а также кнопками для закрытия/минимизации/максимизации. Если цвет не указывается, то используется *MineOSInterface.colors.windows.backgroundPanel*.
| Тип свойства | Свойство |Описание |
| ------ | ------ | ------ |
| *table* | .**backgroundPanel** | Указатель на объект фоновой панели, имеющего тип GUI.**panel** |
| *table* | .**actionButtons** | Указатель на объект кнопок действия, имеющего тип GUI.**actionButtons** |
Пример реализации:
```lua
local MineOSInterface = require("MineOSInterface")
------------------------------------------------------------------------------------------------------
local mainContainer, window = MineOSInterface.addWindow(MineOSInterface.filledWindow(1, 1, 88, 25, 0xF0F0F0))
```
Результат:
![](https://i.imgur.com/YlCOx68.png?1)
MineOSInterface.**tabbedWindow**(*int* x, *int* y, *int* width, *int* height): *table* window
-----------------------------------------------------------
| Тип | Аргумент | Описание |
| ------ | ------ | ------ |
| *int* | x | Координата окна по оси X |
| *int* | x | Координата окна по оси Y |
| *int* | width | Ширина окна |
| *int* | height | Ширина окна |
Создает окно с объектом GUI.**tabBar** по шаблонным цветам.
| Тип свойства | Свойство |Описание |
| ------ | ------ | ------ |
| *table* | .**tabBar** | Указатель на объект TabBar, имеющего тип GUI.**tabBar** |
| *table* | .**backgroundPanel** | Указатель на объект фоновой панели, имеющего тип GUI.**panel** |
| *table* | .**actionButtons** | Указатель на объект кнопок действия, имеющего тип GUI.**actionButtons** |
Пример реализации:
```lua
local MineOSInterface = require("MineOSInterface")
------------------------------------------------------------------------------------------------------
local mainContainer, window = MineOSInterface.addWindow(MineOSInterface.tabbedWindow(1, 1, 88, 25))
window.tabBar:addItem("Приложения")
window.tabBar:addItem("Библиотеки")
window.tabBar:addItem("Обои")
window.tabBar:addItem("Обновления")
```
Результат:
![](https://i.imgur.com/294FatT.png?1)