MineOS/Documentation/MineOSInterface.md

9.2 KiB
Raw Blame History

Oписание

MineOSInterface - это библиотека, поставляющаяся в комплекте с операционной системой MineOS. Она реализует основные системные виджеты, а также отвечает за все манипуляции с окнами. В качестве интерфейсной основы она использует библиотеки GUI и doubleBuffering.

Кроме того, она предоставляет таблицу с цветами интерфейса ОС по умолчанию:

Для произвольного изменения цветов отдельных элементов окон обращайтесь к ним напрямую. К примеру, через:

<окно>.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 Высота окна

Создает пустое окно без каких-либо элементов интерфейса. Данный объект является шаблоном для всех остальных, описанных ниже.

Пример реализации:

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)

Пример реализации:

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). Создается только при наличии соответствующего аршумента

Пример реализации:

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)

Пример реализации:

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

Результат: