X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/47d67540a017101b3e46abe9ef0f55914d8de37e..1fa29bdc254c03dd5026a4b72aa8312667178121:/include/wx/gtk/menuitem.h diff --git a/include/wx/gtk/menuitem.h b/include/wx/gtk/menuitem.h index 9c912967f1..790aa61847 100644 --- a/include/wx/gtk/menuitem.h +++ b/include/wx/gtk/menuitem.h @@ -1,95 +1,82 @@ /////////////////////////////////////////////////////////////////////////////// // Name: menuitem.h // Purpose: wxMenuItem class -// Author: Vadim Zeitlin -// Modified by: -// Created: 11.11.97 +// Author: Robert Roebling // RCS-ID: $Id$ -// Copyright: (c) 1998 Vadim Zeitlin -// Licence: wxWindows license +// Copyright: (c) 1998 Robert Roebling +// Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// -#ifndef _MENUITEM_H -#define _MENUITEM_H +#ifndef __GTKMENUITEMH__ +#define __GTKMENUITEMH__ -#ifdef __GNUG__ -#pragma interface "menuitem.h" +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) +#pragma interface #endif -// ---------------------------------------------------------------------------- -// headers -// ---------------------------------------------------------------------------- +#include "wx/bitmap.h" -#include "wx/setup.h" +//----------------------------------------------------------------------------- +// wxMenuItem +//----------------------------------------------------------------------------- -// 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" -#endif - -// ---------------------------------------------------------------------------- -// constants -// ---------------------------------------------------------------------------- - -// id for a separator line in the menu (invalid for normal item) -#define ID_SEPARATOR (-1) - -// ---------------------------------------------------------------------------- -// wxMenuItem: an item in the menu, optionally implements owner-drawn behaviour -// ---------------------------------------------------------------------------- -class WXDLLEXPORT wxMenuItem: public wxObject -#if wxUSE_OWNER_DRAWN - , public wxOwnerDrawn -#endif +class wxMenuItem : public wxMenuItemBase { -DECLARE_DYNAMIC_CLASS(wxMenuItem) - 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(); - - // accessors (some more are inherited from wxOwnerDrawn or are below) - bool IsSeparator() const { return m_idItem == ID_SEPARATOR; } - bool IsEnabled() const { return m_bEnabled; } - bool IsChecked() const { return m_bChecked; } - - int GetId() const { return m_idItem; } - const wxString& GetHelp() const { return m_strHelp; } - wxMenu *GetSubMenu() const { return m_pSubMenu; } - - // operations - void SetName(const wxString& strName) { m_strName = strName; } - void SetHelp(const wxString& strHelp) { m_strHelp = strHelp; } - - void Enable(bool bDoEnable = TRUE); - void Check(bool bDoCheck = TRUE); - - void DeleteSubMenu(); + wxMenuItem(wxMenu *parentMenu = (wxMenu *)NULL, + int id = wxID_SEPARATOR, + const wxString& text = wxEmptyString, + const wxString& help = wxEmptyString, + wxItemKind kind = wxITEM_NORMAL, + wxMenu *subMenu = (wxMenu *)NULL); + ~wxMenuItem(); + + // implement base class virtuals + virtual void SetText( const wxString& str ); + virtual void Enable( bool enable = TRUE ); + virtual void Check( bool check = TRUE ); + virtual bool IsChecked() const; + virtual void SetBitmap(const wxBitmap& bitmap) { m_bitmap = bitmap; } + virtual const wxBitmap& GetBitmap() const { return m_bitmap; } + +#if wxUSE_ACCEL + virtual wxAcceleratorEntry *GetAccel() const; +#endif // wxUSE_ACCEL + + // implementation + void SetMenuItem(GtkWidget *menuItem) { m_menuItem = menuItem; } + GtkWidget *GetMenuItem() const { return m_menuItem; } + GtkWidget *GetLabelWidget() const { return m_labelWidget; } + void SetLabelWidget(GtkWidget *labelWidget) { m_labelWidget = labelWidget; } + wxString GetFactoryPath() const; + + wxString GetHotKey() const { return m_hotKey; } + + // compatibility only, don't use in new code + wxMenuItem(wxMenu *parentMenu, + int id, + const wxString& text, + const wxString& help, + bool isCheckable, + wxMenu *subMenu = (wxMenu *)NULL); private: - int m_idItem; // numeric id of the item - wxString m_strHelp; // associated help string - wxMenu *m_pSubMenu, // may be NULL - *m_pParentMenu; // menu this item is contained in - bool m_bEnabled, // enabled or greyed? - m_bChecked; // checked? (only if checkable) + // common part of all ctors + void Init(const wxString& text); -#if wxUSE_OWNER_DRAWN - // wxOwnerDrawn base class already has these variables - nothing to do + // DoSetText() transforms the accel mnemonics in our label from MSW/wxWin + // style to GTK+ and is called from ctor and SetText() + void DoSetText(const wxString& text); -#else //!owner drawn - bool m_bCheckable; // can be checked? - wxString m_strName; // name or label of the item + wxString m_hotKey; + wxBitmap m_bitmap; // Bitmap for menuitem, if any -public: - const wxString& GetName() const { return m_strName; } - bool IsCheckable() const { return m_bCheckable; } -#endif //owner drawn + GtkWidget *m_menuItem; // GtkMenuItem + GtkWidget* m_labelWidget; // Label widget + + DECLARE_DYNAMIC_CLASS(wxMenuItem) }; -#endif //_MENUITEM_H + +#endif + //__GTKMENUITEMH__