CUI関数

 CUI関数は、メニューエリア上にユーザインターフェイスを提供します。 ユーザはCUI関数を用いることで、スクリプト中からインタラクティブかつヴィジュアルにユーザと対話ができます。
VOID cuimenu VOID
CUIメニューを実行します。

 
VOID flushmsg VOID
メッセージエリアをクリアします。

 
BOOL edittext (STRING1, STRING2)
STRING1を編集するためのユーザインターフェイスを提供します。 STRING2はキャプションです。キーバインドはemacs-likeになっています。 リターンキー(Ctrl+m)が押されると1を返し、編集結果を$_RETに格納します。 エスケープキー(Ctrl+g)が押されると0を返します。
edittextは以下のようなインターフェイスを提供します。



BOOL editfilename (STRING1, STRING2)
ファイル名STRING1を編集するためのユーザインターフェイスを提供します。 STRING2はキャプションです。 editfilename関数はedittext関数と似ていますが、 ファイル名を編集するために特化したインターフェイスです。 edittext関数と同様、キーバインドはemacs-likeになっています。 またtcshやbashなどのシェルのように、TABキー(Ctrl+i)でファイル名の補完(completion)が行えます。 edittext関数は一般的なテキストを編集するためのものですから、補完機能はありません。 またホームディレクトリとして、"~"を用いることも可能です。
リターンキー(Ctrl+m)が押されると1を返し、編集結果を$_RETに格納します。 エスケープキー(Ctrl+g)が押されると0を返します。
editfilenameは以下のよ うなインターフェイスを提供します。



BOOL objectmove (INT1, INT2, ....)
INT1、INT2、...で与えられる座標を平行移動するためのユーザインターフェイスを提供します。
(x1, y1, x2, y2) = (INT(4i), INT(4i+1), INT(4i+2), INT(4i+3))のように引数4つで1つの矩形を表現します。 従ってトータルの引数の数は4の倍数でなければなりません。 また座標値は絶対座標系(用紙の左上を(0, 0)とし、y軸の正方向が下)でなければなりません。
このような形式で与えられた複数の矩形を、 objectmoveはまずビューアに表示します。またobjectmoveはメニューエリアに以下のようなユーザインターフェイスを提供します。 ユーザはキーにより、複数の矩形を平行移動することができます。
ユーザがリターンキー(Ctrl+m)を押すと最終的な矩形位置を@_RETに格納し1を返し、エスケープキー(Ctrl+g)を押すと0を返します。



BOOL inputparts (INT1, INT2)
INT1で与えられるpartsを入力するためのユーザインターフェイスを提供します。INT1には、1(line)、2(polyline)、3(rectangle)、4(circle)、5(cut)の5つの値のいずれかを与えます。現在の仕様では3、4、5の区別はありません。またINT2にはnodeの補間方法、0(polyline)、1(closed polyline)、3(P-spline)、4(closed P-spline)のいずれかを与えます。現在の仕様では、0と3、1と4の区別はありません。 また2は指定できません。
inputparts関数はビューアに十字形のカーソルを表示し、メニューエリアには以下のようなユーザインタフェイスを提供します。 ユーザはノード位置をリターンキー(Ctrl+m)で入力します。 line、rectangle、circle、cutの場合は、ノードを2点を入力する必要があります。 polylineの場合入力点数に決まりはありません。 最終点を入力したら'x'を押してノード入力を終了します。 この関数は設定が正常に終了すると1を返します。 また設定を中断(ESCまたはCtrl+m)すると0を返します。 関数が正常に終了した場合、@_RETにpartsの座標を絶対座標で返します。 line、rectangle、circle、cutの場合、@_RET = (x1,y1, x2, y2)のような内容が返ります。 polylineで入力したノード数が3個の場合、 @_RET = (x1, y1, x2, y2, x3, y3)が返ります。



BOOL trimming NULL
座標軸表示範囲をトリミングするためのユーザインターフェイスを提供します。 trimming関数が実行されると、ビューアには十字線カーソルが表示され、 メニューエリアには下図のユーザインターフェイルが提供されます。 ユーザはキー操作により十字カーソルを移動させ、リターンキー(Ctrl+m)により2点を 設定してください。 設定が終了すると1、ESCキー(Ctrl+g)により設定が中断されると0が返します。 また設定が正常に終了した場合、@_RET = (x1,y1, x2, y2)が返されます。 この場合x1、x2はトリミングにより得られたX軸の両端値、y1、y2はトリミングにより得られたY軸の両端値です。 これらの値は絶対座標値ではなく、座標軸の表示範囲であることに注意して下さい。 またT、R軸はトリミングできません。



BOOL watch NULL
座標軸内の値を調べるためのユーザインターフェイスを提供します。 watch関数が実行されると、ビューアには十字線カーソルが表示され、 メニューエリアには下図のユーザインターフェイルが提供されます。 ユーザはキー操作により十字カーソルを移動させ、 座標値を読み取ることができます。座標値はメニューエリアに表示されます。 リターンキー(Ctrl+m)で1、ESCキー(Ctrl+G)で0を返します。 またリターンキー(Ctrl+m)で終了した場合、@_RET = (x, y, t, r, wx, wy)が設定されます。 この場合xは得られたX軸値、yはY軸値, tはT軸値、rはr軸値、(wx, wy)は用紙左上を原点とした絶対座標(1/20point単位)です。



BOOL trace INT
INTで与えられるインデックスを持つデータオブジェクトのデータ値をカーソルでトレースするためのユーザインターフェイスを提供します。 trace関数は選択されたデータオブジェクトのデータ値上に十字カーソルを表示しま す。 またメッセージエリアには、以下のようなユーザインターフェイスを提供します。 ユーザはキー操作により十字カーソルを移動させ、データ点の値を読み取ることができます。 データ値はメニューエリアに表示されます。 リターンキー(Ctrl+m)で1、ESC(Ctrl+g)で0が返されます。 またリターンキー(Ctrl+m)で終了した場合、@_RET =(DOUBLE x, DOUBLE y, INT index)が設定されます。 この場合(x, y)はカーソルのあるデータ点の値です。またindexは、0からはじめたその点の番号です。



VOID message STRING
STRINGを以下の図のようにメッセージとして表示します。キー入力があると終了します。



BOOL changenodes (INT1, INT2、...)
partsのnodeを移動するためのユーザインターフェイスを提供します。 複数のノードの絶対座標を、(x1, y1, x2, y2, x3, y3, ....)のような形式で引数に渡します。 changenodes関数は、(INT1, INT2、...)を直線で結び、ビューアに表示します。 またメニューエリアには下図のようなユーザインターフェイスを提供します。 ノードの移動は方向キーでも行えますが、emacs-likeなキーバインディングも使用できます。 またノードの選択はn、pキーで行います。nでフォーカスが移動し、 pで逆方向に移動します。ノードの追加はCtrl+yで、削除はCtrl+dで行えます。
編集の終了はリターンキー(Ctrl+m)で、編集の破棄はESCキー(Ctrl+g)で行います。 changenodes関数は、編集が終了した場合1、編集が破棄された場合0が返します。 編集が終了した場合、@_RETに変更されたノードの絶対座標が渡されます。



BOOL selectfile (INT, STRING)
ファイルを選択するための以下のようなユーザインターフェイスを提供します。 INTが0の場合単一選択、1の場合複数選択になります。 またSTRINGはファイル表示のフィルタであり、正規表現で与えます。



mを押すと、以下のような詳細表示とトグルに変わります。



selectfile関数には以下のように多くの機能がキーバインドされています。

 
Ctrl+n
カーソルキーの下移動
Ctrl+p
カーソルキーの上移動
SPACE
ファイルの選択、選択解除(トグル)
x、@、Ctrl+SPACE(Unixのみ)
選択を確定後終了
ESC、Ctrl+g
選択の破棄後終了
m
簡易表示、詳細表示の切り替え
a
表示ファイルの全選択
c
表示ファイルの全選択解除
n
名前でソート
t
ファイル作成時刻でソート
s
ファイルサイズでソート
o
ソート順の変更(トグル)
g
表示ファイルのフィルタリング。正規表現で指定。
d
カレントディレクトリの変更。パス名の補完機能あり。
v
カーソル位置のファイルの内容表示。スペースキーでページ送り可能。スペースキー以外のキーで表示終了。

 
ファイル選択後'x'または'@'(Unix版ではCtrl+SPACEキーも有効)によりselectfile関数は1を返し終了します。 ESC(Ctrl+g)キーによりファイル選択を中断すると0を返します。 selectfile関数が1を返す場合、@_RETに選択されたファイル名がフルパスで設定されます。

 
BOOL selectobject (STRING、INT)
オブジェクトの一覧を表示し、オブジェクトに選択属性を設定するためのユーザインターフェイスを提供します。 INTが0の場合単一選択、1の場合複数選択になります。 またSTRINGが'frame'、'data'、'parts'のいずれかを指定します。 以下の図は、'data'の場合の表示例です。



selectobject関数は以下のような機能がキーバインドされています。

 
Ctrl+n
カーソルキーの下移動
Ctrl+p
カーソルキーの上移動
SPACE
オブジェクトの選択、選択解除(トグル)
CR、Ctrl+m
設定の確定後終了
ESC、Ctrl+g
設定の破棄後終了
a
オブジェクトの全選択
c
オブジェクトの全選択解除
r
選択状態と非選択状態の反転

 
selectobject関数は、STRINGの値により、表示レコードが異なります。

 
[STRING='frame'の場合の表示レコード]

 
S
インスタンスの選択状態
aid
array id
iid
instance id
C
カレント座標軸
D
表示、非表示
frametype
フレームタイプ
position
フレームの位置

 
[STRING='data'の場合の表示レコード]

 
S
インスタンスの選択状態
aid
array id
iid
instance id
T
F:ファイルデータ、 M:メモリデータ
rx
xデータ参照軸
ry
yデータ参照軸
points
読み込みデータ点数
D
表示、非表示
filename
数値データファイル名
line
データ線スタイル
color
データ線色
marker
マーカスタイル
color
マーカ内部色

 
[STRING='parts'の場合の表示レコード]

 
S
インスタンスの選択状態
aid
array id
iid
instance id
type
partsのタイプ
text
テキスト
font
テキストのフォント名
L-color
輪郭色
B-color
内部色

 
設定が確定後終了すると1、設定破棄後終了するとselectobject関数は0を返します。 また確定後終了した場合、選択されたインスタンスはメンバselectedがtrueに設定され選択状態になります。

 
BOOL selectitem (STRING1, STRING2, .....)
STRING1をキャプションとし、STRING2以降を一覧表示し、STRING2以降の単一項目を選択するための以下の図のようなユーザインターフェイスを提供します。 リターン(Ctrl+m)により設定が正常に終了すると1、ESCキー(Ctrl+g)により設定を中断すると0が返されます。 設定が正常に終了した場合、$_RETに選択された文字列が返されます。



 
selectitem('demonstration of selectitem', '&apple', '&orange', '&lemon');
の表示例です。文字の直前に"&"を入れると、この文字がホットキーになります。

 
BOOL selectlistitem (STRING1, STRING2, .....)
STRING1をキャプション、STRING2を初期カーソル位置とし、STRING3以降を一覧表示します。リターン(Ctrl+m)により設定が正常に終了すると1、ESCキー(Ctrl+g)により設定を中断すると0が返されます。また設定が正常に終了した場合、$_RETに選択された項目の番号が返されます。項目番号は、リストの最初(STRING3)が0です。 selectitemとの大きな違いは、各項目が一行づつ表示されること、選択された項目が、文字列でなく0を起点とした番号で返されることです。

 
VOID escapecuimenu VOID
VOID restorecuimenu VOID
これらの関数はUnix環境のみで利用できます。 Win32環境では絶対に使わないでください。 escapecuimenuは一時的にCUIMENUを隠しshellに画面を戻します。 CUIMENUへの復帰はrestorecuimenuで行います。 escapecuimenuをコールしたら、必ずresotorecuimenuをコールしてください。



以下の関数はframe、axis、data、... 等のメンバをヴィジュアルに設定するためのものです。
 

VOID framemenu VOID
frameの設定を行ないます。

 
VOID xbasemenu VOID
x軸のbaseの設定を行ないます。

 
VOID xrangemenu VOID
x軸のrangeの設定を行ないます。

 
VOID xtickmenu VOID
x軸のtickの設定を行ないます。

 
VOID xsubtickmenu VOID
x軸のsubtickの設定を行ないます。

 
VOID xlabelmenu VOID
x軸のlabelの設定を行ないます。

 
VOID ybasemenu VOID
y軸のbaseの設定を行ないます。

 
VOID yrangemenu VOID
y軸のrangeの設定を行ないます。

 
VOID ytickmenu VOID
y軸のtickの設定を行ないます。

 
VOID ysubtickmenu VOID
y軸のsubtickの設定を行ないます。

 
VOID ylabelmenu VOID
y軸のlabelの設定を行ないます。

 
VOID tbasemenu VOID
t軸のbaseの設定を行ないます。

 
VOID yrangemenu VOID
t軸のrangeの設定を行ないます。

 
VOID ttickmenu VOID
t軸のtickの設定を行ないます。

 
VOID tsubtickmenu VOID
t軸のsubtickの設定を行ないます。

 
VOID tlabelmenu VOID
t軸のlabelの設定を行ないます。

 
VOID rbasemenu VOID
r軸のbaseの設定を行ないます。

 
VOID rrangemenu VOID
r軸のrangeの設定を行ないます。

 
VOID rtickmenu VOID
r軸のtickの設定を行ないます。

 
VOID rsubtickmenu VOID
r軸のsubtickの設定を行ないます。

 
VOID rlabelmenu VOID
r軸のlabelの設定を行ないます。

 
VOID loaddatamenu VOID
選択されている数値データのロードのの設定を行ないます。

 
VOID plotmappingmenu VOID
選択されている数値データプロットのmappingの設定を行ないます。

 
VOID plotlinemenu VOID
選択されている数値データプロットのデータ線の設定を行ないます。

 
VOID plotmarkermenu VOID
選択されている数値データプロットのマーカの設定を行ないます。

 
VOID plotrangemenu VOID
数値メモリデータの生成範囲の設定を行ないます。

 
VOID functionmenu VOID
関数式の生成の設定を行ないます。

 
VOID linearfitmenu VOID
選択されている数値データの線形最小2乗法の設定を行ないます。

 
VOID nonlinearfitmenu VOID
選択されている数値データの非線形最小2乗法の設定を行ないます。

 
VOID partsstylemenu VOID
選択されているtext以外のpartsのスタイルの設定を行ないます。

 
VOID textstylemenu VOID
選択されているtextのスタイルの設定を行ないます。