Crée ton propre module
Il est possible de créer ses propres module Châtaigne afin d’ajouter des fonctionnalités ou bien supporter un système ou une machine spécifique.
Les Custom modules se situent dans le dossier <Documents>/Chataigne/modules
Pour créer un Custom module, allez dans le dossier modules
de Chataigne, puis créez un nouveau dossier. Dans ce dossier, vous allez avoir besoin d’un ficher module.json
qui contiendra les metadata, ainsi que les définitions de structure du module (values, parameters, commands, etc). Les définitions pour le fichier module.json
à la suite de ce paragraphe.
La plupart du temps, vous allez vouloir ajouter un fichier de script au module. Ce fichier se chargera de toute la logique du module. Vous pouvez apprendre à écrire un script de module ici : Module Scripts
Si vous appliquez des changements au fichier module.json
, n’oubliez pas de faire la manipulation suivante File > Reload custom modules
si Châtaigne est en cours d’exécution. Vous devrez aussi supprimer et relancer le module dans Châtaigne.
Il est aussi possible d’ajouter une de icône de 32x32 pixels nommé icon.png
dans le dossier du module pour afficher une icône customisé.
Voici un exemple de Custom module: https://github.com/tommag/Sample-Chataigne-module . Vous pouvez vous en servir de base pour créer votre future module, et n’oubliez pas de le partager avec la communauté si vous pensez que ça peut être utile !
Il est également possible de créer un module spécifique à un projet, en plaçant le dossier du module dans un dossier "modules" dans le même dossier que le fichier noisette. Dans ce cas, le module ne sera visible que quand le fichier noisette sera chargé.
Définition du fichier module.json
Si vous n’avez jamais entendu parler du json, vous trouverez une courte explication en suivant ce lien : https://learnxinyminutes.com/docs/json/
Module metadata
Remplacer le module de base
Les clefs JSON suivantes vont vous permettre de décider ce que vous voulez garder du module de base. Vous pouvez trouver les « short name » des paramètres que vous voulez utiliser en survolant le paramètre avec la souris, et regarder la « control address ».
Paramètres et valeurs personnalisées
Consultez la section Types de données pour en savoir plus sur les différents types de données et les options que vous pouvez utiliser.
Commandes personnalisées
Vous pouvez également définir des commandes personnalisées. Chaque commande est liée à une "fonction de rappel" (callback function) dans le script du module.
Voici les paramètres de la commande :
Example:
"commands": { "Custom command": { "menu":"", "callback":"customCmd", "parameters": { "Value": { "type":"Integer", } } }
Scripts
Vous pouvez trouver la documentation pour les scripts de module ici : Module Scripts
Types de données
Chaque fois que vous devez spécifier comment traiter certaines données (c'est-à-dire pour les paramètres, les valeurs ou les paramètres de commande), vous disposez des options suivantes.
Conteneurs
Les données déclarées avec Container
n'ont pas de valeur mais sont utilisées pour regrouper d'autres variables. Elle possède également une propriété de type collapsed
:
Example:
"System parameters": { "type":"Container", "collapsed":true, "First variable": { "type":"Float", "default":20, "description":"This is the first variable"}, "Second variable": { "type":"Float", "default":0} }
Enums
Le type Enum
est utilisé pour permettre à l'utilisateur de choisir entre un ensemble de valeurs. Il possède une propriété options
supplémentaire:
Example:
"Test Enum": { "type":"Enum", "options": { "All":"all", "Single":"single" } }
Les types Float UI
Lorsqu'on définit une variable de type Float
, il existe une propriété ui
property, supplémentaire, utilisée pour personnaliser l'interface graphique (GUI).
Traitement avancé des données
Vous pouvez également modifier l'interface utilisateur (UI) en fonction des valeurs d'autres variables. Par exemple, vous pouvez vouloir afficher différentes options en fonction de la valeur d'une Enum
.
Pour ce faire, vous devez ajouter la propriété dependency
à la variable, puis ajouter les propriétés suivantes (toutes obligatoires) :
Exemple : Cet exemple alterne entre deux options différentes en fonction du choix de l'enum.
"parameters": { "My variable type": { "type":"Enum", "options": { "Float":"float", "Integer":"int" } }, "Variable (float)": { "type":"Float", "dependency": { "source":"myVariableType", "value":"float", "check":"equals", "action":"show" } }, "Variable (int)": { "type":"Integer", "dependency": { "source":"myVariableType", "value":"int", "check":"equals", "action":"show" } } }