]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/motif/menu.h
Coupled some core functionality out, to allow its use outside the wxLibrary
[wxWidgets.git] / include / wx / motif / menu.h
index f89f733d11f5ec8bdcd188a84c8b615e5991b398..22ddece86e9cb293a41b024148e77774a841149d 100644 (file)
@@ -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,6 +100,9 @@ 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; }
@@ -111,6 +126,15 @@ public:
   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;
 
@@ -120,6 +144,8 @@ public:
   wxList            m_menuItems;
   wxEvtHandler *    m_parent;
   wxEvtHandler *    m_eventHandler;
+  void*             m_clientData;
+  wxWindow*         m_pInvokingWindow;
 
   //// Motif-specific
   int               m_numColumns;
@@ -130,6 +156,9 @@ public:
   wxMenu*           m_topLevelMenu ;
   wxMenu*           m_menuParent;
   bool              m_ownedByMenuBar;
+  wxColour          m_foregroundColour;
+  wxColour          m_backgroundColour;
+  wxFont            m_font;
 };
 
 // ----------------------------------------------------------------------------
@@ -140,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();
@@ -183,6 +213,21 @@ class WXDLLEXPORT wxMenuBar: public wxEvtHandler
   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;
@@ -193,6 +238,9 @@ class WXDLLEXPORT wxMenuBar: public wxEvtHandler
   //// Motif-specific
   WXWidget                  m_mainWidget;
 
+  wxColour                  m_foregroundColour;
+  wxColour                  m_backgroundColour;
+  wxFont                    m_font;
 };
 
 #endif // _WX_MENU_H_