diff --git a/Documentation/GUI.md b/Documentation/GUI.md index 58acfc6e..51ef3d42 100644 --- a/Documentation/GUI.md +++ b/Documentation/GUI.md @@ -31,7 +31,7 @@ GUI - многофункциональная графическая библио Standalone-методы ====== -Библиотека имеет несколько полезных независимых методов, упрощающих разработку программ. К таковым относятся, к примеру, котекстное меню и информационное alert-окно. +Библиотека имеет несколько полезных независимых методов, упрощающих разработку программ. К таковым относятся, к примеру, контекстное меню и информационное alert-окно. GUI.**contextMenu**( x, y ): *table* contextMenu ------------------------------------------------------------------------ @@ -40,13 +40,13 @@ GUI.**contextMenu**( x, y ): *table* contextMenu | *int* | x | Координата меню по оси x | | *int* | y | Координата меню по оси y | -Открыть по указанным координатам котекстное меню и ожидать выбора пользователя. При выборе какого-либо элемента будет вызыван его callback-метод .**onTouch**, если таковой имеется. +Открыть по указанным координатам контекстное меню и ожидать выбора пользователя. При выборе какого-либо элемента будет вызван его callback-метод .**onTouch**, если таковой имеется. | Тип свойства | Свойство |Описание | | ------ | ------ | ------ | | *function* | :**addItem**( *string* text, *boolean* disabled, *string* shortcut, *int* color )| Добавить в контекстное меню элемент с указанными параметрами. При параметре disabled элемент не будет реагировать на клики мышью. Каждый элемент может иметь собственный callback-метод .**onTouch** для последующей обработки данных | | *function* | :**addSeparator**()| Добавить в контекстное меню визуальный разделитель | -| *table* | .**items** | Таблица элементов котекстного меню | +| *table* | .**items** | Таблица элементов контекстного меню | Пример реализации контекстного меню: @@ -110,7 +110,7 @@ GUI.**container**( x, y, width, height ): *table* container Каждый контейнер - это объект-группировщик для других объектов, описанных ниже. К примеру, при изменении позиции контейнера на экране все его дочерние элементы будут также смещены на соответствующие координаты. Контейнер также содержит все основные методы по добавлению дочерних элементов (виджетов) и работе с ними. -Все дочерние элементы контейнера имеют свою *localPosition* в контейнере (к примеру, *{x = 4, y = 2}*), при добавлении нового элемента в контейнер используются именно локальные координаты. Для получения глобальных (экранных) координат дочернего элемента необходимо обращаться к *element.x* и *element.y*. Глобальная (экранная) позиция дочерних элементов рассчитывается при каждой отрисовке содержимого контейнера. Таким образом, изменяя глобальные координаты дочернего элемента вручную, вы, в сущности, ничего не добьетесь. +Все дочерние элементы контейнера имеют свою *localPosition* в контейнере (к примеру, *{x = 4, y = 2}*), при добавлении нового элемента в контейнер используются именно локальные координаты. Для получения глобальных (экранных) координат дочернего элемента необходимо обращаться к *element.x* и *element.y*. Глобальная (экранная) позиция дочерних элементов рассчитывается при каждой отрисовке содержимого контейнера. Таким образом, изменяя глобальные координаты дочернего элемента вручную, вы, в сущности, ничего не добьётесь. Наглядно система иерархии и позиционирования контейнеров и дочерних элементов представлена на следущем изображении: @@ -137,7 +137,7 @@ GUI.**window**( x, y, width, height ): *table* window | *int* | width | Ширина объекта | | *int* | height | Высота объекта | -Создание объекта типа "окно" для дальнейшей работы. Каждое окно - это наследник объекта объекта типа "контейнер" (см. выше), содержащий дополнительные методы обработки системных событий и возврата данных окна. +Создание объекта типа "окно" для дальнейшей работы. Каждое окно - это наследник объекта типа "контейнер" (см. выше), содержащий дополнительные методы обработки системных событий и возврата данных окна. Некоторые методы обработки событий могут иметь аргумент *eventData*, представляющий собой нумерически индексированную таблицу с данными метода computer.pullSignal. Подробнее об ивентах (сигналах, событиях) можно прочесть по [ссылке](http://ocdoc.cil.li/component:signals). @@ -179,7 +179,7 @@ GUI.**object**( x, y, width, height ): *table* object | ------ | ------ | ------ | | *function* | :**draw**() | Обязательный метод, вызываемый для отрисовки виджета на экране. Он может быть определен пользователем любым удобным для него образом. Повторюсь, что данный метод осуществляет отрисовку только в экранный буфер, а не на экран. | | *function* | :**isClicked**( *int* x, *int* y ): *boolean* isClicked | Метод для проверки валидности клика на объект. Используется родительскими методами контейнеров и удобен для ручной проверки пересечения указанных координат с расположением объекта на экране | -| *boolean* | .**isHidden** | Является ли объект скрытым. Если объект скрыт, от его отрисовка и анализ системных событий игнорируются | +| *boolean* | .**isHidden** | Является ли объект скрытым. Если объект скрыт, то его отрисовка и анализ системных событий игнорируются | После добавления виджета-объекта в контейнер с помощью метода *:addChild* он приобретает дополнительные свойства для удобства использования: @@ -196,7 +196,7 @@ GUI.**object**( x, y, width, height ): *table* object При желании вы можете сделать абсолютно аналогичные или технически гораздо более продвинутые виджеты без каких-либо затруднений. Подробнее о создании собственных виджетов см. практические примеры в конце документации. Однако далее перечислены виджеты, уже созданные мной на основе описанных выше инструкций. -GUI.**panel**( x, y, width, height, color, transparency ): *table* panel +GUI.**panel**( x, y, width, height, color, [transparency] ): *table* panel ------------------------------------------------------------------------ | Тип | Аргумент | Описание | | ------ | ------ | ------ | @@ -205,7 +205,7 @@ GUI.**panel**( x, y, width, height, color, transparency ): *table* panel | *int* | width | Ширина объекта | | *int* | height | Высота объекта | | *int* | color | Цвет панели | -| [*byte* | transparency] | Опциональная прозрачность панели | +| [*byte*] | [transparency] | Опциональная прозрачность панели | Создать объект типа "панель", представляющий собой закрашенный прямоугольник с определенной опциональной прозрачностью. В большинстве случаев служит декоративным элементом, однако способен обрабатывать индивидуальный метод *.onTouch()*. @@ -259,7 +259,7 @@ GUI.**button**( x, y, width, height, buttonColor, textColor, buttonPressedColor, | *callback-function* | .**onTouch**( *table* eventData )| Метод, вызываемый после нажатия кнопки в обработчике событий | | *function* | :**press**()| Изменить состояние кнопки на "нажатое" | | *function* | :**release**()| Изменить состояние кнопки на "отжатое" | -| *function* | :**pressAndRelease**( *float* time )| Нажать и отжать кнопку в течение указанного временного периода. Примечание: этот метод использует отрисовку содержимого двойного буфера | +| *function* | :**pressAndRelease**( *float* time )| Нажать и отжать кнопку в течение указанного временного периода. Примечание: этот метод использует отрисовку содержимого тройного буфера | Пример реализации кнопки: ```lua @@ -332,11 +332,11 @@ GUI.**inputTextBox**( x, y, width, height, backgroundColor, textColor, backgroun | *int* | backgroundFocusedColor | Цвет поля ввода в состоянии *focused* | | *int* | textFocusedColor |Цвет текста поля ввода в состоянии *focused* | | *string* | text | Введенный на момент создания поля текст | -| [*string* | placeholderText] | Текст, появляющийся при условии, что *text* == nil | -| [*boolean* | eraseTextOnFocus] | Необходимо ли удалять текст при активации ввода | -| [*string* | textMask] | Символ-маска для вводимого текста. Полезно для создания поля ввода пароля | -| [*boolean* | highlightLuaSyntax] | Режим подсветки синтаксиса Lua для вводимой строки. Цвет текста при этом игнорируется | -| [*boolean* | autocompleteVariables] | Режим автодополнения текстовых данных на основе поиска таковых переменных в оперативной памяти | +| [*string*] | [placeholderText] | Текст, появляющийся при условии, что *text* == nil | +| [*boolean*] | [eraseTextOnFocus] | Необходимо ли удалять текст при активации ввода | +| [*string*] | [textMask] | Символ-маска для вводимого текста. Полезно для создания поля ввода пароля | +| [*boolean*] | [highlightLuaSyntax] | Режим подсветки синтаксиса Lua для вводимой строки. Цвет текста при этом игнорируется | +| [*boolean*] | [autocompleteVariables] | Режим автодополнения текстовых данных на основе поиска таковых переменных в оперативной памяти | Создать объект типа "поле ввода текста", предназначенный для ввода и анализа текстовых данных с клавиатуры. Объект универсален и подходит как для создания простых форм для ввода логина/пароля, так и для сложных структур наподобие интерпретаторов команд. К примеру, окно *палитры* выше целиком и полностью основано на использовании этого объекта. @@ -388,9 +388,9 @@ GUI.**horizontalSlider**( x, y, width, primaryColor, secondaryColor, pipeColor, | *float* | minimumValue | Минимальное значение слайдера | | *float* | maximumValue | Максимальное значение слайдера | | *float* | value | Значение слайдера | -| [*bool* | showCornerValues] | Показывать ли пиковые значения слайдера по сторонам от него | -| [*string* | currentValuePrefix] | Префикс для значения слайдера | -| [*string* | currentValuePostfix] | Постфикс для значения слайдера | +| [*bool*] | [showCornerValues] | Показывать ли пиковые значения слайдера по сторонам от него | +| [*string*] | [currentValuePrefix] | Префикс для значения слайдера | +| [*string*] | [currentValuePostfix] | Постфикс для значения слайдера | Создать объект типа "горизонтальный слайдер", предназначенный для манипуляцией числовыми данными. Значение слайдера всегда будет варьироваться в диапазоне от минимального до максимального значений. Опционально можно указать значение поля *слайдер.**roundValues** = true*, если необходимо округлять изменяющееся число. @@ -474,7 +474,7 @@ GUI.**colorSelector**( x, y, width, height, color, text ): *table* colorSelector | *int* | width | Ширина объекта | | *int* | height | Высота объекта | | *int* | color | Текущий цвет селектора | -| *string* | text] | Текст селектора | +| *string* | text | Текст селектора | Создать объект типа "селектор цвета", представляющий собой аналог кнопки, позволяющей выбрать цвет при помощи удобной палитры. @@ -648,7 +648,7 @@ window:handleEvents() ![enter image description here](http://i91.fastpic.ru/big/2017/0402/80/3b0ec81c3b2f660b9a4c6f18908f4280.png) -GUI.**progressBar**( x, y, width, primaryColor, secondaryColor, valueColor, value, thin, showValue, valuePrefix, valuePostfix ): *table* progressBar +GUI.**progressBar**( x, y, width, primaryColor, secondaryColor, valueColor, value, [thin, showValue, valuePrefix, valuePostfix] ): *table* progressBar ------------------------------------------------------------------------ | Тип | Аргумент | Описание | | ------ | ------ | ------ | @@ -659,10 +659,10 @@ GUI.**progressBar**( x, y, width, primaryColor, secondaryColor, valueColor, valu | *int* | secondaryColor | Вторичный цвет шкалы прогресса | | *int* | valueColor | Цвет текста значений шкалы прогресса | | *float* | value | Значение шкалы прогресса | -| [*bool* | thin] | Активировать ли режим отрисовки "тонкого" объекта | -| [*bool* | showValue] | Показывать ли значение шкалы прогресса | -| [*string* | valuePrefix] | Префикс для значения шкалы прогресса | -| [*string* | valuePostfix] | Постфикс для значения шкалы прогресса | +| [*bool*] | [thin] | Активировать ли режим отрисовки "тонкого" объекта | +| [*bool*] | [showValue] | Показывать ли значение шкалы прогресса | +| [*string*] | [valuePrefix] | Префикс для значения шкалы прогресса | +| [*string*] | [valuePostfix] | Постфикс для значения шкалы прогресса | Создать объект типа "шкала прогресса", значение которой меняется от 0 до 100.