#include "wx/defs.h"
#include "wx/event.h"
+#include "wx/font.h"
+#include "wx/gdicmn.h"
class WXDLLEXPORT wxMenuItem;
class WXDLLEXPORT wxMenuBar;
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);
//// 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;
wxList m_menuItems;
wxEvtHandler * m_parent;
wxEvtHandler * m_eventHandler;
+ void* m_clientData;
//// Motif-specific
int m_numColumns;
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;
};
// ----------------------------------------------------------------------------
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_