Salut.
je doit faire un moteur de plugins sous python, mais j'ai du mal a voir comment je peux faire. Un prof m'as dis que cela pouvais ce gerer assez simplement. mais comme je ne peux pas le voir dans l'immedia, je m'adresse a vous. En faite j'etais partie sur ce principe:
Code :
- Moteur de plug-in: analyse
- Il s'agit de creer une interface qui permet d'ajouter des fonctionnalité au programme
- Principe de fonctionnement
- Le principe est le suivant. les fichier de plug-in sont tous stockés dans le même dossier. Au démarage du programme, le moteur lit le nom de chaque fichier. Et à partir de ces noms, créer des objets heritant de InterfacePlugIn. ces objets, une fois creer,sont stocker dans une structure de donnée encore à definir. Ainsi stockerils ont deviennes facile à manipuler.
- Les problemes pouvant etre rencontré.
- Il est possible que ce systeme de recuperation des objets PlugIn: il faudrais alors chercher un autre system de fonctionnement. Il reste a verifier s'il n'y a pas une meilleur methode
- Il peut y avoir des problemes aussi au niveau de l'IHM et de son acces. c'est un point qu'il faudra éclairir
- Interface Moteur/plug-in
- creation d'une classe InterfacePlugIn, implementant les methodes ci dessous:
- * getName():void => cette methode permet de recuperer le nom du plug-in
- * getABCList(AllABCFile abcfile):void =>cette methode permet d'acceder à la liste de ABCFile
- * setABCList():AllABCFile => cette methode permet de modifier cette liste
- * getPlugInIHM(IHM ihm):void => il y a un emplacement attibué au plug-in ds l'IHM, cette methode permet d'y acceder
- * setPlugInIHM():IHM => permet de modifier cette IHM
- * start():void => methode qui permet de demarrer le plug-in: on peux la comparer à un main
- * stop():void => methode qui arret ele plug-in (reste a verifier si c'est vraiment utile)
- IMPORTANT: il en peut y avoir qu'un plug-in par fichier, le nom du fichier etant l'identifiant du plug-in. ce nom de fichier doit ce retrouvé ds une des classe contenu ds le fichier. cette classe etant la classe heitant de InterfacePlugIn
- Classe MoteurPlugIn
- La classe Moteur qui va traiter les plug-in. Il y a plusieur methodes à implementer
- * loadPlugIn(String pluginDirectory):boolean => cette methode permet de charger les plug-in contenu dans un dossier et de les stocker dans une structure de donnée
- * getPlug(String name):void => cette methode permet d'y acceder au plug-in dont le nom est passé en parametre
- * contains(String name):boolean =>cette methode permet de verifier si le plug-in avec le nom passé en parametre existe ou non.
- * getPlugInList():Structure de donnée(non definit) => permet de recuperer la liste des plug-in
|
la ou je bloque en faite c'est pour charger les plugins. car je recupere le nom des fichier.py contenu dans le dossier plugins.
et avace j'aimerais creer de nouveau objet. c peu etre un peu foireux comme technique. et de toute mainere c pas ecore fait. mais enfin bon si quelqu'un a quelque chose d emieux a me proposer je suis preneur.
voila merci d'avance. je ne demande pas qu'on code pour moi, mais j'aimerais avoir quelque piste sur l'algorythme a utiliser.