From 2a500eadc143fc9316f601a3ab8a8578b13ff552 Mon Sep 17 00:00:00 2001 From: Igor Timofeev Date: Tue, 25 Apr 2017 09:52:14 +0300 Subject: [PATCH] =?UTF-8?q?=D0=91=D0=BB=D1=8F=D0=B4=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Documentation/GUI.md | 52 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/Documentation/GUI.md b/Documentation/GUI.md index 38f1ad88..e67385a6 100644 --- a/Documentation/GUI.md +++ b/Documentation/GUI.md @@ -160,6 +160,58 @@ GUI.**fullScreenWindow**( ): *table* window Создать объект окна на основе текущего разрешения экранного буфера. +GUI.**layout**( x, y, width, height, columns, rows ): *table* window +----------------------------------------------------- + +| Тип | Аргумент | Описание | +| ------ | ------ | ------ | +| *int* | x | Координата объекта по оси x | +| *int* | y | Координата объекта по оси y | +| *int* | width | Ширина объекта | +| *int* | height | Высота объекта | +| *int* | columns | Количество рядов сетки | +| *int* | rows | Количество строк сетки | + +Layout является наследником GUI.**container**, предоставляющим автоматические методы расположения дочерних объектов внутри себя. К примеру, если вам хочется визуально красиво отобразить множество объектов, не тратя время на ручной расчет координат, то layout создан для вас. + +| Тип свойства | Свойство |Описание | +| ------ | ------ | ------ | +| *function* | :**setCellPosition**(*object* child, *int* column, *int* row): *object* child| Назначить дочернему объекту layout конкретную ячейку сетки. В одной ячейке может располагаться сколь угодно много объектов. | +| *function* | :**setCellDirection**(*int* column, *int* row, *enum* direction): *layout* layout | Назначить ячейке сетки метод отображения дочерних объектов. Поддерживаются GUI.directions.horizontal и GUI.directions.vertical | + +Пример реализации layout: +```lua +local buffer = require("doubleBuffering") +local GUI = require("GUI") + +-- Создаем полноэкранное окно, добавляем на него изображение с малиной и полупрозрачную черную панель +local window = GUI.fullScreenWindow() +window:addImage(1, 1, require("image").load("/MineOS/Pictures/Raspberry.pic")) +window:addPanel(1, 1, window.width, window.height, 0x000000, 40) + +-- Добавляем к окну layout с сеткой 5x1 +local layout = window:addLayout(1, 1, window.width, window.height, 5, 1) + +-- Добавяляем в layout 9 кнопок, назначая им соответствующие позиции в сетке +layout:setCellPosition(layout:addButton(1, 1, 26, 3, 0xEEEEEE, 0x000000, 0xAAAAAA, 0x000000, "Button 1"), 1, 1) +layout:setCellPosition(layout:addButton(1, 1, 26, 3, 0xEEEEEE, 0x000000, 0xAAAAAA, 0x000000, "Button 2"), 2, 1) +layout:setCellPosition(layout:addButton(1, 1, 26, 3, 0xEEEEEE, 0x000000, 0xAAAAAA, 0x000000, "Button 3"), 2, 1) +layout:setCellPosition(layout:addButton(1, 1, 26, 3, 0xEEEEEE, 0x000000, 0xAAAAAA, 0x000000, "Button 4"), 3, 1) +layout:setCellPosition(layout:addButton(1, 1, 26, 3, 0xEEEEEE, 0x000000, 0xAAAAAA, 0x000000, "Button 5"), 3, 1) +layout:setCellPosition(layout:addButton(1, 1, 26, 3, 0xEEEEEE, 0x000000, 0xAAAAAA, 0x000000, "Button 6"), 3, 1) +layout:setCellPosition(layout:addButton(1, 1, 26, 3, 0xEEEEEE, 0x000000, 0xAAAAAA, 0x000000, "Button 7"), 4, 1) +layout:setCellPosition(layout:addButton(1, 1, 26, 3, 0xEEEEEE, 0x000000, 0xAAAAAA, 0x000000, "Button 8"), 4, 1) +layout:setCellPosition(layout:addButton(1, 1, 26, 3, 0xEEEEEE, 0x000000, 0xAAAAAA, 0x000000, "Button 9"), 5, 1) + +window:draw() +buffer.draw(true) +window:handleEvents() +``` + +Результат: + +![Imgur](http://i.imgur.com/wjjMfDe.png?1) + Методы для создания виджетов ======