addmenuinteractive button or menu definitionCalling Sequenceaddmenu(button [,submenus] [,action])
addmenu(gwin,button [,submenus] [,action])
Argumentsbuttona character string. The button name. An & can be placed
before the character in the name to be used for keyboard shortcut;
this character will be underlined on the GUI. Under MacOSX, a
sub-menu with the same name is automatically added (no button can be
added to the menu bar).
submenusa vector of character string. The sub_menus items namesactiona list with 2 elements action=list(flag,proc_name)flagan integer (default value is 0)flag==0the action is defined by a scilab instructionflag==1the action is defined by a C or Fortran procedureflag==2the action is defined by a scilab functionproc_namea character string which gives the name of scilab
variable containing the instruction or the name of procedure
to call.
gwininteger. The number of graphic window where the button is
required to be installed
DescriptionThe function allows the user to add new buttons or menus in the main
window or graphics windows command panels.
Ifaction argument is not given the action
associated with a button must be defined by a scilab instruction
given by the character string variable which name is
+ button for a main window command
+ button_gwin for a graphic window
command
Ifaction argument is set to 0
proc_name should be the name of a Scilab string
vector. Actions associated with the kth sub_menu must be defined by
scilab instructions stored in the kth element of the character
string variable.
Ifaction argument is set to 1
proc_name designes a C or Fortran procedure, this
procedure may be interfaced in Fortran subroutine default/fbutn.f or
dynamically linked with scilab using the link
function. The C calling sequence is: (char* button_name,
int* gwin,int *k)
Ifaction argument is set to 2
proc_name designes a Scilab function. This
function calling sequence should be:
+ proc_name(k)for a main window
command
+ proc_name(k,gwin)for a graphic window
command or a main window command
Examplesif (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 defined Callback
// creating Callback code
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);'
'}'];
//creating foo.c file
current_dir = pwd();
chdir(TMPDIR);
mputl(code, TMPDIR+'/foo.c');
//creating Makefile
ilib_for_link('foo','foo.c',[],'c');
exec('loader.sce');
chdir(current_dir);
//add menu
addmenu(0,'foo',['a','b','c'],list(1,'foo'));
See Also
setmenu
unsetmenu
delmenu