X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/a62848fdba49396eba4f52c037d2dc82130274b4..d10e22fe8ad283f37b1809349028ffc282e393ce:/src/common/fldlgcmn.cpp diff --git a/src/common/fldlgcmn.cpp b/src/common/fldlgcmn.cpp index 6736072ba1..adb37ede67 100644 --- a/src/common/fldlgcmn.cpp +++ b/src/common/fldlgcmn.cpp @@ -1,18 +1,14 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: common/fldlgcmn.cpp +// Name: src/common/fldlgcmn.cpp // Purpose: wxFileDialog common functions // 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 ///////////////////////////////////////////////////////////////////////////// -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) -#pragma implementation "filedlg.h" -#endif - #ifdef __BORLANDC__ #pragma hdrstop #endif @@ -20,38 +16,61 @@ // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" +#if wxUSE_FILEDLG + +#include "wx/filedlg.h" + #ifndef WX_PRECOMP #include "wx/string.h" #include "wx/intl.h" #include "wx/window.h" #endif // WX_PRECOMP -#include "wx/filedlg.h" - -#if wxUSE_FILEDLG - //---------------------------------------------------------------------------- // wxFileDialogBase //---------------------------------------------------------------------------- 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& WXUNUSED(pos)) - : m_message(message), - m_dir(defaultDir), - m_fileName(defaultFile), - m_wildCard(wildCard) +void wxFileDialogBase::Init() { + m_filterIndex = + m_windowStyle = 0; +} + +bool wxFileDialogBase::Create(wxWindow *parent, + const wxString& message, + const wxString& defaultDir, + const wxString& defaultFile, + const wxString& wildCard, + long style, + const wxPoint& WXUNUSED(pos), + const wxSize& WXUNUSED(sz), + const wxString& WXUNUSED(name)) +{ + m_message = message; + m_dir = defaultDir; + m_fileName = defaultFile; + m_wildCard = wildCard; + m_parent = parent; - m_dialogStyle = style; + m_windowStyle = style; m_filterIndex = 0; + if (!HasFlag(wxFD_OPEN) && !HasFlag(wxFD_SAVE)) + m_windowStyle |= wxFD_OPEN; // wxFD_OPEN is the default + + // check that the styles are not contradictory + wxASSERT_MSG( !(HasFlag(wxFD_SAVE) && HasFlag(wxFD_OPEN)), + _T("can't specify both wxFD_SAVE and wxFD_OPEN at once") ); + + wxASSERT_MSG( !HasFlag(wxFD_SAVE) || + (!HasFlag(wxFD_MULTIPLE) && !HasFlag(wxFD_FILE_MUST_EXIST)), + _T("wxFD_MULTIPLE or wxFD_FILE_MUST_EXIST can't be used with wxFD_SAVE" ) ); + + wxASSERT_MSG( !HasFlag(wxFD_OPEN) || !HasFlag(wxFD_OVERWRITE_PROMPT), + _T("wxFD_OVERWRITE_PROMPT can't be used with wxFD_OPEN") ); + if ( wildCard.empty() || wildCard == wxFileSelectorDefaultWildcardStr ) { m_wildCard = wxString::Format(_("All files (%s)|%s"), @@ -78,6 +97,8 @@ wxFileDialogBase::wxFileDialogBase(wxWindow *parent, ); } } + + return true; } #if WXWIN_COMPATIBILITY_2_4 @@ -100,7 +121,7 @@ wxString wxFileDialogBase::AppendExtension(const wxString &filePath, // if fileName is of form "foo.bar" it's ok, return it int idx_dot = fileName.Find(wxT('.'), true); - if ((idx_dot != wxNOT_FOUND) && (idx_dot < (int)fileName.Len() - 1)) + if ((idx_dot != wxNOT_FOUND) && (idx_dot < (int)fileName.length() - 1)) return filePath; // get the first extension from extensionList, or all of it @@ -108,7 +129,7 @@ wxString wxFileDialogBase::AppendExtension(const wxString &filePath, // if ext == "foo" or "foo." there's no extension int idx_ext_dot = ext.Find(wxT('.'), true); - if ((idx_ext_dot == wxNOT_FOUND) || (idx_ext_dot == (int)ext.Len() - 1)) + if ((idx_ext_dot == wxNOT_FOUND) || (idx_ext_dot == (int)ext.length() - 1)) return filePath; else ext = ext.AfterLast(wxT('.')); @@ -116,7 +137,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 @@ -170,24 +191,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)wxParseCommonDialogsFilter(filter2, descriptions, filters); for (size_t n=0; n 0) fileDialog.SetFilterIndex(filterIndex); - } + } wxString filename; if ( fileDialog.ShowModal() == wxID_OK ) @@ -214,10 +235,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; @@ -265,7 +286,7 @@ static wxString wxDefaultFileSelector(bool load, } return wxFileSelector(prompt, NULL, default_name, ext, wild, - load ? wxOPEN : wxSAVE, parent); + load ? wxFD_OPEN : wxFD_SAVE, parent); } //---------------------------------------------------------------------------- @@ -293,4 +314,3 @@ WXDLLEXPORT wxString wxSaveFileSelector(const wxChar *what, } #endif // wxUSE_FILEDLG -