]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/filedlg.cpp
disallow creation of wxDC objects and made wxDC an ABC; use wxDCTemp instead of wxDC...
[wxWidgets.git] / src / os2 / filedlg.cpp
index 7e126680c3bdb91fdcccdf15a931672afb78f2e5..eb13f404432128d20e103ad46d85a2d2e7ab516a 100644 (file)
@@ -16,6 +16,8 @@
     #pragma hdrstop
 #endif
 
+#if wxUSE_FILEDLG
+
 #ifndef WX_PRECOMP
     #include "wx/utils.h"
     #include "wx/msgdlg.h"
@@ -23,6 +25,7 @@
     #include "wx/intl.h"
     #include "wx/log.h"
     #include "wx/app.h"
+    #include "wx/math.h"
 #endif
 
 #define INCL_PM
@@ -30,7 +33,6 @@
 
 #include "wx/os2/private.h"
 
-#include <math.h>
 #include <stdlib.h>
 #include <string.h>
 
@@ -55,6 +57,7 @@
 #ifndef MAXEXT
 # define MAXEXT                         5
 #endif
+
 IMPLEMENT_CLASS(wxFileDialog, wxFileDialogBase)
 
 // ----------------------------------------------------------------------------
@@ -126,14 +129,19 @@ int wxFileDialog::ShowModal()
     else
         lFlags = FDS_OPEN_DIALOG;
 
-    if ((m_dialogStyle & wxHIDE_READONLY) || (m_dialogStyle & wxSAVE))
+#if WXWIN_COMPATIBILITY_2_4
+    if (m_dialogStyle & wxHIDE_READONLY)
+        lFlags |= FDS_SAVEAS_DIALOG;
+#endif
+
+    if (m_dialogStyle & wxSAVE)
         lFlags |= FDS_SAVEAS_DIALOG;
     if (m_dialogStyle & wxMULTIPLE )
         lFlags |= FDS_OPEN_DIALOG | FDS_MULTIPLESEL;
 
     vFileDlg.cbSize = sizeof(FILEDLG);
     vFileDlg.fl = lFlags;
-    vFileDlg.pszTitle = zTitleBuffer;
+    vFileDlg.pszTitle = (PSZ)zTitleBuffer;
 
     //
     // Convert forward slashes to backslashes (file selector doesn't like
@@ -184,11 +192,11 @@ int wxFileDialog::ShowModal()
         }
     }
     if ( wxStrlen(m_wildCard) == 0 )
-        sTheFilter = "";
+        sTheFilter = wxEmptyString;
     else
         sTheFilter = m_wildCard;
 
-    pzFilterBuffer = strtok((char*)sTheFilter.c_str(), "|");
+    wxStrtok((wxChar*)sTheFilter.c_str(), wxT("|"), &pzFilterBuffer);
     while(pzFilterBuffer != NULL)
     {
         if (nCount > 0 && !(nCount % 2))
@@ -197,14 +205,14 @@ int wxFileDialog::ShowModal()
         {
             sDir += pzFilterBuffer;
         }
-        pzFilterBuffer = strtok(NULL, "|");
+        wxStrtok(NULL, wxT("|"), &pzFilterBuffer);
         nCount++;
     }
     if (nCount == 0)
         sDir += m_fileName;
-    if (sDir.IsEmpty())
-        sDir = "*.*";
-    wxStrcpy(vFileDlg.szFullFile, sDir.c_str());
+    if (sDir.empty())
+        sDir = wxT("*.*");
+    wxStrcpy((wxChar*)vFileDlg.szFullFile, sDir);
     sFilterBuffer = sDir;
 
     hWnd = ::WinFileDlg( HWND_DESKTOP
@@ -216,29 +224,29 @@ int wxFileDialog::ShowModal()
         m_fileNames.Empty();
         if ((m_dialogStyle & wxMULTIPLE ) && vFileDlg.ulFQFCount > 1)
         {
-            for (int i = 0; i < vFileDlg.ulFQFCount; i++)
+            for (int i = 0; i < (int)vFileDlg.ulFQFCount; i++)
             {
                 if (i == 0)
                 {
-                    m_dir = wxPathOnly(wxString((const char*)*vFileDlg.papszFQFilename[0]));
-                    m_path = (const char*)*vFileDlg.papszFQFilename[0];
+                    m_dir = wxPathOnly(wxString((const wxChar*)*vFileDlg.papszFQFilename[0]));
+                    m_path = (const wxChar*)*vFileDlg.papszFQFilename[0];
                 }
-                m_fileName = wxFileNameFromPath(wxString((const char*)*vFileDlg.papszFQFilename[i]));
+                m_fileName = wxFileNameFromPath(wxString((const wxChar*)*vFileDlg.papszFQFilename[i]));
                 m_fileNames.Add(m_fileName);
             }
             ::WinFreeFileDlgList(vFileDlg.papszFQFilename);
         }
         else if (!(m_dialogStyle & wxSAVE))
         {
-            m_path = vFileDlg.szFullFile;
-            m_fileName = wxFileNameFromPath(vFileDlg.szFullFile);
-            m_dir = wxPathOnly(vFileDlg.szFullFile);
+            m_path = (wxChar*)vFileDlg.szFullFile;
+            m_fileName = wxFileNameFromPath(wxString((const wxChar*)vFileDlg.szFullFile));
+            m_dir = wxPathOnly((const wxChar*)vFileDlg.szFullFile);
         }
         else // save file
         {
             const wxChar*           pzExtension = NULL;
 
-            wxStrcpy(zFileNameBuffer, vFileDlg.szFullFile);
+            wxStrcpy(zFileNameBuffer, (const wxChar*)vFileDlg.szFullFile);
 
             int                     nIdx = wxStrlen(zFileNameBuffer) - 1;
             wxString                sExt;
@@ -248,7 +256,7 @@ int wxFileDialog::ShowModal()
                         ,&m_fileName
                         ,&sExt
                        );
-            if (zFileNameBuffer[nIdx] == wxT('.') || sExt.IsEmpty())
+            if (zFileNameBuffer[nIdx] == wxT('.') || sExt.empty())
             {
                 zFileNameBuffer[nIdx] = wxT('\0');
 
@@ -263,7 +271,7 @@ int wxFileDialog::ShowModal()
                 //
                 pzExtension = sFilterBuffer.c_str();
 
-                for( int i = 0; i < sFilterBuffer.length(); i++ )
+                for( int i = 0; i < (int)sFilterBuffer.length(); i++ )
                 {
                     //
                     // Get extension
@@ -285,10 +293,10 @@ int wxFileDialog::ShowModal()
             }
             else
             {
-                m_path = vFileDlg.szFullFile;
+                m_path = (wxChar*)vFileDlg.szFullFile;
             }
-            m_fileName = wxFileNameFromPath(vFileDlg.szFullFile);
-            m_dir = wxPathOnly(vFileDlg.szFullFile);
+            m_fileName = wxFileNameFromPath((const wxChar*)vFileDlg.szFullFile);
+            m_dir = wxPathOnly((const wxChar*)vFileDlg.szFullFile);
 
             //
             // === Simulating the wxOVERWRITE_PROMPT >>============================
@@ -316,3 +324,4 @@ int wxFileDialog::ShowModal()
     return wxID_CANCEL;
 } // end of wxFileDialog::ShowModal
 
+#endif // wxUSE_FILEDLG