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 大規模部署的插件來說,它可能是一種選擇。
在腳本的開頭,您可以獲得首選項並存儲它。
然後使用設置首選項強制所有首選項為默認值,或者您喜歡的每個選項。
運行您的腳本,然後在最後使用設置首選項來恢復您在開始時捕獲的首選項。
如果你抹去某人的偏好,他們會變得有點暴躁,所以如果你選擇這樣做,請小心讓他們退縮。