added wxMenu::AppendSubMenu() to avoid having to specify a dummy id when adding a submenu

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@38770 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2006-04-16 23:25:21 +00:00
parent 47ce5c4a5a
commit 3786c8b587
3 changed files with 81 additions and 5 deletions

View File

@ -126,6 +126,7 @@ All (GUI):
- Indices and counts in wxControlWithItems derived API are unsigned.
- Added support for links to wxHtmlListBox; use code has to override
wxHtmlListBox::OnLinkClicked() to take advantage of it.
- Added an easier to use wxMenu::AppendSubMenu()
wxMSW:

View File

@ -89,6 +89,7 @@ not be used in the new code, it is provided for backwards compatibility only.
\latexignore{\rtfignore{\wxheading{Members}}}
\membersection{wxMenu::wxMenu}\label{wxmenuctor}
\func{}{wxMenu}{\param{const wxString\& }{title = ""}, \param{long}{ style = 0}}
@ -109,6 +110,7 @@ Constructs a wxMenu object.
\docparam{style}{If set to {\tt wxMENU\_TEAROFF}, the menu will be detachable (wxGTK only).}
\membersection{wxMenu::\destruct{wxMenu}}\label{wxmenudtor}
\func{}{\destruct{wxMenu}}{\void}
@ -122,6 +124,7 @@ parent window. Re-use in this context means popping up the menu on
a different window from last time, which causes an implicit destruction
and recreation of internal data structures.
\membersection{wxMenu::Append}\label{wxmenuappend}
\func{wxMenuItem*}{Append}{\param{int}{ id}, \param{const wxString\& }{ item}, \param{const wxString\& }{helpString = ""},\rtfsp
@ -198,6 +201,7 @@ characters listed in the table below (again, case doesn't matter):
\helpref{wxMenu::AppendSeparator}{wxmenuappendseparator},\rtfsp
\helpref{wxMenu::AppendCheckItem}{wxmenuappendcheckitem},\rtfsp
\helpref{wxMenu::AppendRadioItem}{wxmenuappendradioitem},\rtfsp
\helpref{wxMenu::AppendSubMenu}{wxmenuappendsubmenu},\rtfsp
\helpref{wxMenu::Insert}{wxmenuinsert},\rtfsp
\helpref{wxMenu::SetLabel}{wxmenusetlabel}, \helpref{wxMenu::GetHelpString}{wxmenugethelpstring},\rtfsp
\helpref{wxMenu::SetHelpString}{wxmenusethelpstring}, \helpref{wxMenuItem}{wxmenuitem}
@ -212,6 +216,7 @@ implements the following methods:
\end{twocollist}}
}
\membersection{wxMenu::AppendCheckItem}\label{wxmenuappendcheckitem}
\func{wxMenuItem*}{AppendCheckItem}{\param{int}{ id},\rtfsp
@ -224,6 +229,7 @@ Adds a checkable item to the end of the menu.
\helpref{wxMenu::Append}{wxmenuappend},\rtfsp
\helpref{wxMenu::InsertCheckItem}{wxmenuinsertcheckitem}
\membersection{wxMenu::AppendRadioItem}\label{wxmenuappendradioitem}
\func{wxMenuItem*}{AppendRadioItem}{\param{int}{ id},\rtfsp
@ -241,6 +247,7 @@ automatically unchecked.
\helpref{wxMenu::Append}{wxmenuappend},\rtfsp
\helpref{wxMenu::InsertRadioItem}{wxmenuinsertradioitem}
\membersection{wxMenu::AppendSeparator}\label{wxmenuappendseparator}
\func{wxMenuItem*}{AppendSeparator}{\void}
@ -252,12 +259,23 @@ Adds a separator to the end of the menu.
\helpref{wxMenu::Append}{wxmenuappend},\rtfsp
\helpref{wxMenu::InsertSeparator}{wxmenuinsertseparator}
\membersection{wxMenu::AppendSubMenu}\label{wxmenuappendsubmenu}
\func{wxMenuItem *}{AppendSubMenu}{\param{wxMenu *}{submenu}, \param{const wxString\& }{text}, \param{const wxString\& }{help = wxEmptyString}}
Adds the given \arg{submenu} to this menu. \arg{text} is the text shown in the
menu for it and \arg{help} is the help string shown in the status bar when the
submenu item is selected.
\membersection{wxMenu::Break}\label{wxmenubreak}
\func{void}{Break}{\void}
Inserts a break in a menu, causing the next appended item to appear in a new column.
\membersection{wxMenu::Check}\label{wxmenucheck}
\func{void}{Check}{\param{int}{ id}, \param{const bool}{ check}}
@ -274,6 +292,7 @@ Checks or unchecks the menu item.
\helpref{wxMenu::IsChecked}{wxmenuischecked}
\membersection{wxMenu::Delete}\label{wxmenudelete}
\func{void}{Delete}{\param{int }{id}}
@ -296,6 +315,7 @@ delete a submenu.
\helpref{wxMenu::Destroy}{wxmenudestroy},\rtfsp
\helpref{wxMenu::Remove}{wxmenuremove}
\membersection{wxMenu::Destroy}\label{wxmenudestroy}
\func{void}{Destroy}{\param{int }{id}}
@ -318,6 +338,7 @@ be deleted. Use \helpref{Remove}{wxmenuremove} if you want to keep the submenu
\helpref{wxMenu::Deletes}{wxmenudelete},\rtfsp
\helpref{wxMenu::Remove}{wxmenuremove}
\membersection{wxMenu::Enable}\label{wxmenuenable}
\func{void}{Enable}{\param{int}{ id}, \param{const bool}{ enable}}
@ -334,6 +355,7 @@ Enables or disables (greys out) a menu item.
\helpref{wxMenu::IsEnabled}{wxmenuisenabled}
\membersection{wxMenu::FindItem}\label{wxmenufinditem}
\constfunc{int}{FindItem}{\param{const wxString\& }{itemString}}
@ -372,12 +394,14 @@ before matching.
\pythonnote{The name of this method in wxPython is {\tt FindItemById}
and it does not support the second parameter.}
\membersection{wxMenu::FindItemByPosition}\label{wxmenufinditembyposition}
\constfunc{wxMenuItem*}{FindItemByPosition}{\param{size\_t }{position}}
Returns the wxMenuItem given a position in the menu.
\membersection{wxMenu::GetHelpString}\label{wxmenugethelpstring}
\constfunc{wxString}{GetHelpString}{\param{int}{ id}}
@ -397,6 +421,7 @@ item was not found.
\helpref{wxMenu::SetHelpString}{wxmenusethelpstring}, \helpref{wxMenu::Append}{wxmenuappend}
\membersection{wxMenu::GetLabel}\label{wxmenugetlabel}
\constfunc{wxString}{GetLabel}{\param{int}{ id}}
@ -415,12 +440,14 @@ The item label, or the empty string if the item was not found.
\helpref{wxMenu::SetLabel}{wxmenusetlabel}
\membersection{wxMenu::GetMenuItemCount}\label{wxmenugetmenuitemcount}
\constfunc{size\_t}{GetMenuItemCount}{\void}
Returns the number of items in the menu.
\membersection{wxMenu::GetMenuItems}\label{wxmenugetmenuitems}
\constfunc{wxMenuItemList\&}{GetMenuItems}{\void}
@ -428,6 +455,7 @@ Returns the number of items in the menu.
Returns the list of items in the menu. wxMenuItemList is a pseudo-template
list class containing wxMenuItem pointers.
\membersection{wxMenu::GetTitle}\label{wxmenugettitle}
\constfunc{wxString}{GetTitle}{\void}
@ -444,6 +472,7 @@ menubar.
\helpref{wxMenu::SetTitle}{wxmenusettitle}
\membersection{wxMenu::Insert}\label{wxmenuinsert}
\func{wxMenuItem*}{Insert}{\param{size\_t }{pos}, \param{wxMenuItem *}{item}}
@ -461,6 +490,7 @@ as appending it.
\helpref{wxMenu::Append}{wxmenuappend},\rtfsp
\helpref{wxMenu::Prepend}{wxmenuprepend}
\membersection{wxMenu::InsertCheckItem}\label{wxmenuinsertcheckitem}
\func{wxMenuItem*}{InsertCheckItem}{\param{size\_t }{pos}, \param{int}{ id},\rtfsp
@ -473,6 +503,7 @@ Inserts a checkable item at the given position.
\helpref{wxMenu::Insert}{wxmenuinsert},\rtfsp
\helpref{wxMenu::AppendCheckItem}{wxmenuappendcheckitem}
\membersection{wxMenu::InsertRadioItem}\label{wxmenuinsertradioitem}
\func{wxMenuItem*}{InsertRadioItem}{\param{size\_t }{pos}, \param{int}{ id},\rtfsp
@ -485,6 +516,7 @@ Inserts a radio item at the given position.
\helpref{wxMenu::Insert}{wxmenuinsert},\rtfsp
\helpref{wxMenu::AppendRadioItem}{wxmenuappendradioitem}
\membersection{wxMenu::InsertSeparator}\label{wxmenuinsertseparator}
\func{wxMenuItem*}{InsertSeparator}{\param{size\_t }{pos}}
@ -496,6 +528,7 @@ Inserts a separator at the given position.
\helpref{wxMenu::Insert}{wxmenuinsert},\rtfsp
\helpref{wxMenu::AppendSeparator}{wxmenuappendseparator}
\membersection{wxMenu::IsChecked}\label{wxmenuischecked}
\constfunc{bool}{IsChecked}{\param{int}{ id}}
@ -514,6 +547,7 @@ true if the menu item is checked, false otherwise.
\helpref{wxMenu::Check}{wxmenucheck}
\membersection{wxMenu::IsEnabled}\label{wxmenuisenabled}
\constfunc{bool}{IsEnabled}{\param{int}{ id}}
@ -532,6 +566,7 @@ true if the menu item is enabled, false otherwise.
\helpref{wxMenu::Enable}{wxmenuenable}
\membersection{wxMenu::Prepend}\label{wxmenuprepend}
\func{wxMenuItem*}{Prepend}{\param{wxMenuItem *}{item}}
@ -548,6 +583,7 @@ existing items.
\helpref{wxMenu::Append}{wxmenuappend},\rtfsp
\helpref{wxMenu::Insert}{wxmenuinsert}
\membersection{wxMenu::PrependCheckItem}\label{wxmenuprependcheckitem}
\func{wxMenuItem*}{PrependCheckItem}{\param{int}{ id},\rtfsp
@ -560,6 +596,7 @@ Inserts a checkable item at position $0$.
\helpref{wxMenu::Prepend}{wxmenuprepend},\rtfsp
\helpref{wxMenu::AppendCheckItem}{wxmenuappendcheckitem}
\membersection{wxMenu::PrependRadioItem}\label{wxmenuprependradioitem}
\func{wxMenuItem*}{PrependRadioItem}{\param{int}{ id},\rtfsp
@ -572,6 +609,7 @@ Inserts a radio item at position $0$.
\helpref{wxMenu::Prepend}{wxmenuprepend},\rtfsp
\helpref{wxMenu::AppendRadioItem}{wxmenuappendradioitem}
\membersection{wxMenu::PrependSeparator}\label{wxmenuprependseparator}
\func{wxMenuItem*}{PrependSeparator}{\void}
@ -583,6 +621,7 @@ Inserts a separator at position $0$.
\helpref{wxMenu::Prepend}{wxmenuprepend},\rtfsp
\helpref{wxMenu::AppendSeparator}{wxmenuappendseparator}
\membersection{wxMenu::Remove}\label{wxmenuremove}
\func{wxMenuItem *}{Remove}{\param{int }{id}}
@ -603,6 +642,7 @@ object. This allows to reuse the same item later by adding it back to the menu
The item which was detached from the menu.
\membersection{wxMenu::SetHelpString}\label{wxmenusethelpstring}
\func{void}{SetHelpString}{\param{int}{ id}, \param{const wxString\& }{helpString}}
@ -619,6 +659,7 @@ Sets an item's help string.
\helpref{wxMenu::GetHelpString}{wxmenugethelpstring}
\membersection{wxMenu::SetLabel}\label{wxmenusetlabel}
\func{void}{SetLabel}{\param{int}{ id}, \param{const wxString\& }{label}}
@ -635,6 +676,7 @@ Sets the label of a menu item.
\helpref{wxMenu::Append}{wxmenuappend}, \helpref{wxMenu::GetLabel}{wxmenugetlabel}
\membersection{wxMenu::SetTitle}\label{wxmenusettitle}
\func{void}{SetTitle}{\param{const wxString\& }{title}}
@ -655,6 +697,7 @@ menubar.
\helpref{wxMenu::GetTitle}{wxmenugettitle}
\membersection{wxMenu::UpdateUI}\label{wxmenuupdateui}
\constfunc{void}{UpdateUI}{\param{wxEvtHandler*}{ source = NULL}}
@ -699,6 +742,7 @@ menu shortcuts may cease to work.
\latexignore{\rtfignore{\wxheading{Members}}}
\membersection{wxMenuBar::wxMenuBar}\label{wxmenubarctor}
\func{}{wxMenuBar}{\param{long }{style = 0}}
@ -726,12 +770,14 @@ Use \helpref{wxMenuBar::Append}{wxmenubarappend} instead.}
\perlnote{wxPerl only supports the first constructor:
use \helpref{wxMenuBar::Append}{wxmenubarappend} instead.}
\membersection{wxMenuBar::\destruct{wxMenuBar}}\label{wxmenubardtor}
\func{void}{\destruct{wxMenuBar}}{\void}
Destructor, destroying the menu bar and removing it from the parent frame (if any).
\membersection{wxMenuBar::Append}\label{wxmenubarappend}
\func{bool}{Append}{\param{wxMenu *}{menu}, \param{const wxString\& }{title}}
@ -752,6 +798,7 @@ true on success, false if an error occurred.
\helpref{wxMenuBar::Insert}{wxmenubarinsert}
\membersection{wxMenuBar::Check}\label{wxmenubarcheck}
\func{void}{Check}{\param{int}{ id}, \param{const bool}{ check}}
@ -769,6 +816,7 @@ Checks or unchecks a menu item.
Only use this when the menu bar has been associated
with a frame; otherwise, use the wxMenu equivalent call.
\membersection{wxMenuBar::Enable}\label{wxmenubarenable}
\func{void}{Enable}{\param{int}{ id}, \param{const bool}{ enable}}
@ -786,6 +834,7 @@ Enables or disables (greys out) a menu item.
Only use this when the menu bar has been
associated with a frame; otherwise, use the wxMenu equivalent call.
\membersection{wxMenuBar::EnableTop}\label{wxmenubarenabletop}
\func{void}{EnableTop}{\param{int}{ pos}, \param{const bool}{ enable}}
@ -803,6 +852,7 @@ Enables or disables a whole menu.
Only use this when the menu bar has been
associated with a frame.
\membersection{wxMenuBar::FindMenu}\label{wxmenubarfindmenu}
\constfunc{int}{FindMenu}{\param{const wxString\& }{title}}
@ -812,6 +862,7 @@ such menu exists in this menubar. The {\it title} parameter may specify either
the menu title (with accelerator characters, i.e. {\tt "\&File"}) or just the
menu label ({\tt "File"}) indifferently.
\membersection{wxMenuBar::FindMenuItem}\label{wxmenubarfindmenuitem}
\constfunc{int}{FindMenuItem}{\param{const wxString\& }{menuString}, \param{const wxString\& }{itemString}}
@ -833,6 +884,7 @@ The menu item identifier, or {\tt wxNOT\_FOUND} if none was found.
Any special menu codes are stripped out of source and target strings
before matching.
\membersection{wxMenuBar::FindItem}\label{wxmenubarfinditem}
\constfunc{wxMenuItem *}{FindItem}{\param{int}{ id}, \param{wxMenu}{ **menu = NULL}}
@ -849,6 +901,7 @@ Finds the menu item object associated with the given menu item identifier.
The found menu item object, or NULL if one was not found.
\membersection{wxMenuBar::GetHelpString}\label{wxmenubargethelpstring}
\constfunc{wxString}{GetHelpString}{\param{int}{ id}}
@ -868,6 +921,7 @@ was not found.
\helpref{wxMenuBar::SetHelpString}{wxmenubarsethelpstring}
\membersection{wxMenuBar::GetLabel}\label{wxmenubargetlabel}
\constfunc{wxString}{GetLabel}{\param{int}{ id}}
@ -886,6 +940,7 @@ The menu item label, or the empty string if the item was not found.
Use only after the menubar has been associated with a frame.
\membersection{wxMenuBar::GetLabelTop}\label{wxmenubargetlabeltop}
\constfunc{wxString}{GetLabelTop}{\param{int}{ pos}}
@ -910,18 +965,21 @@ Use only after the menubar has been associated with a frame.
\helpref{wxMenuBar::SetLabelTop}{wxmenubarsetlabeltop}
\membersection{wxMenuBar::GetMenu}\label{wxmenubargetmenu}
\constfunc{wxMenu*}{GetMenu}{\param{int}{ menuIndex}}
Returns the menu at {\it menuIndex} (zero-based).
\membersection{wxMenuBar::GetMenuCount}\label{wxmenubargetmenucount}
\constfunc{int}{GetMenuCount}{\void}
Returns the number of menus in this menubar.
\membersection{wxMenuBar::Insert}\label{wxmenubarinsert}
\func{bool}{Insert}{\param{size\_t }{pos}, \param{wxMenu *}{menu}, \param{const wxString\& }{title}}
@ -947,6 +1005,7 @@ true on success, false if an error occurred.
\helpref{wxMenuBar::Append}{wxmenubarappend}
\membersection{wxMenuBar::IsChecked}\label{wxmenubarischecked}
\constfunc{bool}{IsChecked}{\param{int}{ id}}
@ -961,6 +1020,7 @@ Determines whether an item is checked.
true if the item was found and is checked, false otherwise.
\membersection{wxMenuBar::IsEnabled}\label{wxmenubarisenabled}
\constfunc{bool}{IsEnabled}{\param{int}{ id}}
@ -975,12 +1035,14 @@ Determines whether an item is enabled.
true if the item was found and is enabled, false otherwise.
\membersection{wxMenuBar::Refresh}\label{wxmenubarrefresh}
\func{void}{Refresh}{\void}
Redraw the menu bar
\membersection{wxMenuBar::Remove}\label{wxmenubarremove}
\func{wxMenu *}{Remove}{\param{size\_t }{pos}}
@ -994,6 +1056,7 @@ dynamically.
\helpref{wxMenuBar::Replace}{wxmenubarreplace}
\membersection{wxMenuBar::Replace}\label{wxmenubarreplace}
\func{wxMenu *}{Replace}{\param{size\_t }{pos}, \param{wxMenu *}{menu}, \param{const wxString\& }{title}}
@ -1018,6 +1081,7 @@ responsible for deleting it.
\helpref{wxMenuBar::Insert}{wxmenubarinsert},\rtfsp
\helpref{wxMenuBar::Remove}{wxmenubarremove}
\membersection{wxMenuBar::SetHelpString}\label{wxmenubarsethelpstring}
\func{void}{SetHelpString}{\param{int}{ id}, \param{const wxString\& }{helpString}}
@ -1034,6 +1098,7 @@ Sets the help string associated with a menu item.
\helpref{wxMenuBar::GetHelpString}{wxmenubargethelpstring}
\membersection{wxMenuBar::SetLabel}\label{wxmenubarsetlabel}
\func{void}{SetLabel}{\param{int}{ id}, \param{const wxString\& }{label}}
@ -1054,6 +1119,7 @@ Use only after the menubar has been associated with a frame.
\helpref{wxMenuBar::GetLabel}{wxmenubargetlabel}
\membersection{wxMenuBar::SetLabelTop}\label{wxmenubarsetlabeltop}
\func{void}{SetLabelTop}{\param{int}{ pos}, \param{const wxString\& }{label}}

View File

@ -87,12 +87,11 @@ public:
}
// append a submenu
wxMenuItem* Append(int itemid,
const wxString& text,
wxMenu *submenu,
const wxString& help = wxEmptyString)
wxMenuItem* AppendSubMenu(wxMenu *submenu,
const wxString& text,
const wxString& help = wxEmptyString)
{
return DoAppend(wxMenuItem::New((wxMenu *)this, itemid, text, help,
return DoAppend(wxMenuItem::New((wxMenu *)this, wxID_ANY, text, help,
wxITEM_NORMAL, submenu));
}
@ -309,6 +308,16 @@ public:
Append(itemid, text, help, isCheckable ? wxITEM_CHECK : wxITEM_NORMAL);
}
// use more readable and not requiring unused itemid AppendSubMenu() instead
wxMenuItem* Append(int itemid,
const wxString& text,
wxMenu *submenu,
const wxString& help = wxEmptyString)
{
return DoAppend(wxMenuItem::New((wxMenu *)this, itemid, text, help,
wxITEM_NORMAL, submenu));
}
void Insert(size_t pos,
int itemid,
const wxString& text,