Newsgroup: it.comp.macintosh
Titolo: [Applescript] Prob con GUI scripting

Ciao a tutti,
mi cimento per la prima volta con Applescript ed ho un problema che
proprio non riesco a risolvere.
Uso il programma SteerMouse per regolare la sensibilità dei due mouse
che alternativamente attacco al mio PB. Vorrei automatizzare l'apertura
del programma ed il cambio del valore di uno slider con uno script da
poter poi lanciare più comodamente. Lo slider che voglio modificare nel
programma si trova nell'ultimo "tab" (chiamato "Cursor") ed è il secondo
dall'alto ("Speed"). Purtroppo SteerMouse non supporta lo scripting
nativo quindi credo di essere obbligato al GUI scripting. Io per il
momento ho buttato giù questo codice:
tell application "SteerMouse"
        activate
        tell application "System Events"
                tell process "SteerMouse"
                        click radio button 4 of tab group 1 of window 1
                        set value of slider 1 to 0.64
                end tell
        end tell
end tell
Purtroppo restituisce un errore sulla riga "set..." dicendo che non
trova l'oggetto a cui faccio riferimento. Il problema mi sembra derivi
dal fatto che la linea "click..." effettivamente fa click sull'ultimo
tab, ma nell'applicazione il contenuto del tab non cambia affatto !
E' come se mancasse un comando "refresh content" o qualcosa del genere
per fargli capire che il pulsante è stato premuto.
Sapete suggerirmi qualcosa ?
Ciao
Leo

 trova l'oggetto a cui faccio riferimento.
Se non ho capito male, la pressione del radio button fa apparire un
nuovo elemento in cui c'č lo slider, quindi probabilmente devi
specificare che lo slider appartiene a questo elemento.
-- 
This is the end

 specificare che lo slider appartiene a questo elemento.
Non so se tramite GUI scripting è possibile fare riferimento ad un
elemento dell'interfaccia che non è fisicamente visualizzato a video...
Ciao
Leo


Questo programma mi fornisce direttamente il comando per settare il
valore dello slider, ovvero:
set value of slider 1 of UI element 1 of group 1 of tab group 1 of
window 1 to <number>
Il problema è che l'elemento slider così definito è disponibile solo
DOPO che il quarto tab è stato reso visibile cliccando sul relativo
pulsante. Il codice che avevo riportato prima effettivamente esegue il
click sul pulsante del tab, ma poi il contenuto del tab stesso non viene
aggiornato e quindi la linea che ho riportato qui sopra genera un errore
dovuto al fatto che l'oggetto "slider 1" non viene trovato.
Ciao
Leo

 interrompi la tell e ricominciala.
Nulla da fare. Credo comunque ci sia un problema nel programma stesso.
Infatti il seguente codice (che per la parte di "click" del tab è
praticamente identico) su Preferenze di sistema funziona
perfettamente...
tell application "System Preferences"
        activate
end tell
tell application "System Events"
        tell application process "System Preferences"
                click button 4 of scroll area 1 of window "Preferenze di
Sistema"
                delay 1
                click radio button "Formati" of tab group 1 of window
"Internazionale"
        end tell
end tell
Mi sa che mi tocca rinunciare... :-(
Ciao
Leo

 prova anche a *leggere* il valore dello slider, per essere sicuro.
Nulla da fare. Mi dice che non trova l'elemento.
Ho provato invece ad aggiungere a valle del codice di cui sopra, il
seguente:
tell me to delay 1
tell application "System Events"
        tell process "SteerMouse"
                set num to number of items in window 1
                display dialog num
        end tell
end tell
Per vedere "quanti" elementi ci sono nella finestra. La risposta è 0...
Ciao
Leo

 poter poi lanciare più comodamente.
Non conosco SteerMouse, ma *se* memorizza i suoi parametri in un file di
preferenze leggibile, ti conviene fare uno script che vada a modificare
direttamente quel file di preferenze.
-- 
.: Jazzman :.
"Con il linguaggio è possibile dire tutto e il contrario di tutto"
                                                      (A.Zichichi)