Programare in Jaws Scripting, aplicatii practice

Diverse limbaje, programare, scripting, coduri, unelte specifice etc.
Scrie răspuns
Avatar utilizator
Manu
General de divizie
Mesaje: 4120
Membru din: 02 Feb 2007, 01:15
Localitate: Cluj-Napoca
Contact:

Mesaj de Manu »

Ma refeream atunci la persoane interesate de un astfel de curs din perspectiva profesorului, nu a cursantului...
Cursanti s-ar mai gasi, dar profesori mai greu...
Poate o sa ma mobilizez eu sa fac ceva despre JAWS, lucruri generale, in primul rand setari de baza.
Existau niste cursuri imprimate de Iulian Lesneanu la FCC, le-am ascultat acum multi ani si mi-au clarificat foarte bine anumite lucruri. De asemenea era si o carte citita si audio, Windows explicat pentru nevazatori sau asa ceva.
Daca nu le gasesti, o sa le pun pe undeva si fac link si aici.
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
Shady
Locotenent
Mesaje: 455
Membru din: 09 Aug 2011, 01:46
Localitate: Bucuresti
Contact:

Mesaj de Shady »

Eu am gasit emisiunea jaws pe net ralizata de tine Manu dar mi-a fost de ajutor mai in limita.Nu am gasit tot ce s-a imprimat pe casete din emisiune.Te rog fa un efort si creeaza un topic sau posteaza in acest topic ceea ce ai spus.M-ar ajuta mult.Cat despre ceea ce ai spus de domnul Iulian Lesneanu....nu am gasit nimic de dansul.A venit o singura data la mine dar dupa aceea nu am mai avut timp sa-l mai chem.
Vlad_Ciotescu
Plutonier
Mesaje: 110
Membru din: 10 Iul 2012, 13:39
Localitate: timisoara
Contact:

Re: Programare in Jaws Scripting, aplicatii practice

Mesaj de Vlad_Ciotescu »

Manu scrie:Practic sugestia a fost demonstrarea modului de realizare a unui joc. Cum Pontes Casino era deja facut, am zis sa incepem cu Pontes Trucker in mod treptat cu codurile expuse.
ok dar unde pot gasi pontes trucker
Avatar utilizator
Manu
General de divizie
Mesaje: 4120
Membru din: 02 Feb 2007, 01:15
Localitate: Cluj-Napoca
Contact:

Mesaj de Manu »

Pana la urma acest joc nu a mai fost finalizat.
Sunt cateva coduri, inclusiv un traseu Londra - Bucuresti, dar a ramas cam la acel stadiu. Cauta in mesajele anterioare ale acestui topic si vei gasi tot ce s-a facut la acea vreme.
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
Shady
Locotenent
Mesaje: 455
Membru din: 09 Aug 2011, 01:46
Localitate: Bucuresti
Contact:

Mesaj de Shady »

Salutare.Manu voiam sa te-ntreb ce ai facut cu acele materiale ajutatoare pentru jaws.Le-ai postat?Nu gasesc ceea ce mi-ai spus.
BosGrigore
Plutonier
Mesaje: 145
Membru din: 22 Iul 2012, 21:48
Localitate: Cluj-Napoca

Mesaj de BosGrigore »

DexOnline 1.10 cu ResearchIt tool
Fisierul LRL_Dexonline.rul

Cod: Selectaţi tot

[Details]
FriendlyName=DexOnline
Description=Scrieti cuvantul fara diacritice, selectati DexOnline din lista si apasati enter. Cod pentru jaws 14 si jaws 13.
Timeout=15000
Version=1.10
Fisierul LRL_Dexonline.qry

Cod: Selectaţi tot

(: NAMESPACES :)
(: declare default element namespace "http://www.w3.org/1999/xhtml"; :)
(: IMPORTS :)
import module namespace fsi = "http://freedomscientific.com/ResearchItImports" at "ResearchItLibrary.jri";

(: FUNCTIONS :)

declare function local:get-search-term () as xs:string*
{
	(: Se afiseaza search term doar daca definitia este gasita :)
	let $str := if (count($results/*[name()='p'][*]/*[name()='span'])) then
	(normalize-space ( fsi:strip-trailing-punct (lower-case ("|ARG_1...ARG_n|"))))
	else ('')
	return $str
};

declare function local:definitii ($list as node()*) as node()*
{<ol>
{	let $definitions := for $detail at $count in $list/*
	return if (name ($detail) = 'p') then
<li>{fn:substring-before (fsi:output-clean-lines($detail), "| Semnaleaz")}</li>
	else ()
return ($definitions)
}
</ol>
};

declare function local:main ($listing as node()*)
{
let $content := local:definitii ($listing)
return if (empty ($content)) then
<p>Definitia nu a fost gasita pentru {$search_term}.</p>
else
<p>{$content}</p>
};

(: VARIABLES :)

declare variable $search-string := encode-for-uri ("|ARG_1...ARG_n|");
declare variable $search_term := fsi:strip-trailing-punct(normalize-space(lower-case ($search-string)));
(: Se acceseaza pagina direct :)
declare variable $URL := concat ('http://dexonline.ro/definitie/', $search_term);
declare variable $doc := xqilla:parse-html(unparsed-text ($URL));
declare variable $results := ($doc
/*[name()='html']/*[name()='body']
/*[name()='div'][@id="Container"]
/*[name()='div'][@id="contentProper"]
/*[name()='div'][@class="txt"]);

(: QUERY BODY :)

(<html>{fsi:add-head ($search_term)}<body>{local:main ($results)}</body></html>)
In NotePad sau EdSharp se copiaza primul cod si se salveaza cu numele LRL_Dexonline.rul, dupa care se salveaza urmatoru cod intr-un fisier cu numele LRL_Dexonline.qry.
Cele doua fisiere se pun in folderul RuleSets pe urmatoarea cale:
Start Menu > Programs > Jaws 14.0 > Explore Jaws > Explore my settings > RuleSets
Cu combinatia de taste insert + spacebar, r se deschide Research it dialog si din options setam DexOnline(primary). Apasam ok. In edit se scrie cuvantul dorit si din list view selectam DexOnline si se apasa enter. In doua trei secunde apar definitiile pentru cuvantul dorit.
Grigore
Avatar utilizator
Manu
General de divizie
Mesaje: 4120
Membru din: 02 Feb 2007, 01:15
Localitate: Cluj-Napoca
Contact:

Mesaj de Manu »

Multumim si felicitari pentru realizarea acestor reguli, functioneaza perfect acum cu Jaws 14.
Am scris un cuvant si au aparut imediat rezultatele sub forma de lista.
Este util inca un mod de accesare DexOnline, si inca unul foarte aproape de utilizatorii de JAWS. Folosim cu totii MaestroDex, dar uneori poate in graba vrem sa nu mai deschidem inca un program.

Am pus un zip pe server cu cele doua fisiere si cu instructiunile intr-un text. E mai usor pentru altii sa copieze doar fisierele la locul potrivit, fara sa se mai chinuie sa le creeze cu Notepad.

Descarcare reguli Jaws Research It pentru DexOnline
DexOnlineJawsResearchIt.zip

Mai jos sunt instructiunile continute in fisierul text din arhiva, fisier care se afla langa cele doua necesare pentru Research It:
Reguli create de BosGrigore.
Versiune 1.1

A se copia cele doua fisiere din folderul in care se afla si acest fisier cu instructiuni.
Numele celor doua fisiere:
LRL_Dexonline.rul
LRL_Dexonline.qry

Se da paste la cele doua fisiere in folderul RuleSets, gasibil pe urmatoarea cale:
Start Menu > Programs > Jaws 14.0 > Explore Jaws > Explore my settings > RuleSets

Pentru utilizare:
Apasand Insert + Space, urmat de un r, se deschide Research it dialog.
In edit se scrie cuvantul dorit si se da un tab.
Din list view-ul pe care ajunge cursorul, selectam DexOnline si se apasa enter.
In doua trei secunde apar definitiile pentru cuvantul dorit.
Inca o data multumiri, mai asteptam si alte reguli.
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
BosGrigore
Plutonier
Mesaje: 145
Membru din: 22 Iul 2012, 21:48
Localitate: Cluj-Napoca

Mesaj de BosGrigore »

Multumesc! Manu. Chiar am vrut sa te rog sa postezi codurile sub forma de fisiere.
Grigore
BosGrigore
Plutonier
Mesaje: 145
Membru din: 22 Iul 2012, 21:48
Localitate: Cluj-Napoca

Mesaj de BosGrigore »

TemperaturaPontesInClujNapoca cu ResearchIt tool
Fisierul lrl_TPontes.rul
Cod,
[Details]
FriendlyName=TemperaturaPontesInClujNapoca
Description=Stergeti tot din edit si selectati TemperaturaPontesInClujNapoca din lista. Apasati enter si temperatura in Cluj-Napoca apare in results viewer
Timeout=15000
Version=1.0.0
Sfarsit cod

Fisierul lrl_TPontes.qry
Cod,
(: NAMESPACES :)
declare default element namespace "http://www.w3.org/1999/xhtml";
(: IMPORTS :)
import module namespace fsi = "http://freedomscientific.com/ResearchItImports" at "ResearchItLibrary.jri";

(:Function:)

declare function local:main ($listing as node()*) as xs:string
{
let $content := $listing
return if (empty ($content)) then
<p>Verificati pe portal.</p>
else
<p>{fn:substring-before (fsi:output-clean-lines($content), "| Alege localitatea")}</p>
};

(: VARIABLES :)

declare variable $doc :=xqilla:parse-html(fn:unparsed-text
("http://www.pontes.ro/portal/index.php"));
declare variable $meteo := $doc/html/body
/div[@id="header"]
/p[@align="right"];

(:query body:)

(<html>{local:main($meteo)}</html>)
Sfarsit cod
Cele doua fisiere se pun in folderul Rul Sets.
Cititi si DexOnline cu research it tool postat anterior.
Grigore
BosGrigore
Plutonier
Mesaje: 145
Membru din: 22 Iul 2012, 21:48
Localitate: Cluj-Napoca

Mesaj de BosGrigore »

Acest cod afiseaza in mod automat evenimentele scrise de fiecare dintre noi in fisierul AgendaMea.ini pe care il vom pune in folderul enu.
Totul se intimpla pe baza datei din pc. Pentru ca evenimentele sa fie spuse automat la deschiderea NotePad de exemplu procedam astfel:
- se deschide NotePad
- cu insert + 0 deschidem NotePad.jss si copieam codul
- se compileaza cu ctrl + s
- la revenire in NotePad se vor auzi evenimentele zilei scrise in AgendaMea.ini

Fisierul AgendaMea.ini se va completa prin editare in NotePad astfel:
[Agenda]
11.09 = Albu Paul
[Agenda1]
Albu Paul = 2003
[Emisiuni]
Monday
Tuesday
Wednesday = Ora 16.00 - A doua sansa - Radio renasterea
Thursday
Friday = Ora 15:30- Oameni ca noi- TVR 1, ora 20:00 - Oameni aproape invizibili - TV H2.0, ora 20:30 - Ochiul interior - Radio Romania actualitati
Saturday
Sunday
[Sarbatori]
08.09 = Nasterea Maici Domnului (Sfanta Maria Mica)

Cod: Selectaţi tot

Globals
string sData,
String sDataNastere,
String sPersoane,
string sZiua,
string sEmisiuneCanal,
string sDataSarbatoare,
string sSarbatoare,
string sAnNastere

Function AutoStartEvent ()
Delay (30)
SpuneOra()
Delay (20)
SayString ("Eveniment")
Delay (10)
SpuneAgenda()
SpuneVarsta ()
Delay (20)
SayString ("Emisiune")
Delay (10)
SpuneEmisiune()
Delay (20)
SayString ("Sarbatoare")
Delay (10)
SpuneSarbatori()
EndFunction

Function SpuneOra ()
Var
string sOra
let sOra = SysGetTime ()
sayString("Este ora" + sOra)
EndFunction

Function SpuneAgenda ()
let sData = SysGetDate ("dd.MM")
let sPersoane = InireadString("Agenda", sData, "Azi nu exista sarbatorit.", "AgendaMea.ini")
SayString(sPersoane)
EndFunction

Function SpuneEmisiune ()
let sZiua = stringSegment (SysGetDate(), ",", 1)
let sEmisiuneCanal = InireadString("Emisiuni", sZiua, "Azi nu exista emisiune.", "AgendaMea.ini")
SayString(sEmisiuneCanal)
EndFunction

Function SpuneSarbatori ()
let sSarbatoare = InireadString("Sarbatori", sData, "Azi nu este sarbatoare.", "AgendaMea.ini")
SayString(sSarbatoare)
EndFunction

Function SpuneVarsta ()
let sAnNastere = IniReadString("Agenda1", sPersoane, "", "AgendaMea.ini")
sayString (sysGetDate("yyyy") - sAnNastere)
EndFunction

Script InterogareAgenda ()
; ctrl + a
InputBox("Scrie data nasterii(ziua.luna)", "Cautare", sDataNastere)
Delay(5)
Let sPersoane=InireadString("Agenda", sDataNastere, "Nu exista in sectiunea agenda", "AgendaMea.ini")
SayString(sPersoane)
SpuneVarsta ()
EndScript

Script InterogareEmisiuni ()
; ctrl + e
InputBox("Scrie ziua cand se transmite emisiunea(ziua-Monday)", "Cautare", sZiua)
Delay(5)
Let sEmisiuneCanal = InireadString("Emisiuni", sZiua, "Nu exista in sectiunea emisiuni", "AgendaMea.ini")
SayString(sEmisiuneCanal)
EndScript

Script InterogareSarbatori ()
; ctrl + s
InputBox("Scrie data sarbatorii(ziua.luna)", "Cautare sarbatoare", sDataSarbatoare)
Delay(5)
Let sSarbatoare = IniReadString("Sarbatori", sDataSarbatoare, "Nu exista in sectiunea sarbatori", "AgendaMea.ini")
SayString(sSarbatoare)
EndScript

Script VerificareAgenda ()
; shift + a
let sPersoane = InireadString("Agenda", sData, "Azi nu exista sarbatorit.", "AgendaMea.ini")
SayString(sPersoane) 
SpuneVarsta()
EndScript

Script VerificareEmisiuni ()
; shift + e
let sEmisiuneCanal = InireadString("Emisiuni", sZiua, "Azi nu exista emisiune.", "AgendaMea.ini")
SayString(sEmisiuneCanal)
EndScript

Script VerificareSarbatoari ()
; shift + s
let sSarbatoare = InireadString("Sarbatori", sData, "Azi nu este sarbatoare.", "AgendaMea.ini")
SayString(sSarbatoare)
EndScript

Script SpuneZiua ()
; shift + z
let sZiua = stringSegment (SysGetDate(), ",", 1)
SayString (sZiua)
EndScript
Sfarsit cod

Cum as putea calcula varsta fara sectiunea [Agenda1]? As dori sa fie inclus anul nasterii in sectiunea [Agenda].
Grigore
Avatar utilizator
Manu
General de divizie
Mesaje: 4120
Membru din: 02 Feb 2007, 01:15
Localitate: Cluj-Napoca
Contact:

Mesaj de Manu »

Pai ar fi trebuit sa contina si anul, la ceea ce e acum inca un punct si anul.
Incerci apoi sa preiei doar anul folosind functia StringSegment().
Aceasta functie imparte un string in bucati in functie de un delimitator, si returneaza segmentul dorit.
Asadar, daca ai prelua pentru Ion Ionescu din INI stringul 26.05.1983, pentru a avea doar acel 1983 scrii:
StringSegment (sData, ".", 3)
acel sData contine stringul de preluat, data si anul nasterii.
StringSegment returneaza string, asa ca trebuie sa il convertesti la int:
String sAn = StringSegment (sData, ".", 3)
Int iAn = StringToInt (sAn)
Pentru a economisi un rand si pentru a nu mai crea sAn daca nu e nevoie si in alt aparte, poti scrie direct:
iAn = StringToInt(StringSegment(sData, ".", 3))
Al treilea parametru e 3 pentru ca e vorba de al treilea segment avand in vedere delimitatorül punct, in JAWS Scripting se numara de la 1, nu de la 0 cum e in majoritatea limbajelor.

Daca nu am inteles bine intrebarea, revin dupa o reformulare.
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
Bordanc_Nicu
Sergent major
Mesaje: 89
Membru din: 20 Aug 2009, 23:44
Localitate: Timisoara
Contact:

Mesaj de Bordanc_Nicu »

Salutare tuturor!
In Jaws Scripting as avea nevoie de doua functii, si anume:
Vreau sa fac operatiuni cu fisiere, si am nevoie sa stiu daca exista vre-o functie care sa returneze numarul de fisiere dintr-un folder, iar a doua functie de care am nevoie, este o functie prin care sa stiu daca itemul selectat e folder sau fisier.
Renunta la ce nu poti pastra, pentru a castiga ce nu poti pierde!!!
IonPop
Colonel
Mesaje: 2166
Membru din: 02 Oct 2010, 17:55

Mesaj de IonPop »

Poate te ajuta putin functiile:
FileExists
FileNameList

Dar sigur trebuie sa existe si alte variante mai bune...
Shady
Locotenent
Mesaje: 455
Membru din: 09 Aug 2011, 01:46
Localitate: Bucuresti
Contact:

Mesaj de Shady »

Salutare!Manu jaws se poate accesibiliza astfel incat sa citeasca toate caracterele pentru creearea scripturilor?AM inteles ca pentru creearea scripturilor nu utilizati jaws ci NVDA.Adevarat?
Avatar utilizator
Manu
General de divizie
Mesaje: 4120
Membru din: 02 Feb 2007, 01:15
Localitate: Cluj-Napoca
Contact:

Mesaj de Manu »

Nu am inteles prima intrebare, cum adica sa citeasca toate caracterele, despre care caractere e vorba.
Nu vad de ce as utiliza NVDA in loc de JAWS.
Eu utilizez NVDA doar atunci cand nu pot utiliza JAWS, adica atunci cand il instalez sau il dezinstalez, ori incerc sa il pornesc daca imi crapa JAWS, asadar pentru mine e un cititor de rezerva.
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
Scrie răspuns