// Author: David Elliott
// Modified by:
// Created: 2002/12/09
-// RCS-ID: $Id:
+// RCS-ID: $Id:
// Copyright: (c) 2002 David Elliott
// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
virtual void EnableTop(size_t pos, bool enable);
virtual bool IsEnabledTop(size_t pos) const;
- virtual void SetLabelTop(size_t pos, const wxString& label);
- virtual wxString GetLabelTop(size_t pos) const;
+ virtual void SetMenuLabel(size_t pos, const wxString& label);
+ virtual wxString GetMenuLabel(size_t pos) const;
virtual void Attach(wxFrame *frame);
virtual void Detach();
// Author: David Elliott
// Modified by:
// Created: 2002/12/13
-// RCS-ID: $Id:
+// RCS-ID: $Id:
// Copyright: (c) 2002 David Elliott
// Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////////
// ------------------------------------------------------------------------
public:
// override base class virtuals to update the item appearance on screen
- virtual void SetText(const wxString& text);
+ virtual void SetItemLabel(const wxString& text);
virtual void SetCheckable(bool checkable);
virtual void Enable(bool enable = TRUE);
virtual wxMenuItem* FindItem( int id, wxMenu **menu = NULL ) const;
virtual void EnableTop( size_t pos, bool flag );
- virtual void SetLabelTop( size_t pos, const wxString& label );
- virtual wxString GetLabelTop( size_t pos ) const;
+ virtual void SetMenuLabel( size_t pos, const wxString& label );
+ virtual wxString GetMenuLabel( size_t pos ) const;
void SetLayoutDirection(wxLayoutDirection dir);
wxLayoutDirection GetLayoutDirection() const;
virtual ~wxMenuItem();
// implement base class virtuals
- virtual void SetText( const wxString& str );
+ virtual void SetItemLabel( const wxString& str );
+ virtual wxString GetItemLabel() const;
virtual void Enable( bool enable = TRUE );
virtual void Check( bool check = TRUE );
virtual bool IsChecked() const;
DECLARE_DYNAMIC_CLASS(wxMenuItem)
};
-
#endif
//__GTKMENUITEMH__
virtual wxMenuItem* FindItem( int id, wxMenu **menu = NULL ) const;
virtual void EnableTop( size_t pos, bool flag );
- virtual void SetLabelTop( size_t pos, const wxString& label );
- virtual wxString GetLabelTop( size_t pos ) const;
+ virtual void SetMenuLabel( size_t pos, const wxString& label );
+ virtual wxString GetMenuLabel( size_t pos ) const;
// implementation only from now on
void SetInvokingWindow( wxWindow *win );
virtual ~wxMenuItem();
// implement base class virtuals
- virtual void SetText( const wxString& str );
+ virtual void SetItemLabel( const wxString& str );
+ virtual wxString GetItemLabel() const;
virtual void Enable( bool enable = TRUE );
virtual void Check( bool check = TRUE );
virtual bool IsChecked() const;
DECLARE_DYNAMIC_CLASS(wxMenuItem)
};
-
#endif
//__GTKMENUITEMH__
// implementation only from now on
// -------------------------------
- int MacGetIndexFromId( int id ) ;
+ int MacGetIndexFromId( int id ) ;
int MacGetIndexFromItem( wxMenuItem *pItem ) ;
void MacEnableMenu( bool bDoEnable ) ;
// MacOS needs to know about submenus somewhere within this menu
virtual wxMenuItem* FindItem( int id, wxMenu **menu = NULL ) const;
virtual void EnableTop( size_t pos, bool flag );
- virtual void SetLabelTop( size_t pos, const wxString& label );
- virtual wxString GetLabelTop( size_t pos ) const;
+ virtual void SetMenuLabel( size_t pos, const wxString& label );
+ virtual wxString GetMenuLabel( size_t pos ) const;
virtual bool Enable( bool enable = TRUE );
// for virtual function hiding
virtual void Enable( int itemid, bool enable )
virtual ~wxMenuItem();
// override base class virtuals
- virtual void SetText(const wxString& strName);
+ virtual void SetItemLabel(const wxString& strName);
virtual void Enable(bool bDoEnable = true);
virtual void Check(bool bDoCheck = true);
void SetLabel(int itemid, const wxString& label);
wxString GetLabel(int itemid) const;
+ // Returns the stripped label
+ wxString GetLabelText(int itemid) const { return wxMenuItem::GetLabelText(GetLabel(itemid)); }
+
virtual void SetHelpString(int itemid, const wxString& helpString);
virtual wxString GetHelpString(int itemid) const;
virtual bool IsEnabledTop(size_t WXUNUSED(pos)) const { return true; }
// get or change the label of the menu at given position
- virtual void SetLabelTop(size_t pos, const wxString& label) = 0;
- virtual wxString GetLabelTop(size_t pos) const = 0;
+ virtual void SetMenuLabel(size_t pos, const wxString& label) = 0;
+ virtual wxString GetMenuLabel(size_t pos) const = 0;
+
+ // get the stripped label of the menu at given position
+ virtual wxString GetMenuLabelText(size_t pos) const { return wxMenuItem::GetLabelText(GetMenuLabel(pos)); }
// item search
// -----------
virtual bool CanBeOutsideClientArea() const { return true; }
+#if WXWIN_COMPATIBILITY_2_8
+ // get or change the label of the menu at given position
+ wxDEPRECATED( void SetLabelTop(size_t pos, const wxString& label) );
+ wxDEPRECATED( wxString GetLabelTop(size_t pos) const );
+#endif
+
protected:
// the list of all our menus
wxMenuList m_menus;
DECLARE_NO_COPY_CLASS(wxMenuBarBase)
};
+#if WXWIN_COMPATIBILITY_2_8
+// get or change the label of the menu at given position
+void wxMenuBarBase::SetLabelTop(size_t pos, const wxString& label)
+{
+ SetMenuLabel(pos, label);
+}
+
+wxString wxMenuBarBase::GetLabelTop(size_t pos) const
+{
+ return GetMenuLabel(pos);
+}
+#endif
+
// ----------------------------------------------------------------------------
// include the real class declaration
// ----------------------------------------------------------------------------
// the item's text (or name)
//
- // NB: the item's text includes the accelerators and mnemonics info (if
+ // NB: the item's label includes the accelerators and mnemonics info (if
// any), i.e. it may contain '&' or '_' or "\t..." and thus is
- // different from the item's label which only contains the text shown
- // in the menu
- virtual void SetText(const wxString& str);
- wxString GetLabel() const { return GetLabelFromText(m_text); }
- const wxString& GetText() const { return m_text; }
+ // different from the item's text which only contains the text shown
+ // in the menu. This used to be called SetText.
+ virtual void SetItemLabel(const wxString& str);
- // get the label from text (implemented in platform-specific code)
- static wxString GetLabelFromText(const wxString& text);
+ // return the item label including any mnemonics and accelerators.
+ // This used to be called GetText.
+ virtual wxString GetItemLabel() const { return m_text; }
+
+ // return just the text of the item label, without any mnemonics
+ // This used to be called GetLabel.
+ virtual wxString GetItemLabelText() const { return GetLabelText(m_text); }
+
+ // return just the text part of the given label (implemented in platform-specific code)
+ // This used to be called GetLabelFromText.
+ static wxString GetLabelText(const wxString& label);
// what kind of menu item we are
wxItemKind GetKind() const { return m_kind; }
#if WXWIN_COMPATIBILITY_2_8
// compatibility only, use new functions in the new code
wxDEPRECATED( void SetName(const wxString& str) );
- wxDEPRECATED( const wxString& GetName() const );
+ wxDEPRECATED( wxString GetName() const );
+
+ // Now use GetItemLabelText
+ wxDEPRECATED( wxString GetLabel() const ) ;
+
+ // Now use GetItemLabel
+ wxDEPRECATED( const wxString& GetText() const );
+
+ // Now use GetLabelText to strip the accelerators
+ wxDEPRECATED( static wxString GetLabelFromText(const wxString& text) );
+
+ // Now use SetItemLabel
+ wxDEPRECATED( virtual void SetText(const wxString& str) );
#endif // WXWIN_COMPATIBILITY_2_8
static wxMenuItem *New(wxMenu *parentMenu,
#if WXWIN_COMPATIBILITY_2_8
inline void wxMenuItemBase::SetName(const wxString &str)
- { SetText(str); }
-inline const wxString& wxMenuItemBase::GetName() const
- { return GetText(); }
+ { SetItemLabel(str); }
+inline wxString wxMenuItemBase::GetName() const
+ { return GetItemLabel(); }
+inline wxString wxMenuItemBase::GetLabel() const
+ { return GetLabelFromText(m_text); }
+inline const wxString& wxMenuItemBase::GetText() const { return m_text; }
+inline void wxMenuItemBase::SetText(const wxString& text) { SetItemLabel(text); }
#endif // WXWIN_COMPATIBILITY_2_8
// ----------------------------------------------------------------------------
virtual wxMenuItem* FindItem( int id, wxMenu **menu = NULL ) const;
virtual void EnableTop( size_t pos, bool flag );
- virtual void SetLabelTop( size_t pos, const wxString& label );
- virtual wxString GetLabelTop( size_t pos ) const;
+ virtual void SetMenuLabel( size_t pos, const wxString& label );
+ virtual wxString GetMenuLabel( size_t pos ) const;
// implementation only from now on
// -------------------------------
virtual ~wxMenuItem();
// accessors (some more are inherited from wxOwnerDrawn or are below)
- virtual void SetText(const wxString& label);
+ virtual void SetItemLabel(const wxString& label);
virtual void Enable(bool enable = true);
virtual void Check(bool check = true);
// included SetBitmap and GetBitmap as copied from the GTK include file
virtual wxMenu *Remove(size_t pos);
virtual void EnableTop( size_t pos, bool flag );
- virtual void SetLabelTop( size_t pos, const wxString& label );
- virtual wxString GetLabelTop( size_t pos ) const;
+ virtual void SetMenuLabel( size_t pos, const wxString& label );
+ virtual wxString GetMenuLabel( size_t pos ) const;
// implementation from now on
WXHMENU Create();
virtual ~wxMenuItem();
// override base class virtuals
- virtual void SetText(const wxString& strName);
+ virtual void SetItemLabel(const wxString& strName);
virtual void SetCheckable(bool checkable);
virtual void Enable(bool bDoEnable = true);
virtual void EnableTop( size_t nPos
,bool bFlag
);
- virtual void SetLabelTop( size_t nPos
+ virtual void SetMenuLabel( size_t nPos
,const wxString& rLabel
);
- virtual wxString GetLabelTop(size_t nPos) const;
+ virtual wxString GetMenuLabel(size_t nPos) const;
//
// Implementation from now on
//
// Override base class virtuals
//
- virtual void SetText(const wxString& rStrName);
+ virtual void SetItemLabel(const wxString& rStrName);
virtual void SetCheckable(bool bCheckable);
virtual void Enable(bool bDoEnable = true);
virtual wxMenu *Remove(size_t pos);
virtual void EnableTop( size_t pos, bool flag );
- virtual void SetLabelTop( size_t pos, const wxString& label );
- virtual wxString GetLabelTop( size_t pos ) const;
+ virtual void SetMenuLabel( size_t pos, const wxString& label );
+ virtual wxString GetMenuLabel( size_t pos ) const;
// implementation from now on
WXHMENU Create();
virtual ~wxMenuItem();
// override base class virtuals
- virtual void SetText(const wxString& strName);
+ virtual void SetItemLabel(const wxString& strName);
virtual void SetCheckable(bool checkable);
virtual void Enable(bool bDoEnable = TRUE);
virtual void EnableTop(size_t pos, bool enable);
virtual bool IsEnabledTop(size_t pos) const;
- virtual void SetLabelTop(size_t pos, const wxString& label);
- virtual wxString GetLabelTop(size_t pos) const;
+ virtual void SetMenuLabel(size_t pos, const wxString& label);
+ virtual wxString GetMenuLabel(size_t pos) const;
virtual void Attach(wxFrame *frame);
virtual void Detach();
virtual ~wxMenuItem();
// override base class virtuals to update the item appearance on screen
- virtual void SetText(const wxString& text);
+ virtual void SetItemLabel(const wxString& text);
virtual void SetCheckable(bool checkable);
virtual void Enable(bool enable = true);
// the bitmaps (may be invalid, then they're not used)
wxBitmap m_bmpChecked,
m_bmpUnchecked,
- m_bmpDisabled;
+ m_bmpDisabled;
// the positions of the first and last items of the radio group this item
// belongs to or -1: start is the radio group start and is valid for all
wxCHECK_RET( count, _T("no last menu?") );
wxLogMessage(_T("The label of the last menu item is '%s'"),
- mbar->GetLabelTop(count - 1).c_str());
+ mbar->GetMenuLabel(count - 1).c_str());
}
#if wxUSE_TEXTDLG
(
_T("Enter new label: "),
_T("Change last menu text"),
- mbar->GetLabelTop(count - 1),
+ mbar->GetMenuLabel(count - 1),
this
);
if ( !label.empty() )
{
- mbar->SetLabelTop(count - 1, label);
+ mbar->SetMenuLabel(count - 1, label);
}
}
(
_T("Enter new label: "),
_T("Change last menu item text"),
- item->GetLabel(),
+ item->GetItemLabel(),
this
);
label.Replace( _T("\\t"), _T("\t") );
if ( !label.empty() )
{
- item->SetText(label);
+ item->SetItemLabel(label);
}
}
}
return false;
}
-void wxMenuBar::SetLabelTop(size_t pos, const wxString& label)
+void wxMenuBar::SetMenuLabel(size_t pos, const wxString& label)
{
}
-wxString wxMenuBar::GetLabelTop(size_t pos) const
+wxString wxMenuBar::GetMenuLabel(size_t pos) const
{
wxMenu *menu = GetMenu(pos);
int itemindex = [m_cocoaNSMenu indexOfItemWithSubmenu:menu->GetNSMenu()];
}
/* static */
-wxString wxMenuItemBase::GetLabelFromText(const wxString& text)
+wxString wxMenuItemBase::GetLabelText(const wxString& text)
{
return wxStripMenuCodes(text);
}
}
}
-void wxMenuItem::SetText(const wxString& label)
+void wxMenuItem::SetItemLabel(const wxString& label)
{
- wxMenuItemBase::SetText(label);
+ wxMenuItemBase::SetItemLabel(label);
wxCHECK_RET(m_kind != wxITEM_SEPARATOR, wxT("Separator items do not have titles."));
[m_cocoaNSMenuItem setTitle: wxNSStringWithWxString(wxStripMenuCodes(label))];
CocoaSetKeyEquivalent();
if (m_id == wxID_SEPARATOR)
m_kind = wxITEM_SEPARATOR;
- SetText(text);
+ SetItemLabel(text);
SetHelp(help);
}
wxAcceleratorEntry *wxMenuItemBase::GetAccel() const
{
- return wxAcceleratorEntry::Create(GetText());
+ return wxAcceleratorEntry::Create(GetItemLabel());
}
void wxMenuItemBase::SetAccel(wxAcceleratorEntry *accel)
text += accel->ToString();
}
- SetText(text);
+ SetItemLabel(text);
}
#endif // wxUSE_ACCEL
-void wxMenuItemBase::SetText(const wxString& str)
+void wxMenuItemBase::SetItemLabel(const wxString& str)
{
m_text = str;
}
}
+#if WXWIN_COMPATIBILITY_2_8
+wxString wxMenuItemBase::GetLabelFromText(const wxString& text)
+{
+ return GetLabelText(text);
+}
+#endif
+
bool wxMenuBase::ms_locked = true;
// ----------------------------------------------------------------------------
// Finds the item id matching the given string, wxNOT_FOUND if not found.
int wxMenuBase::FindItem(const wxString& text) const
{
- wxString label = wxMenuItem::GetLabelFromText(text);
+ wxString label = wxMenuItem::GetLabelText(text);
for ( wxMenuItemList::compatibility_iterator node = m_items.GetFirst();
node;
node = node->GetNext() )
wxCHECK_RET( item, wxT("wxMenu::SetLabel: no such item") );
- item->SetText(label);
+ item->SetItemLabel(label);
}
wxString wxMenuBase::GetLabel( int id ) const
wxCHECK_MSG( item, wxEmptyString, wxT("wxMenu::GetLabel: no such item") );
- return item->GetText();
+ return item->GetItemLabel();
}
void wxMenuBase::SetHelpString( int id, const wxString& helpString )
int wxMenuBarBase::FindMenu(const wxString& title) const
{
- wxString label = wxMenuItem::GetLabelFromText(title);
+ wxString label = wxMenuItem::GetLabelText(title);
size_t count = GetMenuCount();
for ( size_t i = 0; i < count; i++ )
{
- wxString title2 = GetLabelTop(i);
+ wxString title2 = GetMenuLabel(i);
if ( (title2 == title) ||
- (wxMenuItem::GetLabelFromText(title2) == label) )
+ (wxMenuItem::GetLabelText(title2) == label) )
{
// found
return (int)i;
int wxMenuBarBase::FindMenuItem(const wxString& menu, const wxString& item) const
{
- wxString label = wxMenuItem::GetLabelFromText(menu);
+ wxString label = wxMenuItem::GetLabelText(menu);
int i = 0;
wxMenuList::compatibility_iterator node;
for ( node = m_menus.GetFirst(); node; node = node->GetNext(), i++ )
{
- if ( label == wxMenuItem::GetLabelFromText(GetLabelTop(i)) )
+ if ( label == wxMenuItem::GetLabelText(GetMenuLabel(i)) )
return node->GetData()->FindItem(item);
}
wxCHECK_RET( item, wxT("wxMenuBar::SetLabel(): no such item") );
- item->SetText(label);
+ item->SetItemLabel(label);
}
wxString wxMenuBarBase::GetLabel(int id) const
wxCHECK_MSG( item, wxEmptyString,
wxT("wxMenuBar::GetLabel(): no such item") );
- return item->GetText();
+ return item->GetItemLabel();
}
void wxMenuBarBase::SetHelpString(int id, const wxString& helpString)
wxChar *wxStripMenuCodes(const wxChar *in, wxChar *out)
{
#if wxUSE_MENUS
- wxString s = wxMenuItem::GetLabelFromText(in);
+ wxString s = wxMenuItem::GetLabelText(in);
#else
wxString str(in);
wxString s = wxStripMenuCodes(str);
return str;
}
+static wxString wxConvertFromGTKToWXLabel(const wxString& gtkLabel)
+{
+ wxString label;
+ for ( const wxChar *pc = gtkLabel.c_str(); *pc; pc++ )
+ {
+ // '_' is the escape character for GTK+.
+
+ if ( *pc == wxT('_') && *(pc+1) == wxT('_'))
+ {
+ // An underscore was escaped.
+ label += wxT('_');
+ pc++;
+ }
+ else if ( *pc == wxT('_') )
+ {
+ // Convert GTK+ hotkey symbol to wxWidgets/Windows standard
+ label += wxT('&');
+ }
+ else if ( *pc == wxT('&') )
+ {
+ // Double the ampersand to escape it as far as wxWidgets is concerned
+ label += wxT("&&");
+ }
+ else
+ {
+ // don't remove ampersands '&' since if we have them in the menu title
+ // it means that they were doubled to indicate "&" instead of accelerator
+ label += *pc;
+ }
+ }
+
+ return label;
+}
+
//-----------------------------------------------------------------------------
// activate message from GTK
//-----------------------------------------------------------------------------
static int FindMenuItemRecursive( const wxMenu *menu, const wxString &menuString, const wxString &itemString )
{
- if (wxMenuItem::GetLabelFromText(menu->GetTitle()) == wxMenuItem::GetLabelFromText(menuString))
+ if (wxMenuItem::GetLabelText(wxConvertFromGTKToWXLabel(menu->GetTitle())) == wxMenuItem::GetLabelText(menuString))
{
int res = menu->FindItem( itemString );
if (res != wxNOT_FOUND)
gtk_widget_set_sensitive( menu->m_owner, flag );
}
-wxString wxMenuBar::GetLabelTop( size_t pos ) const
+wxString wxMenuBar::GetMenuLabel( size_t pos ) const
{
wxMenuList::compatibility_iterator node = m_menus.Item( pos );
wxMenu* menu = node->GetData();
- wxString label;
- wxString text( menu->GetTitle() );
- for ( const wxChar *pc = text.c_str(); *pc; pc++ )
- {
- if ( *pc == wxT('_') )
- {
- // '_' is the escape character for GTK+
- continue;
- }
-
- // don't remove ampersands '&' since if we have them in the menu title
- // it means that they were doubled to indicate "&" instead of accelerator
-
- label += *pc;
- }
-
- return label;
+ return wxConvertFromGTKToWXLabel(menu->GetTitle());
}
-void wxMenuBar::SetLabelTop( size_t pos, const wxString& label )
+void wxMenuBar::SetMenuLabel( size_t pos, const wxString& label )
{
wxMenuList::compatibility_iterator node = m_menus.Item( pos );
// return the menu item text without any menu accels
/* static */
-wxString wxMenuItemBase::GetLabelFromText(const wxString& text)
+
+// TODO: this is now wrong, because it will be used by public APIs
+// to convert from label-with-wxWidgets-hotkeys to plain text,
+// and this function converts from GTK+ hotkeys to plain text.
+
+wxString wxMenuItemBase::GetLabelText(const wxString& text)
{
+ // The argument to this function will now always be in wxWidgets standard label
+ // format, not GTK+ format, so we do what the other ports do.
+
+ return wxStripMenuCodes(text);
+
+#if 0
wxString label;
for ( const wxChar *pc = text.c_str(); *pc; pc++ )
label += *pc;
}
- // wxPrintf( wxT("GetLabelFromText(): text %s label %s\n"), text.c_str(), label.c_str() );
+ // wxPrintf( wxT("GetLabelText(): text %s label %s\n"), text.c_str(), label.c_str() );
return label;
+#endif
}
-void wxMenuItem::SetText( const wxString& str )
+wxString wxMenuItem::GetItemLabel() const
+{
+ return wxConvertFromGTKToWXLabel(m_text);
+}
+
+void wxMenuItem::SetItemLabel( const wxString& str )
{
// cache some data which must be used later
bool isstock = wxIsStockID(GetId());
}
// NOTE: this function is different from the similar functions GTKProcessMnemonics()
-// implemented in control.cpp and from wxMenuItemBase::GetLabelFromText...
+// implemented in control.cpp and from wxMenuItemBase::GetLabelText...
// so there's no real code duplication
wxString wxMenuItem::GTKProcessMenuItemLabel(const wxString& str, wxString *hotKey)
{
// see wxMenu::Init
gtk_widget_unref( m_menu );
g_object_unref( m_accel );
-
+
// if the menu is inserted in another menu at this time, there was
// one more reference to it:
if ( m_owner )
GtkWidget *menuItem;
// cache some data used later
- wxString text = mitem->GetText();
+ wxString text = mitem->GetItemLabel();
int id = mitem->GetId();
bool isstock = wxIsStockID(id);
const char *stockid = NULL;
}
else // a normal item
{
- // NB: 'text' variable has "_" instead of "&" after mitem->SetText()
+ // NB: 'text' variable has "_" instead of "&" after mitem->SetItemLabel()
// so don't use it
switch ( mitem->GetKind() )
GdkModifierType accel_mods;
wxCharBuffer buf = wxGTK_CONV_SYS( GetGtkHotKey(*mitem) );
- // wxPrintf( wxT("item: %s hotkey %s\n"), mitem->GetText().c_str(), GetGtkHotKey(*mitem).c_str() );
+ // wxPrintf( wxT("item: %s hotkey %s\n"), mitem->GetItemLabel().c_str(), GetGtkHotKey(*mitem).c_str() );
if (buf[(size_t)0] != '\0')
{
gtk_accelerator_parse( (const char*) buf, &accel_key, &accel_mods);
return str;
}
+static wxString wxConvertFromGTKToWXLabel(const wxString& gtkLabel)
+{
+ wxString label;
+ for ( const wxChar *pc = gtkLabel.c_str(); *pc; pc++ )
+ {
+ // '_' is the escape character for GTK+.
+
+ if ( *pc == wxT('_') && *(pc+1) == wxT('_'))
+ {
+ // An underscore was escaped.
+ label += wxT('_');
+ pc++;
+ }
+ else if ( *pc == wxT('_') )
+ {
+ // Convert GTK+ hotkey symbol to wxWidgets/Windows standard
+ label += wxT('&');
+ }
+ else if ( *pc == wxT('&') )
+ {
+ // Double the ampersand to escape it as far as wxWidgets is concerned
+ label += wxT("&&");
+ }
+ else
+ {
+ // don't remove ampersands '&' since if we have them in the menu title
+ // it means that they were doubled to indicate "&" instead of accelerator
+ label += *pc;
+ }
+ }
+
+ return label;
+}
+
+
//-----------------------------------------------------------------------------
// activate message from GTK
//-----------------------------------------------------------------------------
static int FindMenuItemRecursive( const wxMenu *menu, const wxString &menuString, const wxString &itemString )
{
- if (wxMenuItem::GetLabelFromText(menu->GetTitle()) == wxMenuItem::GetLabelFromText(menuString))
+ if (wxMenuItem::GetLabelText(wxConvertFromGTKToWXLabel(menu->GetTitle())) == wxMenuItem::GetLabelText(menuString))
{
int res = menu->FindItem( itemString );
if (res != wxNOT_FOUND)
gtk_widget_set_sensitive( menu->m_owner, flag );
}
-wxString wxMenuBar::GetLabelTop( size_t pos ) const
+wxString wxMenuBar::GetMenuLabel( size_t pos ) const
{
wxMenuList::compatibility_iterator node = m_menus.Item( pos );
wxMenu* menu = node->GetData();
- wxString label;
- wxString text( menu->GetTitle() );
- for ( const wxChar *pc = text.c_str(); *pc; pc++ )
- {
- if ( *pc == wxT('_') )
- {
- // '_' is the escape character for GTK+
- continue;
- }
-
- // don't remove ampersands '&' since if we have them in the menu title
- // it means that they were doubled to indicate "&" instead of accelerator
-
- label += *pc;
- }
-
- return label;
+ return wxConvertFromGTKToWXLabel(menu->GetTitle());
}
-void wxMenuBar::SetLabelTop( size_t pos, const wxString& label )
+void wxMenuBar::SetMenuLabel( size_t pos, const wxString& label )
{
wxMenuList::compatibility_iterator node = m_menus.Item( pos );
// return the menu item text without any menu accels
/* static */
-wxString wxMenuItemBase::GetLabelFromText(const wxString& text)
+wxString wxMenuItemBase::GetLabelText(const wxString& text)
{
+ // The argument to this function will now always be in wxWidgets standard label
+ // format, not GTK+ format, so we do what the other ports do.
+
+ return wxStripMenuCodes(text);
+
+#if 0
wxString label;
for ( const wxChar *pc = text.c_str(); *pc; pc++ )
label += *pc;
}
- // wxPrintf( wxT("GetLabelFromText(): text %s label %s\n"), text.c_str(), label.c_str() );
+ // wxPrintf( wxT("GetLabelText(): text %s label %s\n"), text.c_str(), label.c_str() );
return label;
+#endif
+}
+
+wxString wxMenuItem::GetItemLabel() const
+{
+ return wxConvertFromGTKToWXLabel(m_text);
}
-void wxMenuItem::SetText( const wxString& string )
+void wxMenuItem::SetItemLabel( const wxString& string )
{
wxString str = string;
if ( str.empty() && !IsSeparator() )
}
else if (mitem->GetBitmap().Ok())
{
- text = mitem->GetText();
+ text = mitem->GetItemLabel();
const wxBitmap *bitmap = &mitem->GetBitmap();
// TODO
}
else // a normal item
{
- // text has "_" instead of "&" after mitem->SetText() so don't use it
- text = mitem->GetText() ;
+ // text has "_" instead of "&" after mitem->SetItemLabel() so don't use it
+ text = mitem->GetItemLabel() ;
switch ( mitem->GetKind() )
{
GdkModifierType accel_mods;
wxCharBuffer buf = wxGTK_CONV( GetGtkHotKey(*mitem) );
- // wxPrintf( wxT("item: %s hotkey %s\n"), mitem->GetText().c_str(), GetGtkHotKey(*mitem).c_str() );
+ // wxPrintf( wxT("item: %s hotkey %s\n"), mitem->GetItemLabel().c_str(), GetGtkHotKey(*mitem).c_str() );
gtk_accelerator_parse( (const char*) buf, &accel_key, &accel_mods);
if (accel_key != 0)
{
return true;
}
-void wxMenuBar::SetLabelTop(size_t pos, const wxString& label)
+void wxMenuBar::SetMenuLabel(size_t pos, const wxString& label)
{
wxCHECK_RET( pos < GetMenuCount(), wxT("invalid menu index") );
}
}
-wxString wxMenuBar::GetLabelTop(size_t pos) const
+wxString wxMenuBar::GetMenuLabel(size_t pos) const
{
wxCHECK_MSG( pos < GetMenuCount(), wxEmptyString,
- wxT("invalid menu index in wxMenuBar::GetLabelTop") );
+ wxT("invalid menu index in wxMenuBar::GetMenuLabel") );
return m_titles[pos];
}
}
}
-void wxMenuItem::SetText(const wxString& text)
+void wxMenuItem::SetItemLabel(const wxString& text)
{
// don't do anything if label didn't change
if ( m_text == text )
return;
- wxMenuItemBase::SetText(text);
+ wxMenuItemBase::SetItemLabel(text);
UpdateItemText() ;
}
// ----------------------------------------------------------------------------
/* static */
-wxString wxMenuItemBase::GetLabelFromText(const wxString& text)
+wxString wxMenuItemBase::GetLabelText(const wxString& text)
{
return wxStripMenuCodes(text);
}
// wxLogWarning("wxMenuBar::EnableTop not yet implemented.");
}
-void wxMenuBar::SetLabelTop(size_t pos, const wxString& label)
+void wxMenuBar::SetMenuLabel(size_t pos, const wxString& label)
{
wxMenu *menu = GetMenu(pos);
if ( !menu )
XmNlabelString, label_str(),
NULL);
}
+ m_titles[i] = label;
}
-wxString wxMenuBar::GetLabelTop(size_t pos) const
+wxString wxMenuBar::GetMenuLabel(size_t pos) const
{
- wxMenu *menu = GetMenu(pos);
- if ( menu )
- {
- Widget w = (Widget)menu->GetButtonWidget();
- if (w)
- {
- XmString text;
- XtVaGetValues(w,
- XmNlabelString, &text,
- NULL);
-
- return wxXmStringToString( text );
- }
- }
-
- return wxEmptyString;
+ wxCHECK_MSG( pos < GetMenuCount(), wxEmptyString,
+ wxT("invalid menu index in wxMenuBar::GetMenuLabel") );
+ return m_titles[pos];
}
bool wxMenuBar::Append(wxMenu * menu, const wxString& title)
}
/* static */
-wxString wxMenuItemBase::GetLabelFromText(const wxString& text)
+wxString wxMenuItemBase::GetLabelText(const wxString& text)
{
return wxStripMenuCodes(text);
}
}
}
-void wxMenuItem::SetText(const wxString& label)
+void wxMenuItem::SetItemLabel(const wxString& label)
{
char mnem = wxFindMnemonic (label);
wxString label2 = wxStripMenuCodes(label);
if( menubar->GetMenuCount() == 1 )
{
autoMenu = wxTopLevelWindowMSW::ButtonMenu::DuplicateMenu(menubar->GetMenu(0));
- SetRightMenu(wxID_ANY, menubar->GetLabelTop(0), autoMenu);
+ SetRightMenu(wxID_ANY, menubar->GetMenuLabel(0), autoMenu);
}
else
{
for( size_t n = 0; n < menubar->GetMenuCount(); n++ )
{
wxMenu *item = menubar->GetMenu(n);
- wxString label = menubar->GetLabelTop(n);
+ wxString label = menubar->GetMenuLabel(n);
wxMenu *new_item = wxTopLevelWindowMSW::ButtonMenu::DuplicateMenu(item);
autoMenu->Append(wxID_ANY, label, new_item);
}
for( size_t i = 0 ; i < GetMenuCount() ; ++i )
{
wxMenuInfo* info = new wxMenuInfo() ;
- info->Create( const_cast<wxMenuBar*>(this)->GetMenu(i) , GetLabelTop(i) ) ;
+ info->Create( const_cast<wxMenuBar*>(this)->GetMenu(i) , GetMenuLabel(i) ) ;
list->Append( info ) ;
}
return m_menuInfos ;
}
// find the (new) accel for this item
- wxAcceleratorEntry *accel = wxAcceleratorEntry::Create(item->GetText());
+ wxAcceleratorEntry *accel = wxAcceleratorEntry::Create(item->GetItemLabel());
if ( accel )
accel->m_command = item->GetId();
// prepare to insert the item in the menu
- wxString itemText = pItem->GetText();
+ wxString itemText = pItem->GetItemLabel();
LPCTSTR pData = NULL;
if ( pos == (size_t)-1 )
{
flags |= MF_STRING;
#ifdef __WXWINCE__
- itemText = wxMenuItem::GetLabelFromText(itemText);
+ itemText = wxMenuItem::GetLabelText(itemText);
#endif
pData = (wxChar*)itemText.wx_str();
{
HMENU hPopupMenu = (HMENU) GetMenu(i)->GetHMenu();
tbButton.dwData = (DWORD)hPopupMenu;
- wxString label = wxStripMenuCodes(GetLabelTop(i));
+ wxString label = wxStripMenuCodes(GetMenuLabel(i));
tbButton.iString = (int) label.wx_str();
tbButton.idCommand = NewControlId();
Refresh();
}
-void wxMenuBar::SetLabelTop(size_t pos, const wxString& label)
+void wxMenuBar::SetMenuLabel(size_t pos, const wxString& label)
{
wxCHECK_RET( pos < GetMenuCount(), wxT("invalid menu index") );
Refresh();
}
-wxString wxMenuBar::GetLabelTop(size_t pos) const
+wxString wxMenuBar::GetMenuLabel(size_t pos) const
{
wxCHECK_MSG( pos < GetMenuCount(), wxEmptyString,
- wxT("invalid menu index in wxMenuBar::GetLabelTop") );
+ wxT("invalid menu index in wxMenuBar::GetMenuLabel") );
- return wxMenuItem::GetLabelFromText(m_titles[pos]);
+ return m_titles[pos];
}
// ---------------------------------------------------------------------------
}
/* static */
-wxString wxMenuItemBase::GetLabelFromText(const wxString& text)
+wxString wxMenuItemBase::GetLabelText(const wxString& text)
{
return wxStripMenuCodes(text);
}
wxMenuItemBase::Check(check);
}
-void wxMenuItem::SetText(const wxString& txt)
+void wxMenuItem::SetItemLabel(const wxString& txt)
{
wxString text = txt;
return;
// wxMenuItemBase will do stock ID checks
- wxMenuItemBase::SetText(text);
+ wxMenuItemBase::SetItemLabel(text);
// m_text could now be different from 'text' if we are a stock menu item,
// so use only m_text below
Refresh();
} // end of wxMenuBar::EnableTop
-void wxMenuBar::SetLabelTop(
+void wxMenuBar::SetMenuLabel(
size_t nPos
, const wxString& rLabel
)
wxLogLastError(wxT("ModifyMenu"));
}
Refresh();
-} // end of wxMenuBar::SetLabelTop
+} // end of wxMenuBar::SetMenuLabel
-wxString wxMenuBar::GetLabelTop(
+wxString wxMenuBar::GetMenuLabel(
size_t nPos
) const
{
wxCHECK_MSG( nPos < GetMenuCount(), wxEmptyString,
- wxT("invalid menu index in wxMenuBar::GetLabelTop") );
+ wxT("invalid menu index in wxMenuBar::GetMenuLabel") );
return m_titles[nPos];
-} // end of wxMenuBar::GetLabelTop
+} // end of wxMenuBar::GetMenuLabel
// ---------------------------------------------------------------------------
// wxMenuBar construction
return (uFlag & MIA_CHECKED) == MIA_CHECKED ;
} // end of wxMenuItem::IsChecked
-wxString wxMenuItemBase::GetLabelFromText(
+wxString wxMenuItemBase::GetLabelText(
const wxString& rsText
)
{
sLabel += *zPc;
}
return sLabel;
-} // end of wxMenuItemBase::GetLabelFromText
+} // end of wxMenuItemBase::GetLabelText
//
// Radio group stuff
wxMenuItemBase::Check(bCheck);
} // end of wxMenuItem::Check
-void wxMenuItem::SetText( const wxString& rText )
+void wxMenuItem::SetItemLabel( const wxString& rText )
{
//
// Don't do anything if label didn't change
return;
// wxMenuItemBase will do stock ID checks
- wxMenuItemBase::SetText(sText);
+ wxMenuItemBase::SetItemLabel(sText);
// m_text could now be different from 'text' if we are a stock menu item,
// so use only m_text below
for( size_t i = 0 ; i < GetMenuCount() ; ++i )
{
wxMenuInfo* info = new wxMenuInfo() ;
- info->Create( const_cast<wxMenuBar*>(this)->GetMenu(i) , GetLabelTop(i) ) ;
+ info->Create( const_cast<wxMenuBar*>(this)->GetMenu(i) , GetMenuLabel(i) ) ;
list->Append( info ) ;
}
return m_menuInfos ;
// Palm OS does not have support for grayed or disabled items
}
-void wxMenuBar::SetLabelTop(size_t pos, const wxString& label)
+void wxMenuBar::SetMenuLabel(size_t pos, const wxString& label)
{
wxCHECK_RET( pos < GetMenuCount(), wxT("invalid menu index") );
- m_titles[pos]=wxStripMenuCodes(label);
+ m_titles[pos] = label;
if ( !IsAttached() )
{
Refresh();
}
-wxString wxMenuBar::GetLabelTop(size_t pos) const
+wxString wxMenuBar::GetMenuLabel(size_t pos) const
{
wxCHECK_MSG( pos < GetMenuCount(), wxEmptyString,
- wxT("invalid menu index in wxMenuBar::GetLabelTop") );
+ wxT("invalid menu index in wxMenuBar::GetMenuLabel") );
- return wxMenuItem::GetLabelFromText(m_titles[pos]);
+ return m_titles[pos];
}
// ---------------------------------------------------------------------------
if ( !menuOld )
return NULL;
- m_titles[pos]=wxStripMenuCodes(title);
+ m_titles[pos] = title;
if ( IsAttached() )
{
if ( !wxMenuBarBase::Insert(pos, menu, title) )
return false;
- m_titles.Insert(wxStripMenuCodes(title), pos);
+ m_titles.Insert(title, pos);
if ( IsAttached() )
{
if ( !wxMenuBarBase::Append(menu, title) )
return false;
- m_titles.Add(wxStripMenuCodes(title));
+ m_titles.Add(title);
if(IsAttached())
{
}
/* static */
-wxString wxMenuItemBase::GetLabelFromText(const wxString& text)
+wxString wxMenuItemBase::GetLabelText(const wxString& text)
{
return wxStripMenuCodes(text);
}
{
}
-void wxMenuItem::SetText(const wxString& text)
+void wxMenuItem::SetItemLabel(const wxString& text)
{
}
}
/* static */
-wxString wxMenuItemBase::GetLabelFromText(const wxString& text)
+wxString wxMenuItemBase::GetLabelText(const wxString& text)
{
return wxStripMenuCodes(text);
}
m_strAccel = m_text.AfterFirst(_T('\t'));
}
-void wxMenuItem::SetText(const wxString& text)
+void wxMenuItem::SetItemLabel(const wxString& text)
{
if ( text != m_text )
{
// first call the base class version to change m_text
// (and also check if we don't have a stock menu item)
- wxMenuItemBase::SetText(text);
+ wxMenuItemBase::SetItemLabel(text);
UpdateAccelInfo();
return m_menuInfos[pos].IsEnabled();
}
-void wxMenuBar::SetLabelTop(size_t pos, const wxString& label)
+void wxMenuBar::SetMenuLabel(size_t pos, const wxString& label)
{
- wxCHECK_RET( pos < GetCount(), _T("invalid index in EnableTop") );
+ wxCHECK_RET( pos < GetCount(), _T("invalid index in SetMenuLabel") );
if ( label != m_menuInfos[pos].GetLabel() )
{
//else: nothing to do
}
-wxString wxMenuBar::GetLabelTop(size_t pos) const
+wxString wxMenuBar::GetMenuLabel(size_t pos) const
{
- wxCHECK_MSG( pos < GetCount(), wxEmptyString, _T("invalid index in GetLabelTop") );
+ wxCHECK_MSG( pos < GetCount(), wxEmptyString, _T("invalid index in GetMenuLabel") );
return m_menuInfos[pos].GetLabel();
}
{
wxClientDC dc(wxConstCast(this, wxMenuBar));
dc.SetFont(wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT));
- dc.GetTextExtent(GetLabelTop(0), &size.x, &size.y);
+ dc.GetTextExtent(GetMenuLabel(0), &size.x, &size.y);
// adjust for the renderer we use
size = GetRenderer()->GetMenuBarItemSize(size);