Le développement de Plugins pour 4D 2004Date de publication : Mai 2006
Par
Dominique Delahaye (Software Architect, Security Advisor) Procédure pour la génération du squelette d'un plugin 4D 2004
Introduction Les outils nécessaires 4D Plugin Wizard La fenêtre de projet Création de méthodes du plugin Les Paramètres Leur Portée La valeur de retour des fonctions La création de constantes La Génération du squelette Composition du squelette Ouverture avec XCode Ouverture avec Visual C++ 2005 Conclusion Introduction
Aux vu des questions concernant la conception de plugins pour 4D, je vous soumets une procédure afin de vous faciliter la génération du squelette d'un plugin pour 4D 2004.
Ceci n'est qu'une ébauche que je m'engage à enrichir prochainement pour la partie zone externe. Dans ce document, je vais tenter de vous mener à bien créer un squelette de plugin, qu'il soit compilable, debuggable et exécutable. Les outils nécessaires
La documentation http://4d.developpez.com/documentation/4DDoc2004/XKC/XKCMDUS.HTM 4D Plugin Wizard Disponible dans le répertoire "Utilitaires " après l'installation de 4D XCode version 1.5 (minimum) Il est aussi conseillé d'avoir accès à un éditeur de ressources du type "RESORCERER" : http://www.mathemaesthetics.com/ResorcererIndex.html Microsoft Visual C++ 2005 4D Plugin Wizard
Lors de l'ouverture de 4D Plugin Wizard, vous avez à votre disposition la fenêtre de la liste de vos projets de plugin.
Dans un premier temps vous allez cliquer sur "New" afin d'en créer un nouveau. Une nouvelle fenêtre s'affiche alors : la fenêtre de projet !
La fenêtre de projet
Cette fenêtre est composée de plusieurs zones que nous allons détailler ici.
Le Nom du Projet en haut à gauche. En dessous la liste des méthodes que vous allez créer dans ce projet et ce géré par thème. En effet chaque méthode doit se référer à un thème afin que l'utilisateur puisse plus facilement s'y retrouver. En dessous une liste de boutons : · Add theme : création d'un thème · Add Command : création d'une commande dans le thème sélectionné dans la liste. · Add External Area : permet d'ajouter une zone externe à 4D. Notez que les zones externes n'appartiennent à aucun thème. · Edit constants : permet d'éditer des constantes liées à votre plugin. · Import from plugin : permet de récupérer l'intégralité de la description d'un plugin existant. A droite de la liste de vos thèmes / commandes figure une zone de pré-visualisation du code C correspondant au squelette de votre plugin. Vous pouvez voir la description des headers ainsi que la partie la plus intéressante qu'est le code C du main. En dessous de ces zones de prévisualisation, vous trouverez des options de préparation de code et événements du plugin : · use Ansi Insère dans l’entête de votre code les “headers” permettant l’appel des fonctions ANSI.
· use Win32 API
Insère dans l’entête de votre code le “headers” permettant l’appel de l’API de Windows.
· use Mac2Win from Altura Software
Insère dans l’entête de votre code le “headers” permettant l’appel des fonctions Mac2Win.
· use enum for commands Les commandes de votre plugin sont référencées par un numéro allant de 1 à n. Cette option vous permet de définir une énumération “C” afin de visualiser un pseudonyme de votre commande plutôt qu’un numéro. · define constants in 4D Plugin.h Cette option permet de définir vos constantes sous forme d’énumération “C” dans le fichier “.h” de votre plugin . Votre plugin reçoit des événements afin de pouvoir gérer s'il vous est nécessaire des structures globales. · need InitPlugin() 4D vient de lancer votre base et vient d'executer votre plugin pour la première fois. · need DeinitPlugin() 4D va quitter il est donc de votre devoir de libérer ou fermer tout ce que vous gérer (espace mémoire, fichiers ouverts, sockets ouverts etc...). Options de génération du squelette de votre plugin : · Macintosh XCode 1.2 Project : création du fichier projet pour Xcode. · Microsoft Visual C++ .NET projet : création du projet pour Microsoft Visual. · 4D Plugin API Source files : création du dossier contenant les fichiers nécessaires à l'API de 4D · Source files : création des fichier Squelette de votre plugin "4D Plugin.h" et "4D Plugin.c" · Resources Files : création du fichier de ressources nécessaire à 4D pour identifier votre plugin ".rsrc" pour macintosh et ".RSR" pour windows. Création de méthodes du plugin
Lors de la création d'une méthode, une fenêtre s'ouvre afin d'en définir ses caractéristiques.
Celle-ci vous permettra de définir son nom, le type de valeur de retour si c'est une fonction ainsi que la liste des paramètres attendus. Par soucis de cohérence avec la syntaxe établie dans le langage 4D, notez que les méthodes ont des noms entièrement en majuscules alors que les fonctions sont elles en minuscules. Les Paramètres
Vous pouvez avoir jusqu'à 25 paramètres pour chaque commande.
Ces paramètres ont une portée que vous pouvez définir dans cette fenêtre (voir ci après). De plus les paramètres sont forcéments typés. Voici la liste des types possibles :
Vous pouvez consulter la liste des types au format C ici : http://4d.developpez.com/documentation/4DDoc2004/XKU/XKU00035.HTM Vous pouvez consulter la liste des types au format 4D ici : http://4d.developpez.com/documentation/4DDoc2004/V6F/V6F00009.HTM Leur Portée
Dans cette même fenêtre, vous pouvez aussi définir la portée de vos paramètres à l'aide des flêches.
-> Le paramètre a une valeur significative en entré. <- Le paramètre a une valeur significative en sortie. <-> Le paramètre a une valeur significative en entré et en sortie. La valeur de retour des fonctions
Si vous associé un type différent de "None" votre commande est une fonction.
Voici la liste des types possible pour les retour de fonction :
La création de constantes
Il est probable, pour augmenter le confort d'utilisation de votre plugin, que vous ayez recours à la création de constantes.
Pour l'exemple je vous envoi directement à l'utilisation d'une méthode de 4D Write WR FIXER PROPRIETE TEXTE où la documentation se trouve ici : http://4d.developpez.com/documentation/4DDoc2004/CMF/CMF89480.HTM Afin de fixer les propriétés du texte, il est plus confortable pour la relecture du code de lire wr gras plutôt que (0). Comme pour les commandes vous devez créer un thème pour classer vos constantes, puis ajouter les valeurs possibles. Vous pouvez avoir des constantes de trois types : Chaîne de caractères, Réel ou Entier long.
La Génération du squelette
Une fois que vous aurez défini vos commandes et vos constantes, appuyez sur le bouton "Generate".
Une fenêtre de destination s'ouvrira. Sélectionner l'endroit où vous voulez sauvegarder le squelette de votre projet. Une fois généré, fermer votre fenêtre de projet en confirmant l'enregistrement. Vous êtes alors prêt pour ouvrir votre squelette dans Visual ou XCode. Composition du squelette
Avant d'aller plus loin regardons le contenu des dossiers et fichiers constituant le squelette de votre plugin.
· Dossier 4D Plugin API 4DPluginAPI.c 4DPluginAPI.def 4DPluginAPI.h EntryPoints.h Flags.h PrivateTypes.h PublicTypes.h · 4D Plugin_Prefix.pch Ces fichiers constituent l'ensemble de l'API de 4D. Vous pouvez consulter à titre d'informations 4DPluginAPI.h et par curiosité 4DPluginAPI.c. · 4D Plugin.c 4D Plugin.h Ces fichiers constituent le source de votre squelette de plugin.
· 4D Plugin.xcode Ce fichier est le projet XCode donc pour une version Macintosh du plugin. · 4D Plugin.rsrc · Dossier English.lproj InfoPlist.strings locversion.plist · Info.plist · PkgInfo Ces fichiers sont nécessaires au fonctionnement de votre plugin pour Macintosh · 4D Plugin.vcproj Ce fichier est le projet Microsoft Visual. · Dossier build 4D Plugin.bundle Contents Windows 4D Plugin.rsr Ces fichiers sont nécessaires au fonctionnement de votre plugin pour Windows et Macintosh. Le sous répertoire 4D Plugin.bundle est en fait votre projet final et doit être organisé comme suit pour un plugin mac/win : 4D Plugin.bundle Contents Info.plist MacOS 4D Plugin (version mac) Resources 4D Plugin.rsrc English.lproj InfoPlist.strings Windows 4D Plugin (version win) 4D Plugin.rsr Ouverture avec XCode
Lors de l'ouverture du projet avec XCode, il est probable que celui-ci vous demande "d'upgrader" celui-ci, accepter sans soucis.
Pour les utilisateurs de XCode 2.2 ou superieur, executer dans le terminal la ligne suivante pour aider au debuggage :
Paramétrages du projet Afin de debugger votre projet, il vous faut ajouter un exécutable. Donc lors de l'ajout, selectionner une application 4D , monoposte client ou serveur puis rajouter au chemin : /Contents/MacOS/4th Dimension Ouverture avec Visual C++ 2005
Ouverture avec Visual C++ 2005
Lors de l'ouverture du projet avec Visual, il est probable que celui-ci vous demande "d'upgrader" celui-ci, accepter sans soucis. Ouvrez le fichier projet et demandez la génération de la solution. Une erreur de compilation intervient. Paramétrages du projet Modifier dans les propriétés du plugin -> Edition de liens -> Entrées -> Dépendances supplémentaires Supprimer odbc32.lib et odbcpp32.lib Recompiler et votre projet est compilé Conclusion
Vous pouvez "en théorie" exécuter votre plugin en mode debug dans les version Macintosh ou Windows.
Il ne vous reste alors qu'a enrichir les commandes du squelette qui ne demande qu'a prendre de l'en bon point. ©2006 Dominique Delahaye |
Copyright © 2006 Dominique Delahaye. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.