X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9b6dbb09746f8f5ee0549a2ff39ae0ac4c725898..861ccde48164e232a7486e6084db4727faf50e0a:/include/wx/motif/menu.h diff --git a/include/wx/motif/menu.h b/include/wx/motif/menu.h index dd34942155..22ddece86e 100644 --- a/include/wx/motif/menu.h +++ b/include/wx/motif/menu.h @@ -18,6 +18,8 @@ #include "wx/defs.h" #include "wx/event.h" +#include "wx/font.h" +#include "wx/gdicmn.h" class WXDLLEXPORT wxMenuItem; class WXDLLEXPORT wxMenuBar; @@ -62,6 +64,10 @@ public: bool Checked(int id) const; inline bool IsChecked(int id) const { return IsChecked(id); }; + // Client data + inline void SetClientData(void* clientData) { m_clientData = clientData; } + inline void* GetClientData() const { return m_clientData; } + // item properties // title void SetTitle(const wxString& label); @@ -79,6 +85,12 @@ public: // Find wxMenuItem by ID, and item's menu too if itemMenu is !NULL. wxMenuItem *FindItemForId(int itemId, wxMenu **itemMenu = NULL) const; + // Updates the UI for a menu and all submenus recursively. + // source is the object that has the update event handlers + // defined for it. If NULL, the menu or associated window + // will be used. + void UpdateUI(wxEvtHandler* source = (wxEvtHandler*) NULL); + void ProcessCommand(wxCommandEvent& event); inline void Callback(const wxFunction func) { m_callback = func; } @@ -88,9 +100,41 @@ public: inline wxList& GetItems() const { return (wxList&) m_menuItems; } + void SetInvokingWindow(wxWindow *pWin) { m_pInvokingWindow = pWin; } + wxWindow *GetInvokingWindow() const { return m_pInvokingWindow; } + //// 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; + + 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); + public: wxFunction m_callback; @@ -100,6 +144,8 @@ public: wxList m_menuItems; wxEvtHandler * m_parent; wxEvtHandler * m_eventHandler; + void* m_clientData; + wxWindow* m_pInvokingWindow; //// Motif-specific int m_numColumns; @@ -107,9 +153,12 @@ public: WXWidget m_popupShell; // For holding the popup shell widget WXWidget m_buttonWidget; // The actual string, so we can grey it etc. int m_menuId; - wxMenu* m_topMenu ; + wxMenu* m_topLevelMenu ; wxMenu* m_menuParent; bool m_ownedByMenuBar; + wxColour m_foregroundColour; + wxColour m_backgroundColour; + wxFont m_font; }; // ---------------------------------------------------------------------------- @@ -120,6 +169,7 @@ class WXDLLEXPORT wxMenuBar: public wxEvtHandler { DECLARE_DYNAMIC_CLASS(wxMenuBar) + wxMenuBar( long style ); wxMenuBar(); wxMenuBar(int n, wxMenu *menus[], const wxString titles[]); ~wxMenuBar(); @@ -157,14 +207,40 @@ class WXDLLEXPORT wxMenuBar: public wxEvtHandler inline int GetMenuCount() const { return m_menuCount; } inline wxMenu* GetMenu(int i) const { return m_menus[i]; } + //// Motif-specific + inline wxFrame* GetMenuBarFrame() const { return m_menuBarFrame; } + inline void SetMenuBarFrame(wxFrame* frame) { m_menuBarFrame = frame; } + inline WXWidget GetMainWidget() const { return m_mainWidget; } + inline void SetMainWidget(WXWidget widget) { m_mainWidget = widget; } + + // Create menubar + bool CreateMenuBar(wxFrame* frame); + + // Destroy menubar, but keep data structures intact so we can recreate it. + bool DestroyMenuBar(); + + 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); + public: wxEvtHandler * m_eventHandler; int m_menuCount; wxMenu ** m_menus; wxString * m_titles; wxFrame * m_menuBarFrame; -/* TODO: data that represents the actual menubar when created. - */ + + //// Motif-specific + WXWidget m_mainWidget; + + wxColour m_foregroundColour; + wxColour m_backgroundColour; + wxFont m_font; }; #endif // _WX_MENU_H_