Bonjour,
Après avoir écrit notre première routine ARX pour Mac, nous allons maintenant voir comment utiliser une boîte de dialogue pour lancer notre message.
Peu de documentation est disponible sur ce sujet. Je me suis inspiré du vidéo suivant: Required Development Tools, disponible sur l’aide en ligne. Par contre le vidéo est de piètre qualité et les explications sont loin d’être claires. J’espère que mes explications seront plus faciles à suivre.
- Démarrez XCode 3.2.6 et créez un nouveau projet en utilisant le gabarit «Arx with Cocoa».
- Dans le dossier «AcadApp» que nous avons créé dans l’article précédent, créez un nouveau sous-dossier nommé «DialogBoxTest».
- Nommé le nouveau projet de la même façon («DialogBoxTest»).
Nous nous retrouvons avec un projet identique à celui créé dans le dernier article. À la différence du projet précédent, notre commande affichera une fenêtre avec un seul bouton qui, lorsque cliqué, affichera à la ligne de commande notre message «Bonjour le monde!». Nous devons donc ajouter une boîte de dialogue.
- À partir de la section «Group & Files», cliquez avec le bouton droit «DialogBoxTest» puis choisissez l’option «Add->New file…».
- Choisissez le gabarit «Window XIB» dans la section «User Interface» puis cliquez «Next».
- Inscrivez «UserInput.xib» comme nom de document puis cliquez le bouton «Finish».
- Un nouveau document a été ajouté au projet.
- Double-cliquez sur le document ajouté pour démarrer «Interface Builder» qui nous permettra d’ajouter visuellement un bouton dans la nouvelle fenêtre.
L’application «Interface Builder» contient plusieurs fenêtre dont la fenêtre «Window» qui est la fenêtre de notre boîte de dialogue. Vous retrouverez aussi une fenêtre nommé «Library». (si vous ne la voyez pas, vous pouvez l’afficher en utilisant le menu déroulant «Tools»).
- Dans la fenêtre «Library», choisissez «Objects» puis «Buttons». Cela permettra d’afficher une liste des différents boutons disponibles.
- Trouvez ensuite «Push Button» puis glissez-le dans la fenêtre «Window».
- Double-cliquez sur le bouton et modifiez le texte du bouton pour «Bonjour Le monde!».
- Quitter «Interface Builder» en choisissant l’option «Quit Interface Builder» du menu principal en n’oubliant pas de sauvegarder les changements.
- À partir de la section «Group & Files», cliquez avec le bouton droit «Classes» sous «DialogBoxTest» puis choisissez l’option «Add->New file…».
- Comme gabarit, choisissez «Cocoa Class->Objective-C class->NSWindowController»
- Cliquez le bouton «Next» puis nommez le fichier «UserInput.mm».
Notez l’extension «mm» et non seulement «m» qui est celle par défaut. Le double m indique que la classe est une classe C++ et non C seulement. Cela aura un impact lors de la compilation du programme.
- Cliquez le bouton «Finish» puis ouvrez le fichier «UserInput.h» qui devrait aussi avoir été automatiquement créé.
- Ajoutez la déclaration suivante dans l’interface:
@interface UserInput : NSWindowController {
}
– (IBAction) HelloWorld_Clicked:(id) sender;
@end
Cette déclaration de type «IBAction» déclare la fonction qui sera utilisée lors du clic du bouton.
- Copiez cette déclaration dans le fichier «UserInput.mm» et modifiez-la de la façon suivante:
#include <aced.h>
@implementation UserInput– (IBAction) HelloWorld_Clicked:(id) sender{
acutPrintf(_T(« \nBonjour le monde »));
}
@end
Ceci affichera le message à la ligne de commande. N’oubliez pas aussi d’inclure la ligne: #include <aced.h> afin de pouvoir utiliser la fonction acutPrintf.
- Assurez-vous d’avoir sauvegardé vos changements.
Je ne vous expliquerai pas en détail la syntaxe du langage C/C++ ou d’Objective C. Pour les bases de ce langage référez-vous à de nombreux manuels disponibles sur le marché. Pour ma part, j’utilise le livre «Cocoa and Objective C – Up and running» de Scott Stevenson aux éditions O’Reilly. Bien que je le trouve un peu complexe, il permet de mieux comprendre les bases du langage Objective-C.
Maintenant nous devons liez le bouton de l’interface à la fonction que nous venons de créer.
- Ouvrez le fichier «UserInput».
- Dans la fenêtre «UserInput.xib», cliquez «File’s owner», puis dans la fenêtre «User Input Identity», cliquez « Identity» (identifié par un i) puis sélectionnez la classe «UserInput».
- Cliquez ensuite avec le bouton droit l’icône «File’s owner» puis glissez le cercle à l’extrême droite de la ligne où est écrit le mot «Window» vers un espace vide de la fenêtre «Window».
- Refaites la même opération pour l’action «HelloWorld_Clicked» en glissant le cercle à droite sur le bouton démarrant l’action.
- Quittez l’«Interface Builder» en sauvegardant les changements.
Il ne reste qu’à créer la commande d’appel de la fenêtre.
- Ouvrez le ficher «arxmain.cpp» et remplacer la commande «mycmd» par la suivante:
extern void mycmd();
- Sauvegardez le document et ouvrez le fichier «UserInput.mm» et ajoutez-y la fonction suivante:
#include <aced.h>
void mycmd(){
UserInput *dlg = [[UserInput alloc] initWithWindowNibName:@ »UserInput »];
[dlg showWindow:NULL];
}@implementation UserInput
La première ligne crée un pointeur (dlg) de type «UserInput» initialisé avec la fenêtre nommé «UserInput». La seconde ligne affiche la fenêtre.
- Effectuez un «Build» pour vous assurez qu’il n’y a aucune erreur de syntaxe.
- Sous «Target», avec le bouton droit, choisissez «Add->New Custom Executable» et ajouter l’application AutoCAD.
- Cliquez le bouton «Build and Run» pour démarrer AutoCAD.
- Chargez l’application «DialogBoxTest.bundle» et tapez la commande «mycmd».
- Cliquez le bouton de la fenêtre et le message «Bonjour le monde!» s’affichera à la ligne de commande.