ユーザーインターフェイス(1):Panel & Button
ユーザーインターフェイス(1):Panel & Button
いつも小難しい話ばかりなので、今回はパネルを使った実践的なユーザーインターフェイス作りについて解説しよう。
■まずは、以下のようにコマンドラインで基本データを作成していただきたい。
・make/O/D/N=100 wave0
・Display wave0
・wave0=exp(-(p-50)^2/10^2)+gnoise(0.01)
・ModifyGraph mode(wave0)=3,marker(wave0)=8,opaque(wave0)=1
上のようなグラフが作成されるはずだ。
■次に、Windows -> New からPanel メニューを選択する。そうすると、Panel0 が表示されるはずだ。このPanelを選択した状態では、IGORのメニューに、Panelメニューが新たに加わる。そこで、そのメニューからShow Tools を選ぶと、以下のように、左に二種類のボタンが出現する。
このままではボタンやチェックは作成できないが、下のボタンを押すと以下のようなツールが出現する。
上の図のように、ボタンを追加してみよう。そうするとボタン制御のパネルが現れる。
ここでは難しい設定をせず、とりあえずTitleを「Fit」とだけ書き換えて、Do It しよう。 そうするとPanelウインドウに、Fitボタンが現れるはずだ。 続けて、IGOR の Panel メニューから Add Controls を選び、さらに「Add Check Box…」を予備だそう。設定ウインドウが現れたら、Titleには「hold base」と打ち込んでみよう。
■次に、チェック専用のプログラム(サブルーチン)を作ってみる。その前に、コマンドラインで、
variable/G HoldCheckVariable=0
と入力しておこう。これは後にユーザーチェック状態を記憶させるための変数だ。ユーザーがチェックすれば1をセットし、はずせば0をセットし、これらの値をメインプログラムで判定させる仕組みだ。今回は、HoldCheckVariableという名前にしたが、自分がわかれば別に何でもよい。
さて、パネル上に作成したチェックボックスをダブルクリックしてみよう。そして再び出現したチェックの設定ウインドウの中央に、Procedure _none_ があり、その右に、New…というボタンがあるのをお気づきだろうか。このボタンを押すと、チェックボックスの制御専用のプログラムを書くことができる。IGORを深く理解していれば一般のProcedureウインドウで、すべてのプログラムを書くことは可能だが、今回はこの方法でチャレンジしてみよう。
さて、New… ボタンを押すと、以下のようなProcedureウインドウが出現する。
ここでプログラムの中に、
HoldCheckVariable=checked
を加えよう。(Endの上に書くこと)
Save Procedure Nowのボタンを押して、プログラムの保存する。さらに、チェックの制御ウインドウで、Changeを押すとひとまず作業終了だ。
あと、Procedure ウインドウを押して、
#pragma rtGlobals=1 // Use modern global access method.
の行は削除しておいて欲しい。
■メインプログラムを書く前に少しだけ準備が必要だ。グラフをクリックして最前面に出したあと、
・Duplicate/O wave0 wave0F
・AppendToGraph wave0F
とコマンドラインで入力して欲しい。これは、後にフィッティングの結果を自動モードではなく、自分が指定した wave に格納させるためだ。
■さて、パネルの Fit ボタンをダブルクリックし、さらにNew…ボタンでプログラムの作成ウインドウを開こう。
string/G HoldSt=num2str(HoldCheckVariable)+”000″
K0 = 0
CurveFit/H=HoldSt gauss wave0[0,100] /D=wave0F
の3行をプログラムのボディに組み込んで、Procedure の保存後に、設定パネルを閉じれば完成だ。
このプログラムは、作成したデータをガウス関数でフィットするプログラムだが、ノイズを加えているため、コンピュータが回帰した場合、ベースラインがゼロちょうどにはならない。そこで、チェックボタンを押した場合には、必ずベースラインをゼロにセットして、それ以外のパラメータをフィッティングするようにした。
■パネルの左上のボタンを押して、ツールモードからプレビューモードに切り替えたら、いよいよプログラムは動作する状態だ。最後は Panel メニューの Hide Tools で通常のウインドウに戻そう。
■チェックを入れると、ヒストリーに打ち出される y0 の結果がゼロになるはずだ。逆にチェックをはずすと、ベースラインもフロートパラメータになるので、非常に小さいがゼロではない値が返るはずだ。