]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/motif/menu.h
added WX_CLEAR_ARRAY() macro to delete all the elements of an array
[wxWidgets.git] / include / wx / motif / menu.h
index dd349421559b9a076d811544422c7854cd92ce5a..d29ae23ac40278bcb066f7b2ba49c425df6a74b8 100644 (file)
@@ -18,6 +18,8 @@
 
 #include "wx/defs.h"
 #include "wx/event.h"
 
 #include "wx/defs.h"
 #include "wx/event.h"
+#include "wx/font.h"
+#include "wx/gdicmn.h"
 
 class WXDLLEXPORT wxMenuItem;
 class WXDLLEXPORT wxMenuBar;
 
 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); };
 
   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);
   // item properties
     // title
   void SetTitle(const wxString& label);
@@ -90,7 +96,36 @@ public:
 
   //// Motif-specific
   inline WXWidget GetButtonWidget() const { return m_buttonWidget; }
 
   //// 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 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;
 
 public:
   wxFunction        m_callback;
 
@@ -100,6 +135,7 @@ public:
   wxList            m_menuItems;
   wxEvtHandler *    m_parent;
   wxEvtHandler *    m_eventHandler;
   wxList            m_menuItems;
   wxEvtHandler *    m_parent;
   wxEvtHandler *    m_eventHandler;
+  void*             m_clientData;
 
   //// Motif-specific
   int               m_numColumns;
 
   //// Motif-specific
   int               m_numColumns;
@@ -107,9 +143,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;
   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;
   wxMenu*           m_menuParent;
   bool              m_ownedByMenuBar;
+  wxColour          m_foregroundColour;
+  wxColour          m_backgroundColour;
+  wxFont            m_font;
 };
 
 // ----------------------------------------------------------------------------
 };
 
 // ----------------------------------------------------------------------------
@@ -157,14 +196,40 @@ class WXDLLEXPORT wxMenuBar: public wxEvtHandler
   inline int GetMenuCount() const { return m_menuCount; }
   inline wxMenu* GetMenu(int i) const { return m_menus[i]; }
 
   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;
  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_
 };
 
 #endif // _WX_MENU_H_