Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: KOLEGA 22. 06. 2013, 23:00:43
-
Zdravíčko, tak jsem se jednoho krásného dne rozhodl, že bych chtěl udělat applet, jenže mi chybí potřebná znalost, kterou nejsem schopen vygooglit a to, jak získat výstup z terminálu a předat ho javascriptu, který se stará o applet, jestli je to tedy vůbec možné? (JS dělám strašně nerad, tudíž ho neumím :-[ )
-
Ja zas netuším čo je cinamon, nie to ešte plugin pre neho :)
No predpokladám že najprv potrebuješ nejaký bash script, ktorý vypisuje najlepšie JSON aby si to nemusel ručne parsovať. Napr.:
#!/bin/bash
echo '
{
"employees": [
{ "firstName":"John" , "lastName":"Doe" },
{ "firstName":"Anna" , "lastName":"Smith" },
{ "firstName":"Peter" , "lastName":"Jones" }
]
}'
Potom potrebuješ napísať samotný plugin. Pekný jednoduchý príklad som našiel tu:
http://cinnamon.linuxmint.com/?p=156
Akurát budeš potrebovať zavolať ten tvoj skript synchrónne lebo potrebuješ vidieť výsledok, čiže namiesto
GLib.spawn_command_line_async('<skript.sh>');použiješ
var scriptOutput;
GLib.spawn_command_line_sync ('<skript.sh>', scriptOutput);
var myObject = JSON.parse(scriptOutput);
potom k objektu pristupuješ normálne ako k iným:
myObject.employees[0].firstName
Fakt neviem čo je cinamon a všetko horeuvedené som vyprodukoval na základe toho čo som vygoogllil. Ak ti to bude fungovať tak mi môžeš kúpiť pivo ;), alebo sa podeľ o svoj projekt s komunitou
-
Díky moc, mrknu se na to :D Ten tutoriál už jsem prošel tisíckrát, chtěl jsem nějakou krásnou cestu alá python, ale koukám, že JS mě ještě potrápí :-) "Projekt" (vtipné) určitě uvolním a to pivo? Jako proč ne :D
-
Nooo, takže dva dny již laboruji a pořád nic, dokonce jsem otravoval i na developerském IRC :D, ale skoro nikdo tam nebyl...
Je mi hlášena chyba - error t=2013-06-25T12:06:06Z Expected type utf8 for Argument 'text' but got type 'object' 0x7f352886f480
Postupoval jsem podle návodu na GitHubu - https://gist.github.com/buzztaiki/1487781
Zdrojový kód je tady je to asi dvacet řádků, takže nic hrozného, ale nějak na to nemohu přijít :/
http://pastebin.com/NwAeC9Xh
-
nemáš tam to JSON.parse? zkusil bych to bez něj - možná to vrací rovnout objekt a ne json ve stringu.
-
skus global.log(out); a global.log(err); namiesto this.set_applet_label(out)
-
Tak pánové, všechno jsem vyzkoušel (i s tím JSON.parse) a problém vyřešilo output = out.toString() :D
Ještě jsem pořádně nepřišel na to, co mi tedy jako out vylezlo za objekt, ale vyšlo to, celý kód je zde
http://kolega.wz.cz/development (http://kolega.wz.cz/development). Není to žádná sláva, nic to neumí (ještě nemám zmáknuté například refresh každý den), ale základní funkčnost to splňuje. Děkuji za pomoc, navštívíteli někdy MB, máte u mne pivo ;)