#define OWNER_DRAWN_ONLY( code )
#endif // wxUSE_OWNER_DRAWN/!wxUSE_OWNER_DRAWN
-// ----------------------------------------------------------------------------
-// static function for translating menu labels
-// ----------------------------------------------------------------------------
-
-static wxString TextToLabel(const wxString& rTitle)
-{
- wxString Title;
- const wxChar *pc;
- for (pc = rTitle.c_str(); *pc != wxT('\0'); pc++ )
- {
- if (*pc == wxT('&') )
- {
- if (*(pc+1) == wxT('&'))
- {
- pc++;
- Title << wxT('&');
- }
- else
- Title << wxT('~');
- }
- else
- {
- if ( *pc == wxT('~') )
- {
- // tildes must be doubled to prevent them from being
- // interpreted as accelerator character prefix by PM ???
- Title << *pc;
- }
- Title << *pc;
- }
- }
- return Title;
-}
-
// ============================================================================
// implementation
// ============================================================================
)
: wxMenuItemBase( pParentMenu
,nId
- ,TextToLabel(rsText)
+ ,wxPMTextToLabel(rsText)
,rsHelp
,eKind
,pSubMenu
)
#if wxUSE_OWNER_DRAWN
-, wxOwnerDrawn( TextToLabel(rsText)
+, wxOwnerDrawn( wxPMTextToLabel(rsText)
,eKind == wxITEM_CHECK
)
#endif // owner drawn
{
wxASSERT_MSG(pParentMenu != NULL, wxT("a menu item should have a parent"));
+ memset(&m_vMenuData, '\0', sizeof(m_vMenuData));
+ m_vMenuData.id = (USHORT)nId;
Init();
} // end of wxMenuItem::wxMenuItem
)
: wxMenuItemBase( pParentMenu
,nId
- ,TextToLabel(rsText)
+ ,wxPMTextToLabel(rsText)
,rsHelp
,bIsCheckable ? wxITEM_CHECK : wxITEM_NORMAL
,pSubMenu
)
#if wxUSE_OWNER_DRAWN
-, wxOwnerDrawn( TextToLabel(rsText)
+, wxOwnerDrawn( wxPMTextToLabel(rsText)
,bIsCheckable
)
#endif // owner drawn
SetTextColour(SYS_COLOR(MENUTEXT));
SetBackgroundColour(SYS_COLOR(MENU));
- #undef SYS_COLOR
-
//
// We don't want normal items be owner-drawn
//
ResetOwnerDrawn();
+ #undef SYS_COLOR
//
// Tell the owner drawing code to to show the accel string as well
} // end of wxMenuItem::IsChecked
wxString wxMenuItemBase::GetLabelFromText(
- const wxString& rText
+ const wxString& rsText
)
{
- wxString label;
- for ( const wxChar *pc = rText.c_str(); *pc; pc++ )
+ wxString sLabel;
+
+ for (const char* zPc = rsText.c_str(); *zPc; zPc++)
{
- if ( *pc == wxT('~') || *pc == wxT('&') )
+ if (*zPc == wxT('~') || *zPc == wxT('&'))
{
- // '~' is the escape character for GTK+ and '&' is the one for
- // wxWindows - skip both of them
+ //
+ // '~' is the escape character for OS/2PM and '&' is the one for
+ // wxWidgets - skip both of them
+ //
continue;
}
-
- label += *pc;
+ sLabel += *zPc;
}
- return label;
-}
+ return sLabel;
+} // end of wxMenuItemBase::GetLabelFromText
//
// Radio group stuff
//
// Also uncheck all the other items in this radio group
//
- wxMenuItemList::Node* pNode = rItems.Item(nStart);
+ wxMenuItemList::compatibility_iterator node = rItems.Item(nStart);
- for (int n = nStart; n <= nEnd && pNode; n++)
+ for (int n = nStart; n <= nEnd && node; n++)
{
if (n == nPos)
{
}
if (n != nPos)
{
- pNode->GetData()->m_isChecked = FALSE;
+ node->GetData()->m_isChecked = FALSE;
::WinSendMsg( hMenu
,MM_SETITEMATTR
,MPFROM2SHORT(n, TRUE)
,MPFROM2SHORT(MIA_CHECKED, FALSE)
);
}
- pNode = pNode->GetNext();
+ node = node->GetNext();
}
}
else // check item
// Don't do anything if label didn't change
//
- wxString sText = TextToLabel(rText);
+ wxString sText = wxPMTextToLabel(rText);
if (m_text == sText)
return;
wxMenuItemBase::SetText(sText);
OWNER_DRAWN_ONLY(wxOwnerDrawn::SetName(sText));
+#if wxUSE_OWNER_DRAWN
+ SetAccelString(rText.AfterFirst(_T('\t')));
+#endif // wxUSE_OWNER_DRAWN
HWND hMenu = GetHmenuOf(m_parentMenu);