JSL et PréférencesSalut,
Contexte : Récemment, nous avons eu un rodage sur l'un de nos compléments où un utilisateur avait modifié une préférence de plate-forme par défaut que notre complément n'a pas spécifiquement remplacée. Dans ce cas, il s'agissait de la préférence Boîte de dialogue Modèle -> Garder la boîte de dialogue ouverte et le résultat était l'ouverture d'un grand nombre de fenêtres Ajuster le modèle (puisque le complément en question construisait plusieurs modèles). Cela a été facilement résolu en définissant explicitement l'option Keep dialog open(0) dans les appels Fit Model de notre script.
Opportunité : Je ne veux vraiment pas énoncer toutes les options possibles que quelqu'un POURRAIT hypothétiquement changer dans une plate-forme. Certaines plateformes ont un grand nombre d'options dans les préférences. J'ai rencontré quelque chose appelé Ignorer les préférences de la plate-forme qui pourrait hypothétiquement être ajouté, mais cette ligne doit encore être saisie à plusieurs reprises dans chaque appel de la plate-forme JSL. Existe-t-il un appel global qui peut être exécuté au début d'un script, peut-être similaire à Names Default to Here, mais à la place, utilisez les préférences par défaut ici ou quelque chose comme ça? Ainsi, les préférences système ne sont pas du tout touchées, mais nous savons exactement à quel comportement s'attendre lorsqu'un complément s'exécute ? Je pense que cette option n'est pas disponible sur la base de cette discussion .
Il n'est pas clair non plus dans l'index de script et l'aide de JMP si le message Ignorer les préférences de la plate-forme force simplement JMP à utiliser les valeurs par défaut de la plate-forme, ou s'il fait autre chose (comme supposer que toutes les préférences ne sont pas cochées ?). Des idées ici?
Merci,
Michael
Re: JSL et Préférencesce serait une bonne chose à avoir, peut-être l'ajouter à la liste de souhaits.
L'approche draconienne est assez efficace. Lorsque je fais des exercices pratiques, j'utilise quelque chose comme ça dans un script de configuration.
Cela me rend fou quand les gens se présentent et ont des préférences folles, puis ils se plaignent que les exemples de cours ne ressemblent pas à ce qu'ils voient à l'écran.
old=getpreferences();
set old=expr(set preferences());
for(i=1, i<= narg(old), i++,
insert into(set old, arg(old,i)););
//you script here
//including setting all the preferences you want to control
// at the end restore
setold;
Re: JSL et PréférencesJe ne suis pas fan de ça. Je n'écris pas intentionnellement du code bogué, mais il arrive parfois qu'un utilisateur imagine une combinaison d'entrées que je n'intercepte pas/n'attrape pas et qui peut provoquer une erreur lors de l'exécution d'un complément. Si cela se produit, les préférences capturées au démarrage du complément ne sont pas réinitialisées. Je préférerais une simple commande JMP d'une ligne (similaire à la façon dont nous contrôlons les variables dans les espaces de noms) qui ferait cela localement pour le script en cours d'exécution. Je suppose que l'on pourrait mettre l'intégralité du code complémentaire dans un essai, mais cela va à l'encontre du but de la capture d'erreur ...
Re: JSL et PréférencesCela devient un peu envahissant, mais pour un complément massivement déployé pour les JMPers créatifs, cela pourrait être une option.
Au début de votre script, vous pouvez obtenir les préférences et les stocker.
Ensuite, utilisez les préférences définies pour forcer toutes les préférences à être par défaut, ou ce que vous aimez.
Exécutez votre script, puis à la fin, utilisez set preferences pour restaurer les préférences que vous avez capturées au début.
Si vous effacez les préférences de quelqu'un, il devient un peu irritable, alors faites attention à ne pas le faire si vous choisissez de le faire.