[ASS] Ajustement checkbox dans un une fenêtre de préférences au premier démarrage

houdini

Membre expert
Club iGen
24 Novembre 2005
1 883
50
Lyon
Bonsoir,
Avant tout, j'indique que je suis plus que novice pour ce qui est de Cocoa !!

Je programme avec XCode 2.5 sous AppleScript Studio. Je désirerais mettre dans mon application un fenêtre de préférences pour que l'utilisateur sélectionne certaines données obtenues pour l'impression ou la sauvegarde dans un fichier texte. J'ai mis facilement en place le panneau de préférences et des checkbox en m'inspirant de l'exemple de Cocoa Binding de cet article.

Pour initialiser les variables correspondantes à ces cases à cocher, j'utilise le script récupéré à cette adresse pour copier au premier lancement de l'application le fichier p-list dans le dossier préférences de l'utilisateur. Je récupère ensuite les "default entries" pour la sélection des données.

Cependant, je n'arrive pas à régler au premier démarrage de l'application l'état des boites à cocher pour qu'il corresponde à celui de la p-list. Ces checkbox sont en fait systématiquement non cochées alors que je voudrais qu'elles le soient. C'est uniquement au deuxième démarrage que l'état des checkbox correspond à la valeur de la p-list.

Il me semble que je sois obligé de passer par Cocoa que je maitrise pas :rose:.
Merci par avance de vos éclaircissements.

houdini
 
Je pense que tu dois passer par un truc du genre :

set theState to call method "defaultObjectForKey:" with parameter "valeur1"

pour recupérer le parametre dans la plist ?

Alors par exemple, si tu as defini un fenetre de preference avec des tabs, pour fixer la valeur du bouton "valeur1" tu vas ecrire :

tell tab view item "monItem" of tab view "montabview" of window "mafenetre"
set state of button "valeur1" to theState
end tell
Cordialement
 
  • J’aime
Réactions: molgow
Merci Didier !!

Je vais tester.

houdini ;)
 
:rose: Cela ne fonctionne pas...
Il me semble que le binding ne permet pas ce réglage via Applescript Studio et qu'il faille le faire "en dur" (?).
houdini ;)
 
:rose: Cela ne fonctionne pas...
Il me semble que le binding ne permet pas ce réglage via Applescript Studio et qu'il faille le faire "en dur" (?).
houdini ;)

Tu peut poster ton projet quelque part que j'y jette un oeil ?

Cordialement
 
Essaie, dans VideoSpec.applescript
Bloc de code:
on awake from nib theObject
	if the name of theObject is "VideoSpec" then
		laPlistExistelle() --Vérification si la P-list existe dans les préférences utilisateur sinon la créer par duplication du fichier plist du bundle
	end if
	tell user defaults
		set ParGen to content of default entry "ParGen"
		set ParVid to content of default entry "ParVid"
		set ParAud to content of default entry "ParAud"
	end tell
	set contents of button "ParGen" of window "preferences" to ParGen
	set contents of button "ParVid" of window "preferences" to ParVid
	set contents of button "ParAud" of window "preferences" to ParAud
end awake from nib
Quelques conseils si je puis me permettre :

- Tu vas vite te retrouver bloqué si tu n'implémente pas les Event Handlers, essaie, tu verras c'est facile et efficace.

- Essaie de découper ton code de manière à avoir un source AppleScript par objet Cocoa, cela facilitera le lien via les Events Handlers et ce sera plus facile à maintenir.

- Ne te laisse pas pieger comme moi: si ton application vient à prendre de l'ampleur, elle sera très difficilement maintenable car AppleScript n'a toujours pas de déboggeur. Réflechit fortement à la possibilité d'utiliser OBJ-C si tu envisage un avenir à long terme.

Cordialement
 
Essaie, dans VideoSpec.applescript
Bloc de code:
on awake from nib theObject
    if the name of theObject is "VideoSpec" then
        laPlistExistelle() --Vérification si la P-list existe dans les préférences utilisateur sinon la créer par duplication du fichier plist du bundle
    end if
    tell user defaults
        set ParGen to content of default entry "ParGen"
        set ParVid to content of default entry "ParVid"
        set ParAud to content of default entry "ParAud"
    end tell
    set contents of button "ParGen" of window "preferences" to ParGen
    set contents of button "ParVid" of window "preferences" to ParVid
    set contents of button "ParAud" of window "preferences" to ParAud
end awake from nib
Quelques conseils si je puis me permettre :

- Tu vas vite te retrouver bloqué si tu n'implémente pas les Event Handlers, essaie, tu verras c'est facile et efficace.

- Essaie de découper ton code de manière à avoir un source AppleScript par objet Cocoa, cela facilitera le lien via les Events Handlers et ce sera plus facile à maintenir.

- Ne te laisse pas pieger comme moi: si ton application vient à prendre de l'ampleur, elle sera très difficilement maintenable car AppleScript n'a toujours pas de déboggeur. Réflechit fortement à la possibilité d'utiliser OBJ-C si tu envisage un avenir à long terme.

Cordialement

J'ai essayé avec un "on awake from nib" mais j'obtiens plusieurs NSReceiverEvaluationScriptError: 4 (1) :rose:.
Merci pour ces différents conseils. Je suis en effet conscient que d'implémenter les Events handlers est nécessaire ainsi que d'avoir un code plus compact !! Je vais m'y atteler.
Pour ce qui est de l'objective C, je suis arrivé à un stade de développement qui ne permet plus en effet de me limiter à AppleScript mais n'étant pas programmeur de formation il est sur que cela va me demander beaucoup d'efforts :nailbiting:.

Cordialement,
houdini