mirror of
https://github.com/IgorTimofeev/MineOS.git
synced 2026-01-06 03:02:38 +01:00
137 lines
7.1 KiB
Markdown
137 lines
7.1 KiB
Markdown
|
||
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)**.
|
||
|
||
Кроме того, данная библиотека предоставляет таблицу с цветами интерфейса ОС по умолчанию:
|
||
|
||

|
||
|
||
Для произвольного изменения цветов отдельных элементов обращайтесь к ним напрямую: к примеру, через:
|
||
|
||
```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))
|
||
```
|
||
|
||
Результат:
|
||
|
||

|
||
|
||
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))
|
||
```
|
||
|
||
Результат:
|
||
|
||

|
||
|
||
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("Обновления")
|
||
```
|
||
|
||
Результат:
|
||
|
||

|