X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/222ed1d678dff2f5c3c4164321dd05e8f47de487..cb73e6001f891ae46b12a1e4ca39b93649cb6099:/src/msw/filedlg.cpp?ds=inline diff --git a/src/msw/filedlg.cpp b/src/msw/filedlg.cpp index 1e03393399..52ea324076 100644 --- a/src/msw/filedlg.cpp +++ b/src/msw/filedlg.cpp @@ -17,7 +17,7 @@ // headers // ---------------------------------------------------------------------------- -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "filedlg.h" #endif @@ -28,12 +28,11 @@ #pragma hdrstop #endif -#if wxUSE_FILEDLG +#if wxUSE_FILEDLG && !wxUSE_SMARTPHONE #ifndef WX_PRECOMP #include "wx/utils.h" #include "wx/msgdlg.h" - #include "wx/dialog.h" #include "wx/filedlg.h" #include "wx/filefn.h" #include "wx/intl.h" @@ -43,7 +42,7 @@ #include "wx/msw/private.h" -#if !defined(__WIN32__) || defined(__SALFORDC__) +#if !defined(__WIN32__) || defined(__WXWINCE__) #include #endif @@ -76,11 +75,7 @@ // implementation // ============================================================================ -// ---------------------------------------------------------------------------- -// wxWin macros -// ---------------------------------------------------------------------------- - -IMPLEMENT_CLASS(wxFileDialog, wxDialog) +IMPLEMENT_CLASS(wxFileDialog, wxFileDialogBase) // ---------------------------------------------------------------------------- // wxFileDialog @@ -92,18 +87,12 @@ wxFileDialog::wxFileDialog(wxWindow *parent, const wxString& defaultFileName, const wxString& wildCard, long style, - const wxPoint& WXUNUSED(pos)) + const wxPoint& pos) + :wxFileDialogBase(parent, message, defaultDir, defaultFileName, wildCard, style, pos) + { - m_message = message; - m_dialogStyle = style; if ( ( m_dialogStyle & wxMULTIPLE ) && ( m_dialogStyle & wxSAVE ) ) m_dialogStyle &= ~wxMULTIPLE; - m_parent = parent; - m_path = wxEmptyString; - m_fileName = defaultFileName; - m_dir = defaultDir; - m_wildCard = wildCard; - m_filterIndex = 0; } void wxFileDialog::GetPaths(wxArrayString& paths) const @@ -314,10 +303,11 @@ int wxFileDialog::ShowModal() if ( ( m_dialogStyle & wxMULTIPLE ) && #if defined(OFN_EXPLORER) - ( fileNameBuffer[of.nFileOffset-1] == wxT('\0') ) ) + ( fileNameBuffer[of.nFileOffset-1] == wxT('\0') ) #else - ( fileNameBuffer[of.nFileOffset-1] == wxT(' ') ) ) + ( fileNameBuffer[of.nFileOffset-1] == wxT(' ') ) #endif // OFN_EXPLORER + ) { #if defined(OFN_EXPLORER) m_dir = fileNameBuffer; @@ -345,13 +335,10 @@ int wxFileDialog::ShowModal() if ( m_dir.Last() != _T('\\') ) dir += _T('\\'); - m_fileNames.Sort(wxStringSortAscending); m_path = dir + m_fileName; } else { - const wxChar* extension = NULL; - //=== Adding the correct extension >>================================= m_filterIndex = (int)of.nFilterIndex - 1; @@ -360,39 +347,15 @@ int wxFileDialog::ShowModal() (of.nFileExtension && fileNameBuffer[of.nFileExtension] == wxT('\0')) ) { // User has typed a filename without an extension: + const wxChar* extension = filterBuffer; + int maxFilter = (int)(of.nFilterIndex*2L) - 1; - // A filename can end in a "." here ("abc."), this means it - // does not have an extension. Because later on a "." with - // the default extension is appended we remove the "." if - // filename ends with one (We don't want files called - // "abc..ext") - int idx = wxStrlen(fileNameBuffer) - 1; - if ( fileNameBuffer[idx] == wxT('.') ) - { - fileNameBuffer[idx] = wxT('\0'); - } + for( int i = 0; i < maxFilter; i++ ) // get extension + extension = extension + wxStrlen( extension ) + 1; - int maxFilter = (int)(of.nFilterIndex*2L-1L); - extension = filterBuffer; - - for( int i = 0; i < maxFilter; i++ ) { // get extension - extension = extension + wxStrlen( extension ) +1; - } - - extension = wxStrrchr( extension, wxT('.') ); - if ( extension // != "blabla" - && !wxStrrchr( extension, wxT('*') ) // != "blabla.*" - && !wxStrrchr( extension, wxT('?') ) // != "blabla.?" - && extension[1] // != "blabla." - && extension[1] != wxT(' ') ) // != "blabla. " - { - // now concat extension to the fileName: - m_fileName = wxString(fileNameBuffer) + extension; - - int len = wxStrlen( fileNameBuffer ); - wxStrncpy( fileNameBuffer + len, extension, wxMAXPATH - len ); - fileNameBuffer[ wxMAXPATH -1 ] = wxT('\0'); - } + m_fileName = AppendExtension(fileNameBuffer, extension); + wxStrncpy(fileNameBuffer, m_fileName.c_str(), wxMin(m_fileName.Len(), wxMAXPATH-1)); + fileNameBuffer[wxMin(m_fileName.Len(), wxMAXPATH-1)] = wxT('\0'); } m_path = fileNameBuffer;