From ab4fece809e006a55c61361dadb63aca87ccb0d8 Mon Sep 17 00:00:00 2001
From: David Webster <Dave.Webster@bhmi.com>
Date: Mon, 25 Mar 2002 18:06:12 +0000
Subject: [PATCH] New radio item menu stuff

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14775 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
---
 include/wx/os2/bitmap.h   |   4 +-
 include/wx/os2/menu.h     |  10 +++
 include/wx/os2/menuitem.h |  46 +++++++++++-
 src/os2/makefile.va       |  32 ++++----
 src/os2/menu.cpp          |  22 ++++--
 src/os2/menuitem.cpp      | 150 ++++++++++++++++++++++++++++++--------
 src/os2/wx23.def          | 136 ++++++++++++++++++++++------------
 7 files changed, 299 insertions(+), 101 deletions(-)

diff --git a/include/wx/os2/bitmap.h b/include/wx/os2/bitmap.h
index f5d99b666d..1260879e6b 100644
--- a/include/wx/os2/bitmap.h
+++ b/include/wx/os2/bitmap.h
@@ -183,10 +183,10 @@ public:
 
     void SetMask(wxMask* pMask) ;
 
-    inline bool operator==(const wxBitmap& rBitmap)
+    inline bool operator==(const wxBitmap& rBitmap) const
       { return m_refData == rBitmap.m_refData; }
 
-    inline bool operator!=(const wxBitmap& rBitmap)
+    inline bool operator!=(const wxBitmap& rBitmap) const
       { return m_refData != rBitmap.m_refData; }
 
 #if WXWIN_COMPATIBILITY_2
diff --git a/include/wx/os2/menu.h b/include/wx/os2/menu.h
index 4a0baba04b..fa781ad667 100644
--- a/include/wx/os2/menu.h
+++ b/include/wx/os2/menu.h
@@ -141,6 +141,11 @@ private:
                           ,size_t      nPos = (size_t)-1
                          );
 
+    //
+    // Terminate the current radio group, if any
+    //
+    void EndRadioGroup(void);
+
     //
     // If TRUE, insert a breal before appending the next item
     //
@@ -156,6 +161,11 @@ private:
     //
     static USHORT		            m_nextMenuId;
 
+    //
+    // The position of the first item in the current radio group or -1
+    //
+    int                             m_nStartRadioGroup;
+
 #if wxUSE_ACCEL
     //
     // The accelerators for our menu items
diff --git a/include/wx/os2/menuitem.h b/include/wx/os2/menuitem.h
index 00ab94a4c1..f24abac745 100644
--- a/include/wx/os2/menuitem.h
+++ b/include/wx/os2/menuitem.h
@@ -42,17 +42,32 @@ class WXDLLEXPORT wxMenuItem: public wxMenuItemBase
 #endif
 {
 public:
+    //
     // ctor & dtor
+    //
     wxMenuItem( wxMenu*         pParentMenu = NULL
                ,int             nId = wxID_SEPARATOR
                ,const wxString& rStrName = ""
                ,const wxString& rWxHelp = ""
-               ,wxItemKind      kind = wxItem_Normal
+               ,wxItemKind      kind = wxITEM_NORMAL
                ,wxMenu*         pSubMenu = NULL
               );
+
+    //
+    // Depricated, do not use in new code
+    //
+    wxMenuItem( wxMenu*         pParentMenu
+               ,int             vId
+               ,const wxString& rsText
+               ,const wxString& rsHelp
+               ,bool            bIsCheckable
+               ,wxMenu*         pSubMenu = (wxMenu *)NULL
+              );
     virtual ~wxMenuItem();
 
-    // override base class virtuals
+    //
+    // Override base class virtuals
+    //
     virtual void SetText(const wxString& rStrName);
     virtual void SetCheckable(bool bCheckable);
 
@@ -60,21 +75,44 @@ public:
     virtual void Check(bool bDoCheck = TRUE);
     virtual bool IsChecked(void) const;
 
-    // unfortunately needed to resolve ambiguity between
+    //
+    // Unfortunately needed to resolve ambiguity between
     // wxMenuItemBase::IsCheckable() and wxOwnerDrawn::IsCheckable()
+    //
     bool IsCheckable(void) const { return wxMenuItemBase::IsCheckable(); }
 
-    // the id for a popup menu is really its menu handle (as required by
+    //
+    // The id for a popup menu is really its menu handle (as required by
     // ::AppendMenu() API), so this function will return either the id or the
     // menu handle depending on what we're
+    //
     int GetRealId(void) const;
 
+    void SetAsRadioGroupStart(void);
+    void SetRadioGroupStart(int nStart);
+    void SetRadioGroupEnd(int nEnd);
+
+
     //
     // All OS/2PM Submenus and menus have one of these
     //
     MENUITEM                        m_vMenuData;
 
 private:
+    void Init();
+
+    //
+    // The positions of the first and last items of the radio group this item
+    // belongs to or -1: start is the radio group start and is valid for all
+    // but first radio group items (m_isRadioGroupStart == FALSE), end is valid
+    // only for the first one
+    //
+    union
+    {
+        int m_nStart;
+        int m_nEnd;
+    }                               m_vRadioGroup;
+    bool                            m_bIsRadioGroupStart;
     DECLARE_DYNAMIC_CLASS(wxMenuItem)
 }; // end of CLASS wxMenuItem
 
diff --git a/src/os2/makefile.va b/src/os2/makefile.va
index e8c55fb4d0..7ea6679d1e 100644
--- a/src/os2/makefile.va
+++ b/src/os2/makefile.va
@@ -100,6 +100,7 @@ GENERICOBJS= \
   ..\generic\$D\caret.obj \
   ..\generic\$D\choicdgg.obj \
   ..\generic\$D\colrdlgg.obj \
+  ..\generic\$D\dcbuffer.obj \
   ..\generic\$D\dcpsg.obj \
   ..\generic\$D\dirdlgg.obj \
   ..\generic\$D\dirctrlg.obj \
@@ -111,7 +112,6 @@ GENERICOBJS= \
   ..\generic\$D\gridsel.obj \
   ..\generic\$D\helpext.obj \
   ..\generic\$D\helphtml.obj \
-  ..\generic\$D\helpwxht.obj \
   ..\generic\$D\imaglist.obj \
   ..\generic\$D\laywin.obj \
   ..\generic\$D\listctrl.obj \
@@ -147,6 +147,7 @@ GENLIBOBJS= \
   caret.obj \
   choicdgg.obj \
   colrdlgg.obj \
+  dcbuffer.obj \
   dcpsg.obj \
   dirdlgg.obj \
   dirctrlg.obj \
@@ -158,7 +159,6 @@ GENLIBOBJS= \
   gridsel.obj \
   helpext.obj \
   helphtml.obj \
-  helpwxht.obj \
   imaglist.obj \
   laywin.obj \
   listctrl.obj \
@@ -191,6 +191,8 @@ NONESSENTIALOBJS= \
   ..\generic\$D\msgdlgg.obj
 
 COMMONOBJS = \
+  ..\common\$D\artprov.obj \
+  ..\common\$D\artstd.obj \
   ..\common\$D\appcmn.obj \
   ..\common\$D\choiccmn.obj \
   ..\common\$D\clipcmn.obj \
@@ -324,6 +326,8 @@ COMMONOBJS = \
   ..\common\$D\zstream.obj
 
 COMLIBOBJS1 = \
+  artprov.obj \
+  artstd.obj \
   appcmn.obj \
   choiccmn.obj \
   clipcmn.obj \
@@ -364,11 +368,11 @@ COMLIBOBJS1 = \
   filename.obj \
   filesys.obj \
   fontcmn.obj \
-  fontmap.obj \
-  framecmn.obj \
-  fs_inet.obj
+  fontmap.obj
 
 COMLIBOBJS2 = \
+  framecmn.obj \
+  fs_inet.obj \
   fs_mem.obj \
   fs_zip.obj \
   ftp.obj \
@@ -408,11 +412,11 @@ COMLIBOBJS2 = \
   object.obj \
   odbc.obj \
   paper.obj \
-  popupcmn.obj \
-  prntbase.obj \
-  process.obj
+  popupcmn.obj
 
 COMLIBOBJS3 = \
+  prntbase.obj \
+  process.obj \
   protocol.obj \
   quantize.obj \
   radiocmn.obj \
@@ -690,6 +694,8 @@ $D\dummydll.obj: dummydll.$(SRCSUFF) $(WXDIR)\include\wx\wx.h $(WXDIR)\include\w
         icc $(CPPFLAGS) $(MAKEPRECOMP) /Fo$D\dummydll.obj /Tp dummydll.cpp
 
 $(COMLIBOBJS1):
+  copy ..\common\$D\artprov.obj
+  copy ..\common\$D\artstd.obj
   copy ..\common\$D\appcmn.obj
   copy ..\common\$D\choiccmn.obj
   copy ..\common\$D\clipcmn.obj
@@ -731,10 +737,10 @@ $(COMLIBOBJS1):
   copy ..\common\$D\filesys.obj
   copy ..\common\$D\fontcmn.obj
   copy ..\common\$D\fontmap.obj
-  copy ..\common\$D\framecmn.obj
-  copy ..\common\$D\fs_inet.obj
 
 $(COMLIBOBJS2):
+  copy ..\common\$D\framecmn.obj
+  copy ..\common\$D\fs_inet.obj
   copy ..\common\$D\fs_mem.obj
   copy ..\common\$D\fs_zip.obj
   copy ..\common\$D\ftp.obj
@@ -775,10 +781,10 @@ $(COMLIBOBJS2):
   copy ..\common\$D\odbc.obj
   copy ..\common\$D\paper.obj
   copy ..\common\$D\popupcmn.obj
-  copy ..\common\$D\prntbase.obj
-  copy ..\common\$D\process.obj
 
 $(COMLIBOBJS3):
+  copy ..\common\$D\prntbase.obj
+  copy ..\common\$D\process.obj
   copy ..\common\$D\protocol.obj
   copy ..\common\$D\quantize.obj
   copy ..\common\$D\radiocmn.obj
@@ -827,6 +833,7 @@ $(GENLIBOBJS):
   copy ..\generic\$D\choicdgg.obj
   copy ..\generic\$D\colrdlgg.obj
   copy ..\generic\$D\dragimgg.obj
+  copy ..\generic\$D\dcbuffer.obj
   copy ..\generic\$D\dcpsg.obj
   copy ..\generic\$D\dirdlgg.obj
   copy ..\generic\$D\dirctrlg.obj
@@ -837,7 +844,6 @@ $(GENLIBOBJS):
   copy ..\generic\$D\gridsel.obj
   copy ..\generic\$D\helpext.obj
   copy ..\generic\$D\helphtml.obj
-  copy ..\generic\$D\helpwxht.obj
   copy ..\generic\$D\imaglist.obj
   copy ..\generic\$D\laywin.obj
   copy ..\generic\$D\listctrl.obj
diff --git a/src/os2/menu.cpp b/src/os2/menu.cpp
index 2ed0039e5a..ccf5fce86f 100644
--- a/src/os2/menu.cpp
+++ b/src/os2/menu.cpp
@@ -188,6 +188,14 @@ void wxMenu::Break()
 
 #if wxUSE_ACCEL
 
+void wxMenu::EndRadioGroup()
+{
+    //
+    // We're not inside a radio group any longer
+    //
+    m_nStartRadioGroup = -1;
+} // end of wxMenu::EndRadioGroup
+
 int wxMenu::FindAccel(
   int                               nId
 ) const
@@ -406,18 +414,18 @@ bool wxMenu::DoAppend(
     {
         int                         nCount = GetMenuItemCount();
 
-        if (m_lStartRadioGroup == -1)
+        if (m_nStartRadioGroup == -1)
         {
             //
             // Start a new radio group
             //
-            m_lStartRadioGroup = lCount;
+            m_nStartRadioGroup = nCount;
 
             //
             // For now it has just one element
             //
             pItem->SetAsRadioGroupStart();
-            pItem->SetRadioGroupEnd(m_startRadioGroup);
+            pItem->SetRadioGroupEnd(m_nStartRadioGroup);
 
             //
             // Ensure that we have a checked item in the radio group
@@ -429,12 +437,12 @@ bool wxMenu::DoAppend(
             //
             // We need to update its end item
             //
-            pItem->SetRadioGroupStart(m_lStartRadioGroup);
-            wxMenuItemList::Node *node = GetMenuItems().Item(m_startRadioGroup);
+            pItem->SetRadioGroupStart(m_nStartRadioGroup);
+            wxMenuItemList::Node*   pNode = GetMenuItems().Item(m_nStartRadioGroup);
 
-            if (node)
+            if (pNode)
             {
-                node->GetData()->SetRadioGroupEnd(count);
+                pNode->GetData()->SetRadioGroupEnd(nCount);
             }
             else
             {
diff --git a/src/os2/menuitem.cpp b/src/os2/menuitem.cpp
index 3c065c11fd..b54fd5783c 100644
--- a/src/os2/menuitem.cpp
+++ b/src/os2/menuitem.cpp
@@ -108,15 +108,21 @@ IMPLEMENT_DYNAMIC_CLASS(wxMenuItem, wxObject)
 wxMenuItem::wxMenuItem(
   wxMenu*                           pParentMenu
 , int                               nId
-, const wxString&                   rText
-, const wxString&                   rStrHelp
-, wxItemKind                        kind
+, const wxString&                   rsText
+, const wxString&                   rsHelp
+, wxItemKind                        eKind
 , wxMenu*                           pSubMenu
 )
-: wxMenuItemBase(pParentMenu, nId, rText, rStrHelp, kind, pSubMenu)
+: wxMenuItemBase( pParentMenu
+                 ,nId
+                 ,rsText
+                 ,rsHelp
+                 ,eKind
+                 ,pSubMenu
+                )
 #if wxUSE_OWNER_DRAWN
-,  wxOwnerDrawn( TextToLabel(rText)
-                ,bCheckable
+,  wxOwnerDrawn( TextToLabel(rsText)
+                ,eKind == wxITEM_CHECK
                )
 #endif // owner drawn
 {
@@ -128,15 +134,21 @@ wxMenuItem::wxMenuItem(
 wxMenuItem::wxMenuItem(
   wxMenu*                           pParentMenu
 , int                               nId
-, const wxString&                   rText
-, const wxString&                   rStrHelp
+, const wxString&                   rsText
+, const wxString&                   rsHelp
 , bool                              bIsCheckable
 , wxMenu*                           pSubMenu
 )
-: wxMenuItemBase(pParentMenu, nId, rText, rStrHelp, bIsCheckable ? kITEM_CHECK : kITEM_NORMAL, pSubMenu)
+: wxMenuItemBase( pParentMenu
+                 ,nId
+                 ,rsText
+                 ,rsHelp
+                 ,bIsCheckable ? wxITEM_CHECK : wxITEM_NORMAL
+                 ,pSubMenu
+                )
 #if wxUSE_OWNER_DRAWN
-,  wxOwnerDrawn( TextToLabel(rText)
-                ,bCheckable
+,  wxOwnerDrawn( TextToLabel(rsText)
+                ,bIsCheckable
                )
 #endif // owner drawn
 {
@@ -147,11 +159,13 @@ wxMenuItem::wxMenuItem(
 
 void wxMenuItem::Init()
 {
-    m_radioGroup.start = -1;
-    m_isRadioGroupStart = FALSE;
+    m_vRadioGroup.m_nStart = -1;
+    m_bIsRadioGroupStart = FALSE;
 
 #if  wxUSE_OWNER_DRAWN
-    // set default menu colors
+    //
+    // Set default menu colors
+    //
     #define SYS_COLOR(c) (wxSystemSettings::GetColour(wxSYS_COLOUR_##c))
 
     SetTextColour(SYS_COLOR(MENUTEXT));
@@ -159,13 +173,17 @@ void wxMenuItem::Init()
 
     #undef  SYS_COLOR
 
-    // we don't want normal items be owner-drawn
+    //
+    // We don't want normal items be owner-drawn
+    //
     ResetOwnerDrawn();
 
-    // tell the owner drawing code to to show the accel string as well
+    //
+    // Tell the owner drawing code to to show the accel string as well
+    //
     SetAccelString(m_text.AfterFirst(_T('\t')));
 #endif // wxUSE_OWNER_DRAWN
-}
+} // end of wxMenuItem::Init
 
 wxMenuItem::~wxMenuItem()
 {
@@ -284,18 +302,92 @@ void wxMenuItem::Check(
     if (m_isChecked == bCheck)
         return;
 
-    if (bCheck)
-        bOk = (bool)::WinSendMsg( GetHMenuOf(m_parentMenu)
-                                 ,MM_SETITEMATTR
-                                 ,MPFROM2SHORT(GetRealId(), TRUE)
-                                 ,MPFROM2SHORT(MIA_CHECKED, MIA_CHECKED)
-                                );
-    else
-        bOk = (bool)::WinSendMsg( GetHMenuOf(m_parentMenu)
-                                 ,MM_SETITEMATTR
-                                 ,MPFROM2SHORT(GetRealId(), TRUE)
-                                 ,MPFROM2SHORT(MIA_CHECKED, FALSE)
-                                );
+    HMENU                           hMenu = GetHMenuOf(m_parentMenu);
+
+    if ( GetKind() == wxITEM_RADIO )
+    {
+        //
+        // It doesn't make sense to uncheck a radio item - what would this do?
+        //
+        if (!bCheck)
+            return;
+
+        //
+        // Get the index of this item in the menu
+        //
+        const wxMenuItemList&       rItems = m_parentMenu->GetMenuItems();
+        int                         nPos = rItems.IndexOf(this);
+        int                         nStart;
+        int                         nEnd;
+
+        wxCHECK_RET( nPos != wxNOT_FOUND,
+                     _T("menuitem not found in the menu items list?") );
+
+        //
+        // Get the radio group range
+        //
+
+        if (m_bIsRadioGroupStart)
+        {
+            // we already have all information we need
+            nStart = nPos;
+            nEnd = m_vRadioGroup.m_nEnd;
+        }
+        else // Next radio group item
+        {
+            //
+            // Get the radio group end from the start item
+            //
+            nStart = m_vRadioGroup.m_nStart;
+            nEnd = rItems.Item(nStart)->GetData()->m_vRadioGroup.m_nEnd;
+        }
+
+        //
+        // Also uncheck all the other items in this radio group
+        //
+        wxMenuItemList::Node*       pNode = rItems.Item(nStart);
+
+        for (int n = nStart; n <= nEnd && pNode; n++)
+        {
+            if (n != nPos)
+            {
+                pNode->GetData()->m_isChecked = FALSE;
+            }
+
+            if (n == nPos)
+            {
+                bOk = (bool)::WinSendMsg( hMenu
+                                         ,MM_SETITEMATTR
+                                         ,MPFROM2SHORT(n, TRUE)
+                                         ,MPFROM2SHORT(MIA_CHECKED, MIA_CHECKED)
+                                        );
+            }
+            else
+            {
+                bOk = (bool)::WinSendMsg( hMenu
+                                         ,MM_SETITEMATTR
+                                         ,MPFROM2SHORT(n, TRUE)
+                                         ,MPFROM2SHORT(MIA_CHECKED, FALSE)
+                                        );
+            }
+            pNode = pNode->GetNext();
+        }
+    }
+    else // check item
+    {
+        if (bCheck)
+            bOk = (bool)::WinSendMsg( GetHMenuOf(m_parentMenu)
+                                     ,MM_SETITEMATTR
+                                     ,MPFROM2SHORT(GetRealId(), TRUE)
+                                     ,MPFROM2SHORT(MIA_CHECKED, MIA_CHECKED)
+                                    );
+        else
+            bOk = (bool)::WinSendMsg( GetHMenuOf(m_parentMenu)
+                                     ,MM_SETITEMATTR
+                                     ,MPFROM2SHORT(GetRealId(), TRUE)
+                                     ,MPFROM2SHORT(MIA_CHECKED, FALSE)
+                                    );
+    }
     if (!bOk)
     {
         wxLogLastError("CheckMenuItem");
diff --git a/src/os2/wx23.def b/src/os2/wx23.def
index a6e79a5ea2..d51892b124 100644
--- a/src/os2/wx23.def
+++ b/src/os2/wx23.def
@@ -4,10 +4,53 @@ DATA MULTIPLE NONSHARED READWRITE LOADONCALL
 CODE LOADONCALL
 
 EXPORTS
-;From library:  F:\DEV\WX2\WXWINDOWS\LIB\wx.lib
+;From library:  H:\DEV\WX2\WXWINDOWS\LIB\wx.lib
   ;From object file:  dummy.cpp
     ;PUBDEFs (Symbols available from object file):
       wxDummyChar
+  ;From object file:  ..\common\artprov.cpp
+    ;PUBDEFs (Symbols available from object file):
+      ;wxArtProviderCache::GetBitmap(const wxString&,wxBitmap*)
+      GetBitmap__18wxArtProviderCacheFRC8wxStringP8wxBitmap
+      ;wxArtProviderCache::Clear()
+      Clear__18wxArtProviderCacheFv
+      ;wxConstructorForwxArtProviderModule()
+      wxConstructorForwxArtProviderModule__Fv
+      ;wxArtProvider::PopProvider()
+      PopProvider__13wxArtProviderFv
+      ;wxArtProvider::CleanUpProviders()
+      CleanUpProviders__13wxArtProviderFv
+      ;wxArtProviderCache::ConstructHashID(const wxString&,const wxString&,const wxSize&)
+      ConstructHashID__18wxArtProviderCacheFRC8wxStringT1RC6wxSize
+      __vft24wxwxArtProvidersListNode10wxNodeBase
+      ;wxArtProvider::GetBitmap(const wxString&,const wxString&,const wxSize&)
+      GetBitmap__13wxArtProviderFRC8wxStringT1RC6wxSize
+      ;wxArtProvider::RemoveProvider(wxArtProvider*)
+      RemoveProvider__13wxArtProviderFP13wxArtProvider
+      ;wxArtProvider::GetIcon(const wxString&,const wxString&,const wxSize&)
+      GetIcon__13wxArtProviderFRC8wxStringT1RC6wxSize
+      ;wxArtProviderModule::sm_classwxArtProviderModule
+      sm_classwxArtProviderModule__19wxArtProviderModule
+      ;wxArtProvider::PushProvider(wxArtProvider*)
+      PushProvider__13wxArtProviderFP13wxArtProvider
+      ;wxArtProvider::sm_providers
+      sm_providers__13wxArtProvider
+      ;wxArtProvider::sm_classwxArtProvider
+      sm_classwxArtProvider__13wxArtProvider
+      ;wxwxArtProvidersListNode::DeleteData()
+      DeleteData__24wxwxArtProvidersListNodeFv
+      ;wxArtProvider::sm_cache
+      sm_cache__13wxArtProvider
+  ;From object file:  ..\common\artstd.cpp
+    ;PUBDEFs (Symbols available from object file):
+      g_ArtProviderModule
+      ;wxDefaultArtProviderModule::sm_classwxDefaultArtProviderModule
+      sm_classwxDefaultArtProviderModule__26wxDefaultArtProviderModule
+      __vft20wxDefaultArtProvider8wxObject
+      ;wxDefaultArtProvider::CreateBitmap(const wxString&,const wxString&,const wxSize&)
+      CreateBitmap__20wxDefaultArtProviderFRC8wxStringT1RC6wxSize
+      ;wxConstructorForwxDefaultArtProviderModule()
+      wxConstructorForwxDefaultArtProviderModule__Fv
   ;From object file:  ..\common\appcmn.cpp
     ;PUBDEFs (Symbols available from object file):
       ;wxOnAssert(const char*,int,const char*)
@@ -1878,7 +1921,7 @@ EXPORTS
       wxEVT_NC_LEFT_DCLICK
       wxEVT_INIT_DIALOG
       wxEVT_COMMAND_SET_FOCUS
-  ;From object file:  F:\DEV\WX2\WXWINDOWS\src\common\extended.c
+  ;From object file:  H:\DEV\WX2\WXWINDOWS\src\common\extended.c
     ;PUBDEFs (Symbols available from object file):
       ConvertToIeeeExtended
       ConvertFromIeeeExtended
@@ -3029,6 +3072,8 @@ EXPORTS
       Copy__7wxImageCFv
       ;wxImage::GetOptionInt(const wxString&) const
       GetOptionInt__7wxImageCFRC8wxString
+      ;wxImage::SaveFile(const wxString&) const
+      SaveFile__7wxImageCFRC8wxString
       ;wxImage::SaveFile(wxOutputStream&,const wxString&) const
       SaveFile__7wxImageCFR14wxOutputStreamRC8wxString
       ;wxImage::FindHandlerMime(const wxString&)
@@ -4000,6 +4045,8 @@ EXPORTS
       SetHelpString__13wxMenuBarBaseFiRC8wxString
       ;wxMenuBase::Insert(unsigned int,wxMenuItem*)
       Insert__10wxMenuBaseFUiP10wxMenuItem
+      ;wxMenuItemBase::wxMenuItemBase(wxMenu*,int,const wxString&,const wxString&,wxItemKind,wxMenu*)
+      __ct__14wxMenuItemBaseFP6wxMenuiRC8wxStringT310wxItemKindT1
       ;wxMenuBase::Remove(wxMenuItem*)
       Remove__10wxMenuBaseFP10wxMenuItem
       ;wxMenuBase::IsChecked(int) const
@@ -5931,7 +5978,7 @@ EXPORTS
       Read32__17wxTextInputStreamFv
       ;wxTextInputStream::SkipIfEndOfLine(char)
       SkipIfEndOfLine__17wxTextInputStreamFc
-  ;From object file:  F:\DEV\WX2\WXWINDOWS\src\common\unzip.c
+  ;From object file:  H:\DEV\WX2\WXWINDOWS\src\common\unzip.c
     ;PUBDEFs (Symbols available from object file):
       unzReadCurrentFile
       unzGetCurrentFileInfo
@@ -7356,6 +7403,26 @@ EXPORTS
       CalculateMeasurements__21wxGenericColourDialogFv
       ;wxGenericColourDialog::sm_classwxGenericColourDialog
       sm_classwxGenericColourDialog__21wxGenericColourDialog
+  ;From object file:  ..\generic\dcbuffer.cpp
+    ;PUBDEFs (Symbols available from object file):
+      __vft17wxBufferedPaintDC8wxObject
+      ;wxBufferedDC::wxBufferedDC(wxDC*,const wxBitmap&)
+      __ct__12wxBufferedDCFP4wxDCRC8wxBitmap
+      ;wxBufferedPaintDC::wxBufferedPaintDC(wxWindow*,const wxBitmap&)
+      __ct__17wxBufferedPaintDCFP8wxWindowRC8wxBitmap
+      ;wxBufferedDC::~wxBufferedDC()
+      __dt__12wxBufferedDCFv
+      __vft12wxBufferedDC8wxObject
+      ;wxBufferedDC::wxBufferedDC(wxDC*,const wxSize&)
+      __ct__12wxBufferedDCFP4wxDCRC6wxSize
+      ;wxBufferedDC::UnMask()
+      UnMask__12wxBufferedDCFv
+      ;wxBufferedDC::Init(wxDC*,const wxBitmap&)
+      Init__12wxBufferedDCFP4wxDCRC8wxBitmap
+      ;wxBufferedDC::Init(wxDC*,const wxSize&)
+      Init__12wxBufferedDCFP4wxDCRC6wxSize
+      ;wxBufferedPaintDC::~wxBufferedPaintDC()
+      __dt__17wxBufferedPaintDCFv
   ;From object file:  ..\generic\dcpsg.cpp
     ;PUBDEFs (Symbols available from object file):
       __vft23wxPostScriptPrintDialog8wxObject
@@ -8780,36 +8847,6 @@ EXPORTS
       LoadFile__24wxHTMLHelpControllerBaseFRC8wxString
       ;wxHTMLHelpControllerBase::KeywordSearch(const wxString&)
       KeywordSearch__24wxHTMLHelpControllerBaseFRC8wxString
-  ;From object file:  ..\generic\helpwxht.cpp
-    ;PUBDEFs (Symbols available from object file):
-      ;wxHelpControllerHtml::GetFrameParameters(wxSize*,wxPoint*,unsigned long*)
-      GetFrameParameters__20wxHelpControllerHtmlFP6wxSizeP7wxPointPUl
-      __vft20wxHelpControllerHtml8wxObject
-      ;wxHelpFrame::sm_eventTable
-      sm_eventTable__11wxHelpFrame
-      ;wxHelpFrame::OnButton(wxCommandEvent&)
-      OnButton__11wxHelpFrameFR14wxCommandEvent
-      ;wxHelpControllerHtml::sm_classwxHelpControllerHtml
-      sm_classwxHelpControllerHtml__20wxHelpControllerHtml
-      __vft11wxHelpFrame8wxObject
-      ;wxHelpFrame::OnClose(wxCloseEvent&)
-      OnClose__11wxHelpFrameFR12wxCloseEvent
-      ;wxHelpControllerHtml::wxHelpControllerHtml()
-      __ct__20wxHelpControllerHtmlFv
-      ;wxHelpControllerHtml::~wxHelpControllerHtml()
-      __dt__20wxHelpControllerHtmlFv
-      ;wxHelpControllerHtml::DisplayHelp(const wxString&)
-      DisplayHelp__20wxHelpControllerHtmlFRC8wxString
-      ;wxHelpFrame::wxHelpFrame(wxWindow*,int,const wxString&,const wxPoint&,const wxSize&,wxHelpControllerHtml*)
-      __ct__11wxHelpFrameFP8wxWindowiRC8wxStringRC7wxPointRC6wxSizeP20wxHelpControllerHtml
-      ;wxHelpFrame::GetEventTable() const
-      GetEventTable__11wxHelpFrameCFv
-      ;wxHelpControllerHtml::SetFrameParameters(const wxString&,const wxSize&,const wxPoint&,unsigned long)
-      SetFrameParameters__20wxHelpControllerHtmlFRC8wxStringRC6wxSizeRC7wxPointUl
-      ;wxHelpFrame::sm_eventTableEntries
-      sm_eventTableEntries__11wxHelpFrame
-      ;wxHelpFrame::~wxHelpFrame()
-      __dt__11wxHelpFrameFv
   ;From object file:  ..\generic\imaglist.cpp
     ;PUBDEFs (Symbols available from object file):
       __vft11wxImageList8wxObject
@@ -9765,6 +9802,8 @@ EXPORTS
       sm_eventTable__23wxGenericScrolledWindow
       ;wxAutoScrollTimer::wxAutoScrollTimer(wxWindow*,wxScrollHelper*,int,int,int)
       __ct__17wxAutoScrollTimerFP8wxWindowP14wxScrollHelperiN23
+      ;wxScrollHelper::DoCalcUnscrolledPosition(int,int,int*,int*) const
+      DoCalcUnscrolledPosition__14wxScrollHelperCFiT1PiT3
       ;wxScrollHelper::HandleOnScroll(wxScrollWinEvent&)
       HandleOnScroll__14wxScrollHelperFR16wxScrollWinEvent
       __vft17wxAutoScrollTimer8wxObject
@@ -9800,10 +9839,8 @@ EXPORTS
       GetEventTable__23wxGenericScrolledWindowCFv
       ;wxGenericScrolledWindow::Create(wxWindow*,int,const wxPoint&,const wxSize&,long,const wxString&)
       Create__23wxGenericScrolledWindowFP8wxWindowiRC7wxPointRC6wxSizelRC8wxString
-      ;wxScrollHelper::CalcUnscrolledPosition(int,int,int*,int*) const
-      CalcUnscrolledPosition__14wxScrollHelperCFiT1PiT3
-      ;wxScrollHelper::CalcScrolledPosition(int,int,int*,int*) const
-      CalcScrolledPosition__14wxScrollHelperCFiT1PiT3
+      ;wxScrollHelper::DoCalcScrolledPosition(int,int,int*,int*) const
+      DoCalcScrolledPosition__14wxScrollHelperCFiT1PiT3
       ;wxScrollHelper::HandleOnMouseEnter(wxMouseEvent&)
       HandleOnMouseEnter__14wxScrollHelperFR12wxMouseEvent
       ;wxScrollHelper::HandleOnMouseLeave(wxMouseEvent&)
@@ -10381,7 +10418,6 @@ EXPORTS
       ;wxGenericTreeCtrl::FillArray(wxGenericTreeItem*,wxArrayTreeItemIds&) const
       FillArray__17wxGenericTreeCtrlCFP17wxGenericTreeItemR18wxArrayTreeItemIds
   ;From object file:  ..\generic\treelay.cpp
-  ;From object file:  ..\generic\wizard.cpp
   ;From object file:  ..\html\helpctrl.cpp
     ;PUBDEFs (Symbols available from object file):
       ;wxHtmlHelpController::DisplayTextPopup(const wxString&,const wxPoint&)
@@ -11310,8 +11346,6 @@ EXPORTS
       ;wxMsgArray::RemoveAt(unsigned int)
       RemoveAt__10wxMsgArrayFUi
       wxGetInstance
-      ;wxApp::GetStdIcon(int) const
-      GetStdIcon__5wxAppCFi
       ;wxMsgArray::~wxMsgArray()
       __dt__10wxMsgArrayFv
       wxSTD_MDIPARENTFRAME_ICON
@@ -13208,25 +13242,35 @@ EXPORTS
       GetRealId__10wxMenuItemCFv
       ;wxMenuItem::SetCheckable(unsigned long)
       SetCheckable__10wxMenuItemFUl
-      ;wxMenuItemBase::New(wxMenu*,int,const wxString&,const wxString&,unsigned long,wxMenu*)
-      New__14wxMenuItemBaseFP6wxMenuiRC8wxStringT3UlT1
+      ;wxMenuItem::SetRadioGroupEnd(int)
+      SetRadioGroupEnd__10wxMenuItemFi
       ;wxMenuItem::IsChecked() const
       IsChecked__10wxMenuItemCFv
+      ;wxMenuItem::SetAsRadioGroupStart()
+      SetAsRadioGroupStart__10wxMenuItemFv
       ;wxMenuItemBase::GetLabelFromText(const wxString&)
       GetLabelFromText__14wxMenuItemBaseFRC8wxString
       ;wxMenuItem::SetText(const wxString&)
       SetText__10wxMenuItemFRC8wxString
+      ;wxMenuItemBase::New(wxMenu*,int,const wxString&,const wxString&,wxItemKind,wxMenu*)
+      New__14wxMenuItemBaseFP6wxMenuiRC8wxStringT310wxItemKindT1
+      ;wxMenuItem::wxMenuItem(wxMenu*,int,const wxString&,const wxString&,wxItemKind,wxMenu*)
+      __ct__10wxMenuItemFP6wxMenuiRC8wxStringT310wxItemKindT1
       ;wxMenuItem::Check(unsigned long)
       Check__10wxMenuItemFUl
       __vft10wxMenuItem8wxObject
       ;wxMenuItem::wxMenuItem(wxMenu*,int,const wxString&,const wxString&,unsigned long,wxMenu*)
       __ct__10wxMenuItemFP6wxMenuiRC8wxStringT3UlT1
+      ;wxMenuItem::SetRadioGroupStart(int)
+      SetRadioGroupStart__10wxMenuItemFi
       ;wxConstructorForwxMenuItem()
       wxConstructorForwxMenuItem__Fv
       ;wxMenuItem::~wxMenuItem()
       __dt__10wxMenuItemFv
       ;wxMenuItem::Enable(unsigned long)
       Enable__10wxMenuItemFUl
+      ;wxMenuItem::Init()
+      Init__10wxMenuItemFv
       __vft10wxMenuItem12wxOwnerDrawn
   ;From object file:  ..\os2\metafile.cpp
     ;PUBDEFs (Symbols available from object file):
@@ -14623,13 +14667,13 @@ EXPORTS
       wxGetEnv__FRC8wxStringP8wxString
   ;From object file:  ..\os2\utilsexc.cpp
     ;PUBDEFs (Symbols available from object file):
-      ;wxExecute(char**,unsigned long,wxProcess*)
-      wxExecute__FPPcUlP9wxProcess
-      ;wxExecute(const wxString&,unsigned long,wxProcess*)
-      wxExecute__FRC8wxStringUlP9wxProcess
+      ;wxExecute(char**,int,wxProcess*)
+      wxExecute__FPPciP9wxProcess
       ;wxGetFullHostName(char*,int)
       wxGetFullHostName__FPci
       wxExecuteWindowCbk
+      ;wxExecute(const wxString&,int,wxProcess*)
+      wxExecute__FRC8wxStringiP9wxProcess
   ;From object file:  ..\os2\wave.cpp
     ;PUBDEFs (Symbols available from object file):
       ;wxWave::Create(const wxString&,unsigned long)
-- 
2.50.0

