UICIECHI.IT: LUGLIO-AGOSTO 2008 - Numero 7-8.
NotePad++ un nuovo editor per NVDA, un'Odissea a lieto fine.
Di Adriano Barbieri.
Vi racconto una bella storia...
Ma serve un breve ripasso per focalizzare il problema:
Dunque, integrato in NVDA c'è un editor per la gestione di tre tipi di dizionari:
- Dizionario di default
- Dizionario specifico per la voce
- Dizionario temporaneo
I primi due dizionari risiedono su altrettanti files, mentre l'ultimo risiede in memoria e ovviamente il suo contenuto, ad ogni riavvio della macchina o dello stesso NVDA, viene perduto.
L'editor integrato di NVDA è attualmente concepito per gestire dei files con estensione ".dic" compatibili col modulo dizionario, esso contiene delle linee con delle tabulazioni e sintassi che se sbagliate anche di un singolo carattere che non sia al posto giusto, non vengono caricati in memoria.
NVDA risponde subito col tipico suono d'errore, a volte anche tornando a parlare con la voce di Espeak quando l'errore è grave.
Il modulo dizionario di NVDA è fondamentalmente basato sulle Espressioni Regolari (Regex), anche se le ultime Snapshots dello Screen Reader grazie a due caselle di controllo, consentono di scegliere tra l'usarle o meno, cioè ogni vocaboloinserito nel campo di ricerca potrà essere processato come Regex, oppure essere semplicemente interpretato nel suo significato letterale.
L'editor integrato permette di intervenire sui vocaboli:
- Aggiungendo
- Modificando
- Rimuovendo
I vocaboli vengono semplicemente accodati all'elenco, e anche salvati nello stesso ordine cronologico.
Questa cosa incide non poco negativamente con le Regex, che facilmente vanno in conflitto fra loro.
Per evitare che ciò avvenga, in alcuni casi è neccessario dare la priorità a una Regex, anteponendola ad un'altra per far funzionare tutto a dovere, questo è dovuto al fatto che il modulo dizionario memorizza tutti i vocaboli nello stesso ordine in cui li trova elencati nel file dizionario.
Manca in pratica la possibilità di inserire un vocabolo alla posizione desiderata, basterebbe che l'inserimento avvenisse subito sotto la voce selezionata dall'elenco.
Questo, però, dovrebbe anche essere affiancato da un campo di ricerca che consenta di velocizzare le cose, e sarebbe anche agevolato dalle note di commento che fortunatamente sono già supportate dall'editor interno.
Trovarsi dentro a una lista di centinaia o migliaia di vocaboli da spulciare, pergiunta disposti in maniera disordinata diventerebbe un incubo da Nightmare.
Il problema è stato già segnalato alla Comunità Internazionale degli sviluppatori di NVDA.
E' auspicabile una modifica all'editor integrato in NVDA, che speriamo sia realizzata al più presto, perché, se le cose resteranno così, tanto varrebbe alleggerire NVDA lasciando solamente il dizionario temporaneo, che per testare un vocabolo al volo è sempre molto utile.
Qui iniziava l'Odissea.
Per esperienza personale, trovandomi a editare un dizionario con le suddette caratteristiche, per risolvere il problema sono dovuto ricorrere all'utilizzo del Blocco Note di Windows, l'unico, a parte Microsoft Word, di manipolare e salvare correttamente i files dizionari di NVDA, consigliato anche dalla stessa comunità quando l'editor interno era ancora ai suoi primi vagiti, ma nessuno evidentemente, oltre il sottoscritto, l'ha mai testato così a fondo.
Tutto bene in principio col Blocco Note di Windows, usando NVDA però ogni tanto , ma sempre più frequentemente manmano che il file cresceva, il focus stranamente si perdeva e tutto ad un tratto leggeva quello che non era.
La ricerca di una parola dava l'identico risultato.
Provai con WordPad di Windows, ma non salvava correttamente, alterando in modo quasi impercettibile il file, la prima volta, fiducioso non avevo creato una copia di sicurezza, non vi dico il tempo, che ho perso ricreando pezzo dopo pezzo, in blocchi che copiavo e incollavo, e poi testavo nel tentativo di scovare il bug.
Il problema l'avevo momentaneamente risolto swappando fra Jaws e NVDA, Jaws era in grado di dirmi la verità sul vocabolo puntato dal focus, anche se stranamente leggeva dei caratteri sdoppiati e appiccicati là dove non lo erano.
Ma una volta modificato o aggiunto uno, dovevo salvare, uscire da Jaws, eseguire NVDA e sperare di non aver commesso errori, altrimenti... Richiudere NVDA, riaprire Jaws, correggere, e così via.
L'abitudine ha reso tali operazioni molto rapide, e l'esperienza maturata sulle Regex raramente mi fa commettere errori, ma quando li faccio, solo Jaws mi toglie le castagne dal fuoco.
Ma la pacchia era durata poco.
Stavolta era il Blocco Note di Windows che non ce la faceva più, e oltretutto salvava con effetto WordPad di Windows, cioè inserendo anche caratteri fantasma, e rendendo indigesti i file al modulo dizionario. La necessità aguzza l'ingegno e questa volta avevo almeno 4 copie di backup.
Ultimo Jolly il mitico Microsoft Word, ma non tutti ce l'hanno, considerato il motivoche non è affatto un programma gratuito ed è anche abbastanza pesantuccio, e non facilissimo da destreggiare nella sua miriade di funzioni, percarità, sempre molto utili e apprezzabili.
Allora, si è resa neccessaria la ricerca di un software alternativo, un Editor di testo, con almeno tre requisiti: - Inanzitutto freeware oppure opensource.
- In grado di salvare e gestire correttamente e senza perdere il focus i file dizionario di NVDA.
- Essere possibilmente in italiano.
Ecco la bella storia.
Dopo una estenuante ricerca, effettuata in rete, scaricati e testati svariati programmi in modo infruttuoso, programmi quasi sempre inaccessibili a NVDA e parzialmente gestibili da Jaws, spesso in lingua inglese, spesso con ghirigori grafici inaccessibili, spesso non freeware, e soprattutto non adatti a salvare i dizionari di NVDA.
Ma, grazie alla segnalazione di Luigi Russo, un amico della lista NVDA italiana, gestita da Gianluca Casalino e Simone Dalmaso, lo abbiamo finalmente trovato, e risponde pienamente alle nostre esigenze:
- E' multilingue e comprende anche l'italiano.
- E' in grado di gestire e salvare comodamente, ricercare rapidamente e senza mai perdere il focus anche in grossi file.
- E' Opensource.
Dai risultati ottenuti in seguito alle caratteristiche di questo software, direi colpito ed affondato.
Questo software si chiama NotePad++ e vediamo qualche nota:
- La versione testata è la 4.9.2.
- Autore : Don HO.
- Home Page : http://notepad-plus.sourceforge.net/
- L'ultima versione stabile, che consiglio di scaricare la si può prelevare dal seguente link diretto: http://kent.dl.sourceforge.net/sourceforge/notepad-plus/npp.4.9.2.Installer.exe
- L'ultima versione disponibile al momento in cui scrivo è la 5.0 beta, ma,a me ha dato un problema, seleziona automaticamente interi paragrafi, e appena si và aeditare qualcosa, li cancella. Considerato che è in fase beta, suscettibile di possibili bugs c'era da aspettarselo, e ve la sconsiglio almeno finché resterà una "beta".
- Chi ha voglia di avventurarsi la può scaricare da questo link diretto: http://heanet.dl.sourceforge.net/sourceforge/notepad-plus/npp.5.0.beta.Installer.exe
Ringrazio Luigi Russo per avermi indicato questo bel programma.
Il programma eseguibile di setup è di soli 2029 kb e non necessita di particolari attenzioni durante l'installazione che risulta anche completamente accessibile.
Viene richiesta la lingua desiderata disponibile da un elenco ben fornito. Una volta accettate le consuete condizioni di licenza attivando il classico pulsante radio, si può scegliere la modalità full, o personalizzata, sarà così possibile determinare i componenti da installare è sufficiente premere i vari pulsanti "avanti" fino al completamento dell'installazione, non sarà nemmeno neccessario riavviare il Pc, ma lo consiglio, in modo da poter essere rilevato e messo in elenco dei programmi disponibili...
Riavviata la macchina, consiglio di posizionarvi subito su un file dizionario di NVDA, dal menù di contesto che si apre con il tasto applicazioni, date invio sul sottomenù: "apri con", quindi invio su: "Programma..." e selezionate "NotePad++" dall'elenco dei programmi disponibili, poi marcate la casella di controllo: "Usa sempre il programma selezionato per aprire questo tipo di file".
Infine fate invio su "Ok" in modo che ogni volta che vorrete aprire un file dizionario con estensione: ".dic" sarà NotePad++ ad aprirlo, fate la stessa cosa anche con tutti i tipi di file che normalmente usate aprire con Blocco note, e adesso vi spiego il perché:
NotePad++ è veramente comodo, ha la caratteristica di poter gestire più documenti contemporaneamente, se si tenta di aprire un documento con NotePad++ e questo è già in esecuzione, il documento verrà aperto dallo stesso programma in una nuova scheda.
Per swappare tra le varie schede è sufficiente premere "control+tab", sarà però possibile portare in primo piano solo due documenti alternativamente alla volta. Se si ha aperto e salvato altri files, NotePad++ ne tiene traccia in una sorta di dati recenti, e se si desidera portarle in primo piano, basta sceglierle dal menù "Finestre".
Se si chiude un documento ad esempio con: "control+w", NotePad++ non conserverà la sua traccia.
Molto comodo perché è possibile tenere una scheda con ad esempio un libro, e un'altra col dizionario.
Personalmente ho creato un collegamento sul desktop abbinato al dizionario col suo bel comando rapido: "Control+alt+d".
Mentre con NotePad++ leggo il libro e mi imbatto in una parola da inserire nel dizionario, premo una volta sola la combinazione "control+alt+d" e il dizionario viene immediatamente caricato da NotePad++ in una seconda scheda.
Il programma è dotato di menù ben forniti e ricchi, tutte le voci sono attivabili da comodi comandi rapidi da tastiera.
Una volta aggiunto il vocabolo salvo il file con "Control+s", swappo con "control+tab" e riprendo la mia lettura del libro; e quando incappo in un'altra parola da correggere swappo con "control+tab" e mi trovo il dizionario lì, belle e pronto, aggiungo, salvo con "control+s", swappo con "control+tab" e riprendo la mia lettura sul documento e così via.
Il comando"control+s", è valido per la scheda corrente che è in primo piano, ma volendo è possibile agire su tutti i documenti aperti.
Quando ho bisogno di testare il buon funzionamento di un vocabolo appena inserito, apro provvisoriamente una scheda nuova con "control+n", quando ho finito, richiudo la scheda con "control+w", e torno a leggere il libro.
A una successiva riapertura di NotePad++ verranno aperti gli ultimi due documenti che erano presenti al momento della chiusura del programma, o durante l'ultima sessione salvata.
Grazie a segnalibri automatici si potrà riprendere la nostra lettura esattamente da dove l'avevamo lasciata, il nostro dizionario sarà lì dietro in un'altra scheda che aspetta...
Ancora con il focus sull'ultimo vocabolo inserito, stessa cosa per il libro. Ottimo quindi anche per chi ama la lettura.
Dovreste provarlo con una cartella piena di file di testo, ad esempio una volta aperta la cartella da esplora risorse, invio sul file da leggere... alla fine della lettura, chiudiamo il file: "control+w", "alt+tab" e invio sul file successivo,e NotePad++, ancora aperto, si porta in primo piano e ce lo fa leggere... "control+w", chiudiamo il file... alt+tab... e così via.
Alla fine con alt+f4 si chiude il programma.
Per quanto riguarda la ricerca e sostituzione di una parola c'è un menù interamente dedicato a tale operazione, molto fornito, ma per la semplice ricerca basta premere "Control+f" e si apre subito la finestra di ricerca.
Il campo di ricerca è intelligente e tiene memoria delle parole digitate fino alla chiusura del programma, in più inserisce già nel campo la parola selezionata o/e copiata negli appunti e prelevata dal documento dalla posizione del cursore.
Le parole in memoria si scorrono con le frecce verticali.
Supporta le Regex, questo è naturale, considerato che il programma è principalmente un editor di sorgente, in ambiente MS Windows, che supporta diversi linguaggi di programmazione.
La cosa viene molto utile ad esempio per eliminare dal dizionario tutte le tabulazioni che si trovano alla fine di ogni linea, presenti nei files dizionario delle Snapshots più recenti, quelle che contengono i flag false =0, e true = 1, che con microsoft Word si specificano con: "^t1^t1^p" e si vanno a sostituire con: "^p"...
Ne parlai già tempo fà in un altro articolo, chissà se ve lo ricordate.
Microsoft Word sembrava l'unico a supportare alcuni caratteri speciali del tipo:
"^t" = tabulazione
"^p" = ritorno a capo, eccetera.
Col Blocco Note e WordPad neanche a parlarne...
Ma con NotePad++ si entra nel menù: Cerca/sostituisci... anche col comando rapido: "control+h", e lì, fra le varie opzioni attivabili comodamente da caselle di controllo, c'è anche un pulsante radio: "Search mode" che permette di scegliere la modalità di ricerca fta:
- Normal
- Extended (esteso a +sintassi di espressioni regolari).
- Espressione Regolare.
Scegliamo "Espressione regolare", e nel campo di ricerca digitiamo: "[\t0\t1]+[\t0\t1]", attenti alle barre diagonali rovesciate, e ovviamente senza le virgolette, e lasciamo vuoto il campo sostituisci.
Facendo invio sul pulsante "gruppo, sostituisci tutti", o tramite la scorciatoia da tastiera: Alt+t, tutte le tabulazioni con i flags verranno rimosse dal nostro file dizionario, in un sol colpo.
Dopo avere salvato con il solito: "control+s", avremo ottenuto un dizionario perfettamente compatibile con le vecchie versioni di Nvda, e senza dipendere da Microsoft Word.
Se si hanno due dizionari aperti e si desiderasse fare la modifica a entrambi, basterà fare invio su "Sostituisci su tutti i documenti aperti", verranno eliminate le tabulazioni superflue a tutti, (fate molta attenzione! notare che non è stato abbinato ad alcun tasto rapido, anche se è possibilissimo aggiungerlo, editando il file: "Configurazione/tasti rapidi..." dallo stesso programma, purtroppo solo Jaws con modalità cursore Jaws a Pc riesce a vederne il contenuto e forse a editarlo.
Il problema della scarsa accessibilità del menù di configurazione sembraessere l'unica nota stonata di questo ottimo programma.
Se non si avesse però intenzione di apportare modifiche, si può usare lo stesso metodo per contare le occorrenze, nel nostro caso potrebbe essere il numero:
- Totale dei vocaboli "[\t0\t1]+[\t0\t1]".
- Di Espressioni Regolari che distinguono fra maiuscole/minuscole "[\t1][\t1]".
- Di Espressioni Regolari che non distinguono fra maiuscole/minuscole "[\t0][\t1]".
- Di non Espressioni Regolari che distinguono tra maiuscole/minuscole "[\t1\t0]".
- Di non Espressioni Regolari che non distinguono tra maiuscole/minuscole "[\t0\t0]".
Aprite la finestra di ricerca accedendo dal menù: "Cerca/Trova...", oppure premendo: "control+f".
Se inserite una delle stringhe che ho appena elencato nel campo di ricerca, dal pulsante radio impostate il Search Mode su: "Espressione Regolare", e infine fate invio sul pulsante: "Conta occorrenze"... bé! comodo! no?
Ecco, a quel pulsante io metterò una scorciatoia da tastiera, perché manca.
Un'altra serie di funzioni utilissime nella editazione del dizionario è la possibilità di duplicare e spostare le linee intere,allo scopo ci sono alcune voci del menù "Modifica", tra cui:
- Duplica la linea corrente control+d.
- Sposta su la linea corrente Control+Shift+freccia su.
- Sposta giù la linea corrente Control+Shift+freccia giù.
Ho volutamente descritto solo ciò che riguarda la gestione dei files dizionario di NVDA con NotePad++, ma questo programma ha ancora moltissime potenzialità.
Oltre a supportare molti formati di file sorgenti di linguaggi di programmazione, può effettuare conversioni di formato e di codifica, ha la possibilità di visualizzare e operare anche come un Hex Editor , una moltitudine di funzioni e plugin, e sono tantissime, da esplorare e provare.
Ecco alcune feature tratte direttamente dalla home page ufficiale:
- Evidenziazione della Sintassi e Folding.
- WYSIWYG.
- Evidenziazione della Sintassi definita dall'Utente.
- Auto-completion.
- Multi-Documento.
- Multi-Vista.
- Supporto per Ricerca mediante Espressioni Regolari.
- Supporto completo al Drag ‘N' Drop.
- Posizionamento Dinamico delle Viste.
- Auto-rivelazione dello Stato del File.
- Zoom in e zoom out.
- Supporto ambiente Multi-Lingua.
- Bookmark (Segnalibri).
- Evidenziazione delle Parentesi e LineaGuida all'Indentazione.
- Configuratore di Stili.
Grazie al supporto delle Espressioni Regolari, integrato nei moduli di ricerca e sostituzione, con NotePad++ possiamo operare sui nostri libri in formato testo, e tentare di migliorarne la lettura.
Ecco una piccola lista di operazioni utili, che se usata bene,può servire a migliorare la lettura dei nostri libri in formato testo.
- Innanzi tutto occorre essere nella scheda del libro da modificare.
- Fare invio sulla voce di menù: "Cerca/Sostituisci...", o premere la combinazione rapida "control+h".
- inserire nei rispettivi campi di editazione le stringhe, e impostare il Search Mode riferiti a uno dei seguenti casi:
- # Eliminare tutti gli spazi vuoti a inizio righe.
- Stringa di ricerca: "^[\s]".
- Stringa di sostituzione: Lasciare vuoto.
- Search Mode = Espressione Regolare.
Descrizione:
L'accento circonflesso (apice davanti al carattere speciale "\s" (barra diagonale rovesciata s), indica che gli spazi devono trovarsi all'inizio della riga. Tutti gli spazi a inizio riga saranno eliminati.
Nota:
Nella classe è possibile inserire anche il carattere speciale di tabulazione "\t" (barra diagonale rovesciata t), esempio: "^[\s\t]", per eliminare anche possibili tabulazioni a inizio linea.
# Eliminare tutti gli spazi superflui fra le righe.
Stringa di ricerca: "\s\s".
Stringa di sostituzione: " " (uno spazio).
Search Mode = Espressione regolare.
Descrizione:
Vengono ricercati tutti gli spazi doppi in ogni riga, ma ne rimarrà soltanto uno obbligato dal campo in sostituzione, evitando di appiccicare le parole fra loro.
Se saranno presenti degli spazi ai margini delle righe, ne rimarrà sempre uno.
# Eliminare tutti gli spazi vuoti a fine riga.
Stringa di ricerca: "[\s]$".
Stringa di sostituzione: Lasciare vuoto.
Search Mode = Espressione Regolare.
Descrizione:
Il carattere dollaro a destra del "\s" barra diagonale rovesciata s) indica che gli spazi devono trovarsi alla fine della riga. Tutti gli spazi a fine riga saranno eliminati.
Nota:
Ripetere il ciclo finché il numero totale di sostituzioni non sarà uguale a zero.
Nota2:
Nella classe è possibile inserire anche il carattere speciale di tabulazione "\t" (barra diagonale rovesciata t), esempio: "[\s\t]$", per eliminare anche possibili tabulazioni a fine riga.
# Eliminare la sillabazione.
Stringa di ricerca: "-\r\n".
Stringa di sostituzione: Lasciare vuoto.
Search Mode = Extended.
Descrizione:
Viene cercato il trattino a fine riga, seguito da un ritorno a capo, rappresentato dal carattere speciale "\r" (barra diagonale rovesciata r), seguito a sua volta da una nuova linea, rappresentata dal carattere speciale "\n" (barra diagonale rovesciata n).
Questi 3 caratteri vengono eliminati con il risultato di trascinare alla riga superiore la riga sottostante e affiancarla a quella precedente.
# Eliminare tutti i ritorni a capo.
Stringa di ricerca: "\r\n".
Stringa di sostituzione: " " (uno spazio).
Search Mode = Extended.
Descrizione:
Vengono cercati i caratteri di ritorno a capo seguiti da una new line, una volta trovati, vengono sostituiti da uno spazio, per evitare di attaccare le parole, con il risultato che le linee saranno spezzate solamente dall'opzione: "a capo automatico" attivabile dal menù: "Visualizza".
# Inserire linee vuote dopo la punteggiatura.
Stringa di ricerca: "([.])$".
Stringa di sostituzione: "\1\n".
Search Mode = Espressione Regolare.
Descrizione:
Vengono ricercate le punteggiature presenti nella classe e che sono a fine linea.
Il gruppo nel campo di ricerca contiene una classe (le parentesi quadre), oltre al punto si può creare una lista di punteggiature, ad esempio: "([.!:;?,])$".
Nota:
Se il documento termina con una delle punteggiature presenti nella lista, alla fine del file vi troverete con delle linee vuote in coda, per evitarlo, prima di iniziare sarà sufficiente rimuovere temporaneamente la punteggiatura alla fine dell'ultima linea del documento.
Nota2:
Per inserire più di una riga vuota sarà neccessario indicarlo nel campo di sostituzione, aggiungendo tante "\n" (barra diagonale rovesciata n) per ogni linea vuota che si volesse inserire. Ad esempio, per 3 linee: "(\1)\n\n\n".
Oppure, ripetere il ciclo di sostituzione premendo, quando ci si ritrova nella finestrina di "sostituisci " " Alt+t" tante volte per il numero di linee vuote che volete aggiungere, si potrà andare avanti a oltranza.
# Eliminare tutte le linee vuote.
Stringa di ricerca: "\r\n\r\n".
Stringa di sostituzione: "\r\n".
Search Mode = Extended.
Descrizione:
Vengono cercate le linee vuote identificati da due ritorni a capo con rispettivi new line. Se trovati ne verrà eliminata una coppia, corrispondente alla linea vuota, lasciandone solo una, quella giusta, con il risultato che tutte le linee finiranno con l'accodarsi tutte una sotto all'altra.
Nota:
Ripetere il ciclo finché il numero totale di sostituzioni non sarà uguale a zero.
Una volta impostati i parametri, fare invio sul pulsante "gruppo Sostituisci tutti", o per fare prima, usando la combinazione: "Alt più t".
Nota:
Prima di salvare è prudente fare una copia del documento.
Ricordate che in caso di ripensamenti dopo una modifica, esiste sempre la voce: "modifica/annulla", ma non è cumulativa, quindi funziona solo per l'ultima azione eseguita.
Se non avete ancora salvato il documento, e con "Annulla" non riuscite più a ripristinare il documento, è sempre possibile "Ricaricarlo dal disco", tramite la voce di menù omonima ppresente nel menù "File".
Conclusione.
Insomma non un semplice lettore/editor di testo, ma anche un Editor per i programmatori più esigenti,paragonabile solo ad altri software a pagamento, con in più dotato di una quasi totale accessibilità.
Anche la finestra"Opzioni..." raggiungibile dal menù: "Configurazione", strutturata a schede, fa parte della nota stonata descritta prima, NVDA non riesce a leggere le opzioni all'interno delle varie schedine, che invece si scorrono comodamente con le frecce orizzontali, e di più non fa, ma nonostante tutto sembra più accurato nella lettura/editazione dei documenti, e anche la gestione dei vari menu.
Jaws 6.10, con le "opzioni" se la cava un po' meglio, ma portando il cursore Jaws al cursore pc e lavorando con la simulazione del clik del mouse, ma sembra non leggere correttamente i files dizionari di Nvda, a volte si trovano caratteri appiccicati, là dove non lo sono veramente, o sdoppiati, ingenerando spesso confusione nel debug.
L'importtante è che per il momento lavorare sui dizionari, al volo, e conNVDA, non è neccessario modificare alcuna opzione dal menù di configurazione.
Direi che per il momento, fino a quando non sarà migliorato l'editor interno di Nvda, ``NotePad++`` sarà più di un'ottima alternativa opensource, assolutamente da installare.