X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d6dae1b4432a3ecbf3ca8b983440728a46af8f20..f239a20092359e3c914adb79bd39f3f5d2b2e06f:/src/common/fldlgcmn.cpp?ds=sidebyside diff --git a/src/common/fldlgcmn.cpp b/src/common/fldlgcmn.cpp index e57a244cb3..17ff42633b 100644 --- a/src/common/fldlgcmn.cpp +++ b/src/common/fldlgcmn.cpp @@ -9,17 +9,18 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __BORLANDC__ -#pragma hdrstop -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" +#ifdef __BORLANDC__ + #pragma hdrstop +#endif + #if wxUSE_FILEDLG #include "wx/filedlg.h" #include "wx/dirdlg.h" +#include "wx/filename.h" #ifndef WX_PRECOMP #include "wx/string.h" @@ -27,6 +28,16 @@ #include "wx/window.h" #endif // WX_PRECOMP +extern WXDLLEXPORT_DATA(const char) wxFileDialogNameStr[] = "filedlg"; +extern WXDLLEXPORT_DATA(const char) wxFileSelectorPromptStr[] = "Select a file"; +extern WXDLLEXPORT_DATA(const char) wxFileSelectorDefaultWildcardStr[] = +#if defined(__WXMSW__) || defined(__OS2__) + "*.*" +#else // Unix/Mac + "*" +#endif + ; + //---------------------------------------------------------------------------- // wxFileDialogBase //---------------------------------------------------------------------------- @@ -65,14 +76,14 @@ bool wxFileDialogBase::Create(wxWindow *parent, // check that the styles are not contradictory wxASSERT_MSG( !(HasFdFlag(wxFD_SAVE) && HasFdFlag(wxFD_OPEN)), - _T("can't specify both wxFD_SAVE and wxFD_OPEN at once") ); + wxT("can't specify both wxFD_SAVE and wxFD_OPEN at once") ); wxASSERT_MSG( !HasFdFlag(wxFD_SAVE) || (!HasFdFlag(wxFD_MULTIPLE) && !HasFdFlag(wxFD_FILE_MUST_EXIST)), - _T("wxFD_MULTIPLE or wxFD_FILE_MUST_EXIST can't be used with wxFD_SAVE" ) ); + wxT("wxFD_MULTIPLE or wxFD_FILE_MUST_EXIST can't be used with wxFD_SAVE" ) ); wxASSERT_MSG( !HasFdFlag(wxFD_OPEN) || !HasFdFlag(wxFD_OVERWRITE_PROMPT), - _T("wxFD_OVERWRITE_PROMPT can't be used with wxFD_OPEN") ); + wxT("wxFD_OVERWRITE_PROMPT can't be used with wxFD_OPEN") ); if ( wildCard.empty() || wildCard == wxFileSelectorDefaultWildcardStr ) { @@ -85,7 +96,7 @@ bool wxFileDialogBase::Create(wxWindow *parent, // convert m_wildCard from "*.bar" to "bar files (*.bar)|*.bar" if ( m_wildCard.Find(wxT('|')) == wxNOT_FOUND ) { - wxString::size_type nDot = m_wildCard.find(_T("*.")); + wxString::size_type nDot = m_wildCard.find(wxT("*.")); if ( nDot != wxString::npos ) nDot++; else @@ -180,6 +191,27 @@ wxSize wxFileDialogBase::GetExtraControlSize() return (*m_extraControlCreator)(&dlg)->GetSize(); } +void wxFileDialogBase::SetPath(const wxString& path) +{ + wxString ext; + wxFileName::SplitPath(path, &m_dir, &m_fileName, &ext); + if ( !ext.empty() ) + m_fileName << wxT('.') << ext; + m_path = path; +} + +void wxFileDialogBase::SetDirectory(const wxString& dir) +{ + m_dir = dir; + m_path = wxFileName(m_dir, m_fileName).GetFullPath(); +} + +void wxFileDialogBase::SetFilename(const wxString& name) +{ + m_fileName = name; + m_path = wxFileName(m_dir, m_fileName).GetFullPath(); +} + //---------------------------------------------------------------------------- // wxFileDialog convenience functions //---------------------------------------------------------------------------- @@ -300,7 +332,7 @@ static wxString wxDefaultFileSelector(bool load, wxString ext; if ( !extension.empty() ) { - if ( extension[0u] == _T('.') ) + if ( extension[0u] == wxT('.') ) ext = extension.substr(1); else ext = extension; @@ -313,7 +345,8 @@ static wxString wxDefaultFileSelector(bool load, } return wxFileSelector(prompt, wxEmptyString, default_name, ext, wild, - load ? wxFD_OPEN : wxFD_SAVE, parent); + load ? (wxFD_OPEN | wxFD_FILE_MUST_EXIST) : wxFD_SAVE, + parent); } //----------------------------------------------------------------------------