-
Notifications
You must be signed in to change notification settings - Fork 13
ScriptWidget (cz)
Script widget umožňuje parsování dat pomocí scriptu, který se píše v QtScriptu, který je založený na standartu ECMAScript, na kterém je založený JavaScript. Prostě je to hodně podobné JavaScriptu a většinou můžete použít jeho referenci.
http://en.wikipedia.org/wiki/ECMAScript
https://qt-project.org/doc/qt-4.8/scripting.html
http://www.w3schools.com/jsref/default.asp - JS reference
##Pár věcí na které je potřeba myslet
- Widgety vytvořené ze scriptu se neukládájí do datového souboru - po načtení se vytvoří znovu, bez dat.
- Stav proměnných ve scritptu se neukládá do souboru (zatím?)
- Po stisknutí "Ok" nebo "Apply" v dialogu nastavení scritpu se script načte znovu - staré widgety se smažou a vytvoří nové, bez dat
##Základní script Po pravém kliknutí na ScriptWidget a zvolení "Zdrojový kód scriptu..." se zobrazí jednoduchý editor s následujícím scriptem (odstranil jsem komentáře):
function onDataChanged(data, dev, cmd, index) {
return "";
}
function onKeyPress(key) {
}
Tyhle metody by měl script implementovat.
###onDataChanged(data, dev, cmd, index) Tahle fce se volá když se změní pozice v přijatých datech, tj. když přijdou nové data nebo když se uživatel přesune na jinou pozici v datech. Není filtrovaná podle příkazu ani ID zařízení, toto musíte provádět sami.
Argumenty
data: pole bytů (datový typ je Integer) s daty packetu. Obsahuje hlavičku i data.
dev: Integer s ID zařízení z hlavičky packetu. Pokud hlavička ID neobsahuje, rovná se tento argument -1.
cmd: Integer s příkazem z hlavičky packetu. Pokud hlavička příkaz neobsahuje, rovná se tento argument -1.
index: Integer s indexem v přijatých datech.
Vrácené hodnoty
Může vracet string, který je pak přidán do terminálu.
###onKeyPress(key) Tahle fce se volá když se v terminálu stiskne klávesa.
Argumenty
key: string se stisknutou klávesou.
Vrácené hodnoty
Tahle fce nemá nic vracet.
##Vestavěné funkce Kromě knihoven QtScriptu (např. Math) poskytuje Lorris několik dalších metod.
###appendTerm(string)
Tato fce přidá do terminálu text.
Příklad:
function onKeyPress(key) {
appendTerm(key);
}
###clearTerm()
Tato fce vyčistí terminál.
Příklad:
function onKeyPress(key) {
if(key == "c")
clearTerm();
}
###sendData(array of ints)
Pošle do zařízení data. Parametrem je pole bytů.
Příklad:
function onKeyPress(key) {
sendData(new Array(key.charCodeAt(0), 0, 1));
}
###newXXXXWidget() Fce pro vytvoření widgetu, do kterého bude dodávat dat script. Seznam fcí je následující:
- newNumberWidget: vytvoří widget číslo
- newBarWidget: vytvoří widget sloupcový bar
- newColorWidget: vytvoří widget barvy
- newGraphWidget: vytvoří graf
- newInputWidget: vytvoří widget vstup. Tento widget jde vytvořit pouze ze scriptu.
Argumenty:
Všechny funkce pro vytváření widgetů mají stejné argumenty.
newXXXXWidget("jméno");
newXXXXWidget("jméno", šířka, výška);
newXXXXWidget("jméno", šířka, výška, Xoffset, Yoffset);
jméno widgetu
šířka a výška widgetu
Xoffset a Yoffset - pozice widgetu relativně k pozici scriptWidgetu
Příklad:
var cislo = newNumberWidget("rychlost", 200, 100, -250, 0);
function onDataChanged(data, dev, cmd, index) {
cislo.setValue(data[0]);
return "";
}