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ヘルプ >> GUI > Menus > 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'));
end

参照

  • 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:
Tue Feb 14 15:10:32 CET 2017