Skip to content

ScriptWidget (cz)

Tasssadar edited this page Mar 2, 2012 · 3 revisions

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 "";
}
Clone this wiki locally