Newsgroup: it.comp.macintosh
Titolo: AppleScript e l'odio UI Scripting...

 
Ho appena provato a scrivere sul google-gruppo di BBEdit e vediamo se 
qualcuno ha qualche brillante idea.
Ma ripropongo anche qui il problema, si sa mai... 
 
tell application "BBEdit" to activate
tell application "System Events"
   tell process "BBEdit"
      click menu item "Balance & Fold" of menu "View" of menu bar 1
   end tell
end tell
 
Oppure analogo comando anche dato come:
 
...
 keystroke "B" using {command down, shift down}
...
 
Il mini-script funziona sia che lo esegua dall'Editor AppleScript che da 
menu di BBEdit.
 
Se inserisco il blocco in un AS che trova in sequenza degli elementi che 
desidero vengano "Folded"... dall'Editor di AppleScript funziona 
**PERFETTAMENTE** tutto: trova in sequenza i tag voluti ed esegue man 
mano il Fold.
 
Ma, se eseguo lo stesso script da Menu di BBEdit... nulla.
Funziona tutto tranne il blocco "System Events" :-(( ...
 
Idee, suggerimenti?..
 
ODIO UI Scripting. Lo odio. Lo odio. Lo odio e ancora lo odio.
Purtroppo è però l'unico modo di fare un Fold su un elemento. Cosa anche 
idiota, essendo una funzionalità parecchio utile a volte.
 
-- 
// Treat everyone u meet like u want to be treated
        aggiungere un tra per spedire posta

 ricorda di escapare tutte le virgolette.
 
Ti ringrazio della sempre utile idea... ma purtroppo non cambia nulla.
Ho per� ricevuto il sensatissimo suggerimento di aggiungere il blocco 
"try / end try ecc."
E in effetti, come sospettavo pi� ci stavo pensando, c'� qualche strano 
problema nel blocco repeat + System Events.
 
E strano perch� se i comandi di "System Events" ecc. non sono inseriti 
nel ciclo repeat, tutto funziona *ANCHE* da BBedit.
 
Morale, inserendo "try"... infatti:
 
try
   tell application "BBEdit" to activate
   tell application "System Events"
      tell process "BBEdit"
         click menu item "Balance & Fold" of menu "View" of menu bar 1
         delay 0.5
      end tell
   end tell
on error errMsg
   display dialog "ERRORE: " default answer errMsg
end try
 
Se eseguito da AS Editor tutto Ok e funziona tutto. Ma se lo eseguo da 
menu AS BBEdit, mi riporta questo errore:
 
"System Events got an error: Can�t get menu bar 1 of process "BBEdit". 
Invalid index."
 
Ma perch� da Editor va bene, da BBEdit no???? :-(
E torno all'inizio.


 un sottoscript.
 
Aggiornamento! 
L'errore mi veniva usando il tuo suggerimento run script "..." e solo 
con l'azione click. Non con l'azione keystroke.
Se uso la sintassi consueta non ritorna errore in nessun caso.
 
Ma non si � risolto il problema principale, perch� ... 
 
... se utilizzo il click menu
 
   tell application "System Events"
      click menu item "Balance & Fold" of menu 1 of menu bar item "View" 
of menu bar 1 of application process "BBEdit"
   end tell
 
Trova e seleziona in sequenza il contenuto dei tag voluti, ma esegue il 
Fold solo all'ultimo. Non importa che siano 2 o 50 tags. Sempre e solo 
all'ultimo.
 
... se utilizzo invece il keystroke
 
   tell application "System Events"
      tell application process "BBedit" to �
       keystroke "b" using {command down, shift down}
   end tell
 
Trova e seleziona in sequenza il contenuto dei tag voluti, ma dopo la 
selezione dell'ultimo <pre></pre> esegue il Fold su tutto il tag 
<html></html> perch� evidentemente uscito dall'ultimo <pre> esegue 
l'azione "balance and fold" (tramite tasto), sul tag superiore.
 
Quindi sembrerebbe che l'azione UI funzioni solo alla fine e non *nel* 
corso del repeat. Ovviamente ho provato un add delay, ma l'unico 
risultato � che mantiene pi� a lungo la selezione del contenuto dei tag 
per proseguire al find successivo.
 
E ripeto, tutto questo NON capita se si esegue da AppleScript Editor 
dove invece funziona come dovrebbe (!!!)


 > Idee, suggerimenti?..
 
AGGIORNAMENTO 2 !
 
Pare sia un bug di BBEdit ... :-/
Non di meno anche di TextWrangler.
 
Anche un altro utente (il celeberrimo Chris ...) sollecitato dalla mia 
richiesta di soccorso ha testato la funzionalit� di scripting del 
comando Fold e gli capitano le stesse identiche cose.
 
Io sono poco pi� di un cane, ma il sopracitato Chris � un vero luminare 
al riguardo di scripting (non solo AppleScript). E quindi mi ha 
confermato trattarsi evidentemente di un bug di BBEdit.
 
Mi rincuora. Tutto sommato.
Vediamo se metteranno mano al problema e se, soprattutto, aggiungeranno 
nel Dizionario di Script per BBEdit il set di comandi "Fold". Come da me 
richiesto.
Usare UI Script fa cagare. E... cmq, s�, rispetto a molte altre 
applicazioni BBEdit/TextWrangler offrono parecchie possibilit� con 
AppleScript. Ma non � proprio vero che sia cos� super-apple-scriptabile. 
Ci sono un sacco di cose che richiedono cmq UI scripting.
 
A parte BBEdit, io ho come l'impressione che ad Apple di AppleScript non 
freghi ormai pi� di tanto... :-(
