Contents
Previous
Next
Class >Hierarchy>
>Fl_Widget>
> |
> +---->Fl_Menu_>---->Fl_Menu_Item>
> |
> +---->Fl_Choice>, >Fl_Menu_Bar>, >Fl_Menu_Button>
>
Include >Files>
>#include <FL/Fl_Menu_.H>
>
Description>
All >widgets >that >have >a >menu >in >FLTK >are >
subclassed >off >of >this >class. > Currently >FLTK >
provides >you >with >
Fl_Menu_Button>, >
Fl_Menu_Bar>, >and >
Fl_Choice> . >
The >class >contains >a >pointer >to >an >array >of >
structures >of >type >
Fl_Menu_Item>. > The >array >may >either >be >
supplied >directly >by >the >user >program, >or >it >
may >be >"private": >a >dynamically >allocated >array >
managed >by >the >Fl_Menu_. >
Methods>
Creates >a >new >Fl_Menu_> widget >using >the >
given >position, >size, >and >label >string.> menu()>
is >initialized >to >null. >
If >the >menu >array >is >private >the >memory >it >
uses >is >freed. >
Returns >a >pointer >to >the >array >of >Fl_Menu_Items. >
This >will >either >be >the >value >passed >to >
menu(value)> or >the >private >copy. >
void >Fl_Menu_::menu(const >Fl_Menu_Item*)>
Set >the >menu >array >pointer >directly. > If >the >
old >menu >is >private >it >is >deleted. > NULL>
is >allowed >and >acts >the >same >as >a >zero-length >
menu. > If >you >try >to >modify >the >array >(with >
add(), >replace(), >or >delete()) >a >private >copy >is >
automatically >done. >
The >menu >is >set >to >a >private >copy >of >the >
passed >Fl_Menu_Item >array. >This >is >useful >if >you >
want >to >modify >the >flags >of >the >menu >items. >
Same >as >menu(NULL)>, >set >the >array >
pointer >to >null, >indicating >a >zero-length >menu. >
This >returns >the >number >of >Fl_Menu_Item >structures >
that >make >up >the >menu, >correctly >counting >
submenus. > This >includes >the >"terminator" >item >at >
the >end. > To >copy >a >menu >array >you >need >to >
copy >size()*sizeof(Fl_Menu_Item)> bytes. > If >the >
menu >is >NULL> this >returns >zero >(an >empty >
menu >will >return >1). >
Adds >a >new >menu >item, >with >a >title>
string, > shortcut> string, >callback>, >
argument >to >the >callback, >and >flags. > If >the >
menu >array >was >directly >set >with >menu(x) >then >
copy() >is >done >to >make >a >private >array. >
Text >is >a >string >of >the >form >"foo/bar/baz", >
this >example >will >result >in >a >submenu >called >
"foo" >and >one >in >that >called >"bar" >and >and >
entry >called >"baz". > The >text >is >copied >to >new >
memory >and >can >be >freed. > The >other >arguments >
(including >the >shortcut) >are >copied >into >the >menu >
item >unchanged. >
If >an >item >exists >already >with >that >name >
then >it >is >replaced >with > this >new >one. >
Otherwise >this >new >one >is >added >to >the >end >
of >the > correct >menu >or >submenu. > The >return >
value >is >the >offset >into >the >array > that >the >
new >entry >was >placed >at.>
The >return >value >is >the >index >into >the >array >
that >the >entry >was >put. >
int >Fl_Menu_::add(const >char >*)>
The >passed >string >is >split >at >any >'|' >
characters >and >then > add(s,0,0,0,0)> is >done >
with >each >section. > This >is >often >useful >if >you >
are >just >using >the >value, >and >is >compatable >
with >Forms >and >other >GL >programs. >
Changes >the >text >of >item >n>. > This >is >
the >only >way >to >get >slash >into >an >add()'ed >
menu >item. > If >the >menu >array >was >directly >set >
with >menu(x) >then >copy() >is >done >to >make >a >
private >array. >
Deletes >item >n> from >the >menu. > If >the >
menu >array >was >directly >set >with >menu(x) >then >
copy() >is >done >to >make >a >private >array. >
Changes >the >shortcut >of >item >i> to >n>
. >
Changes >the >flags >of >item >i>. > For >a >
list >of >the >flags, >see >
Fl_Menu_Item>. >
The >value >is >the >index >into >menu()> of >
the >last >item >chosen >by > the >user. > It >is >
zero >initially. > You >can >set >it >as >an >integer, >
or >set > it >with >a >pointer >to >a >menu >item. >
The >set >routines >return >non-zero >if > the >new >
value >is >different >than >the >old >one. >
Only >call >this >in >response >to >FL_SHORTCUT >
events>. > If >the > event >matches >an >entry >in >
the >menu >that >entry >is >selected >and >the >
callback >will >be >done >(or >changed()> will >
be >set). > This >allows > shortcuts >directed >at >one >
window >to >call >menus >in >another. >
Make >the >shortcuts >for >this >menu >work >no >
matter >what >window >has >the > focus >when >you >type >
it. > This >is >done >by >using >
Fl::add_handler()>. > This >Fl_Menu_>
widget >does >not > have >to >be >visible >(ie >the >
window >it >is >in >can >be >hidden, >or >it >does >
not >have >to >be >put >in >a >window >at >all). >
Currently >there >can >be >only >one >global()>
menu. > Setting >a >new > one >will >replace >the >old >
one. > There >is >no >way >to >remove >the >
global()> setting >(so >don't >destroy >the >widget!)>
Returns >the >title >of >the >last >item >chosen, >or >
of >item >i>. >
Get >or >set >the >current >color >of >menu >item >
labels. >
Get >or >set >the >current >font >of >menu >item >
labels. >
Get >or >set >the >font >size >of >menu >item >
labels. >
This >box >type >is >used >to >surround >the >
currently-selected >items >in >the > menus. > If >this >
is >FL_NO_BOX> then >it >acts >like >
FL_THIN_UP_BOX> and >selection_color()> acts >
like > FL_WHITE>, >for >back >compatability. >
Contents
Previous
Next