Новый вид обработчика pythonscript
В новом редакторе (https://seditor.ru:1555/) появился новый вид обработчика - pythonscript. В отличие от других python-обработчиков, где указывалось имя функции, тут просто пишется код и все. Не надо проваливаться в py-файл, находить функцию и т.д. Такое было в те времена, когда редактор был на 1С, но вот сейчас, с подсветкой кода от prism и другими техническими усовершенствованиями, это наконец-то стало удобно.
Общий модуль сразу в редакторе и использование модулей.
Скриптовый подход хорош, но где-то хранить глобальные переменные иногда все же надо. Да и какие-то общие классы и функции - тоже. В старом подходе – это модуль обработчиков или дополнительные модули. Кстати, все подключаемые дополнительные модули также могут импортироваться в pythonscript обработчиках тоже. Но чтобы не выходить из редактора во внешнее IDE, также добавлен сразу модуль для работы из редактора непосредственно.
Импорт делается так
import general
Упрощенные функции платформы, которые работают run-time.
Все функции доступны через команды-переменные, но часто это не совсем удобно. Например, надо вывести тост внутри долгого обработчика или обновлять уведомление внутри цикла, а не после выполнения такта обработчика (а стек-машина выполняет команды-переменные по окончанию такта). Поэтому я собрал все подобные функции в python- модуль android и теперь их можно использовать так.
Данный модуль доступен не только из pythonscript, но и из остальных python обработчиков
import android
android.toast("hello")
Еще раз напомню – это именно run-time на уровне системы, т.е. выполняется непосредственно.
Справочник почти аналогичен JS, просто SQL и NoSQL у пайтона доступны из других модулей.
Интерфейсные команды:
- toast(String toast) – вывести сообщение Андроид
- speak(String text) – произнести текст (TTS engine)
- listen() – запустить ожидание распознавания речи
- vibrate() и vibrate(int duration) – вибрация и вибрация заданной длительности
- beep()/beep(int tone)/ beep(int tone,int beep_duration,int beep_volume) – звуковой сигнал, т.ч. с возможностью выбрать тон (от 1 до 99), продолжительность и громкость (по умолчанию – 100)
- notification(String message)/ notification (String message,String title)/ notification(String message,String title,int number) – уведомление в шторке уведомлений. Number – идентификатор уведомления, по которому к нему можно потом обратиться, чтобы либо убрать, либо перезаписать (обновить)
- notification_progress(String message,String title,int number,int progress) – уведомление с прогресс-баром (от 0 до 100)
- notification_cancel(int number) – скрыть уведомление
Прочее:
RunEvent(String handlers) – запустить массив обработчиков
BackgroundCommand(command) – запустить фоновую команду
stop() или stop(hashMap) – точка останова для отладки
Справочник(модуль) будет пополняться по мере развития платформы. Следите за обновлениями.
Пошаговая отладка в онлайн-редакторе
Тут все показано на видео. Надо сказать, что давно есть еще один способ отладки https://uitxt.readthedocs.io/ru/latest/debug.html Однако он требует определенных телодвижений каждый раз - нужно переносить функции, подлежащие отладке на сервер, чтобы обращаться к ним онлайн, в отличии от этого способа.
Замечание: отладка не добавлена на seditor.ru, она будет работать только на локальном редакторе (надо скачать с GithHub, развернуть, запустить у себя). Лежат исходники тут и там же инструкция из 4-х пунктов: https://github.com/dvdocumentation/web_simple_editor
Python 3.11
В новом релизе включена версия python 3.11. Быстрее выполнение кода (относительно 3.8 на около 25%), новые фичи, типизация и другие улучшения. Правда с оговоркой – в комплекте разработчика 2 версии: 3.8 с OpenCV, lxml и Python 3.8 и соответственно с Python 3.11 и без означенных библиотек. На 3.11 пока 2 эти библиотеки не завелись. В Google Play – версия с python 3.11, а OpenCV туда изначально не проходила по размеру (в Google Play ограничение 100Мб). Еще раз напомню что для прод-проектов рекомендуется ставить из apk из комплекта чтобы защититься от неожиданностей (я конечно тестирую релизы, но...)
Упрощенная разметка полей ввода
Немного не в теме публикации, но штука, которая экономит время и размер конфы. Если надо добавить поля ввода с заголовком, то раньше надо было сделать 3 элемента:
1. Горизонтальный контейнер и в нем 2 элемента
2. Надпись
3. Поле ввода
Сделал для SimpleUI и SimpleWEB такое упрощение: теперь можно просто разместить 1 элемент ввода с заголовком типа <Текст заголовка>|<заполнение по умолчанию> и это будет аналогично ранее описанному варианту с контейнером+2 элемента в нем. Это доступно для всех полей ввода, кроме Современного поля ввода (у него другая суть).
Немного про симплификацию и прекрасное будущее
Данный релиз является логическим завершением ряда мероприятий по упрощению разработки на симпле. Этот своеобразный маневр начался со смены редактора и стека его разработки (для чего был предварительно прокачан SimpleWEB). Теперь редактор на веб, написан на SimpleWEB что дает несколько преимуществ: тот же стек разработки что и на SimpleUI – можно править под себя, это просто; под веб доступно множество фишек, такие как подсветка синтаксиса, без которой pythonsript и js обработчики смотрелись бы совершенно не так, и другие фичи, которые постепенно будут внедряться на нем; редактор доступен сразу и везде – разработчик может открыть средство разработки на любом компьютере, связать со свои устройством и начать разработку, не нужно развертывание. В целом этот стек выглядит как простой в поддержке и готовом к дальнейшему развитию. Скриптовый подход, такой как js и pythonscript имеет преимущества – не нужны другие файлы и средства разработки и ткнув на событие сразу проваливаешься в обработчик и начинаешь редактировать, все необходимое хранится в одном ui-файле и ничего, кроме браузера, не нужно, чтобы разрабатывать свое андроид или веб-приложение на Simple.
Также отмечу, что я последовательно продолжаю двигаться от энтропии к упорядоченному, повышая уровень структурированности и унификации подходов к разработке. Даже самые сложные фронтовые решения (а SimpleUI и SimpleWEB, даже если это самостоятельные приложения, в общем корпоративном ИТ-ландшафте - фронты) получаются декомпозированные до простых и однообразных скриптов и элементов. Скрипты, будь то UI-элементы, локальное хранение(в случае с NoSQL SimpleBase) или передача данных – это по сути работа с JSON в том или ином виде и ничего больше – JSON, JSON, JSON… Это будет еще более выражено в ходе дальнейшего развития собственной СУБД и шины данных. Такая структурированность – хорошая основа для использования генеративного ИИ GPT для генерации решений – меньше степеней свободы – меньше ошибок, проще разбираться и править то что сгенерировано.
Примеры к релизу, как всегда, в основной статье //infostart.ru/1c/tools/1153616/
Конечно же, Телеграм-канал проекта, в котором масса всего полезного: https://t.me/devsimpleui