Logo dell'UIC Logo TUV

Unione Italiana dei Ciechi e degli Ipovedenti ETS - APS

 

Uiciechi.it

torna alla visualizzazione del numero 12 del Uiciechi.it

Numero 12 del 2021

Titolo: Gli script di Jaws 14e. Le procedure guidate: gestione dei pulsanti ed elementi base.

Autore: Abramo Volpato.


Articolo:
Gli script di Jaws 14e. Le procedure guidate: gestione dei pulsanti ed elementi base.

Di Abramo Volpato.

Codice.

Void Function ImpostaEsegue (string sTasti, string sNome)
If SetLastScriptKey (sTasti) Then; se riesce l'impostazione dei tasti come ultimi premuti,
PerformScriptByName (sNome); esegue lo script indicato
Else; altrimenti, in caso di errore, formatta e legge l'avviso
SayFormattedMessage (OT_ERROR, hlpNoUltimiTasti, hlpNoUltimiTasti_corto, gsVoce)
EndIf; fine controllo impostazione tasti
EndFunction

Esercizio 14.7.3. La versione modificata di AggiornaVisualizzatore ().

FileScript. Default.JSS

Nome. AggiornaVisualizzatore

Novità.

1. La prima chiamata della nostra funzione "ImpostaEsegue ()", anche se nascosta nel comando che deve essere formattato come secondo parametro dell'istruzione nativa.

Note.

1. La modifica va apportata al secondo parametro dell'istruzione con "UserBufferAddText ()", posta nella prima via della struttura, cambiando il nome del messaggio base da formattare ed aggiungendo i tasti come primo termine, usando la seguente riga di codice:

FormatString (hlpEsegueLink, sTasto, sNome), ; formatta anche il comando da eseguire,

2. In caso di dubbi, sostituite la precedente versione con quella posta di seguito.

Codice.

Void Function AggiornaVisualizzatore (string sTasto, string sNome, ; primi due parametri,
string sAlias, string sInfo, string sPrimo, string sUltimo); seconda riga con gli altri quattro
If !sPrimo Then; se si stanno aggiornando le normali voci,
UserBufferAddText ( ; compone la riga d'informazioni, comprensiva del link,
FormatString (hlpInfoScript, sInfo, sTasto), ; formatta il testo da visualizzare,
FormatString (hlpEsegueLink, sTasto, sNome), ; formatta anche il comando da eseguire,
sAlias); e aggiunge il nome virtuale per l'elenco dei link
Else; altrimenti, per le serie di voci,
UserBufferAddText ( ; compone la riga d'informazioni, formattando i caratteri variabili
FormatString (hlpInfoSerie, ToglieUltimo (sInfo), ToglieUltimo (sTasto), sPrimo, sUltimo))
EndIf; fine controllo parametri
EndFunction

Esercizio 14.7.4. La versione definitiva di GestisceDato ().

FileScript. Default.JSS

Nome. GestisceDato

Novità.

1. Le funzioni integrate "UserBufferIsActive ()" e "UserBufferDeactivate ()", presentate nell'introduzione.

Note.

1. La modifica principale consiste in un'unica struttura di controllo, posta all'inizio del codice, che contiene entrambe le funzioni native citate tra le novità, da inserire in questa forma:

If UserBufferIsActive () Then; se il Visualizzatore virtuale è attivo,
UserBufferDeactivate (); lo rimuove dallo schermo
EndIf; fine controllo Visualizzatore virtuale

2. Cogliamo l'occasione di questa modifica per consentire di attivare la modalità aiuto anche nella chiamata della funzione "DocumentoCorrente ()", la cui istruzione dovrebbe quindi assumere l'aspetto seguente:

If !DocumentoCorrente (sNomeFile, sSuffisso, iAiuto) Then; se non vi sono dati sul file,

3. Come al solito, potete anche direttamente inserire la nuova versione nella forma posta di seguito.

Codice.

Void Function GestisceDato (string sAzione, string sOggetto)
If UserBufferIsActive () Then; se il Visualizzatore virtuale è attivo,
UserBufferDeactivate (); lo rimuove dallo schermo
EndIf; fine controllo Visualizzatore virtuale
If !SiamoNellaFinestra (EDITING) Then; se non si è nella finestra corretta,
If !(sAzione + sOggetto) Then; se non sono stati specificati dei parametri,
TypeCurrentScriptKey (); ripete i tasti premuti,
EndIf; fine controllo parametri
Return; interrompe il flusso
EndIf; fine controllo finestra
Var
Int iAiuto, ; stato di attivazione della fase Aiuto
Int iNoVoce, ; imposta la disattivazione della fase Aiuto
String sProg, ; eventuale numero progressivo indicato tramite il nome dello script
String sCategoria, ; tipologia dell'azione da compiere
String sDato, ; dato testuale da sottoporre all'azione
String sNomeFile, ; nome completo del documento aperto
String sSuffisso; dato suppletivo da passare come parametro
Let iAiuto = IsSameScript (); rileva l'eventuale doppia pressione dei tasti di attivazione
If !sAzione Then; se l'azione da compiere non è stata specificata come parametro,
Let sProg = SeparaParole (sAzione, sCategoria, sOggetto); estrae i dati dal nome script
Else; altrimenti
Let iNoVoce = SALTA; imposta la successiva disattivazione della fase Aiuto
EndIf; fine controllo parametro
If sAzione == PRONUNCIA Then; se si sono chieste azioni di lettura,
If sCategoria == STATO Then; se si sono richiesti dati dalla barra di stato,
Let sDato = InfoStato (sOggetto, iAiuto); rileva il dato dalla funzione generica
Else; altrimenti, in tutti gli altri casi,
; Rileva il dato dalla funzione di cui si compone il nome
Let sDato = NoZero (CallFunctionByName (sCategoria + sOggetto))
EndIf; fine controllo categoria
CallFunctionByName (sAzione + DATO, sOggetto, sDato, iAiuto); esegue l'azione
ElIf sAzione == CERCA Then; se invece si sono chieste delle ricerche,
CercaDato (sCategoria, sOggetto, iAiuto); esegue l'azione
Else; se invece servono operazioni su documenti,
If !DocumentoCorrente (sNomeFile, sSuffisso, iAiuto) Then; se non vi sono dati sul file,
If iAiuto Then; se è attiva la fase Aiuto,
SayFormattedMessage (OT_ERROR, hlpNoDato, hlpNoDato_corto, msgTitolo); legge l'avviso
EndIf; fine controllo aiuto
Return; in ogni caso, interrompe il flusso
EndIf; fine controllo documento
If sAzione == SALVA; se si vuole il salvataggio di un contrassegno,
|| sAzione == TORNA ; o si vuole ritornarvi,
|| sAzione == ESEGUE Then; o, infine, se si vuole attivare uno script a gestione personale,
If !iNoVoce Then; se l'impostazione non è disattivata,
Let iAiuto = TRUE; imposta la fase
EndIf; fine controllo disattivazione
CallFunctionByName (sAzione + DATO, sNomeFile, sOggetto, sProg, iAiuto); esegue l'azione
Else; altrimenti, in tutti i casi in cui è necessario un suffisso,
If sCategoria == SCRIPTS Then; se si stanno elaborando gli script a gestione personale,
Let sSuffisso = sNomeFile; passa il nome del file parametro al posto dell'estensione
ElIf !sSuffisso Then; se un suffisso non è stato rilevato,
If iAiuto Then; se è attiva la fase,
SayMessage (OT_ERROR, hlpNoEst, hlpNoEst_corto); legge l'avviso
EndIf; fine controllo aiuto
Return; in ogni caso, interrompe il flusso
EndIf; fine controllo suffisso
; rende globali i dati rilevati
Let gsCategoria = sCategoria
Let gsOggetto = sOggetto
If sAzione == MUOVE ; se si è chiesto di muoversi ad un elemento,
|| sAzione == METTE Then; oppure, di inserire del testo nel documento corrente,
CallFunctionByName (sAzione + DATO, sSuffisso, sProg, iAiuto); esegue l'azione
ElIf sAzione == ELABORA Then; se invece si è chiesto di avviare una procedura guidata,
If gsCategoria == ELEMENTO Then; se si stanno configurando gli elementi di ricerca,
Let gsOggetto = NULLO; resetta il dato
EndIf; fine controllo oggetto
CallFunctionByName (sAzione + DATO, sSuffisso, iAiuto); esegue l'azione
Else; se invece l'azione non è stata riconosciuta,
If iAiuto Then; se la fase è attiva,
SayFormattedMessage (OT_ERROR, hlpNoAzione, hlpNoAzione_corto, sAzione); legge l'avviso
EndIf; fine controllo Aiuto
EndIf; fine controllo azioni con suffisso
EndIf; fine controllo azioni su documenti
EndIf; fine controllo generale azioni
EndFunction

14.7.5. Gli altri elementi per la gestione degli script.

Da qui alla fine della sezione produrremo il restante codice da utilizzare in modo specifico per gli script a gestione personale. Inizieremo con la classica funzione principale, quella con il suffisso "Dato", non prima però di averne realizzato altre due, che sono di supporto al citato elemento.

Sul fronte degli script, produrremo anche in questo caso quello per avviare la procedura guidata, che si attiva con una combinazione tasti da premere assieme al tasto 0. La serie di script, invece, sarà in questo caso composta da ben 99 elementi, lo stesso numero che avevamo fissato come limite massimo per questa categoria.

Esercizio 14.7.6. La funzione RilevaScript.

FileScript. Default.JSS

Nome. RilevaScript

Descrizione. Rileva, controlla, e casomai trasmette per riferimento, i dati relativi allo script a gestione personale, registrato per l'applicazione corrente al numero passato come parametro.

Ritorni. Di tipo Int. TRUE, se i dati sono stati rilevati correttamente; FALSE, se lo script non è stato registrato.

Parametri.

1. sChiave. Il numero progressivo dello script, che funge da chiave del record. Di tipo String.

2. sNome. Per Riferimento. Il nome dello script. Di tipo String.

3. sComandi. Per Riferimento. L'elenco dei comandi da eseguire. Di tipo String.

4. sAmbito. Per Riferimento. L'ambito in cui deve essere eseguito lo script. Di tipo String.

Fasi.

1. Nella prima struttura di controllo, grazie ad una nostra funzione, è verificato il numero di dati del record; se tale numero non è quello stabilito, il flusso s'interrompe restituendo un risultato nullo.

2. Dopo aver estratto il nome ed i tasti di attivazione dello script dal record, si controlla se la chiamata non sia avvenuta durante l'elaborazione tramite la procedura, e che i tasti premuti non siano quelli dello script; se così è, il flusso s'interrompe restituendo un risultato nullo.

3. Se invece il flusso continua, gli altri dati necessari si estraggono dal record, e sono trasmessi per riferimento alla funzione chiamante, restituendo poi l'esito positivo del controllo.

Codice.

Int Function RilevaScript (string sChiave, string ByRef sNome, ; primi due parametri,
string ByRef sComandi, string ByRef sAmbito); seconda riga con gli altri due
Var
String sRecord, ; dati dello script
String sTasti; tasti di attivazione dello script

If !NumeroDati (sChiave, sRecord) Then; se il numero di dati del record non è corretto,
Return FALSE; restituisce un risultato nullo
EndIf; fine controllo numero dati
Let sNome = StringSegment (sRecord, PIPE, PRIMA); rileva dal record il nome dello script,
Let sTasti = StringSegment (sRecord, PIPE, SECONDA); ed i tasti di attivazione
If gsAttiva != sNome ; se lo script non è stato avviato dalla procedura di elaborazione,
&& sTasti != GetCurrentScriptKeyName () Then; ed i tasti sono diversi da quelli premuti,
Return FALSE; restituisce un risultato nullo
EndIf; fine controllo tasti
Let sComandi = StringSegment (sRecord, PIPE, QUARTA); prende i comandi da eseguire,
Let sAmbito = StringSegment (sRecord, PIPE, DATI_SCRIPT); l'ambito in cui operare,
Return TRUE; e restituisce l'esito positivo
EndFunction

Esercizio 14.7.7. La funzione ComandiScript.

FileScript. Default.JSS

Nome. ComandiScript

Descrizione. Gestisce l'esecuzione materiale dei comandi, distinguendo tra i nomi dei tasti di cui simulare la pressione dalla tastiera, e caratteri da inviare all'applicazione.

Ritorni. Di tipo Void. Nessuno.

Parametri.

1. sNome. Il nome virtuale dello script. Di tipo String.

2. sComandi. L'elenco dei comandi da eseguire. Di tipo String.

Fasi.

1. Dopo aver tentato di leggere il nome virtuale dello script, si spegne la sintesi e si avvia un ciclo per scorrere i comandi immessi come parametro.

2. All'interno del ciclo, un controllo determina se il comando estratto sia una combinazione tasti oppure un singolo carattere, chiamando le apposite funzioni native.

3. Al termine del ciclo, viene riattivata la sintesi, e pronunciata la riga corrente.

Codice.

Void Function ComandiScript (string sNome, string sComandi)
Var
Int iStato, ; attiva il ripristino della sintesi
Int i, ; contatore del ciclo
String sDato; singolo comando da eseguire nella serie

SayUsingVoice (VCTX_JAWSCURSOR, sNome, OT_HELP); legge l'alias assegnato allo script
Let iStato = ControllaSintesi (FALSE); spegne la sintesi, impostandone lo stato attuale
; scorre l'elenco delle serie di tasti, eventualmente divisi dal separatore di voce
For i =1 To StringSegmentCount (sComandi, SPV)
Let sDato = TagliaSpazi (StringSegment (sComandi, SPV, i)); estrae il singolo comando
If StringLength (sDato) > 1 Then; se la stringa è un tasto di cui simulare la pressione,
TypeKey (sDato); richiama la funzione per le combinazioni di tasti
Pause ()
Else; altrimenti,
TypeString (sDato); richiama la funzione per i singoli caratteri
EndIf; fine controllo tipo pressione
EndFor; fine ciclo comandi
ControllaSintesi (iStato, TRUE); ripristina la sintesi con lo svuotamento del buffer,
SayLine (); e legge la riga corrente
EndFunction

Esercizio 14.7.8. La funzione EsegueDato.

FileScript. Default.JSS

Nome. EsegueDato

Descrizione. Esegue i comandi impostati tramite gli script a gestione personale.

Ritorni. Di tipo Void. Nessuno.

Parametri.

1. sNomeFile. Il nome, completo di estensione, del documento corrente. Di tipo String.

2. sOggetto. Il suffisso assegnato al nome della categoria, che compone assieme al prefisso Scripts il nome della sezione in cui sono registrati i dati relativi agli stessi script personali. Di tipo String.

3. sProg. Il numero progressivo dello script, che corrisponde alla chiave dei dati registrati negli archivi di configurazione per l'applicativo corrente. Di tipo String.

Novità.

1. Le nostre funzioni "RilevaScript ()" e "ComandiScript ()".

2. La costante numerica "DATI_SCRIPT", equivalente al valore 5, che corrisponde ai campi che devono essere presenti in un record per ritenerlo valido.

3. La costante "TABELLA", che corrisponde all'omonimo termine, e che in questo caso rappresenta l'ambito in cui far eseguire uno script a gestione personale, dentro appunto una tabella o un foglio di calcolo.

Fasi.

1. Una prima struttura di controllo verifica che il record abbia tutti i dati necessari ad essere eseguito, tramite la nostra funzione "RilevaScript ()"; se così non è, e se la modalità Aiuto risulta attiva, viene pronunciato un messaggio d'errore; in ogni caso, il flusso viene interrotto, restituendo un risultato nullo.

2. Una seconda struttura più articolata tende ad intercettare l'ambito impostato; se una via lo individua, tra quelli possibili, sono poi eventualmente effettuati ulteriori controlli sul fatto che tutte le condizioni siano rispettate; se così non è, e se la modalità Aiuto risulta attiva, viene pronunciato un messaggio d'errore; a prescindere dal messaggio, il flusso viene interrotto, restituendo un risultato nullo.

3. Se tutti i controlli suppletivi non hanno alcun esito, il flusso arriva all'ultima istruzione del codice, la quale esegue materialmente lo script tramite la nostra funzione "ComandiScript ()".

Note.

1. Abbiamo già sommariamente illustrato cosa s'intenda per "ambito", come ultimo campo delle impostazioni per gli script a gestione personale; qui, nel dettaglio, l'importanza di questo dato testuale è ben rappresentata dal fatto che i suoi controlli prendano gran parte della funzione che stiamo realizzando.

Codice.

Void Function EsegueDato (string sNomeFile, string sOggetto, string sProg)
Var
Int iAiuto, ; indicatore dell'omonima fase
String sTipi, ; elenco dei tipi di finestra registrati
String sNome, ; alias, o nome virtuale, dello script personale da eseguire
String sComandi, ; elenco dei comandi da eseguire
String sAmbito; contesto in cui lo script personale deve essere eseguito

Let iAiuto = IsSameScript (); rileva l'eventuale doppia pressione dei tasti di attivazione
Let gsArchivio = NULLO; resetta il dato per la lettura dal file dell'applicativo corrente
Let gnMaxCampi =DATI_SCRIPT; imposta il valore come numero massimo di campi
Let gsSezione = SCRIPTS + sOggetto; compone la sezione dei dati nell'archivio
Let sTipi = LeggeChiavi (PERSONALE, TIPI_FINESTRE); rileva i tipi di finestra registrati
If !RilevaScript (sProg, sNome, sComandi, sAmbito) Then; se i dati non sono stati rilevati,
If iAiuto Then; se è attiva la fase, formatta e legge l'avviso
SayFormattedMessage (OT_ERROR, hlpNoDatiScript, hlpNoDatiScript_corto, sProg)
EndIf; fine controllo aiuto
TypeCurrentScriptKey (); in ogni caso, ripete i tasti di attivazione,
Return; e interrompe il flusso
EndIf; fine controllo dati
If sAmbito == TABELLA Then; se l'ambito indicato impone di verificare che si sia in una tabella,
If !InTable () Then; se poi la funzione nativa non lo conferma,
If iAiuto Then; se è attiva la fase,
SayMessage (OT_ERROR, hlpNoTabella); legge l'avviso
EndIf; fine controllo aiuto
TypeCurrentScriptKey (); in ogni caso, ripete i tasti di attivazione,
Return; e interrompe il flusso
EndIf; fine controllo presenza tabella
ElIf CampoTrovato (lstAmbitiScript, sAmbito) Then; se invece è uno degli altri predefiniti,
; salva la posizione corrente, ed opera sulle annotazioni per il file
SalvaDato (sNomeFile, sAmbito)
ElIf CampoTrovato (sTipi, sAmbito) Then; se invece è un tipo di finestra,
If sAmbito != EDITING Then; se il tipo di finestra da controllare non è l'Editing,
If !SiamoNellaFinestra (sAmbito) Then; se non si è nella finestra impostata,
If iAiuto Then; se è attiva la fase, legge l'avviso
SayMessage (OT_ERROR,hlpNoFinestra, hlpNoFinestra_corto)
EndIf; fine controllo aiuto
TypeCurrentScriptKey (); in ogni caso, ripete i tasti di attivazione,
Return; e interrompe il flusso
EndIf; fine controllo finestra
EndIf; fine controllo Editing
ElIf sAmbito != NESSUNO Then; altrimenti, se l'ambito registrato non è stato riconosciuto,
If iAiuto Then; se è attiva la fase, formatta e legge l'avviso
SayFormattedMessage (OT_ERROR, hlpNoAmbito, hlpNoAmbito_corto, sAmbito)
EndIf; fine controllo aiuto
Return FALSE; in ogni caso, restituisce un risultato nullo
EndIf; fine controllo ambito
ComandiScript (sNome, sComandi); chiama la funzione che esegue le azioni dello script
EndFunction

Collaudo.

1. Così come nei precedenti casi, limitatevi a compilare correttamente, poiché il collaudo di questo tipo di procedura sarà effettuato con il prossimo elemento di codice.

Esercizio 14.7.9. Lo script ElaboraScriptsPersonali.

FileScript. Default.JSS

Nome. ElaboraScriptsPersonali

Sommario. Avvia la procedura di elaborazione degli script a gestione personale.

Descrizione. Chiama la funzione che gestisce le procedure guidate, la quale consente in questo caso di elaborare gli script a gestione personale disponibili per l'applicazione corrente.

TastiAttivazione. Shift+Control+JAWSKey+0

Note.

1. In questo caso, i tasti di attivazione sono davvero solo suggeriti, in quanto dipende da quelli che avete liberi nella vostra configurazione; se dovete, o volete, personalizzare la combinazione base, cercate almeno di mantenere il suffisso numerico 0, il quale è stato utilizzato sinora per identificare gli script che richiamano la nostra procedura.

Codice.

Script ElaboraScriptsPersonali ()
GestisceDato (); chiama l'apposita funzione
EndScript

14.7.10. Il collaudo degli script a gestione personale.

1. Una volta eseguita la compilazione del codice, da dentro L'Editor di Jaws, portatevi alla sua fine, nello stesso codice, e create una riga vuota dove scrivete un contenuto qualsiasi, ad esempio "; testo da cancellare", avendo l'avvertenza di porre un carattere Punto e Virgola ad inizio riga per poterla casomai salvare senza errori. Andate a capo riga e, sempre premettendo un Punto e Virgola, scrivete un secondo contenuto, ad esempio "Riga da mantenere", quindi tornate sulla prima riga scritta.

2. Premete i tasti di attivazione dello script appena realizzato, che se avete seguito il nostro suggerimento sono "Shift+Control+TastoJaws+0". Apparirà una finestra di dialogo che avrà il seguente contenuto:

Nessuno Scripts per l'applicazione Editor di script.
Immetterlo ora?

3. Come al solito, il cursore sarà posizionato sul tasto "Ok", che dovete quindi premere per avviare la procedura d'inserimento dei dati. Si entrerà in un campo di editazione, e le istruzioni a video saranno le seguenti:

Aggiungere il nome dello script .
Invio conferma, Esc annulla.

4. Il nostro obiettivo sarà realizzare uno script che cancelli il contenuto della riga sul cursore. Dovendo inserire un nome che ci spieghi la sua funzione, digitiamo quindi "CancellaRiga", e premiamo Invio. Sarà proposta una nuova finestra di dialogo, il cui contenuto sarà il seguente:

Premere i tasti di attivazione dello script CancellaRiga.
Invio conferma, Esc annulla.

5. A questo punto vi trovate in una fase del tutto simile a quella che si propone quando, nella procedura guidata di creazione di un nuovo script, nell'Editor di Jaws, arrivate nel campo denominato "Assegna a". Nel dettaglio, qualsiasi tasto, o combinazione di tasti, voi premiate, la procedura li considera i tasti di attivazione che voi avete scelto per avviare lo script "CancellaRiga". Le uniche tre eccezioni sono i tasti che vi chiediamo di provare, elencati di seguito:

- Escape, che propone una conferma all'uscita dall'inserimento . In questo caso, cliccate per confermare la scelta predefinita, Annulla, tornando così alla schermata precedente.
- Invio, con il quale si confermano i tasti scelti. Poiché, se avete seguito fedelmente i passaggi proposti, non dovreste aver premuto alcun altro tasto valido, la procedura vi avviserà che non sono stati ancora definiti dei tasti, proponendovi di tornare all'inserimento, cosa che vi consigliamo di fare premendo di nuovo Invio.
- Insert+T, il comando di lettura titolo della finestra, che in questo caso si limita a rileggere il messaggio proposto all'ingresso nella schermata.

6. Come detto, qualsiasi altro tasto sarà considerato come potenzialmente un tasto di attivazione. Per questo , sarete avvertiti se i tasti premuti sono già abbinati ad un altro script, di cui sarà fornito il tipo ed il nome, mentre le possibili opzioni saranno di due tipi:

- Nel caso di tasti già utilizzati da script di tipo tradizionale, nativi o creati dall'Utente, vi sarà proposta una conferma alla sovrascrittura di tali tasti; come nel caso della procedura guidata di Jaws, la scelta predefinita sarà l'annullamento, e quindi il ritorno alla schermata d'inserimento, mentre per sovrascrivere i tasti si dovrà premere una volta Tab e poi confermare con Invio.
- Nel caso di tasti già utilizzati da altri script a gestione personale, vi sarà invece impedito di utilizzare tali tasti, suggerendovi di modificarli prima tramite la nostra procedura, e comunque consentendo solo di poter confermare il ritorno all'inserimento.

7. In ogni caso, come tasti di attivazione per il nostro script, premete la combinazione "Shift+Alt+J", che è abbastanza strana per non essere già occupata, quindi premete Invio per confermare tali tasti. La sintesi pronuncerà, con la voce del cursore Jaws, un avviso con l'esito della registrazione dei tasti, quindi sarà proposta una nuova schermata , o campo d'inserimento, con il seguente messaggio:

Aggiungere il Sommario dello script CancellaRiga.
Invio conferma, Esc annulla.

8. In questo tipo di script, per semplificarne la gestione, si è optato per specificare solo il sommario, e non quindi anche una descrizione. Per questo , il testo da immettere come sommario potrebbe anche essere un po' più dettagliato, ma si consiglia comunque di esprimerlo al massimo con 120 caratteri. Nel nostro caso, potete scrivere ad esempio "Elimina il contenuto della riga sul cursore.", confermando poi il testo con Invio. Si passerà quindi al campo successivo, il cui messaggio sarà il seguente:

Aggiungere le Azioni compiute dallo script CancellaRiga.
Control+Invio nuova riga. Invio conferma, Esc annulla.

9. Se avete notato, la seconda riga di istruzioni propone la novità di poter esprimere un contenuto su più righe. Qui, infatti, ogni singolo comando, o azione, che si vorrà far compiere a Jaws, dovrà essere espresso in una riga a sé stante, la quale sarà da creare, dunque, premendo la combinazione "Control+Invio". Ricordiamo inoltre che i comandi possibili sono tutti i tasti e le combinazioni gestite direttamente dal sistema, non quindi tasti che attivano script di Jaws, e per di più con il loro nome in inglese. Ad esempio, "Enter" sarà per "Invio", "End" per il tasto "Fine", "Home" per quello omonimo, e così via. Per chi non conoscesse la lingua, ricordiamo che la modalità Aiuto tastiera di Jaws, come prima informazione, recita appunto il nome in inglese dei tasti.

10. Se in una riga di comandi è presente un solo carattere, la procedura darà per scontato che si tratti di un carattere singolo, da inviare all'applicazione così com'è. In questa forma si possono quindi specificare i caratteri che sono ad esempio dei tasti caldi nei menu, come la lettera "S" nel menu File che sta per "Salva", oppure anche una lettera o un numero che per qualche motivo si deve inserire nel documento, o in un campo di editazione attivato dai comandi precedenti.

11. Nel caso del nostro script, noi dobbiamo ricreare una sequenza di azioni che ci consenta in ogni circostanza di cancellare una riga, sia essa vuota, sia che abbia del contenuto; questa particolare sequenza prevede di portarsi alla sua fine, scrivere un carattere qualsiasi per garantirci di avere comunque qualcosa da selezionare, quindi attivare la selezione dal termine della riga sino al suo inizio, ed infine premere il tasto di cancellazione due volte, la prima per rimuovere il contenuto, l'altra per eliminare la restante riga vuota. Avendo l'avvertenza di premere la combinazione di nuova riga ad ogni tasto, o carattere, la sequenza citata dovrà quindi essere inserita in questa forma:

End
x
Shift+Home
Delete
Delete

12. Come potete notare, sono in totale cinque righe, delle quali quattro di comandi, ed una in cui è presente un solo carattere "", che rappresenta un contenuto da poter selezionare anche nel caso di una riga in origine vuota. Quando avete concluso l'inserimento, premete Invio per confermare. Vi si proporrà l'ultimo campo di elaborazione, che questa volta è una casella di scelta, il cui messaggio sarà il seguente:

Selezionare l'ambito in cui far agire CancellaRiga, e cliccare sull'azione da compiere.

13. All'ingresso della nuova schermata ci si troverà sull'elenco degli ambiti possibili, i quali sono come detto predefiniti, e quindi non se ne può variare il numero direttamente. In questo caso, il cursore sarà sul primo ambito, "Nessuno", opzione che lascia agire lo script in una qualsiasi finestra registrata come "Editing". Poiché questo è il caso del nostro script, premete Invio per confermare la scelta, completando in tal modo i cinque campi da inserire, e tornando poi alla schermata principale della procedura.

14.7.11. Elaborare i dati sugli script a gestione personale.

Seguendo i passi illustrati per creare il nostro primo script di questo speciale tipo, dovremmo ora trovarci nella schermata principale della procedura guidata. Qui, il modo più semplice per avere una panoramica sulle varie possibilità è premere l'Aiuto in linea, il cui contenuto, senza intestazione ed istruzioni di chiusura, dovrebbe essere il seguente:

Selezionare lo script da elaborare, e cliccare sull'azione da compiere.
Pulsanti disponibili:
Modifica nome. Alt+M.
Aggiunge script. Alt+I.
Duplica dall'elenco. Alt+D.
Elimina script. Alt+L.
Campo successivo. Alt+U.
Esegue script. Ok, oppure Alt+O
Annulla. Esc, oppure Alt+A.
Visualizza questa schermata d'Aiuto. Windows+H.

Qui, rispetto a quanto già analizzato in precedenza, è ancora possibile inserire un nuovo script o eliminarne uno di già presente, oppure soltanto modificarne il nome. Non ci sono invece i due tasti di spostamento delle voci, sostituiti da uno che duplica gli script nell'archivio, ed un altro che porta alla successiva schermata.

Così come per gli elementi di ricerca e le macro testuali, premendo Invio si eseguirà l'azione selezionata, che in questo caso è lo script per cancellare la riga corrente. Se volete, poiché abbiamo avviato la procedura da una riga scritta appositamente, potete anche premere Invio, per testare appieno il nostro lavoro.

Se così avete fatto, sarete tornati nella finestra principale dell'Editor di Jaws. La riga da cui eravamo partiti non dovrebbe esserci più, ed il cursore dovrebbe essere posizionato all'inizio dell'altra riga che avevamo predisposto, così da evidenziare che le righe cancellate sono soltanto una.

Qualora abbiate fatto questa prova, premete ancora una volta "Shift+Control+TastoJaws+0", per tornare a conoscere i nostri speciali script, dove completeremo la panoramica sul loro funzionamento.

Elaborare i tasti di attivazione.

Dalla schermata principale, per passare al secondo campo di elaborazione, cliccate sul pulsante "Campo successivo", o sulla scelta rapida "Alt+U". In generale, per sottolineare il cambio di schermata , la procedura emetterà una nota di valore crescente, nel caso in cui si vada ad una schermata successiva, oppure una nota inferiore, qualora si stia tornando ad una schermata precedente.

In ogni caso, ci si troverà sulla solita finestra di scelta, quella generata dalla funzione nativa "DlgSelectItemInList ()", dove i tasti da noi inseriti durante la creazione dello script, "Shift+Alt+J", sono riportati nell'unica voce presente. Per sapere cosa poter fare, ancora una volta, consigliamo di premere l'Aiuto in linea, "Windows+H", il cui contenuto informativo sarà stavolta il seguente:

Modifica i Tasti per attivare CancellaRiga.
Pulsanti disponibili:
Modifica Tasti. Alt+M.
Campo successivo. Alt+U.
Campo precedente. Alt+R.
Torna all'inizio. Alt+T.
Campo successivo. Ok, oppure Alt+O
Annulla. Esc, oppure Alt+A.
Visualizza questa schermata d'Aiuto. Windows+H.

Qui, dunque, non si può né inserire una nuova voce, e neppure cancellarla, mentre sarà possibile modificare il dato, che nel caso di questa schermata sono i tasti di attivazione. Attivando il pulsante di modifica, direttamente o tramite la scelta rapida "Alt+M", sarà richiamata la stessa interfaccia di attesa tasti descritta nella fase di inserimento dello script.

Oltre al pulsante per passare al campo di elaborazione successivo, la cui funzione è qui duplicata dal tasto "Ok”, ci sarà ora anche quello per tornare indietro, e quello per andare in ogni caso alla schermata principale, che, solo in questo caso, coincide con quello di ritorno al campo precedente. Un'ultima annotazione riguarda il tasto Escape che, nei campi dal secondo in poi, di fatto risulta una duplicazione della scelta rapida "Alt+T”, in quanto la sua pressione fa tornare alla schermata principale.

***

Per ulteriori spiegazioni, scrivere a: Abramo Volpato, oppure, a: Nunziante Esposito



Torna alla pagina iniziale della consultazione delle riviste

Oppure effettua una ricerca per:


Scelta Rapida