/////////////////////////////////////////////////////////////////////////////
-// Name: menu.h
+// Name: wx/os2/menu.h
// Purpose: wxMenu, wxMenuBar classes
// Author: David Webster
// Modified by:
// Created: 10/10/99
-// RCS-ID: $Id$
// Copyright: (c) David Webster
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#if wxUSE_ACCEL
#include "wx/accel.h"
+ #include "wx/list.h" // for "template" list classes
#include "wx/dynarray.h"
- WX_DEFINE_EXPORTED_ARRAY(wxAcceleratorEntry *, wxAcceleratorArray);
+ WX_DEFINE_EXPORTED_ARRAY_PTR(wxAcceleratorEntry *, wxAcceleratorArray);
#endif // wxUSE_ACCEL
-class WXDLLEXPORT wxFrame;
+class WXDLLIMPEXP_FWD_CORE wxFrame;
void wxSetShortCutKey(wxChar* zText);
// Menu
// ----------------------------------------------------------------------------
-class WXDLLEXPORT wxMenu : public wxMenuBase
+class WXDLLIMPEXP_CORE wxMenu : public wxMenuBase
{
public:
//
//
// Implement base class virtuals
//
- virtual bool DoAppend(wxMenuItem* pItem);
- virtual bool DoInsert( size_t nPos
+ virtual wxMenuItem* DoAppend(wxMenuItem* pItem);
+ virtual wxMenuItem* DoInsert( size_t nPos
,wxMenuItem* pItem
);
virtual wxMenuItem* DoRemove(wxMenuItem* pItem);
virtual void Break(void);
virtual void SetTitle(const wxString& rTitle);
-#if wxUSE_MENU_CALLBACK
- wxMenu( const wxString& rTitle
- ,const wxFunction fnFunc
- )
- : wxMenuBase(rTitle)
- {
- Init();
- Callback(fnFunc);
- }
-#endif // wxUSE_MENU_CALLBACK
-
- //
- // OS2-specific
- //
- bool ProcessCommand(wxCommandEvent& rEvent);
-
-
//
// Implementation only from now on
// -------------------------------
//
+ virtual void Attach(wxMenuBarBase* pMenubar);
+
bool OS2Command( WXUINT uParam
,WXWORD wId
);
//
WXHMENU GetHMenu() const { return m_hMenu; }
- //
- // Attach/detach menu to/from wxMenuBar
- //
- void Attach(wxMenuBar* pMenubar);
- void Detach(void);
-
#if wxUSE_ACCEL
//
// Called by wxMenuBar to build its accel table from the accels of all menus
//
- bool HasAccels(void) const { return !m_vAccels.IsEmpty(); }
+ bool HasAccels(void) const { return m_vAccels.IsEmpty(); }
size_t GetAccelCount(void) const { return m_vAccels.GetCount(); }
size_t CopyAccels(wxAcceleratorEntry* pAccels) const;
//
int FindAccel(int nId) const;
#endif // wxUSE_ACCEL
+ //
+ // OS/2 specific Find
+ //
+ wxMenuItem* FindItem(int id, ULONG hItem, wxMenu **menu = NULL) const;
+ //virtual function hiding suppression
+ int FindItem(const wxString& rsString) const
+ { return wxMenuBase::FindItem(rsString); }
+ wxMenuItem* FindItem(int id, wxMenu **menu = NULL) const
+ { return wxMenuBase::FindItem(id, menu); }
//
// All OS/2PM Menu's have one of these
);
//
- // If TRUE, insert a breal before appending the next item
+ // Terminate the current radio group, if any
//
- bool m_bDoBreak;
+ void EndRadioGroup(void);
+
+ //
+ // If true, insert a breal before appending the next item
+ //
+ bool m_bDoBreak;
//
// The menu handle of this menu
//
// The helper variable for creating unique IDs.
//
- static USHORT m_nextMenuId;
+ static USHORT m_nextMenuId;
+
+ //
+ // The position of the first item in the current radio group or -1
+ //
+ int m_nStartRadioGroup;
#if wxUSE_ACCEL
//
// Menu Bar (a la Windows)
// ----------------------------------------------------------------------------
-class WXDLLEXPORT wxMenuBar : public wxMenuBarBase
+class WXDLLIMPEXP_CORE wxMenuBar : public wxMenuBarBase
{
public:
//
wxMenuBar( int n
,wxMenu* vMenus[]
,const wxString sTitles[]
+ ,long lStyle = 0
);
virtual ~wxMenuBar();
virtual wxMenuItem* FindItem( int nId
,wxMenu** ppMenu = NULL
) const;
-
+ virtual wxMenuItem* FindItem( int nId
+ ,ULONG hItem
+ ,wxMenu** ppMenu = NULL
+ ) const;
virtual void EnableTop( size_t nPos
,bool bFlag
);
- virtual void SetLabelTop( size_t nPos
+ virtual void SetMenuLabel( size_t nPos
,const wxString& rLabel
);
- virtual wxString GetLabelTop(size_t nPos) const;
-
- //
- // Compatibility: these functions are deprecated
- //
-#if WXWIN_COMPATIBILITY
- void SetEventHandler(wxEvtHandler* pHandler) { m_pEventHandler = pHandler; }
- wxEvtHandler* GetEventHandler(void) { return m_pEventHandler; }
- bool Enabled(int nId) const { return IsEnabled(nId); }
- bool Checked(int nId) const { return IsChecked(nId); }
-#endif // WXWIN_COMPATIBILITY
+ virtual wxString GetMenuLabel(size_t nPos) const;
//
// Implementation from now on
//
WXHMENU Create(void);
- void Detach(void);
-
- //
- // Returns TRUE if we're attached to a frame
- //
- bool IsAttached(void) const { return m_pMenuBarFrame != NULL; }
-
- //
- // Get the frame we live in
- //
- wxFrame * GetFrame(void) const { return m_pMenuBarFrame; }
-
- //
- // Attach to a frame
- //
- void Attach(wxFrame* pFrame);
+ virtual void Detach(void);
+ virtual void Attach(wxFrame* pFrame);
#if wxUSE_ACCEL
//
const wxAcceleratorTable& GetAccelTable(void) const { return m_vAccelTable; }
//
- // Update the accel table (must be called after adding/deletign a menu)
+ // Update the accel table (must be called after adding/deleting a menu)
//
void RebuildAccelTable(void);
#endif // wxUSE_ACCEL
//
void Init(void);
-#if WXWIN_COMPATIBILITY
- wxEvtHandler* m_pEventHandler;
-#endif // WXWIN_COMPATIBILITY
-
wxArrayString m_titles;
- wxFrame* m_pMenuBarFrame;
WXHMENU m_hMenu;
#if wxUSE_ACCEL