// headers
// ----------------------------------------------------------------------------
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#pragma implementation "filedlg.h"
#endif
#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"
#include "wx/msw/private.h"
-#if !defined(__WIN32__) || defined(__SALFORDC__)
+#if !defined(__WIN32__) || defined(__WXWINCE__)
#include <commdlg.h>
#endif
// implementation
// ============================================================================
-// ----------------------------------------------------------------------------
-// wxWin macros
-// ----------------------------------------------------------------------------
-
-IMPLEMENT_CLASS(wxFileDialog, wxDialog)
+IMPLEMENT_CLASS(wxFileDialog, wxFileDialogBase)
// ----------------------------------------------------------------------------
// wxFileDialog
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
}
}
+void wxFileDialog::GetFilenames(wxArrayString& files) const
+{
+ files = m_fileNames;
+}
+
void wxFileDialog::SetPath(const wxString& path)
{
wxString ext;
{
msw_flags |= OFN_NOCHANGEDIR;
}
-/* chris elliott for some reason this does not work usefully if no extension
- is given, as it test for junk instead of junk.ext
+
if ( m_dialogStyle & wxOVERWRITE_PROMPT )
{
msw_flags |= OFN_OVERWRITEPROMPT;
}
-*/
+
OPENFILENAME of;
wxZeroMemory(of);
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;
if ( m_dir.Last() != _T('\\') )
dir += _T('\\');
- m_fileNames.Sort(wxStringSortAscending);
m_path = dir + m_fileName;
+ m_filterIndex = (int)of.nFilterIndex - 1;
}
else
{
- const wxChar* extension = NULL;
-
//=== Adding the correct extension >>=================================
m_filterIndex = (int)of.nFilterIndex - 1;
(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');
- }
-
- 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;
+ for( int i = 0; i < maxFilter; i++ ) // get extension
+ extension = extension + wxStrlen( extension ) + 1;
- 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;
m_fileNames.Add(m_fileName);
m_dir = wxPathOnly(fileNameBuffer);
}
- //=== Simulating the wxOVERWRITE_PROMPT >>============================
- //should we also test for file save style ??
- if ( (m_dialogStyle & wxOVERWRITE_PROMPT) &&
- ::wxFileExists( fileNameBuffer ) )
- {
- wxString messageText;
- messageText.Printf(_("File '%s' already exists.\nDo you want to replace it?"), fileNameBuffer);
- if ( wxMessageBox(messageText, wxT("Save File As"), wxYES_NO | wxICON_EXCLAMATION ) != wxYES )
- {
- success = FALSE;
- }
- }
}
else
{