===== Библиотека функций ===== ==== Функции доступные из lua-кода ==== **Log(string msg) **- вывести сообщение в лог\\ //msg// - текст сообщения **PlaySound(string id)** - воспроизвести аудиофайл\\ //id// - идентификатор аудиофайла. Список загружаемых файлов и их идентификаторы задаются через главный конфигурационный файл (см. "[[:lm2:ce:s_config|Главный конфигурационный файл]]") **Set(string prop)** - установить значение свойства.\\ //prop// - строка, вида <адрес>=<значение>, где <адрес> - адрес свойства, а <значение> - значение, которое должно быть присвоено свойству. Eсли prop имеет вид <имя_плагина>:<адрес>=<значение>, то <значение> присваивается соответствующему свойству плагина. **Set(string addr, string value)** - установить значение свойства.\\ Эквивалентно вызову Set(addr..'='..value) **string Get(string addr)** - получить значение свойства\\ addr - адрес свойства. Может иметь вид <имя_плагина>:<адрес> для получения значения свойства плагина. **SetText(string addr, string textID)** - установить значение свойства из строковых данных\\ //addr// - адрес свойства\\ //textID// - идентификатор строки из строковых данных **string GetText(string textID)** - получить строку из строковых данных\\ //textID// - идентификатор строки из строковых данных **Include(string luaFileName)** - выполнить lua-код из файла. Аналогична функции dofile(…), но с учетом путей\\ //luaFileName// - имя файла с кодом **Panel(string viewportName, string panelName)** - присоединить панель к вьюпорту. Одну панель можно присоединить только к одному вьюпорту, один раз.\\ //viewportName// - имя вьюпорта или пустая строка, если панель надо отвязать от вьюпорта\\ //panelName// - имя панели **Text(string textResourceName)** - загрузить строковые данные из файла\\ //textResourceName// - имя файла со строковыми данными **AddEventHandler(string event, string fname)** - добавить ссылку на обработчик события\\ //event// - описание события в виде <адрес>[=<значение>] или <имя_плагина>:<адрес>[=<значение>]\\ //fname// - имя функции - обработчика события. Функция обработчик события должна иметь вид: function (ev) ... return isContinue end //ev// - таблица вида (описывает событие):\\ ev.Plugin\\ ev.Panel\\ ev.Element\\ ev.Entry\\ ev.Property\\ ev.Value\\ //isContinue// - если функция возвращает true, то виртуальная машина продолжит искать подходящие обработчики для этого события **PushEvent(string event)** - поместить событие в очередь на обработку\\ //event //- событие (вида [<имя_плагина>:]<адрес>[=<значение>]) **CheckMouse(string viewportName, number x, number y, bool isClick) **- НЕТ ДАННЫХ\\ //viewportName //- имя вьювпорт\\ //x //- координата по горизонтали\\ //y //- координата по вертикали\\ //isClick - //НЕТ ДАННЫХ **sys.Exit()** - закрыть приложение **sys.StartTimer(string id, integer time[, bool once = true]) **- запустить таймер\\ //id// - имя таймера\\ //time //- засекаемое время, мс\\ //once //- true - если таймер должен сработать один раз, false - если должен работать циклично. Если опустить этот параметр, то он по умолчанию считается равным true.\\ После истечения времени time, возникает событие вида: timer..finished.=true. Таймер не очень точный. **sys.StopTimer(string id)** - остановить таймер\\ //id //- имя таймера\\ После остановки таймера этой функцией событие таймера не возникает. **sys.GetPanelList()** - получить имена всех панелей\\ Возвращает массив строк с именами панелей **sys.GetElementList(string PanelID)** - получить имена элементов в заданной панели\\ //PanelID// - имя панели, в которой ищем элементы.\\ Возвращает массив строк с именами элементов **sys.GetSubList(string PanelID, string ElementID)** - получить имена подэлементов в заданном элементе\\ //PanelID// - Имя панели\\ //ElementID// - Имя элемента\\ Возвращает массив строк с именами подэлементов **sys.GetViewportList()** - получить имена всех вьюпортов\\ Возвращает массив строк с именами вьюпортов **sys.GetViewportName(string PanelID)** - получить имя вьюпорта по имени панели\\ //PanelID// - Имя панели\\ Возвращает имя вьюпорта или пустую строку, если такой панели нет или она не присоединена к вьюпорту **sys.InitViewport(string ID, integer Left, integer Top, integer Width, integer Height, bool Windowed)** - добавить новый вьюпорт\\ //ID //- имя вьюпорта\\ //Left //- позиция вьюпорта на мониторе по горизонтали\\ //Top //- позиция вьюпорта на мониторе по вертикали\\ //Width //- Ширина вьюпорта\\ //Height //- Высота вьюпорта\\ //Windowed// - Флаг рамки\\ Возвращает true, если вьюпорт создан удачно **sys.InitViewport(string ID, integer Width, integer Height, integer HWND)** - добавить новый вьюпорт\\ //ID //- имя вьюпорта\\ //Width //- ширина вьюпорта\\ //Height //- высота вьюпорта\\ //HWND// - хэндл существующего окна\\ Возвращает true, если вьюпорт создан удачно **sys.LoadLogic(string fileName)** - перезапуск логической машины. Все панели отвязываются от вьюпортов\\ //fileName// - имя стартового lua скрипта **sys.Exec(string id, string cmd)** - выполнить внешнюю команду в отдельном потоке\\ //id// - id (имя) потока\\ //cmd //- команда\\ Возвращает true, ести поток запустился успешно\\ После завершения работы возникает событие: exec..finished.=\\ В текущей реализации одновременно можно запустить на выполнение только одну команду **[RPI] lic.GetSerial()** - получить серийный номер устройства\\ Возвращает серийный номер **sys.SavePanelPNG(string PanelName, string FileName, integer Width, integer Height) **- НЕТ ДАННЫХ\\ //PanelName// - имя панели\\ //FileName// - имя файла\\ //Width// - ширина в пикселях\\ //Height// - высота в пикселях **sys.SaveElementPNG(string PanelName, string ElementName, string FileName, integer Width, integer Height[, number Scale])** - НЕТ ДАННЫХ\\ //PanelName //- имя панели\\ //ElementName //- имя элемента\\ //FileName //- имя файла\\ //Width// - ширина в пикселях\\ //Height// - высота в пикселях\\ //Scale //- масштаб **sys.SaveXML() **- НЕТ ДАННЫХ **sys.SaveLib()** - НЕТ ДАННЫХ **sys.SetXMLAttr(string Prop)** - НЕТ ДАННЫХ\\ //Prop// - НЕТ ДАННЫХ **sys.SetLibAttr(string Prop)** - НЕТ ДАННЫХ\\ //Prop// - НЕТ ДАННЫХ **sys.GetXMLAttr(string Prop)** - НЕТ ДАННЫХ\\ //Prop// - НЕТ ДАННЫХ **sys.GetLibAttr(string Prop) ** - НЕТ ДАННЫХ\\ //Prop// - НЕТ ДАННЫХ **sys.ShowViewport(string ViewportID)** - показать вьюпорт\\ //ViewportID// - имя вьюпорта **sys.HideViewport(string ViewportID)** - скрыть вьюпорт\\ //ViewportID //- имя вьюпорта **sys.MoveViewport(string ViewportID, number x, number y)** - переместить вьюпорт\\ //ViewportID //- имя вьюпорта\\ //x//- координата по горизонтали\\ //y//- координата по вертикали **sys.ScaleViewport(string ViewportID, number x, number y, number scale) **- масштабировать вьюпорт\\ //ViewportID //- Имя вьюпорта\\ //x// - НЕТ ДАННЫХ\\ //y// - НЕТ ДАННЫХ\\ //scale //- масштаб **sys.ResetViewport(string ViewportID)** - НЕТ ДАННЫХ\\ //ViewportID //- имя вьюпорта **sys.GetMousePos(string ViewportID) **- получить координаты курсора мыши относительно вьюпорта\\ //ViewportID //- имя вьюпорта\\ Возвращает number x, number y - координаты курсора или nil **sys.SetMousePos(string ViewportID, integer x, integer y)** - установить курсор мыши относительно вьюпорта\\ //ViewportID //- имя вьюпорта\\ //x //- координата по горизонтали\\ //y //- координата по вертикали **sys.ShowCursor(string ViewportID)** - показать курсор мыши\\ //ViewportID //- имя вьюпорта **sys.HideCursor(string ViewportID)** - спрятать курсор мыши\\ //ViewportID //- имя вьюпорта **sys.GrabCursor(string ViewportID)** - запретить курсору мыши выходить за пределы вьюпорта\\ //ViewportID //- имя вьюпорта\\ Этот режим работает только если окно вьюпорта имеет фокус **sys.UngrabCursor(string ViewportID)** - выключить режим запрета выхода курсора за пределы вьюпорта\\ //ViewportID //- имя вьюпорта **sys.RequestFocus(string ViewportID) **- запросить получение фокуса для окна вьюпорта\\ //ViewportID //- имя вьюпорта\\ Фактическое получение фокуса зависит от ОС **sys.HasFocus(string ViewportID)** - запросить состояние фокуса у окна вьюпорта\\ //ViewportID// - имя вьюпорта\\ Возвращает true, если окно имеет фокус **sys.SetVPPos(string ViewportID, number x, number y)** - НЕТ ДАННЫХ\\ //ViewportID //- имя вьюпорта\\ //x //- координата по горизонтали\\ //y //- координата по вертикали **sys.SetVPScale(string ViewportID, number ScaleX, number ScaleY, number Scale) **- НЕТ ДАННЫХ\\ //ViewportID //- имя вьюпорта\\ //ScaleX //- масштаб по горизонтали\\ //ScaleY //- масштаб по вертикали\\ //Scale //- масштаб **sys.SetVPZoomScale(string ViewportID, number ZoomScaleX, number ZoomScaleY, number ZoomScale)** - НЕТ ДАННЫХ\\ //ViewportID //- имя вьюпорта\\ //ZoomScaleX //- дополнительный масштаб по горизонтали\\ //ZoomScaleY //- дополнительный масштаб по вертикали\\ //ZoomScale //- дополнительный масштаб ==== Функции, доступные из Lua кода в пропертях элементов ==== **Log(string msg) **- см. выше **PlaySound(string name)** - см. выше **Set(string prop)** - установить значение **своего ** свойства\\ //prop //- строка, вида <имя_подэлемента>.<имя_свойства>=<значение> или <имя_свойства>.=<значение> **Set(string addr, string value) **- установить значение **своего ** свойства.\\ Эквивалентно вызову Set(addr..'='..value) **string Get(string addr)** - получить значение **своего ** свойства\\ addr - адрес свойства. Должен иметь вид <имя_подэлемента>.<имя_свойства> или <имя_свойства>.. **SetText(string addr, string textID)** - установить значение **своего ** свойства из строковых данных\\ //addr //- адрес свойстваtextID - идентификатор строки из строковых данных **string GetText(string textID)** - см. выше **PushEvent(string event)** - см. выше