addmenu
対話的にボタン/メニューを定義
呼び出し手順
addmenu(button [,submenus] [,action]) addmenu(gwin,button [,submenus] [,action])
引数
- button
文字列. ボタン名. キーボードショートカットで使用される名前の文字を前に &を置くことができます; この文字はGUIで下線が引かれます. MacOSXでは,同じ名前のサブメニューが自動的に追加されます (メニューバーにボタンは追加されません).
- submenus
文字列のベクトル. sub_menus項目名
- action
2つの要素を有するリスト action=list(flag,proc_name)
- flag
整数 (デフォルト値は 0)
- flag==0
処理はscilab命令により定義される
- flag==1
処理はCまたはFortran処理により定義される
- flag==2
処理はscilab関数により定義される
- proc_name
命令またはコールするプロシージャ名を有する scilab変数名を指定する文字列.
- gwin
整数. ボタンをインストールするグラフィックウインドウの 番号
説明
この関数によりメインウインドウまたは グラフィックウインドウコマンドパネルに ボタンまたはメニューをユーザーが追加できます.
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
Report an issue | ||
<< Menus | Menus | delmenu >> |