Home

Tutoriel AppleScript Studio

Partie 1 - Introduction

Etape 2 - Création d'un champ et un bouton

Sous Léopard - xCode 3.0

Commençons, pour les débutants, par un exercice très simple : un champ et un bouton. En cliquant sur le bouton, nous changerons la valeur du champ.

Le bouton sera donc actif. Il devra réagir à un clic. Le champ sera passif, nous l'utiliserons que pour visualiser une information envoyée par le bouton.



Créez un projet "champBouton" comme décrit dans le chapitre création d'un projet.



Menu Léopard - photo 1


Pour voir leur contenu, ouvrez les dossiers "Script" et "Resources" en cliquant sur les triangles gris.

Puis, faites un double clic sur "MainMenu.nib"


Menu Léopard - photo 2



Vous obtenez une fenêtre de départ vide portant le nom "Window".


Menu Léopard - photo 2-1

Rien de changé depuis Tiger, juste l'icône de Interface Builder a été rajouté devant le nom de la fenêtre "Window".


Note : Je mets en vert les noms utilisateurs, et en rouge ceux de xCode.





Créons un champ


Allez dans la barre de menu Interface Builder, menu "Tools", sélectionner "Library".



Menu Léopard - photo 2-2


Dans la fenêtre "Library", onglet "Objects" ouvrir les dossiers "Cocoa", puis "Views and Cells", puis "Input & Values", et choisissez l'icône du champ "Text Field".


photo3
Menu Léopard - photo 3



Notez : En laissant votre souris immobile sur la zone, des informations d'utilisation apparaissent.


Menu Léopard - photo 3-3

(Notez, Le nom Cocoa "NSTextField" n'est plus indiqué comme c'était le cas avec Tiger).




Faites glisser cette icône sur votre fenêtre à construire. Le champ est créé.



Menu Léopard - photo 4



Définissons notre champ

Allez dans la barre de menu Interface Builder, menu "Tools", sélectionner "Inspector".



Menu Léopard - photo 5-1



L'inspecteur s'ouvre. Observez bien, sur l'image ci-dessus, les 7 icônes des onglets en haut. Ils correspondent aussi aux raccourcis ⌘1 à ⌘7. Cliquer sur le premier à gauche. C'est "Text Field Attributes".

Attention : Son activation est indiquée par un fond bleu clair. Tro clair, c'est peu visible.

Dans le champs "Title" donnez un titre à votre champ que vous venez juste de créer, je l'ai appelé "monChamp".



Menu Léopard - photo 5-2

Faite "Save".

Notez, l'option "Editable" est cochée en implicite par Interface Builder. Elle indique la possibilité de taper ou non du texte dans le champ.




Résultat :


Menu Léopard - photo 6


Le titre "monChamp" s'affiche comme valeur à l'intérieur du champ.

J'ai fait cela juste pour vous montrer ce qu'il se passait avec le "Title", puisque notre champ étant passif, cela n'était pas nécessaire. (La programmation de notre futur bouton changera cette valeur). N'anticipons pas.




Notez : avec Léopard vous avez un peu plus d'options que sous Tiger. Néanmoins rien qu'il va vous perturber si vous connaissez déjà ASS sous Tiger. Ci-dessous le vieux menu Tiger pour comparer.



Menu Tiger - photo 5




Définissons la programmation de notre champ

Dans l'inspecteur allez à l'onglet "Applescript" (celui le plus à droite), dans le champ "Name" donnez le nom "leChamp", qui sera utilisé pour la programmation. Rien d'autre, car se sera un champ passif de réception. Rien dans "Script", rien dans "Event Handlers".


Menu Léopard - photo 7

Faite "Save".

Notez que j'ai mis deux noms différents pour "Title" et Name" pour faciliter vos débuts. J'aurai pu mettre le même, car dans la programmation le code est discriminant, du genre "if the name of the button is then..." or "if the title of the button is then..."





Créons un bouton

Allez dans le menu Interface Builder, sous-menu "Views & Cells", puis "Buttons", et choisissez l'icône d'un bouton simple "Push Button".



Menu Léopard - photo 8



Faites glisser cette icône sur votre fenêtre. Puis, dans l'inspecteur, revenir à "Attributes" (l'icône à gauche), et tapez dans le champ "Title" le nom "Changer".



Menu Léopard - photo 9



Résultat :


Menu Léopard - photo 10



Définissons la programmation de notre bouton

Dans l'inspecteur, allez à l'onglet "Applescript", et faite dans l'ordre :

  1. Dans le champs "Script" sélectionner le script à exécuter pour ce champ "champBouton.applescript".
  2. Dans "Event Handlers" cliquez sur "clicked" de l'événement "Action".
  3. Dans le champ "Name" tapez le nom "leBouton", qui sera utilisé pour la programmation.

Menu Léopard - photo 11


Enfin, faite "Save".



Programmation


Quittez Interface Builder, et retournons dans xCode.



Menu Léopard - photo 12-1



Cliquer sur "champBouton.applescript". Vous allez trouver un template de programmation pour l'événement "clicked" que vous avez définie.




Photo 12



Vous êtes pret à programmer.


Mais avant, je rapelle avec insistance, qu'il ne faut pas oublier :

Ce sont les trois erreurs classiques de début. Vous passerez du temps à chercher pourquoi un script ne marche pas, et souvent, il sera bon. Et il ne marche pas, parce qu'il n'est pas appelé et/ou l'événement n'est pas validé pour l'objet que vous traitez.


image
Menu Léopard - photo 11


Programmons
on clicked theObject
     set the content of the text field "leChamp" of main window to "initial"
end clicked


Résultat


Menu Léopard - photo 12a

Notez, le mot "initial" est sur fond bleue, car nous avons laissé l'option "Editable" valide. Option, non nécessaire, dans cet exemple.


Les points clefs :

Ici, le nom de la fenêtre est spécifique à la première fenêtre "main window", équivalant à "window 1", ou si vous donnez un nom à votre fenêtre window "son nom à vous".




Qualification de la fenêtre

Le jour où vous aurez défini plusieurs fenêtres pour votre application, il sera bon de leur donner un nom à vous.

Donnons à la fenêtre le nom "Main" dans l'onglet "AppleScript" de l'inspecteur.


Menu Léopard - photo 13

Faite "Save".



Notre commande devient :

     set the content of the text field "leChamp" of window "Main" to "initial"

Ce qui est mieux, car aussi, certaines commandes ne peuvent comprendre main window.



Qualifions le bouton

Notre exemple posséde qu'un seul bouton, parfait. Mais, si il y avait plusieurs boutons, ou d'autres objets, notre commande s'exécuterait pour tous les objets ayant l'événement "clicked" affecté. Pour discriminer, écrivons :


on clicked theObject

if the name of theObject is "leBouton" then

set the content of the text field "leChamp" of main window to "initial"

end if

end clicked


Voilà, nous en savons assez, pour comprendre le principe de création par Interface Builder et de programmation dans xCode.

Si vous êtes un débutant complet, exercez-vous à créer cet exemple. Pour vérifier, je vous ai mis l'exemple en zip.





Télécharger l'exemple

Le fichier en zip champBouton contient le projet que nous venons d'étudier.




Retour - Index ASS


Merci de votre visite

UP