====== Differences ====== This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
doc_opener [2015/08/20 09:25] swann [a. initSceneProperties] |
doc_opener [2015/08/20 12:07] (current) swann [c. custompath operator] |
||
---|---|---|---|
Line 172: | Line 172: | ||
ressources.command.append("! missing field !") | ressources.command.append("! missing field !") | ||
+ | </code> | ||
+ | |||
+ | Nous allons maintenant parcourir un des opérateurs crée pour l'addon. Il faut savoir que dans Blender, les Operateurs représentent un des outils les plus pratiques pour le développement pour de nombreuses raisons( ils sont facilement accessible pour l'utilisateur, ils peuvent prendre des arguments,etc,...).\\ | ||
+ | Dans l'Opener, j'utilise aussi les opérateurs à des fins ergonomiques pour mettre en place des boutons. En fin de compte, chaque boutons est un opérateur auquel on a assigné une icône lors de son appel dans l'interface. | ||
+ | |||
+ | |||
+ | ==== c. custompath operator==== | ||
+ | |||
+ | Pour apprendre à faire un opérateur de base, suivez le lien suivant:[[http://www.blender.org/api/blender_python_api_2_57_release/bpy.types.Operator.html|Blender Operator Guide]]\\ | ||
+ | |||
+ | La première partie de l'opérateur consiste naturellement à déclarer les différents champs est variables nécessaire: | ||
+ | <code python> | ||
+ | #Entête avec héritage de l'object Operator de blender, nécessaire à chaque fois que l'on créer un opérateur | ||
+ | class OBJECT_OT_custompath(bpy.types.Operator): | ||
+ | bl_idname = "object.custom_path" | ||
+ | bl_label = "open" | ||
+ | __doc__ = "" | ||
+ | | ||
+ | filename_ext = "" | ||
+ | filter_glob = StringProperty(default="", options={'HIDDEN'},subtype='DIR_PATH') | ||
+ | | ||
+ | |||
+ | #Variable stockant le chemin choisi | ||
+ | filepath = StringProperty(name="File Path", description="Filepath importing store dir", maxlen= 1024) | ||
+ | #optionnel, récupère les fichiers séléctionnés | ||
+ | files = CollectionProperty( | ||
+ | name="File Path", | ||
+ | type=bpy.types.OperatorFileListElement) | ||
+ | </code> | ||
+ | |||
+ | Ici il s'agit du corps de l'opérateur, la fonction execute va s'éxecuter à chaque appel de l'opérateur. Il en est de même ,pour les fonctions draw et invoke. | ||
+ | <code python> | ||
+ | def execute(self, context): | ||
+ | #ajout du chemin sélectionné | ||
+ | ressources.Items.append((str(self.properties.filepath),str(self.properties.filepath),"")) | ||
+ | #Création du tuple temporaire | ||
+ | t=(str(self.properties.filepath),str(self.properties.filepath))) | ||
+ | #Mise à jour de la liste des dossier racine | ||
+ | interface.UpdateEnum(bpy.types.Scene,ressources.Items,'Store',t) | ||
+ | | ||
+ | #Sauvegarde du dossier sélectionné de manière persistante | ||
+ | persistence.write_config() | ||
+ | #Find de fonction | ||
+ | return {'FINISHED'} | ||
+ | | ||
+ | #Fonction d'affichage de l'explorateur de fichier | ||
+ | def draw(self, context): | ||
+ | self.layout.operator('file.select_all_toggle') | ||
+ | def invoke(self, context, event): | ||
+ | wm = context.window_manager | ||
+ | wm.fileselect_add(self) | ||
+ | return {'RUNNING_MODAL'} | ||
</code> | </code> | ||
---- | ---- |