7.1 KiB
Oписание
MineOSInterface - это библиотека, поставляющаяся в комплекте с операционной системой MineOS. Она реализует основные системные виджеты, а также отвечает за все оконные манипуляции. В качестве интерфейсной основы она использует библиотеки GUI и doubleBuffering.
Кроме того, данная библиотека предоставляет таблицу с цветами интерфейса ОС по умолчанию:
Для произвольного изменения цветов отдельных элементов обращайтесь к ним напрямую: к примеру, через:
<окно>.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 | Ширина окна |
Создает пустое окно без каких-либо элементов интерфейса. Данный объект является шаблоном для всех остальных.
Пример реализации:
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 |
Пример реализации:
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 |
Пример реализации:
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("Обновления")
Результат:



