X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f74172ab4256c9e7c665e44e2f94ce12bf84a37f..a24d7726e6b5c1b727d97603a3b5e80fa27a9dd2:/src/common/fldlgcmn.cpp diff --git a/src/common/fldlgcmn.cpp b/src/common/fldlgcmn.cpp index 512c5a3a70..45091bda8f 100644 --- a/src/common/fldlgcmn.cpp +++ b/src/common/fldlgcmn.cpp @@ -4,12 +4,12 @@ // Author: John Labenski // Modified by: // Created: 14.06.03 (extracted from src/*/filedlg.cpp) -// RCS-ID: +// RCS-ID: $Id$ // Copyright: (c) Robert Roebling // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ +#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma implementation "filedlg.h" #endif @@ -36,87 +36,70 @@ IMPLEMENT_DYNAMIC_CLASS(wxFileDialogBase, wxDialog) -wxFileDialogBase::wxFileDialogBase(wxWindow *parent, - const wxString& message, - const wxString& defaultDir, - const wxString& defaultFile, - const wxString& wildCard, - long style, - const wxPoint& pos) +void wxFileDialogBase::Init() +{ + m_filterIndex = m_dialogStyle = 0; + m_parent = NULL; +} + +bool wxFileDialogBase::Create(wxWindow *parent, + const wxString& message, + const wxString& defaultDir, + const wxString& defaultFile, + const wxString& wildCard, + long style, + const wxPoint& WXUNUSED(pos)) { - m_parent = parent; m_message = message; m_dir = defaultDir; m_fileName = defaultFile; m_wildCard = wildCard; + + m_parent = parent; m_dialogStyle = style; - m_path = wxT(""); m_filterIndex = 0; - if (m_wildCard.IsEmpty()) - m_wildCard = wxFileSelectorDefaultWildcardStr; - - // convert m_wildCard from "*.bar" to "Files (*.bar)|*.bar" - if ( m_wildCard.Find(wxT('|')) == wxNOT_FOUND ) + if ( wildCard.empty() || wildCard == wxFileSelectorDefaultWildcardStr ) { - m_wildCard.Printf(_("Files (%s)|%s"), - m_wildCard.c_str(), m_wildCard.c_str()); + m_wildCard = wxString::Format(_("All files (%s)|%s"), + wxFileSelectorDefaultWildcardStr, + wxFileSelectorDefaultWildcardStr); } + else // have wild card + { + // 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("*.")); + if ( nDot != wxString::npos ) + nDot++; + else + nDot = 0; + + m_wildCard = wxString::Format + ( + _("%s files (%s)|%s"), + wildCard.c_str() + nDot, + wildCard.c_str(), + wildCard.c_str() + ); + } + } + + return true; } +#if WXWIN_COMPATIBILITY_2_4 // Parses the filterStr, returning the number of filters. // Returns 0 if none or if there's a problem. // filterStr is in the form: "All files (*.*)|*.*|JPEG Files (*.jpeg)|*.jpg" - int wxFileDialogBase::ParseWildcard(const wxString& filterStr, wxArrayString& descriptions, wxArrayString& filters) { - descriptions.Clear(); - filters.Clear(); - - wxString str(filterStr); - - wxString description, filter; - for ( int pos = 0; pos != wxNOT_FOUND; ) - { - pos = str.Find(wxT('|')); - if ( pos == wxNOT_FOUND ) - { - // if there are no '|'s at all in the string just take the entire - // string as filter - if ( filters.IsEmpty() ) - { - descriptions.Add(filterStr); - filters.Add(filterStr); - } - else - { - wxFAIL_MSG( _T("missing '|' in the wildcard string!") ); - } - - break; - } - - description = str.Left(pos); - str = str.Mid(pos + 1); - pos = str.Find(wxT('|')); - if ( pos == wxNOT_FOUND ) - { - filter = str; - } - else - { - filter = str.Left(pos); - str = str.Mid(pos + 1); - } - - descriptions.Add(description); - filters.Add(filter); - } - - return filters.GetCount(); + return ::wxParseCommonDialogsFilter(filterStr, descriptions, filters); } +#endif // WXWIN_COMPATIBILITY_2_4 wxString wxFileDialogBase::AppendExtension(const wxString &filePath, const wxString &extensionList) @@ -125,7 +108,7 @@ wxString wxFileDialogBase::AppendExtension(const wxString &filePath, wxString fileName = filePath.AfterLast(wxFILE_SEP_PATH); // if fileName is of form "foo.bar" it's ok, return it - int idx_dot = fileName.Find(wxT('.'), TRUE); + int idx_dot = fileName.Find(wxT('.'), true); if ((idx_dot != wxNOT_FOUND) && (idx_dot < (int)fileName.Len() - 1)) return filePath; @@ -133,7 +116,7 @@ wxString wxFileDialogBase::AppendExtension(const wxString &filePath, wxString ext = extensionList.BeforeFirst(wxT(';')); // if ext == "foo" or "foo." there's no extension - int idx_ext_dot = ext.Find(wxT('.'), TRUE); + int idx_ext_dot = ext.Find(wxT('.'), true); if ((idx_ext_dot == wxNOT_FOUND) || (idx_ext_dot == (int)ext.Len() - 1)) return filePath; else @@ -142,7 +125,7 @@ wxString wxFileDialogBase::AppendExtension(const wxString &filePath, // if ext == "*" or "bar*" or "b?r" or " " then its not valid if ((ext.Find(wxT('*')) != wxNOT_FOUND) || (ext.Find(wxT('?')) != wxNOT_FOUND) || - (ext.Strip(wxString::both).IsEmpty())) + (ext.Strip(wxString::both).empty())) return filePath; // if fileName doesn't have a '.' then add one @@ -196,24 +179,24 @@ wxString wxFileSelector(const wxChar *title, // if filter is of form "All files (*)|*|..." set correct filter index if((wxStrlen(defaultExtension) != 0) && (filter2.Find(wxT('|')) != wxNOT_FOUND)) - { + { int filterIndex = 0; wxArrayString descriptions, filters; // don't care about errors, handled already by wxFileDialog - (void)wxFileDialogBase::ParseWildcard(filter2, descriptions, filters); + (void)wxParseCommonDialogsFilter(filter2, descriptions, filters); for (size_t n=0; n 0) fileDialog.SetFilterIndex(filterIndex); - } + } wxString filename; if ( fileDialog.ShowModal() == wxID_OK ) @@ -240,10 +223,10 @@ wxString wxFileSelectorEx(const wxChar *title, { wxFileDialog fileDialog(parent, - title ? title : wxT(""), - defaultDir ? defaultDir : wxT(""), - defaultFileName ? defaultFileName : wxT(""), - filter ? filter : wxT(""), + title ? title : wxEmptyString, + defaultDir ? defaultDir : wxEmptyString, + defaultFileName ? defaultFileName : wxEmptyString, + filter ? filter : wxEmptyString, flags, wxPoint(x, y)); wxString filename; @@ -303,7 +286,7 @@ WXDLLEXPORT wxString wxLoadFileSelector(const wxChar *what, const wxChar *default_name, wxWindow *parent) { - return wxDefaultFileSelector(TRUE, what, extension, default_name, parent); + return wxDefaultFileSelector(true, what, extension, default_name, parent); } //---------------------------------------------------------------------------- @@ -315,7 +298,7 @@ WXDLLEXPORT wxString wxSaveFileSelector(const wxChar *what, const wxChar *default_name, wxWindow *parent) { - return wxDefaultFileSelector(FALSE, what, extension, default_name, parent); + return wxDefaultFileSelector(false, what, extension, default_name, parent); } #endif // wxUSE_FILEDLG