Console Lua
La console Lua de MindDev permet de créer des procédures de création et outils de modification des protocoles ouverts dans MindDev. Cette console permet d'étendre les fonctionnalités de productivité en créant des scripts Lua pouvant avoir des comportements très complexes et précis.
Console Lua
La console Lua permet d'exécuter des opérations complexes personnalisées.
Obtention des commandes de console
Une modification dans l'interface graphique provoque une écriture de la commande correspondante dans la fenêtre de la console LUA. C'est très utile lorsque l'on veut programmer son script LUA sans connaitre toutes les propriétés des objets.
Commandes de base
Voici la liste des commandes de base. Cette liste est non exhaustive et d'autres commandes sont disponibles.
Commande | Exemple | Description |
---|---|---|
Commands | Commands() |
Affiche l'ensemble des commandes de base disponibles |
Commands | Commands("Tools") |
Affiche l'ensemble des commandes disponibles pour le jeu d'outil passé en paramètre |
Print(Protocol.MaxTime) |
Affiche la valeur du paramètre | |
Get | Get(Protocol.Children[0]) |
Retourne l'objet passé en paramètre |
Create | Create("TimerSuccess") |
Crée un objet du type passé en paramètre et le retourne |
CreateNode | CreateNode("TimerSuccess") |
Crée un objet du type passé en paramètre et le retourne (alias de Create) |
Delete | Delete(Selection) |
Supprime, si possible, l'objet passé en paramètre |
DeleteNode | DeleteNode(Selection) |
Supprime, si possible, l'objet passé en paramètre (alias de Delete) |
Children | Children(Selection) |
Affiche la liste des enfants de l'objet passé en paramètre |
AddNode | AddNode(Selection, enfant) |
Ajoute le second paramètre aux enfants du premier |
Properties | Properties(Protocol) |
Affiche les propriétés disponibles de l'objet passé en paramètre |
Methods | Methods(Protocol) |
Affiche les fonctions disponibles de l'objet passé en paramètre |
Affichage de l'ensemble des commandes Lua
Les commandes spécifiques à MindDev commencent par une majuscule, tandis que les commandes de base de Lua commencent par des minuscules.
Print vs. print
La commande Print
spécifique à MindDev permet l'écriture dans la console, par contre, la commande Lua de base print
n'écrira rien.
Accès aux objets
L'accès aux objets se fait simplement à l'aide de quelques mots-clés :
Mot-clé | Description |
---|---|
Protocol |
Donne accès au protocole en cours de conception |
Selection |
Donne accès au nœud sélectionné |
Trial |
Donne accès au nœud essai parent du nœud sélectionné (si disponible) |
Experiment |
Donne accès au nœud expérimentation parent du nœud sélectionné (si disponible) |
Nodes["nom_objet"] |
Donne accès à l'objet par son nom. |
Accession de l'objet par son nom dans la console LUA
L'accession à un objet peut poser problème dans le cas ou plusieurs objets ont le même nom. Dans ce cas, il vaut mieux s'y référer via son chemin hierarchique
Un ensemble de commandes d'accès permet la navigation dans l'arbre de protocole :
Appel | Exemple | Description |
---|---|---|
GetChildByName | Protocol.GetChildByName("Experiments") |
Retourne l'objet enfant par son nom |
GetChild | Selection.GetChild(0) |
Retourne l'objet enfant par son indice dans la liste des enfants |
Parent | Selection.Parent |
Retourne l'objet parent |
Accès au logiciel
La commande Software
donne accès à l'interface du logiciel.
Commandes Software
La commande Methods(Software)
retourne l'ensemble des commandes du logiciel disponibles
Voici une liste de commandes logicielles importantes :
Commande | Description |
---|---|
Software.CreateProtocol() |
Crée un nouveau protocole |
Software.CreateVRProtocol() |
Crée un nouveau protocole VR |
Software.GetCurrentProtocol() |
Obtient le protocole activé |
Software.Help() |
Lance l'aide en ligne |
Software.Undo() |
Annule |
Software.Redo() |
Refait |
Chargement de scripts au lancement du logiciel
Il est possible de précharger un ensemble de scripts au lancement du logiciel. Pour ce faire, il convient de placer ses fichiers Lua (extension .lua) dans le Scripts/Startup/
du dossier de données.
Chargement de scripts
Le chargement de script au démarrage ne permet pas l'exécution directe de commandes telles que Selection
ou Protocol
. Il sert principalement à la déclaration de fonctions qui peuvent contenir ces mots clés, mais qui seront appelées plus tard, dans un context donné.
Script Lua (Exemple)
Il est tout à fait possible de créer des scripts Lua pour effectuer des opérations non prévues dans les fonctionnalités générales du logiciel.
La console dispose d'un bouton permettant de charger un script Lua. Le chargement évaluera le fichier.
Chargement dynamique de script Lua
L'interface dispose d'un bouton de chargement de fichierr avec l'extension .lua. Il permet de tester rapidement un script externe.
Script Lua
Il est possible de créer des fonctions spécifiques en Lua afin de pouvoir les réutiliser plus tard.
Ce script est compatible avec une utilisation en préchargement au lancement du logiciel.
function GenerateStroopExperiment(trialCount, ratio, createNew)
--On creer un nouveau protocol ou on utilise le protocol selectionné
local pp=Protocol;
if createNew then
Software.CreateProtocol()
pp = Software.GetCurrentProtocol()
end
--On recherche la liste d'Experiment
local expList = pp.GetChildByName("Experiments")
--On la vide
expList.ClearList()
--On ajoute une nouvelle experimentation
expList.AddNode("StroopColorMatchExperiment")
--On récupère cette nouvelle experimentation
local stroopExp = pp.GetChildByName("Experiments").GetChild(0)
--On récupère les essais
local trials = stroopExp.GetChildByName("Trials")
--On vide la liste
trials.ClearList()
--On creer une boucle pour creer les essais
for i=0, trialCount-1 do
--Ajout d'un essai
trials.AddNode("StroopColorMatchTrial")
local current = trials.GetChild(i)
--Renommage
current.Name="Stroop Trial" .. i
--Ajout d'une description
current.Description = "Lua Generated"
--Configuration de l'essai
current.LeftWordIndex = math.random(0,3);
current.RightWordIndex = math.random(0,3);
--Affectation du color Match/NoMatch
if(math.random()>ratio) then
current.WaitedAnswerButtonName="MatchAnswer"
current.Name="[MATCH] Stroop Trial" .. i
current.GetChildByName("Custom Attributes").GetChild(0).Value = 1
else
current.WaitedAnswerButtonName="NoMatchAnswer"
current.Name="[NOMATCH] Stroop Trial" .. i
current.GetChildByName("Custom Attributes").GetChild(0).Value = 0
end
end
end
--Affichage d'une aide d'usage
Print("Usage : GenerateStroopExperiment(TrialCount, Ratio, createNewProtocol)")
Print("Example : GenerateStroopExperiment(20, 0.5, true)")