MineOS/Documentation/MineOSInterface.md

7.1 KiB
Raw Blame History

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("Обновления")

Результат: