mirror of
https://github.com/IgorTimofeev/MineOS.git
synced 2025-12-24 13:02:49 +01:00
172 lines
9.2 KiB
Markdown
172 lines
9.2 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**( 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**( x, y, width, 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**( x, y, width, height [, color]): *table* window
|
||
-----------------------------------------------------------
|
||
|
||
| Тип | Аргумент | Описание |
|
||
| ------ | ------ | ------ |
|
||
| *int* | x | Координата окна по оси X |
|
||
| *int* | x | Координата окна по оси Y |
|
||
| *int* | width | Ширина окна |
|
||
| *int* | height | Высота окна |
|
||
| [*int* | color] | Опциональный цвет фоновой панели |
|
||
|
||
Создает окно с добавленной фоновой панелью, а также кнопками для закрытия/минимизации/максимизации, являющееся наследником *MineOSInterface*.**window**. Если цвет панели не указывается, то используется *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.**titledWindow**( x, y, width, height, titleText, [addTitlePanel]): *table* window
|
||
-----------------------------------------------------------
|
||
|
||
| Тип | Аргумент | Описание |
|
||
| ------ | ------ | ------ |
|
||
| *int* | x | Координата окна по оси X |
|
||
| *int* | x | Координата окна по оси Y |
|
||
| *int* | width | Ширина окна |
|
||
| *int* | height | Высота окна |
|
||
| *string* | titleText | Текст заголовка |
|
||
| [*int* | addTitlePanel] | Опциональное добавление подложки под текст заголовка |
|
||
|
||
Создает окно с текстовым заголовком. Если указан аргумент, добавляющий подложку, то текст будет находиться на сером прямоугольнике.
|
||
|
||
| Тип свойства | Свойство |Описание |
|
||
| ------ | ------ | ------ |
|
||
| *table* | .**backgroundPanel** | Указатель на объект фоновой панели (GUI.**panel**) |
|
||
| *table* | .**actionButtons** | Указатель на объект кнопок действия (GUI.**actionButtons**) |
|
||
| *table* | .**titleLabel** | Указатель на объект лейбла заголовка (GUI.**label**) |
|
||
| *table* | .**titlePanel** | Указатель на объект лейбла заголовка (GUI.**panel**). Создается только при наличии соответствующего аршумента |
|
||
|
||
Пример реализации:
|
||
|
||
```lua
|
||
local MineOSInterface = require("MineOSInterface")
|
||
|
||
------------------------------------------------------------------------------------------------------
|
||
|
||
local mainContainer, window = MineOSInterface.addWindow(MineOSInterface.titledWindow(1, 1, 88, 25, "Hello world", true))
|
||
```
|
||
|
||
Результат:
|
||
|
||

|
||
|
||
MineOSInterface.**tabbedWindow**( x, y, width, height ): *table* window
|
||
-----------------------------------------------------------
|
||
|
||
| Тип | Аргумент | Описание |
|
||
| ------ | ------ | ------ |
|
||
| *int* | x | Координата окна по оси X |
|
||
| *int* | x | Координата окна по оси Y |
|
||
| *int* | width | Ширина окна |
|
||
| *int* | height | Высота окна |
|
||
|
||
Создает окно с панелью вкладок по шаблонным цветам.
|
||
|
||
| Тип свойства | Свойство |Описание |
|
||
| ------ | ------ | ------ |
|
||
| *table* | .**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("Обновления")
|
||
```
|
||
|
||
Результат:
|
||
|
||

|