- // ctor & dtor
- wxMenu(const wxString& title = wxEmptyString, const wxFunction func = NULL);
- ~wxMenu();
-
- // construct menu
- // append items to the menu
- // separator line
- void AppendSeparator();
- // normal item
- void Append(int id, const wxString& Label, const wxString& helpString = wxEmptyString,
- bool checkable = FALSE);
- // a submenu
- void Append(int id, const wxString& Label, wxMenu *SubMenu,
- const wxString& helpString = wxEmptyString);
- // the most generic form (create wxMenuItem first and use it's functions)
- void Append(wxMenuItem *pItem);
- // insert a break in the menu
- void Break();
- // delete an item
- void Delete(int id);
-
- // menu item control
- void Enable(int id, bool Flag);
- bool Enabled(int id) const;
- inline bool IsEnabled(int id) const { return Enabled(id); };
- void Check(int id, bool Flag);
- bool Checked(int id) const;
- inline bool IsChecked(int id) const { return IsChecked(id); };
-
- // item properties
- // title
- void SetTitle(const wxString& label);
- const wxString GetTitle() const;
- // label
- void SetLabel(int id, const wxString& label);
- wxString GetLabel(int id) const;
- // help string
- virtual void SetHelpString(int id, const wxString& helpString);
- virtual wxString GetHelpString(int id) const ;
-
- // find item
- // Finds the item id matching the given string, -1 if not found.
- virtual int FindItem(const wxString& itemString) const ;
- // Find wxMenuItem by ID, and item's menu too if itemMenu is !NULL.
- wxMenuItem *FindItemForId(int itemId, wxMenu **itemMenu = NULL) const;
-
- void ProcessCommand(wxCommandEvent& event);
- inline void Callback(const wxFunction func) { m_callback = func; }
-
- virtual void SetParent(wxEvtHandler *parent) { m_parent = parent; }
- inline void SetEventHandler(wxEvtHandler *handler) { m_eventHandler = handler; }
- inline wxEvtHandler *GetEventHandler() { return m_eventHandler; }
-
- inline wxList& GetItems() const { return (wxList&) m_menuItems; }
-
- //// Motif-specific
- inline WXWidget GetButtonWidget() const { return m_buttonWidget; }
- inline void SetButtonWidget(WXWidget buttonWidget) { m_buttonWidget = buttonWidget; }
- inline WXWidget GetMainWidget() const { return m_menuWidget; }
- inline wxMenu* GetParent() const { return m_menuParent; }
- inline int GetId() const { return m_menuId; }
- inline void SetId(int id) { m_menuId = id; }
- inline void SetMenuBar(wxMenuBar* menuBar) { m_menuBar = menuBar; }
- inline wxMenuBar* GetMenuBar() const { return m_menuBar; }
-
- void CreatePopup (WXWidget logicalParent, int x, int y);
- void DestroyPopup (void);
- void ShowPopup (int x, int y);
- void HidePopup (void);
-
- WXWidget CreateMenu(wxMenuBar *menuBar, WXWidget parent, wxMenu *topMenu,
- const wxString& title = "", bool isPulldown = FALSE);
-
- // For popups, need to destroy, then recreate menu for a different (or
- // possibly same) window, since the parent may change.
- void DestroyMenu(bool full);
- WXWidget FindMenuItem(int id, wxMenuItem **it = NULL) const;
-
+ // ctors & dtor
+ wxMenu(const wxString& title, long style = 0)
+ : wxMenuBase(title, style) { Init(); }
+
+ wxMenu(long style = 0) : wxMenuBase(style) { Init(); }
+
+ virtual ~wxMenu();
+
+ // implement base class virtuals
+ virtual wxMenuItem* DoAppend(wxMenuItem *item);
+ virtual wxMenuItem* DoInsert(size_t pos, wxMenuItem *item);
+ virtual wxMenuItem* DoRemove(wxMenuItem *item);
+
+ virtual void Break();
+
+ virtual void SetTitle(const wxString& title);
+
+ bool ProcessCommand(wxCommandEvent& event);
+
+ //// Motif-specific
+ WXWidget GetButtonWidget() const { return m_buttonWidget; }
+ void SetButtonWidget(WXWidget buttonWidget) { m_buttonWidget = buttonWidget; }
+
+ WXWidget GetMainWidget() const { return m_menuWidget; }
+
+ int GetId() const { return m_menuId; }
+ void SetId(int id) { m_menuId = id; }
+
+ void SetMenuBar(wxMenuBar* menuBar) { m_menuBar = menuBar; }
+ wxMenuBar* GetMenuBar() const { return m_menuBar; }
+
+ void CreatePopup(WXWidget logicalParent, int x, int y);
+ void DestroyPopup();
+ void ShowPopup(int x, int y);
+ void HidePopup();
+
+ WXWidget CreateMenu(wxMenuBar *menuBar, WXWidget parent, wxMenu *topMenu,
+ size_t index, const wxString& title = wxEmptyString,
+ bool isPulldown = false);
+
+ // For popups, need to destroy, then recreate menu for a different (or
+ // possibly same) window, since the parent may change.
+ void DestroyMenu(bool full);
+ WXWidget FindMenuItem(int id, wxMenuItem **it = NULL) const;
+
+ const wxColour& GetBackgroundColour() const { return m_backgroundColour; }
+ const wxColour& GetForegroundColour() const { return m_foregroundColour; }
+ const wxFont& GetFont() const { return m_font; }
+
+ void SetBackgroundColour(const wxColour& colour);
+ void SetForegroundColour(const wxColour& colour);
+ void SetFont(const wxFont& colour);
+ void ChangeFont(bool keepOriginalSize = false);
+
+ WXWidget GetHandle() const { return m_menuWidget; }
+
+ bool IsTearOff() const { return (m_style & wxMENU_TEAROFF) != 0; }
+
+ void DestroyWidgetAndDetach();