Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: English - Français - Português - Русский

Please note that the recommended version of Scilab is 6.0.1. This page might be outdated.
See the recommended documentation of this function

Scilab help >> GUI > addmenu

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'));

参照

  • setmenu — 対話的なボタン/メニュー有効化
  • unsetmenu — 対話的なボタンまたはメニューを無効化
  • delmenu — 対話的なボタン/メニューを削除
Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Mon Oct 01 17:40:36 CEST 2012