Programare in Jaws Scripting, aplicatii practice

Diverse limbaje, programare, scripting, coduri, unelte specifice etc.
Scrie răspuns
GruiaVelicu
Locotenent - colonel
Mesaje: 1063
Membru din: 15 Mar 2008, 15:50
Localitate: Cluj-Napoca

Mesaj de GruiaVelicu »

asta e bine ca se incearca accesibilizarea unor aplicatii foarte folosite de nevazatori. practic cursul are o finalitate practica. succesuri
Gruia
gelu roata
Caporal
Mesaje: 17
Membru din: 20 Ian 2010, 10:06
Localitate: Bucuresti

Mesaj de gelu roata »

Am sa vad ce pot sa fac si eu pentru ca as vrea sa-l fac sa spuna timpul cand se selecteaza o portiune dintr-un fisier sau echivalentul lui inssert + up-arrow.
gelu roata
Caporal
Mesaje: 17
Membru din: 20 Ian 2010, 10:06
Localitate: Bucuresti

Mesaj de gelu roata »

Din cate am vazut, scripturi pentru Sound forge au fost incluse pana la Jaws 4.51, apoi, eu unul n am mai gasit. O rezolvare ar fi recompilarea scripturilor de la versiunea de ex 4.5 si redenumirea fisierelor cu versiunea curenta de Sound forge de ex: forge80.jsb.
Scripturile pe care le am recompilat eu raspund la comenzile setate celor amintite mai sus.
gelu roata
Caporal
Mesaje: 17
Membru din: 20 Ian 2010, 10:06
Localitate: Bucuresti

Mesaj de gelu roata »

Am vrut sa spun ca nu functioneaza ins+uparrow si ca o solutie ar fi revederea rand cu rand a fisierelor script de la versiunile anterioare de jaws (4.5).
Grifnas
Sergent major
Mesaje: 59
Membru din: 12 Mar 2008, 19:54
Localitate: Nasaud

Re: Timpul pozitiei curente in Sound Forge

Mesaj de Grifnas »

manu scrie:Provocarea mea este gasirea unei solutii pentru a extrage doar numarul de secunde printr-un alt script care sa vina in completarea celor doua existente.
Inceput cod

Script SpuneSecundele()
Var
String sFirstSegment
GetSFCurrentPosition ()
Let sFirstSegment = StringSegment (sLongTime, ",", 1)
Let sSeconds = StringSegment (sFirstSegment, ":", 3)
SayString (sSeconds)
EndScript

Sfarsit cod
Ultima oară modificat 20 Ian 2010, 18:56 de către Grifnas, modificat 1 dată în total.
Grigore Frisan
Avatar utilizator
Manu
General de divizie
Mesaje: 4120
Membru din: 02 Feb 2007, 01:15
Localitate: Cluj-Napoca
Contact:

Mesaj de Manu »

Da, asta ar tine daca nu ar mai fi si orele si minutele inainte de secunde.
Deci cu StringSegment (sLongTime, ",", 1) se extrage un "00:00:00" daca ne aflam chiar la inceputul fisierului.
Deci, mai trebuie ceva variabila intermediara pentru a aplica apoi din nou StringSegment (), ori incercat cu StringSegment in StringSegment... sa vedem... :)

In legatura cu preluarea scripturilor din JAWS 4.5.1 pentru Sound Forge... e putin mai delicata treaba, mi se pare ca erau pentru versiunea 5 a programului si... banuiesc ca multe s-au mai schimbat in timp. Eventual le vom adapta la noile cerinte sau ne putem inspira de acolo in gasirea lucrurilor care trebuie accesibilizate.
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
Grifnas
Sergent major
Mesaje: 59
Membru din: 12 Mar 2008, 19:54
Localitate: Nasaud

Mesaj de Grifnas »

manu scrie:Deci cu StringSegment (sLongTime, ",", 1) se extrage un "00:00:00" daca ne aflam chiar la inceputul fisierului.
[...]StringSegment in StringSegment...
Da, ai dreptate, numai ca eu, netestand script-ul si entuziasmat fiind de o rezolvare facila a chestiunii/provocarii lansate... intelegi, sper... m-am cam pripit, desigur, dar...

Cred ca, intr-adevar, solutia propusa de tine cu "StringSegment" in "StringSegment" este viabila si merita a fi incercata...
Grigore Frisan
Avatar utilizator
Manu
General de divizie
Mesaje: 4120
Membru din: 02 Feb 2007, 01:15
Localitate: Cluj-Napoca
Contact:

Mesaj de Manu »

Daca nu pune nimeni solutia, scriu eu aici pentru secunde:

Inceput cod

Script SpuneSecunde ()
GetSFCurrentPosition ()
Let sSeconds = StringSegment (StringSegment (sLongTime, ",", 1), ":", 3)
SayString (sSeconds)
EndScript

Sfarsit cod

Se poate rezolva chiar si fara variabila sSeconds, punand cele doua StringSegment in SayString:

SayString (StringSegment (StringSegment (sLongTime, ",", 1), ":", 3))

Cine are chef, pe acelasi sablon poate face acum pentru ore si minute... Asa se vede clar daca s-a inteles si ramane o forma pentru cei care vor adopta in viitor aceasta solutie pentru timp.
Pentru siguranta ar fi bun un Escape si la inceputul functiei GetSFCurrentPosition (), asta pentru a nu da cineva comanda cand deja este activat dialogul Control + G.

Acum m-am gandit ca poate la procesarea cu Sound Forge sunt mai multe lucruri care ar fi utile. De exemplu cineva taie ceva la miime de secunda, apoi mai face ceva miscari, dar ar vrea sa revina in pozitia in care a fost si sa puna ceva. Se poate face script care sa memoreze exact niste puncte clare la miime de secunda.
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
Grifnas
Sergent major
Mesaje: 59
Membru din: 12 Mar 2008, 19:54
Localitate: Nasaud

Mesaj de Grifnas »

Intr-adevar, maiestrita lucrare!...
Solutia pe care am gasit-o eu, dupa sugestia ta cu o variabila suplimentara, este urmatoarea:

Inceput cod

Script SpuneSecundele()
Var
String sFirstSegment
GetSFCurrentPosition ()
Let sFirstSegment = StringSegment (sLongTime, ",", 1)
Let sSeconds = StringSegment (sFirstSegment, ":", 3)
SayString (sSeconds)
EndScript

Sfarsit cod
Grigore Frisan
Avatar utilizator
Manu
General de divizie
Mesaje: 4120
Membru din: 02 Feb 2007, 01:15
Localitate: Cluj-Napoca
Contact:

Mesaj de Manu »

Cand spun o variabila intermediara... nici nu e nevoie sa fie creata, ci tot sSeconds sa fie si intermediara, precum in exemplul:

Let sSeconds = StringSegment (sLongTime, ",", 1)
Let sSeconds = StringSegment (sSeconds, ":", 3)

Deci, o modificare de valoare a unei variabile prin ea insasi.
Sunt foarte nastrusnice aceste metamorfoze succesive. Practic uneori se poate ca cu ajutorul unei singure variabile sa se ajunga la niste rezultate in urma unor calcule foarte complexe, asta pentru ca ea se tot modifica pe parcurs prin operatii aplicate ei insesi.
Ultima oară modificat 21 Ian 2010, 01:20 de către Manu, modificat 1 dată în total.
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
Avatar utilizator
Manu
General de divizie
Mesaje: 4120
Membru din: 02 Feb 2007, 01:15
Localitate: Cluj-Napoca
Contact:

Culoare text si fundal

Mesaj de Manu »

Daca tot nu am inceput inca sa lucram serios la Pontes Trucker, mai pun un mic scriptulet pentru aflare a culorii textului si a fundalului dintr-un punct oarecare, cel pe care este aflat cursorul PC, JAWS sau Virtual.
Cu aceasta ocazie se mai invata si alte functii.
Cei interesati sa poata afla oricand culoarea textului pe care se afla, indiferent ca sunt pe Messenger sau in Word, nu trebuie decat paste la codul de mai jos in fisierul Default.JSS, apoi atribuita o combinatie de taste cu ajutorul dialogului Control + D. O combinatie mai complexa care sa nu fie nicaieri, de exemplu Control + Shift + Insert + Page-Down.

Inceput cod

Script CuloareCurenta ()
Var
String sCuloare,
Int iCuloare
Let iCuloare = GetColorText ()
Let sCuloare = GetColorName (iCuloare)
SayString ("Culoarea textului este " + sCuloare + ", ")
Let iCuloare = GetColorBackground ()
Let sCuloare = GetColorName (iCuloare)
SayString ("Fundalul este " + sCuloare + ".")
EndScript

Sfarsit cod
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
Grifnas
Sergent major
Mesaje: 59
Membru din: 12 Mar 2008, 19:54
Localitate: Nasaud

Mesaj de Grifnas »

manu scrie:Cand spun o variabila intermediara... nici nu e nevoie sa fie creata, ci tot sSeconds sa fie si intermediara, precum in exemplul:

Let sSeconds = StringSegment (sLongTime, ",", 1)
Let sSeconds = StringSegment (sSeconds, ":", 3)

Deci, o modificare de valoare a unei variabile prin ea insasi.
Sunt foarte nastrusnice aceste metamorfoze succesive. Practic uneori se poate ca cu ajutorul unei singure variabile sa se ajunga la niste rezultate in urma unor calcule foarte complexe, asta pentru ca ea se tot modifica pe parcurs prin operatii aplicate ei insesi.
Da, inteleg... sunt, intr-adevar, o multitudine de posibilitati...
Totusi, cea mai sintetica dintre variantele prezentate, pana acum, este, de departe cea propusa de tine, intr-un mesaj anterior:
SayString (StringSegment (StringSegment (sLongTime, ",", 1), ":", 3))
Grigore Frisan
Grifnas
Sergent major
Mesaje: 59
Membru din: 12 Mar 2008, 19:54
Localitate: Nasaud

Mesaj de Grifnas »

Manu scrie:Cine are chef, pe acelasi sablon poate face acum pentru ore si minute... Asa se vede clar daca s-a inteles si ramane o forma pentru cei care vor adopta in viitor aceasta solutie pentru timp.
Da, acum, dupa ce ai aratat rezolvarea, pentru secunde, e foarte usoara modificarea...

Sper ca o va arata cineva, chiar aici; unul dintre cursanti "Jaws scripting", colegii mei...
Grigore Frisan
gelu roata
Caporal
Mesaje: 17
Membru din: 20 Ian 2010, 10:06
Localitate: Bucuresti

Mesaj de gelu roata »

Inceput cod:

Script SpuneMinutele()
Var
String sMinutes,
String sFirstSegment
GetSFCurrentPosition ()
Let sFirstSegment = StringSegment (sLongTime, ",", 1)
Let sMinutes = StringSegment (sFirstSegment, ":", 3)
SayString (sMinutes)
EndScript

Sfarsit cod
Avatar utilizator
Manu
General de divizie
Mesaje: 4120
Membru din: 02 Feb 2007, 01:15
Localitate: Cluj-Napoca
Contact:

Mesaj de Manu »

In stringul alcatuit din trei parti delimitate de ":" (doua puncte), al doilea segment reprezinta minutele, nu al treilea, astfel trebuie:
Let sMinutes = StringSegment (sFirstSegment, ":", 2)
iar pentru ore trebuie 1 la al treilea parametru:
Let sHours = StringSegment (sFirstSegment, ":", 1)
Errare humanum est, sed perseverare diabolicum...
In forum linguae Latinae venite! (via est: www.limbalatina.ro)
Scrie răspuns