| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- ///////////////////////////////////////////////////////////////////////////////
- // Name: wx/os2/menuitem.h
- // Purpose: wxMenuItem class
- // Author: Vadim Zeitlin
- // Modified by:
- // Created: 11.11.97
- // Copyright: (c) 1998 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
- // Licence: wxWindows licence
- ///////////////////////////////////////////////////////////////////////////////
- #ifndef _MENUITEM_H
- #define _MENUITEM_H
- // ----------------------------------------------------------------------------
- // headers
- // ----------------------------------------------------------------------------
- #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/bitmap.h"
- #endif
- // ----------------------------------------------------------------------------
- // constants
- // ----------------------------------------------------------------------------
- // ----------------------------------------------------------------------------
- // wxMenuItem: an item in the menu, optionally implements owner-drawn behaviour
- // ----------------------------------------------------------------------------
- class WXDLLIMPEXP_CORE wxMenuItem: public wxMenuItemBase
- #if wxUSE_OWNER_DRAWN
- , public wxOwnerDrawn
- #endif
- {
- public:
- //
- // ctor & dtor
- //
- wxMenuItem( wxMenu* pParentMenu = NULL
- ,int nId = wxID_SEPARATOR
- ,const wxString& rStrName = wxEmptyString
- ,const wxString& rWxHelp = wxEmptyString
- ,wxItemKind eKind = wxITEM_NORMAL
- ,wxMenu* pSubMenu = NULL
- );
- //
- // 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();
- //
- // Override base class virtuals
- //
- virtual void SetItemLabel(const wxString& rStrName);
- virtual void Enable(bool bDoEnable = true);
- virtual void Check(bool bDoCheck = true);
- virtual bool IsChecked(void) const;
- //
- // Unfortunately needed to resolve ambiguity between
- // wxMenuItemBase::IsCheckable() and wxOwnerDrawn::IsCheckable()
- //
- bool IsCheckable(void) const { return wxMenuItemBase::IsCheckable(); }
- //
- // 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(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
|