JSL 和首选项你好,
背景:最近我们在我们的一个加载项中遇到了一个问题,其中用户更改了我们的加载项没有专门覆盖的默认平台首选项。 在这种情况下,它是模型对话框 -> 保持对话框打开首选项,结果是打开了大量的拟合模型窗口(因为有问题的插件正在构建多个模型)。 这很容易通过在我们脚本的拟合模型调用中显式设置选项保持对话框打开(0)来解决。
机会:我真的不想详细说明某人可以在平台中假设更改的所有可能选项。 某些平台的首选项中有大量选项。 我遇到了一个叫做 Ignore Platform Preferences 的东西,假设可以添加它,但是仍然需要在每个 JSL 平台调用中重复输入该行。 是否有一些可以在脚本开始时运行的总体调用,可能类似于 Names Default to Here,但改为 Use Default Preferences Here 或类似的东西? 所以系统首选项根本不会被触及,但我们确切地知道加载项运行时会发生什么行为? 我认为此选项不可用这个讨论.
脚本索引和 JMP 帮助中也不清楚忽略平台首选项消息是否只是强制 JMP 使用平台默认值,或者它是否正在执行其他操作(例如假设所有首选项都未选中?)。 这里有什么见解吗?
谢谢,
迈克尔
回复:JSL 和首选项那将是一件好事,也许将其添加到愿望清单中。
严厉的方法非常有效。 当我进行培训时,我会在设置脚本中使用类似的东西。
当人们出现并设置了疯狂的偏好时,这让我抓狂,然后他们抱怨课程示例看起来不像他们在屏幕上看到的那样。
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;
回复:JSL 和首选项我不喜欢这个。 我不是故意编写有错误的代码,但偶尔会发生用户梦到我没有捕获/捕获的输入组合,这可能导致加载项在执行期间引发错误。 如果发生这种情况,在加载项开始时捕获的首选项不会被重置。 我更喜欢一个简单的单行 JMP 命令(类似于我们将变量控制到命名空间中的方式),它将在本地运行的脚本中执行此操作。 我想可以将整个加载项代码放入 Try 中,但这违背了捕获错误的目的......
回复:JSL 和首选项这有点侵入性,但对于为创意 JMPers 大规模部署的插件来说,它可能是一种选择。
在脚本的开头,您可以获得首选项并存储它。
然后使用设置首选项强制所有首选项为默认值,或者您喜欢的每个选项。
运行您的脚本,然后在最后使用设置首选项来恢复您在开始时捕获的首选项。
如果你抹去某人的偏好,他们会变得有点暴躁,所以如果你选择这样做,请小心让他们退缩。