X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/eca370a9cf88259480e9f34afc17347ce603ff37..9869c26285dc51d13607cddaa04f65ce983653a5:/include/wx/os2/menuitem.h?ds=inline diff --git a/include/wx/os2/menuitem.h b/include/wx/os2/menuitem.h index f9ebaf8659..626996fe26 100644 --- a/include/wx/os2/menuitem.h +++ b/include/wx/os2/menuitem.h @@ -1,32 +1,29 @@ /////////////////////////////////////////////////////////////////////////////// -// Name: menuitem.h +// Name: wx/os2/menuitem.h // Purpose: wxMenuItem class // Author: Vadim Zeitlin // Modified by: // Created: 11.11.97 -// RCS-ID: $Id$ // Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license +// Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// #ifndef _MENUITEM_H #define _MENUITEM_H -#ifdef __GNUG__ -#pragma interface "menuitem.h" -#endif - // ---------------------------------------------------------------------------- // headers // ---------------------------------------------------------------------------- -#include "wx/setup.h" +#include "wx/defs.h" +#include "wx/os2/private.h" // for MENUITEM // an exception to the general rule that a normal header doesn't include other // headers - only because ownerdrw.h is not always included and I don't want // to write #ifdef's everywhere... #if wxUSE_OWNER_DRAWN - #include "wx/ownerdrw.h" + #include "wx/ownerdrw.h" + #include "wx/bitmap.h" #endif // ---------------------------------------------------------------------------- @@ -36,41 +33,139 @@ // ---------------------------------------------------------------------------- // wxMenuItem: an item in the menu, optionally implements owner-drawn behaviour // ---------------------------------------------------------------------------- -class WXDLLEXPORT wxMenuItem: public wxMenuItemBase +class WXDLLIMPEXP_CORE wxMenuItem: public wxMenuItemBase #if wxUSE_OWNER_DRAWN , public wxOwnerDrawn #endif { public: + // // ctor & dtor - wxMenuItem(wxMenu *pParentMenu = NULL, int id = ID_SEPARATOR, - const wxString& strName = "", const wxString& wxHelp = "", - bool bCheckable = FALSE, wxMenu *pSubMenu = NULL); - virtual ~wxMenuItem(); + // + wxMenuItem( wxMenu* pParentMenu = NULL + ,int nId = wxID_SEPARATOR + ,const wxString& rStrName = wxEmptyString + ,const wxString& rWxHelp = wxEmptyString + ,wxItemKind eKind = wxITEM_NORMAL + ,wxMenu* pSubMenu = NULL + ); - // override base class virtuals - virtual void SetText(const wxString& strName); - virtual void SetCheckable(bool checkable); + // + // Depricated, do not use in new code + // + wxMenuItem( wxMenu* pParentMenu + ,int vId + ,const wxString& rsText + ,const wxString& rsHelp + ,bool bIsCheckable + ,wxMenu* pSubMenu = NULL + ); + virtual ~wxMenuItem(); - virtual void Enable(bool bDoEnable = TRUE); - virtual void Check(bool bDoCheck = TRUE); - virtual bool IsChecked() const; + // + // Override base class virtuals + // + virtual void SetItemLabel(const wxString& rStrName); -#if wxUSE_ACCEL - virtual wxAcceleratorEntry *GetAccel() const; -#endif // wxUSE_ACCEL + virtual void Enable(bool bDoEnable = true); + virtual void Check(bool bDoCheck = true); + virtual bool IsChecked(void) const; - // unfortunately needed to resolve ambiguity between + // + // Unfortunately needed to resolve ambiguity between // wxMenuItemBase::IsCheckable() and wxOwnerDrawn::IsCheckable() - bool IsCheckable() const { return wxMenuItemBase::IsCheckable(); } + // + bool IsCheckable(void) const { return wxMenuItemBase::IsCheckable(); } - // the id for a popup menu is really its menu handle (as required by + // + // The id for a popup menu is really its menu handle (as required by // ::AppendMenu() API), so this function will return either the id or the // menu handle depending on what we're - int GetRealId() const; + // + int GetRealId(void) const; + + // + // Mark item as belonging to the given radio group + // + void SetAsRadioGroupStart(void); + void SetRadioGroupStart(int nStart); + void SetRadioGroupEnd(int nEnd); + + // + // All OS/2PM Submenus and menus have one of these + // + MENUITEM m_vMenuData; + +#if wxUSE_OWNER_DRAWN + + void SetBitmaps(const wxBitmap& bmpChecked, + const wxBitmap& bmpUnchecked = wxNullBitmap) + { + m_bmpChecked = bmpChecked; + m_bmpUnchecked = bmpUnchecked; + SetOwnerDrawn(true); + } + + void SetBitmap(const wxBitmap& bmp, bool bChecked = true) + { + if ( bChecked ) + m_bmpChecked = bmp; + else + m_bmpUnchecked = bmp; + SetOwnerDrawn(true); + } + + void SetDisabledBitmap(const wxBitmap& bmpDisabled) + { + m_bmpDisabled = bmpDisabled; + SetOwnerDrawn(true); + } + + const wxBitmap& GetBitmap(bool bChecked = true) const + { return (bChecked ? m_bmpChecked : m_bmpUnchecked); } + + const wxBitmap& GetDisabledBitmap() const + { return m_bmpDisabled; } + + + // override wxOwnerDrawn base class virtuals + virtual wxString GetName() const; + virtual bool OnMeasureItem(size_t *pwidth, size_t *pheight); + virtual bool OnDrawItem(wxDC& dc, const wxRect& rc, wxODAction act, wxODStatus stat); + +protected: + virtual void GetFontToUse(wxFont& font) const; + +#endif // wxUSE_OWNER_DRAWN private: + void Init(); + + // + // 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 + // but first radio group items (m_isRadioGroupStart == FALSE), end is valid + // only for the first one + // + union + { + int m_nStart; + int m_nEnd; + } m_vRadioGroup; + + // + // Does this item start a radio group? + // + bool m_bIsRadioGroupStart; + +#if wxUSE_OWNER_DRAWN + // item bitmaps + wxBitmap m_bmpChecked, // bitmap to put near the item + m_bmpUnchecked, // (checked is used also for 'uncheckable' items) + m_bmpDisabled; +#endif // wxUSE_OWNER_DRAWN + DECLARE_DYNAMIC_CLASS(wxMenuItem) -}; +}; // end of CLASS wxMenuItem #endif //_MENUITEM_H