Use a more familiar lua snake_hour

This commit is contained in:
Evgeny
2021-08-01 19:57:41 +03:00
parent 6e24536f99
commit f24288af99
26 changed files with 208 additions and 184 deletions

View File

@@ -1,28 +1,28 @@
# Функции (колбеки) жизненного цикла
* `onResume()` - вызывается при каждом возврате на рабочий стол;
* `onAlarm()` - вызывается при возврате на рабочий стол при условии, что с прошлого вызова прошло больше 30 минут;
* `onTick()` - вызывается каждую секунду пока лаунчер находится на экране.
* `on_resume()` - вызывается при каждом возврате на рабочий стол;
* `on_alarm()` - вызывается при возврате на рабочий стол при условии, что с прошлого вызова прошло больше 30 минут;
* `on_tick()` - вызывается каждую секунду пока лаунчер находится на экране.
Для большинства сетевых скриптов (загрузка и показ значений) следует использовать `onAlarm`. Использование других функций может привести к блокировке вашего IP.
# Функции показа данных
* `ui:showText(string)` - выводит в виджет обычный текст; повторный вызов стирает предыдущий текст;
* `ui:showLines(table, [table])` - выводит список строк с отправителем (на манер почтового виджета), второй аргумент (необязательный) - соответствующие им отправители (форматирование в стиле почтового виджета);
* `ui:showButtons(table, [table])` - выводит список кнопок, первый аргумент - таблица строк, второй опциональный аргумент, таблица цветов в формате #XXXXXX;
* `ui:showProgressBar(text, currentValue, maxValue)` - показывает прогресс бар;
* `ui:showToast(string)` - показывает информационное сообщение в стиле Android;
* `ui:showDialog(string, string, [string], [string])` - показать диалог; первый аргумент - заголовок, второй - текст, третий (опциональный) - имя первой кнопки, четвертый (опциональный) - имя второй кнопки;
* `ui:showEditDialog(string, [string], [string])` - показать диалог с полем ввода: 1 - заголовок, 2 - подпись, 3 - стандартное значения поля ввода;
* `ui:getPrimaryTextColor()` - возвращает цвет текста темы в формате #XXXXXX;
* `ui:getSecondaryTextColor()` - возвращает цвет вторичного текста (обычно серый) в формате #XXXXXX;
* `ui:show_text(string)` - выводит в виджет обычный текст; повторный вызов стирает предыдущий текст;
* `ui:show_lines(table, [table])` - выводит список строк с отправителем (на манер почтового виджета), второй аргумент (необязательный) - соответствующие им отправители (форматирование в стиле почтового виджета);
* `ui:show_buttons(table, [table])` - выводит список кнопок, первый аргумент - таблица строк, второй опциональный аргумент, таблица цветов в формате #XXXXXX;
* `ui:show_progress_bar(text, current_value, max_value)` - показывает прогресс бар;
* `ui:show_toast(string)` - показывает информационное сообщение в стиле Android;
* `ui:show_dialog(string, string, [string], [string])` - показать диалог; первый аргумент - заголовок, второй - текст, третий (опциональный) - имя первой кнопки, четвертый (опциональный) - имя второй кнопки;
* `ui:show_edit_dialog(string, [string], [string])` - показать диалог с полем ввода: 1 - заголовок, 2 - подпись, 3 - стандартное значения поля ввода;
* `ui:get_primary_text_color()` - возвращает цвет текста темы в формате #XXXXXX;
* `ui:get_secondary_text_color()` - возвращает цвет вторичного текста (обычно серый) в формате #XXXXXX;
При нажатии на любой элемент интерфейса будет выполнен колбек `onClick(number)`, где number - это порядковый номер элемента. Например, если вы используете `ui:showButtons` для показа трех кнопок, то при нажатии первой кнопки будет вызван `onClick` с аргументом 1, второй - с аргументов 2, и так далее. Если элемент на экране всего один - аргумент всегда будет равен единице и его можно будет опустить.
При нажатии на любой элемент интерфейса будет выполнен колбек `on_click(number)`, где number - это порядковый номер элемента. Например, если вы используете `ui:show_buttons` для показа трех кнопок, то при нажатии первой кнопки будет вызван `on_click` с аргументом 1, второй - с аргументов 2, и так далее. Если элемент на экране всего один - аргумент всегда будет равен единице и его можно будет опустить.
Нажатия на кнопки диалога должны обрабатываться в колбеке `onDialogAction(number)`, где 1 - это первая кнопка, 2 - вторая, а -1 - нажатие кнопки "закрыть", если никакие кнопки не были указаны. `ui:editDialog()` возвращает текст в колбек `onDialogAction(text)`.
Нажатия на кнопки диалога должны обрабатываться в колбеке `on_dialog_dction(number)`, где 1 - это первая кнопка, 2 - вторая, а -1 - нажатие кнопки "закрыть", если никакие кнопки не были указаны. `ui:edit_dialog()` возвращает текст в колбек `onDialogAction(text)`.
Функции `ui:showText(string)` и `ui:showLines(string)` поддерживают многие теги HTML. Например:
Функции `ui:show_text(string)` и `ui:show_lines(string)` поддерживают многие теги HTML. Например:
```
First line<br/>Second line
@@ -33,33 +33,34 @@ First line<br/>Second line
# Системные функции
* `system:openApp(string)` - открывает приложение, имя пакета которого указано в аргументе;
* `system:openBrowser(string)` - открывает указанный URL в браузере или в приложении, умеющем обрабатывать данный тип URL;
* `system:open_app(string)` - открывает приложение, имя пакета которого указано в аргументе;
* `system:open_browser(string)` - открывает указанный URL в браузере или в приложении, умеющем обрабатывать данный тип URL;
* `system:exec(string)` - выполняет shell-команду;
* `system:su(string)` - выполняет shell-команду от имени root;
* `system:getLocation()` - возвращает местоположение в таблице с двумя значениями (запрос местоположения НЕ выполняется, используется значение, сохраненное системой ранее).
* `system:get_location()` - возвращает местоположение в таблице с двумя значениями (запрос местоположения НЕ выполняется, используется значение, сохраненное системой ранее);
* `system:get_tz()` - возвращает текущую временную зону в формате `Europe/Moscow`;
Результат выполнения shell-команды приходит в колбек `onShellResult(string)`.
Результат выполнения shell-команды приходит в колбек `on_shell_result(string)`.
# Функции управления лаунчером
* `aio:doAction(string)` - выполняет действие AIO ([подробнее](https://aiolauncher.app/api.html));
* `aio:addWidget(string)` - добавляет на экран встроенный виджет, виджет-скрипт или клон существующего виджета;
* `aio:removeWidget(string)` - удаляет с экрана встроенный виджет или виджет-скрипт (внимание: доп. виджеты тоже будут удалены);
* `aio:isWidgetAdded(string)` - проверяет, добавлен ли виджет на экран;
* `aio:getArgs()` - возвращает таблицу аргументов, которые пользователь указал нажав на иконку настроек в режиме редактирования виджета;
* `aio:do_action(string)` - выполняет действие AIO ([подробнее](https://aiolauncher.app/api.html));
* `aio:add_widget(string)` - добавляет на экран встроенный виджет, виджет-скрипт или клон существующего виджета;
* `aio:remove_widget(string)` - удаляет с экрана встроенный виджет или виджет-скрипт (внимание: доп. виджеты тоже будут удалены);
* `aio:isWidget_added(string)` - проверяет, добавлен ли виджет на экран;
* `aio:get_args()` - возвращает таблицу аргументов, которые пользователь указал нажав на иконку настроек в режиме редактирования виджета;
Если в метаданных виджета есть поле `argumentsArgs`, его значение будет выведено при редактировании аргументов виджета. Если есть поле `argumentsDefault` - оно будет использовано для получения дефолтовых аргументов.
Если в метаданных виджета есть поле `arguments_help`, его значение будет выведено при редактировании аргументов виджета. Если есть поле `arguments_default` - оно будет использовано для получения дефолтовых аргументов.
# Сетевые функции
* `net:getText(url)` - функция для получения текстовых данных по сети (JSON, XML, plain text).
* `net:get_text(url)` - функция для получения текстовых данных по сети (JSON, XML, plain text).
Функция не возвращает никакого значения, а вместо этого вызывает колбек `onNetworkResult(string)`. В нем следует обрабатывать результат.
# Функции обработки данных
* `json:getValue(string, string)` - получает указанное значение из JSON; первый аргумент - JSON-строка, второй - инструкция для получения значения.
* `ajson:get_value(string, string)` - получает указанное значение из JSON; первый аргумент - JSON-строка, второй - инструкция для получения значения.
В отличие от классических парзеров JSON, эта функция предназначена не для парзинга, а именно для извлечения одиночных значений. Например, есть следующий JSON:
@@ -77,19 +78,19 @@ First line<br/>Second line
Необходимо извлечь из него строку "joke". По тексту JSON видно, что эта строка содержится внутри объекта "value", а сам этот объект находится внутри основного объекта JSON. Другими словами чтобы извлечь нужную строку необходимо "открыть" основной объект JSON, затем "открыть" объект "value" и найти в нем строку "joke". В коде это будет выглядеть так:
```
joke = json:getValue(result, "object object:value string:joke")
joke = ajson:get_value(result, "object object:value string:joke")
```
При этом полный текст скрипта может выглядеть так:
```
function onAlarm()
net:getText("http://api.icndb.com/jokes/random")
function on_alarm()
net:get_text("http://api.icndb.com/jokes/random")
end
function onNetworkResult(result)
local joke = json:getValue(result, "object object:value string:joke")
aio:showText(joke)
function on_network_result(result)
local joke = ajson:get_value(result, "object object:value string:joke")
aio:show_text(joke)
end
```
@@ -105,7 +106,13 @@ end
AIO Launcher включает в себя интерпретатор LuaJ 3.0.1 (совместимый с Lua 5.2) со стандартным набором библиотек: `base`, `bit32`, `coroutine`, `io`, `math`, `os`, `package`, `string table`.
В комплект также входят библиотека [LuaJava](https://github.com/luaj/luaj#the-luajava-library) для прямого вызова методов Java, и библиотека [Penlight](http://stevedonovan.github.io/Penlight/api/manual/01-introduction.md.html) с набором портированных из Python функций и структур данных.
В комплект также входят:
* [LuaJava](https://github.com/luaj/luaj#the-luajava-library) - прямой вызов методов Java;
* [Penlight](http://stevedonovan.github.io/Penlight/api/manual/01-introduction.md.html) - набор портированных из Python функций и структур данных;
* [luatz](https://github.com/daurnimator/luatz) - функции для работы со временем;
* [json.lua](https://github.com/rxi/json.lua) - парзер JSON;
* [SLAXDOM](https://github.com/Phrogz/SLAXML) - парзер XML.
# Метаданные
@@ -114,8 +121,8 @@ AIO Launcher включает в себя интерпретатор LuaJ 3.0.1
```
-- name = "Covid info"
-- description = "Cases of illness and death from covid (covid19api.com)"
-- argumentsHelp = "Specify the country code"
-- argumentsDefault = "RU"
-- arguments_help = "Specify the country code"
-- arguments_default = "RU"
-- type = "widget"
-- author = "Evgeny Zobnin (zobnin@gmail.com)"
-- version = "1.0"