This commit is contained in:
Igor Timofeev 2017-04-03 19:20:57 +03:00
parent d79a6f3fc3
commit d7dd914712

View File

@ -1,7 +1,7 @@
О библиотеке
------------
======
GUI - многофункциональная графическая библиотека, отлаженная под использование маломощными компьютерами с максимально возможной производительностью. Она поддерживает множество элементов интерфейса: от привычных кнопок, слайдеров, текстовых полей и картинок до графиков и инструментов работы с цветовыми режимами. Быстродействие достигается за счет использования тройной буферизации и сложных группировочных алгоритмов.
К примеру, моя операционная система и среда разработки полностью реализованы методами данной библиотеки:
@ -13,7 +13,8 @@ GUI - многофункциональная графическая библио
Пусть синтаксис и обилие текста вас не пугают, в документации имеется множество наглядных иллюстрированных примеров и практических задач.
Установка
---------
======
| Зависимость | Функционал |
| ------ | ------ |
| *[advancedLua](https://github.com/IgorTimofeev/OpenComputers/blob/master/lib/advancedLua.lua)* | Дополнение стандартных библиотек Lua особыми функциями, такими как быстрая сериализация таблиц, перенос строк, округление чисел и т.д. |
@ -28,7 +29,7 @@ GUI - многофункциональная графическая библио
pastebin run ryhyXUKZ
Standalone-методы
---------
======
Библиотека имеет несколько полезных независимых методов, упрощающих разработку программ. К таковым относятся, к примеру, котекстное меню и информационное alert-окно.
@ -94,7 +95,8 @@ GUI.error("Something went wrong here, my friend", {title = {text = "Alert", colo
![enter image description here](http://i90.fastpic.ru/big/2017/0402/99/c2b151738ce348c213ff5d1d45053e99.png)
Методы для создания окон и контейнеров
-------------------------------
======
Вся библиотека делится на две основные кострукции: контейнеры и виджеты. Контейнер предназначен для группировки нескольких виджетов в единую структуру и их конвеерной обработки, поэтому в первую очередь необходимо изучить особенности работы с контейнерами и окнами.
GUI.**container**( x, y, width, height ): *table* container
@ -158,7 +160,8 @@ GUI.**fullScreenWindow**( ): *table* window
Создать объект окна на основе текущего разрешения экранного буфера.
Методы для создания виджетов
----------------------------
======
После понимания концепции контейнеров можно с легкостью приступить к добавлению виджетов в созданное окно или контейнер. Каждый виджет - это наследник объекта типа GUI.**object**
GUI.**object**( x, y, width, height ): *table* object
@ -921,7 +924,7 @@ window:handleEvents()
![enter image description here](http://i91.fastpic.ru/big/2017/0402/5b/66ff353492298f6a0c9b01c0fc8a525b.png)
Практический пример #1
--------------------
======
В качестве стартового примера возьмем простейшую задачу: расположим на экране 5 кнопок по вертикали и заставим их показывать окно с порядковым номером этой кнопки при нажатии на нее. Напишем следующий код:
@ -959,7 +962,7 @@ window:handleEvents()
![enter image description here](http://i91.fastpic.ru/big/2017/0402/c3/e02d02fb39a28dd17220b535e59292c3.png)
Практический пример #2
--------------------
======
Поскольку в моде OpenComputers имеется интернет-плата, я написал небольшой клиент для работы с VK.com. Разумеется, для этого необходимо реализовать авторизацию на серверах, вводя свой e-mail/номер телефона и пароль к аккаунту. В качестве тренировки привожу часть кода, отвечающую за это.
@ -1021,7 +1024,7 @@ window:handleEvents()
![enter image description here](http://i.imgur.com/LXfsT0o.png?1)
Практический пример #3
--------------------
======
Для демонстрации возможностей библиотеки предлагаю создать кастомный виджет с нуля. К примеру, создать панель, реагирующую на клики мыши, позволяющую рисовать на ней произвольным цветом по аналогии со школьной доской.