対話的にボタン/メニューを定義
addmenu(button [,submenus] [,action]) addmenu(gwin,button [,submenus] [,action])
文字列. ボタン名. キーボードショートカットで使用される名前の文字を前に &を置くことができます; この文字はGUIで下線が引かれます. MacOSXでは,同じ名前のサブメニューが自動的に追加されます (メニューバーにボタンは追加されません).
文字列のベクトル. sub_menus項目名
2つの要素を有するリスト action=list(flag,proc_name)
整数 (デフォルト値は 0)
処理はscilab命令により定義される
処理はCまたはFortran処理により定義される
処理はscilab関数により定義される
命令またはコールするプロシージャ名を有する scilab変数名を指定する文字列.
整数. ボタンをインストールするグラフィックウインドウの 番号
この関数によりメインウインドウまたは グラフィックウインドウコマンドパネルに ボタンまたはメニューをユーザーが追加できます.
action
引数が指定されない場合,
ボタンに関連する処理を
文字列に指定したscilab命令により定義する必要があります.
この文字列の名前は,
+ button
(メインウインドウコマンドの場合)
+ button_gwin
(グラフィックウインドウコマンドの場合)
action
引数に 0を指定した場合,
proc_name
には,Scilab文字列ベクトル
の名前を指定します.
k番目のsub_menuに関連する処理は,
この文字列変数のk番目の要素に保存したscilab命令で定義します.
action
引数に1を指定した場合,
proc_name
はCまたはFortranプロシージャ
を指します.
このプロシージャはFortranサブルーチン(default/fbutn.f)
によりインターフェイスが作成されるか,
またはlink
関数によりscilabに
動的にリンクされます.
Cの呼び出し手順は以下のようになります:
(char* button_name, int* gwin,int *k)
action
引数に2を指定した場合,
proc_name
はScilab関数を指します.
この関数の呼び出し手順は以下のようになります:
+ proc_name(k)
(メインウインドウコマンドの場合)
+ proc_name(k,gwin)
(グラフィックウインドウまたは
メインウインドウコマンドの場合)
if (getscilabmode() == "STD") then addmenu('foo'); foo = 'disp(''hello'')'; addmenu('Hello',['Franck';'Peter']) Hello = ['disp(''hello Franck'')';'disp(''hello Peter'')']; addmenu('Bye',list(0,'French_Bye')); French_Bye = 'disp(''Au revoir'')'; else mprintf('This example requires to use scilab with GUI mode.\n'); end addmenu(0,'Hello',['Franck';'Peter']); Hello_0 = ['disp(''hello Franck'')';'disp(''hello Peter'')']; //Cで定義したコールバック // コールバックコードを作成 code=[ '#include ""machine.h""' '#include ""sciprint.h""' 'void foo(char *name, int *win, int *entry)' '{' ' if (*win==-1) ' ' sciprint(""menu %s(%i) in Scilab window selected.\n"", name, *entry+1);' ' else' ' sciprint(""menu %s(%i) in window %i selected.\n"", name, *entry+1, *win);' '}']; // foo.cファイルを作成 current_dir = pwd(); chdir(TMPDIR); mputl(code, TMPDIR+'/foo.c'); // Makefileを作成 ilib_for_link('foo','foo.c',[],'c'); exec('loader.sce'); chdir(current_dir); // メニューを追加 addmenu(0,'foo',['a','b','c'],list(1,'foo')); end | ![]() | ![]() |