25 Detaljnije tumacenje skripti i funkcija  upotrebljenih u skript fajlu Sound Recorder.jss. (nastavak 5.)

Skripta "SelectAButton" izgleda ovako:

Script SelectAButton ()
var
	int index
let index = 0;
if InHJDialog () then
	SayFormattedMessage (OT_ERROR, msg13_L)
	SayFormattedMessage (OT_ERROR, msg14_L)
	SayFormattedMessage (OT_ERROR, msg15_L)
	return
endif
if (! DialogActive ()) || (MenusActive ()) then
	SayFormattedMessage (OT_ERROR, msg8_L + msg2_L) ; "Button not found"
	return
endif ; if not in SoundRecorder main window
let nSuppressEcho = true
let index = DlgSelectItemInList (strToolbar, strDialogName, true)
Delay (2)
if (index == 1) then
	PressButton (forward, msg6_L) ; "forward"
elif (index == 2) then 
	PressButton (play, msg3_L) ; "play"
elif (index == 3) then
	PressButton (record, msg4_L) ; "Record"
elif (index == 4) then
	PressButton (rewind, msg5_L) ; "Rewind"
elif (index == 5) then
	PressButton (stop, msg7_L) ; "stop"
endif
EndScript

Na pocetku skripte deklarisemo celobrojnu promenljivu index koja se koristi za prihvatanje indeksa odabrane kontrole sa liste kontrola. Ovoj promenljivoj se eksplicitno dodeljuje vrednost nula radi bolje preglednosti i razumljivosti skripte, mada ova promenljiva pre dodele vrednosti vec ima vrednost nula.
Usledecim redovima:
if InHJDialog () then
	SayFormattedMessage (OT_ERROR, msg13_L)
	SayFormattedMessage (OT_ERROR, msg14_L)
	SayFormattedMessage (OT_ERROR, msg15_L)
	return
endif

Ispituje se da li je mozda vec otvoren neki Jaws-ov dijaloski prozor, pa ako jeste, daje se korisniku obavestenje da u isto vreme ne moze biti otvoreno vise od jednog Jaws dijaloskog prozora i da se postojeci mora prethodno zatvoriti. Nakon obavestenja, skripta se napusta. Poruke msg13_L, msg14_L, i msg15_L, definisane su u "SndRec32.jsm" fajlu.

U sledecim redovima:
if (! DialogActive ()) || (MenusActive ()) then
	SayFormattedMessage (OT_ERROR, msg8_L + msg2_L) ; "Button not found"
	return
endif ; if not in SoundRecorder main window

ispituje se uslov identican onom koji smo videli u "PressButton" funkciji. Ovde se dodatno daje obavestenje da dugme nije pronadjeno i napusta se skripta.

U redu:
let nSuppressEcho = true
postavlja se vrednost globalne promenljive na jedinicu, ili logicku vrednost true ili "tacno". 

U redu:
let index = DlgSelectItemInList (strToolbar, strDialogName, true)

dodeljujemo promenljivoj "index", celobrojnu povratnu vrednost funkcije "DlgSelectItemInList". Ova funkcija je zaduzena da prikaze Jaws-ov prozor sa listom zeljenih opcija. Funkcija ima cetiri parametra.
Prvi parametar "strToolBar", definisan je u fajlu "SndRec32.jsh" kao:
	strToolBar = "ForwardButton|PlayButton|RecordButton|RewindButton|StopButton",

i predstavlja string sastavljen od stavki liste, odvojenih medjusobno uspravnom crtom, (karakter 007).

Drugi parametar "strDialogName", definisan je u fajlu "SndRec32.jsh" kao:
strDialogName = "Select A Button",

I to je string koji predstavlja ime prozora sa listom kontrola.

Treci parametar je celobrojna vrednost koja utice na to da li ce lista biti sortirana. Ukoliko je ova vrednost "true", (svaka vrednost razlicita od nule), lista ce biti sortirana
Cetvrti parametar je opcionalan i u posmatranom redu je izostavljen. Njegova uloga je da ukaze na redni broj stavke za koju zelimo da bude oznacena pri pojavljivanju prozora sa listom.

Ukoliko u ovom dijaloskom prozoru odustanemo, povratna vrednost ce biti nula.
Nakon sto napustimo prozor sa listom, skripta pravi u redu:
Delay (2)
pauzu od dve desetinke sekunde i nastavlja.

Sledi programska "If.. ElIf.. EndIf" struktura:
if (index == 1) then
	PressButton (forward, msg6_L) ; "forward"
elif (index == 2) then 
	PressButton (play, msg3_L) ; "play"
elif (index == 3) then
	PressButton (record, msg4_L) ; "Record"
elif (index == 4) then
	PressButton (rewind, msg5_L) ; "Rewind"
elif (index == 5) then
	PressButton (stop, msg7_L) ; "stop"
endif

koja ce pozvati funkciju "PressButton" i na osnovu vrednosti promenljive index proslediti joj odgovarajuce parametre kako bi odgovarajuca kontrola bila aktivirana. Na proslom casu smo videli kako su parametri upotrebljeni u ovoj funkciji.

Ostalo je jos da objasnimo skriptu "LimitSpeech" koja izgleda ovako:

Script LimitSpeech ()
if (LimitSpeech == 0) then
	let LimitSpeech = 1
	SayFormattedMessage (OT_STATUS, msg9_L) ; "LimitSpeech on"
	return
endif
if (LimitSpeech >= 1) then
	let LimitSpeech = 0
	SayFormattedMessage (OT_STATUS, msg10_L) ; LimitSpeech off"
	return
endif
EndScript

Ova skripta je zaduzena za naizmenicno postavljanje vrednosti  globalne promenljive LimitSpeech na jedinicu i nulu. Vrednost ove promenljive utice na to da li ce pri izvrsenju funkcije "PressButton" biti izgovoreno ime graficke kontrole.

U redovima:
if (LimitSpeech == 0) then
	let LimitSpeech = 1
	SayFormattedMessage (OT_STATUS, msg9_L) ; "LimitSpeech on"
	return
endif

Posmatra se da li promenljiva "LimitSpeech" ima vrednost nula, pa ako je tako, ova se vrednost postavlja na jedinicu i daje se poruka da je ogranicenje izgovora ukljuceno, i potom se napusta skripta.

U sledecim redovima:
if (LimitSpeech >= 1) then
	let LimitSpeech = 0
	SayFormattedMessage (OT_STATUS, msg10_L) ; LimitSpeech off"
	return
endif

Posmatra se suprotno, to jest da li je promenljiva "LimitSpeech" sa vrednoscu jedan, pa ako jeste, postavlja se na nulu i daje se poruka o iskljucenom ogranicenju govora i takodje se skripta napusta.
Poruke msg9_L, i msg10_L su definisane u "SndRec32.jsm" fajlu.

Ovim bi sva objasnjenja Sound Recorder.jss fajla, koji smo uzeli kao primer jednog profesionalno izradjenog skript fajla, bila iscrpljena. Ovaj skript fajl je samo jedno u nizu mogucih resenja problema koje smo imali da prevazidjemo u prilagodjavanju Sound Recorder-a. Svakako nije najbolje, ali je dovoljno dobro uradjeno kako bi usmerilo pocetnika u pisanju slicnih fajlova. Ako vam je upoznavanje sa ovim skript fajlom dalo dodatnu sigurnost u pisanju skripti, pronadjite neku neposlusnu aplikaciju i pokusajte da je uz pomoc skripti pripitomite kako bi je Jaws korektno tumacio.
 "Lekcija 26."

 "Skok na sadrzaj "