added commands to search for menus and menu items by label

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@18232 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Gilles Depeyrot
2002-12-14 21:12:47 +00:00
parent ab1ca7b3dd
commit f6d90fb9ce

View File

@@ -79,6 +79,7 @@ protected:
void OnGetLabelMenuItem(wxCommandEvent& event);
void OnSetLabelMenuItem(wxCommandEvent& event);
void OnGetMenuItemInfo(wxCommandEvent& event);
void OnFindMenuItem(wxCommandEvent& event);
void OnAppendMenu(wxCommandEvent& event);
void OnInsertMenu(wxCommandEvent& event);
@@ -87,6 +88,7 @@ protected:
void OnEnableMenu(wxCommandEvent& event);
void OnGetLabelMenu(wxCommandEvent& event);
void OnSetLabelMenu(wxCommandEvent& event);
void OnFindMenu(wxCommandEvent& event);
void OnTestNormal(wxCommandEvent& event);
void OnTestCheck(wxCommandEvent& event);
@@ -167,6 +169,7 @@ enum
Menu_MenuBar_Enable,
Menu_MenuBar_GetLabel,
Menu_MenuBar_SetLabel,
Menu_MenuBar_FindMenu,
Menu_Menu_Append = 300,
Menu_Menu_AppendSub,
@@ -177,6 +180,7 @@ enum
Menu_Menu_GetLabel,
Menu_Menu_SetLabel,
Menu_Menu_GetInfo,
Menu_Menu_FindItem,
Menu_Test_Normal = 400,
Menu_Test_Check,
@@ -217,6 +221,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU(Menu_MenuBar_Enable, MyFrame::OnEnableMenu)
EVT_MENU(Menu_MenuBar_GetLabel, MyFrame::OnGetLabelMenu)
EVT_MENU(Menu_MenuBar_SetLabel, MyFrame::OnSetLabelMenu)
EVT_MENU(Menu_MenuBar_FindMenu, MyFrame::OnFindMenu)
EVT_MENU(Menu_Menu_Append, MyFrame::OnAppendMenuItem)
EVT_MENU(Menu_Menu_AppendSub, MyFrame::OnAppendSubMenu)
@@ -227,6 +232,7 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU(Menu_Menu_GetLabel, MyFrame::OnGetLabelMenuItem)
EVT_MENU(Menu_Menu_SetLabel, MyFrame::OnSetLabelMenuItem)
EVT_MENU(Menu_Menu_GetInfo, MyFrame::OnGetMenuItemInfo)
EVT_MENU(Menu_Menu_FindItem, MyFrame::OnFindMenuItem)
EVT_MENU(Menu_Test_Normal, MyFrame::OnTestNormal)
EVT_MENU(Menu_Test_Check, MyFrame::OnTestCheck)
@@ -327,6 +333,9 @@ MyFrame::MyFrame()
"Get the label of the last menu");
menubarMenu->Append(Menu_MenuBar_SetLabel, "&Set menu label\tCtrl-S",
"Change the label of the last menu");
menubarMenu->AppendSeparator();
menubarMenu->Append(Menu_MenuBar_FindMenu, "&Find menu from label\tCtrl-F",
"Find a menu by searching for its label");
wxMenu *menuMenu = new wxMenu;
menuMenu->Append(Menu_Menu_Append, "&Append menu item\tAlt-A",
@@ -350,6 +359,9 @@ MyFrame::MyFrame()
menuMenu->AppendSeparator();
menuMenu->Append(Menu_Menu_GetInfo, "Get menu item in&fo\tAlt-F",
"Show the state of the last menu item");
menuMenu->AppendSeparator();
menuMenu->Append(Menu_Menu_FindItem, "Find menu item from label",
"Find a menu item by searching for its label");
wxMenu *testMenu = new wxMenu;
testMenu->Append(Menu_Test_Normal, "&Normal item");
@@ -566,6 +578,36 @@ void MyFrame::OnSetLabelMenu(wxCommandEvent& WXUNUSED(event))
}
}
void MyFrame::OnFindMenu(wxCommandEvent& WXUNUSED(event))
{
wxMenuBar *mbar = GetMenuBar();
size_t count = mbar->GetMenuCount();
wxCHECK_RET( count, _T("no last menu?") );
wxString label = wxGetTextFromUser
(
_T("Enter label to search for: "),
_T("Find menu"),
"",
this
);
if ( !label.empty() )
{
int index = mbar->FindMenu(label);
if (index == wxNOT_FOUND)
{
wxLogWarning(wxT("No menu with label '%s'"), label.c_str());
}
else
{
wxLogMessage(wxT("Menu %d has label '%s'"), index, label.c_str());
}
}
}
void MyFrame::OnDummy(wxCommandEvent& event)
{
wxLogMessage(wxT("Dummy item #%d"), event.GetId() - Menu_Dummy_First + 1);
@@ -750,6 +792,42 @@ void MyFrame::OnGetMenuItemInfo(wxCommandEvent& WXUNUSED(event))
}
}
void MyFrame::OnFindMenuItem(wxCommandEvent& WXUNUSED(event))
{
wxMenuBar *mbar = GetMenuBar();
size_t count = mbar->GetMenuCount();
wxCHECK_RET( count, _T("no last menu?") );
wxString label = wxGetTextFromUser
(
_T("Enter label to search for: "),
_T("Find menu item"),
"",
this
);
if ( !label.empty() )
{
size_t menuindex = 0;
int index = wxNOT_FOUND;
for (menuindex = 0; (menuindex < count) && (index == wxNOT_FOUND); ++menuindex)
{
index = mbar->FindMenuItem(mbar->GetMenu(menuindex)->GetTitle(), label);
}
if (index == wxNOT_FOUND)
{
wxLogWarning(wxT("No menu item with label '%s'"), label.c_str());
}
else
{
wxLogMessage(wxT("Menu item %d in menu %d has label '%s'"),
index, menuindex, label.c_str());
}
}
}
void MyFrame::ShowContextMenu(const wxPoint& pos)
{
wxMenu menu("Test popup");