Ngraph の[Add-in]-[Execute]メニューで登録されているアドインを 選ぶと Ngraph はそれを「Ngraphマクロスクリプト」として実行します。 アドインプログラムの登録は [Preference]-[Addin script]で行います。 以下のアドインプログラムは、Ngraph for X11 の配布状態で既に登録さ れています。
アドインプログラムはユーザが作成する事もできます。マクロロスクリプト には Ngraph 内部の設定パラメター全てを参照、変更する機能が ありますので、アドインプログラムは Ngraph の状態変数にアクセスして,現 在の Ngraph の状態を取得したり,変更したりすることができます。マクロス クリプトだけでもかなりの事ができるのですが、ユーザインターフェースなど の点から、独立した個々のプログラムを起動した方が効率が良い場合がありま す。マクロスクリプトには外部プログラムを起動する機能がありますので、こ れも可能ですが、その場合には
legend.nsc が起動する外部プログラムは legend.tcl (Tcl/Tkスクリプト)です。
まず legend.tcl が必要とする現在の Ngraph の状態を記述した中間ファイルを
作成します。
DATALIST=${system:0:temp_file}
object file -instance > "$DATALIST"
get file:0-! -id -field file x y type >> "$DATALIST"
1 demo1.dat 1 2 mark
SCRIPT=${system:0:temp_file}
wish legend.tcl "$DATALIST" "$SCRIPT"
new text text::x=0 text::y=0 text::text="STRING"
if [ -f "$SCRIPT" ];
then
new shell
shell::shell "$SCRIPT"
del shell
fi
system:0:unlink_temp_file "$DATALIST" system:0:unlink_temp_file "$SCRIPT"
外部プログラムを起動するアドインスクリプトは、
... 外部プログラムに必要な中間ファイルを生成する ...
SCRIPT=${system:0:temp_file}
外部プログラム名 中間ファイル名 "$SCRIPT"
if [ -f "$SCRIPT" ];
then
new shell
shell::shell "$SCRIPT"
del shell
fi
system:0:unlink_temp_file "$SCRIPT"
もちろん、Ngraphの現在の状態を取得する必要がなければ、
SCRIPT=${system:0:temp_file}
外部プログラム名 "$SCRIPT"
if [ -f "$SCRIPT" ];
then
new shell
shell::shell "$SCRIPT"
del shell
fi
system:0:unlink_temp_file "$SCRIPT"
だけで十分です。
アドインスクリプトの中からデータを直接扱う事もできます。その例として
text-in.nsc を説明します。次のようなデータファイルが有るとします。
=====test.dat========= 0 0 sampleA 1 1 sampleB 2 2 sampleC ======================
このスクリプトでは、まず dialog オブジェクトを使って、legend-text のカラ
ム数を入力させ、変数(COLUMN)に代入します。
new dialog
COLUMN=${dialog::input:'Input legend-text column'}
del dialog
file:0:opendatac
while file:0:getdata
do
... テキストの設定 ...
done
file:0:closedata
new text
text::x=${file:0:coord_x}
text::y=${file:0:coord_y}
text::text=`get file:0 -field column:"${file:0:line} ${COLUMN}"`
一般的にデータを扱うアドインスクリプトは、
file::opendatac while file::getdata do ... 目的の操作 file::data_x file::data_y file::coord_x file::coord_y file::line が使える done file::closedata