// static function for translating menu labels
// ----------------------------------------------------------------------------
-static wxString TextToLabel(const wxString& rTitle)
+static wxString TextToLabel(
+ const wxString& rsTitle
+)
{
- wxString Title;
- const wxChar *pc;
- for (pc = rTitle.c_str(); *pc != wxT('\0'); pc++ )
+ wxString sTitle;
+ const wxChar* zPc;
+
+ if (rsTitle.IsEmpty())
+ return(sTitle);
+
+ for (zPc = rsTitle.c_str(); *zPc != wxT('\0'); zPc++)
{
- if (*pc == wxT('&') )
+ if (*zPc == wxT('&'))
{
- if (*(pc+1) == wxT('&'))
+ if (*(zPc + 1) == wxT('&'))
{
- pc++;
- Title << wxT('&');
+ zPc++;
+ sTitle << wxT('&');
}
else
- Title << wxT('~');
+ sTitle << wxT('~');
}
else
{
- if ( *pc == wxT('~') )
+ if ( *zPc == wxT('~'))
{
- // tildes must be doubled to prevent them from being
+ //
+ // Tildes must be doubled to prevent them from being
// interpreted as accelerator character prefix by PM ???
- Title << *pc;
+ //
+ sTitle << *zPc;
}
- Title << *pc;
+ sTitle << *zPc;
}
}
- return Title;
-}
+ return(sTitle);
+} // end of TextToLabel
// ============================================================================
// implementation
#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
#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
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
+ //
+ // '~' is the escape character for OS/2PM and '&' is the one for
// wxWindows - skip both of them
+ //
continue;
}
-
- label += *pc;
+ sLabel += *zPc;
}
- return label;
-}
+ return sLabel;
+} // end of wxMenuItemBase::GetLabelFromText
-// radio group stuff
+//
+// Radio group stuff
// -----------------
-
+//
void wxMenuItem::SetAsRadioGroupStart()
{
m_bIsRadioGroupStart = TRUE;
int nStart
)
{
- wxASSERT_MSG( !m_bIsRadioGroupStart,
- _T("should only be called for the next radio items") );
+ wxASSERT_MSG( !m_bIsRadioGroupStart
+ ,_T("should only be called for the next radio items")
+ );
m_vRadioGroup.m_nStart = nStart;
-} // end of wxMenuItem::SetRadioGroupStart
+} // wxMenuItem::SetRadioGroupStart
void wxMenuItem::SetRadioGroupEnd(
int nEnd
)
{
- wxASSERT_MSG( m_bIsRadioGroupStart,
- _T("should only be called for the first radio item") );
-
+ wxASSERT_MSG( m_bIsRadioGroupStart
+ ,_T("should only be called for the first radio item")
+ );
m_vRadioGroup.m_nEnd = nEnd;
} // end of wxMenuItem::SetRadioGroupEnd
-
// change item state
// -----------------
return;
HMENU hMenu = GetHmenuOf(m_parentMenu);
- if ( GetKind() == wxITEM_RADIO )
+
+ if (GetKind() == wxITEM_RADIO)
{
//
// It doesn't make sense to uncheck a radio item - what would this do?
//
const wxMenuItemList& rItems = m_parentMenu->GetMenuItems();
int nPos = rItems.IndexOf(this);
- int nStart;
- int nEnd;
- wxCHECK_RET( nPos != wxNOT_FOUND,
- _T("menuitem not found in the menu items list?") );
+ wxCHECK_RET( nPos != wxNOT_FOUND
+ ,_T("menuitem not found in the menu items list?")
+ );
//
// Get the radio group range
//
+ int nStart;
+ int nEnd;
if (m_bIsRadioGroupStart)
{
- // we already have all information we need
+ //
+ // We already have all information we need
+ //
nStart = nPos;
- nEnd = m_vRadioGroup.m_nEnd;
+ nEnd = m_vRadioGroup.m_nEnd;
}
- else // Next radio group item
+ else // next radio group item
{
//
// Get the radio group end from the start item
for (int n = nStart; n <= nEnd && pNode; n++)
{
- if (n != nPos)
- {
- pNode->GetData()->m_isChecked = FALSE;
- }
-
if (n == nPos)
{
- bOk = (bool)::WinSendMsg( hMenu
- ,MM_SETITEMATTR
- ,MPFROM2SHORT(n, TRUE)
- ,MPFROM2SHORT(MIA_CHECKED, MIA_CHECKED)
- );
+ ::WinSendMsg( hMenu
+ ,MM_SETITEMATTR
+ ,MPFROM2SHORT(n, TRUE)
+ ,MPFROM2SHORT(MIA_CHECKED, MIA_CHECKED)
+ );
}
- else
+ if (n != nPos)
{
- bOk = (bool)::WinSendMsg( hMenu
- ,MM_SETITEMATTR
- ,MPFROM2SHORT(n, TRUE)
- ,MPFROM2SHORT(MIA_CHECKED, FALSE)
- );
+ pNode->GetData()->m_isChecked = FALSE;
+ ::WinSendMsg( hMenu
+ ,MM_SETITEMATTR
+ ,MPFROM2SHORT(n, TRUE)
+ ,MPFROM2SHORT(MIA_CHECKED, FALSE)
+ );
}
pNode = pNode->GetNext();
}
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);