JSLとプリファレンスやあ、
背景: 最近、私たちのアドインの 1 つで、アドインが具体的に上書きしていない既定のプラットフォーム設定をユーザーが変更したというランインが発生しました。 この場合、それは [モデル ダイアログ] -> [ダイアログを開いたままにする] 設定であり、その結果、多数の [モデルの適合] ウィンドウが開きました (問題のアドインが複数のモデルを構築していたため)。 これは、スクリプトの Fit Model 呼び出しで Keep dialog open(0) オプションを明示的に設定することで簡単に解決できました。
機会: 誰かがプラットフォームで仮説的に変更できる可能性のあるすべてのオプションを詳しく説明したくはありません。 一部のプラットフォームでは、設定に膨大な数のオプションがあります。 Ignore Platform Preferences というものに出くわしましたが、これは仮想的に追加できる可能性がありますが、その行はすべての JSL プラットフォーム呼び出しに対して繰り返し入力する必要があります。 スクリプトの開始時に実行できる包括的な呼び出しはありますか? Names Default to Here に似ているかもしれませんが、代わりに Use Default Preferences Here やそのようなものがありますか? したがって、システム設定にはまったく触れていませんが、アドインの実行時にどのような動作が予想されるかは正確にわかっています。 このオプションは利用できないと考えていますこの議論.
また、Scripting Index と JMP ヘルプでは、Ignore Platform Preferences メッセージが単に JMP にプラットフォームのデフォルトを強制的に使用させるのか、それとも別のことを行っているのか (すべての設定がチェックされていないと仮定するなど) についても不明です。 ここに洞察はありますか?
ありがとう、
マイケル
Re: 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;
Re: JSLとプリファレンス私はこれのファンではありません。 意図的にバグのあるコードを書いているわけではありませんが、実行中にアドインがエラーをスローする原因となる、トラップ/キャッチしていない入力の組み合わせをユーザーが思いつくことがあります。 これが発生した場合、アドインの開始時にキャプチャされた設定はリセットされません。 実行中のスクリプトに対してローカルでこれを行う単純な 1 行の JMP コマンド (変数を名前空間に制御する方法と同様) を使用したいと思います。 アドイン コード全体を Try に入れることもできると思いますが、それではエラー キャッチの目的が無効になります...
Re: JSLとプリファレンスこれは少し侵略的になりますが、クリエイティブな JMPer 向けに大規模に展開されたアドインの場合、オプションになる可能性があります。
スクリプトの開始時に、設定を取得して保存できます。
次に、設定設定を使用して、すべての設定を強制的にデフォルトにするか、好きなものにします。
スクリプトを実行し、最後に set Preferences を使用して、最初に取得した設定を復元します。
誰かの好みを一掃すると、彼らは少し不快になるので、これを行うことを選択した場合は、元に戻すように注意してください.