changed wxFileSelector() etc. functions to use wxString (so that any forms of strings can be used with it, not just wxChar*), while still preserving compatibility with passing NULL to them)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@46317 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
a862159daa
commit
f8bcb37d99
@ -148,41 +148,180 @@ private:
|
||||
// wxFileDialog convenience functions
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
// File selector - backward compatibility
|
||||
WXDLLEXPORT wxString
|
||||
wxFileSelector(const wxChar *message = wxFileSelectorPromptStr,
|
||||
const wxChar *default_path = NULL,
|
||||
const wxChar *default_filename = NULL,
|
||||
const wxChar *default_extension = NULL,
|
||||
const wxChar *wildcard = wxFileSelectorDefaultWildcardStr,
|
||||
int flags = 0,
|
||||
wxWindow *parent = NULL,
|
||||
int x = wxDefaultCoord, int y = wxDefaultCoord);
|
||||
// NB: wxFileSelector() etc. used to take const wxChar* arguments in wx-2.8
|
||||
// and their default value was NULL. The official way to use these
|
||||
// functions is to use wxString, with wxEmptyString as the default value.
|
||||
// The templates below exist only to maintain compatibility with wx-2.8.
|
||||
|
||||
#if WXWIN_COMPATIBILITY_2_8
|
||||
// return wxString created from the argument, return empty string if the
|
||||
// argument is NULL:
|
||||
inline wxString wxPtrOrStringToString(const wxString& s) { return s; }
|
||||
inline wxString wxPtrOrStringToString(const char *s) { return s; }
|
||||
inline wxString wxPtrOrStringToString(const wchar_t *s) { return s; }
|
||||
inline wxString wxPtrOrStringToString(const wxCStrData& s) { return s; }
|
||||
inline wxString wxPtrOrStringToString(const wxCharBuffer& s) { return s; }
|
||||
inline wxString wxPtrOrStringToString(const wxWCharBuffer& s) { return s; }
|
||||
// this one is for NULL:
|
||||
inline wxString wxPtrOrStringToString(int s)
|
||||
{
|
||||
wxASSERT_MSG( s == 0, _T("passing non-NULL int as string?") );
|
||||
return wxEmptyString;
|
||||
}
|
||||
#endif // WXWIN_COMPATIBILITY_2_8
|
||||
|
||||
// An extended version of wxFileSelector
|
||||
WXDLLEXPORT wxString
|
||||
wxFileSelectorEx(const wxChar *message = wxFileSelectorPromptStr,
|
||||
const wxChar *default_path = NULL,
|
||||
const wxChar *default_filename = NULL,
|
||||
int *indexDefaultExtension = NULL,
|
||||
const wxChar *wildcard = wxFileSelectorDefaultWildcardStr,
|
||||
wxDoFileSelector(const wxString& message = wxFileSelectorPromptStr,
|
||||
const wxString& default_path = wxEmptyString,
|
||||
const wxString& default_filename = wxEmptyString,
|
||||
const wxString& default_extension = wxEmptyString,
|
||||
const wxString& wildcard = wxFileSelectorDefaultWildcardStr,
|
||||
int flags = 0,
|
||||
wxWindow *parent = NULL,
|
||||
int x = wxDefaultCoord, int y = wxDefaultCoord);
|
||||
|
||||
// Ask for filename to load
|
||||
WXDLLEXPORT wxString
|
||||
wxLoadFileSelector(const wxChar *what,
|
||||
const wxChar *extension,
|
||||
const wxChar *default_name = (const wxChar *)NULL,
|
||||
wxWindow *parent = (wxWindow *) NULL);
|
||||
wxDoFileSelectorEx(const wxString& message = wxFileSelectorPromptStr,
|
||||
const wxString& default_path = wxEmptyString,
|
||||
const wxString& default_filename = wxEmptyString,
|
||||
int *indexDefaultExtension = NULL,
|
||||
const wxString& wildcard = wxFileSelectorDefaultWildcardStr,
|
||||
int flags = 0,
|
||||
wxWindow *parent = NULL,
|
||||
int x = wxDefaultCoord, int y = wxDefaultCoord);
|
||||
|
||||
WXDLLEXPORT wxString
|
||||
wxDoLoadFileSelector(const wxString& what,
|
||||
const wxString& extension,
|
||||
const wxString& default_name = wxEmptyString,
|
||||
wxWindow *parent = NULL);
|
||||
|
||||
WXDLLEXPORT wxString
|
||||
wxDoSaveFileSelector(const wxString& what,
|
||||
const wxString& extension,
|
||||
const wxString& default_name = wxEmptyString,
|
||||
wxWindow *parent = NULL);
|
||||
|
||||
#if WXWIN_COMPATIBILITY_2_8
|
||||
|
||||
// File selector - backward compatibility
|
||||
inline wxString wxFileSelector()
|
||||
{
|
||||
return wxDoFileSelector();
|
||||
}
|
||||
|
||||
inline wxString wxFileSelector(const wxString& message)
|
||||
{
|
||||
return wxDoFileSelector(message);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
inline wxString wxFileSelector(const wxString& message, const T& default_path)
|
||||
{
|
||||
return wxDoFileSelector(message, wxPtrOrStringToString(default_path));
|
||||
}
|
||||
|
||||
template<typename T1, typename T2>
|
||||
inline wxString wxFileSelector(const wxString& message,
|
||||
const T1& default_path,
|
||||
const T2& default_filename)
|
||||
{
|
||||
return wxDoFileSelector(message,
|
||||
wxPtrOrStringToString(default_path),
|
||||
wxPtrOrStringToString(default_filename));
|
||||
}
|
||||
|
||||
template<typename T1, typename T2, typename T3>
|
||||
inline wxString
|
||||
wxFileSelector(const wxString& message,
|
||||
const T1& default_path,
|
||||
const T2& default_filename,
|
||||
const T3& default_extension,
|
||||
const wxString& wildcard = wxFileSelectorDefaultWildcardStr,
|
||||
int flags = 0,
|
||||
wxWindow *parent = NULL,
|
||||
int x = wxDefaultCoord, int y = wxDefaultCoord)
|
||||
{
|
||||
return wxDoFileSelector(message,
|
||||
wxPtrOrStringToString(default_path),
|
||||
wxPtrOrStringToString(default_filename),
|
||||
wxPtrOrStringToString(default_extension),
|
||||
wildcard,
|
||||
flags,
|
||||
parent,
|
||||
x, y);
|
||||
}
|
||||
|
||||
// An extended version of wxFileSelector
|
||||
inline wxString wxFileSelectorEx()
|
||||
{
|
||||
return wxDoFileSelectorEx();
|
||||
}
|
||||
|
||||
inline wxString wxFileSelectorEx(const wxString& message)
|
||||
{
|
||||
return wxDoFileSelectorEx(message);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
inline wxString wxFileSelectorEx(const wxString& message, const T& default_path)
|
||||
{
|
||||
return wxDoFileSelectorEx(message, wxPtrOrStringToString(default_path));
|
||||
}
|
||||
|
||||
template<typename T1, typename T2>
|
||||
inline wxString
|
||||
wxFileSelectorEx(const wxString& message,
|
||||
const T1& default_path,
|
||||
const T2& default_filename,
|
||||
int *indexDefaultExtension = NULL,
|
||||
const wxString& wildcard = wxFileSelectorDefaultWildcardStr,
|
||||
int flags = 0,
|
||||
wxWindow *parent = NULL,
|
||||
int x = wxDefaultCoord, int y = wxDefaultCoord)
|
||||
{
|
||||
return wxDoFileSelectorEx(message,
|
||||
wxPtrOrStringToString(default_path),
|
||||
wxPtrOrStringToString(default_filename),
|
||||
indexDefaultExtension,
|
||||
wildcard,
|
||||
flags,
|
||||
parent,
|
||||
x, y);
|
||||
}
|
||||
|
||||
// Ask for filename to load
|
||||
template<typename T>
|
||||
inline wxString wxLoadFileSelector(const wxString& what,
|
||||
const wxString& extension,
|
||||
const T& default_name = T(),
|
||||
wxWindow *parent = NULL)
|
||||
{
|
||||
return wxDoLoadFileSelector(what, extension,
|
||||
wxPtrOrStringToString(default_name),
|
||||
parent);
|
||||
}
|
||||
|
||||
// Ask for filename to save
|
||||
WXDLLEXPORT wxString
|
||||
wxSaveFileSelector(const wxChar *what,
|
||||
const wxChar *extension,
|
||||
const wxChar *default_name = (const wxChar *) NULL,
|
||||
wxWindow *parent = (wxWindow *) NULL);
|
||||
template<typename T>
|
||||
inline wxString wxSaveFileSelector(const wxString& what,
|
||||
const wxString& extension,
|
||||
const T& default_name = T(),
|
||||
wxWindow *parent = NULL)
|
||||
{
|
||||
return wxDoSaveFileSelector(what, extension,
|
||||
wxPtrOrStringToString(default_name),
|
||||
parent);
|
||||
}
|
||||
|
||||
#else // !WXWIN_COMPATIBILITY_2_8
|
||||
|
||||
#define wxFileSelector wxDoFileSelector
|
||||
#define wxFileSelectorEx wxDoFileSelectorEx
|
||||
#define wxLoadFileSelector wxDoLoadFileSelector
|
||||
#define wxSaveFileSelector wxDoSaveFileSelector
|
||||
|
||||
#endif // WXWIN_COMPATIBILITY_2_8/!WXWIN_COMPATIBILITY_2_8
|
||||
|
||||
|
||||
#if defined (__WXUNIVERSAL__)
|
||||
|
@ -153,16 +153,16 @@ wxString wxFileDialogBase::AppendExtension(const wxString &filePath,
|
||||
// wxFileDialog convenience functions
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
wxString wxFileSelector(const wxChar *title,
|
||||
const wxChar *defaultDir,
|
||||
const wxChar *defaultFileName,
|
||||
const wxChar *defaultExtension,
|
||||
const wxChar *filter,
|
||||
int flags,
|
||||
wxWindow *parent,
|
||||
int x, int y)
|
||||
wxString wxDoFileSelector(const wxString& title,
|
||||
const wxString& defaultDir,
|
||||
const wxString& defaultFileName,
|
||||
const wxString& defaultExtension,
|
||||
const wxString& filter,
|
||||
int flags,
|
||||
wxWindow *parent,
|
||||
int x, int y)
|
||||
{
|
||||
// The defaultExtension, if non-NULL, is
|
||||
// The defaultExtension, if non-empty, is
|
||||
// appended to the filename if the user fails to type an extension. The new
|
||||
// implementation (taken from wxFileSelectorEx) appends the extension
|
||||
// automatically, by looking at the filter specification. In fact this
|
||||
@ -174,25 +174,17 @@ wxString wxFileSelector(const wxChar *title,
|
||||
// suitable filter.
|
||||
|
||||
wxString filter2;
|
||||
if ( defaultExtension && !filter )
|
||||
if ( !defaultExtension.empty() && filter.empty() )
|
||||
filter2 = wxString(wxT("*.")) + defaultExtension;
|
||||
else if ( filter )
|
||||
else if ( !filter.empty() )
|
||||
filter2 = filter;
|
||||
|
||||
wxString defaultDirString;
|
||||
if (defaultDir)
|
||||
defaultDirString = defaultDir;
|
||||
|
||||
wxString defaultFilenameString;
|
||||
if (defaultFileName)
|
||||
defaultFilenameString = defaultFileName;
|
||||
|
||||
wxFileDialog fileDialog(parent, title, defaultDirString,
|
||||
defaultFilenameString, filter2,
|
||||
wxFileDialog fileDialog(parent, title, defaultDir,
|
||||
defaultFileName, filter2,
|
||||
flags, wxPoint(x, y));
|
||||
|
||||
// if filter is of form "All files (*)|*|..." set correct filter index
|
||||
if((wxStrlen(defaultExtension) != 0) && (filter2.Find(wxT('|')) != wxNOT_FOUND))
|
||||
// if filter is of form "All files (*)|*|..." set correct filter index
|
||||
if ( !defaultExtension.empty() && filter2.find(wxT('|')) != wxString::npos )
|
||||
{
|
||||
int filterIndex = 0;
|
||||
|
||||
@ -204,7 +196,7 @@ wxString wxFileSelector(const wxChar *title,
|
||||
if (filters[n].Contains(defaultExtension))
|
||||
{
|
||||
filterIndex = n;
|
||||
break;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -225,22 +217,22 @@ wxString wxFileSelector(const wxChar *title,
|
||||
// wxFileSelectorEx
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
wxString wxFileSelectorEx(const wxChar *title,
|
||||
const wxChar *defaultDir,
|
||||
const wxChar *defaultFileName,
|
||||
int* defaultFilterIndex,
|
||||
const wxChar *filter,
|
||||
int flags,
|
||||
wxWindow* parent,
|
||||
int x,
|
||||
int y)
|
||||
wxString wxDoFileSelectorEx(const wxString& title,
|
||||
const wxString& defaultDir,
|
||||
const wxString& defaultFileName,
|
||||
int* defaultFilterIndex,
|
||||
const wxString& filter,
|
||||
int flags,
|
||||
wxWindow* parent,
|
||||
int x,
|
||||
int y)
|
||||
|
||||
{
|
||||
wxFileDialog fileDialog(parent,
|
||||
title ? title : wxEmptyString,
|
||||
defaultDir ? defaultDir : wxEmptyString,
|
||||
defaultFileName ? defaultFileName : wxEmptyString,
|
||||
filter ? filter : wxEmptyString,
|
||||
title,
|
||||
defaultDir,
|
||||
defaultFileName,
|
||||
filter,
|
||||
flags, wxPoint(x, y));
|
||||
|
||||
wxString filename;
|
||||
@ -260,9 +252,9 @@ wxString wxFileSelectorEx(const wxChar *title,
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
static wxString wxDefaultFileSelector(bool load,
|
||||
const wxChar *what,
|
||||
const wxChar *extension,
|
||||
const wxChar *default_name,
|
||||
const wxString& what,
|
||||
const wxString& extension,
|
||||
const wxString& default_name,
|
||||
wxWindow *parent)
|
||||
{
|
||||
wxString prompt;
|
||||
@ -274,11 +266,13 @@ static wxString wxDefaultFileSelector(bool load,
|
||||
prompt.Printf(str, what);
|
||||
|
||||
wxString wild;
|
||||
const wxChar *ext = extension;
|
||||
if ( ext )
|
||||
wxString ext;
|
||||
if ( !extension.empty() )
|
||||
{
|
||||
if ( *ext == wxT('.') )
|
||||
ext++;
|
||||
if ( extension[0u] == _T('.') )
|
||||
ext = extension.substr(1);
|
||||
else
|
||||
ext = extension;
|
||||
|
||||
wild.Printf(wxT("*.%s"), ext);
|
||||
}
|
||||
@ -287,7 +281,7 @@ static wxString wxDefaultFileSelector(bool load,
|
||||
wild = wxFileSelectorDefaultWildcardStr;
|
||||
}
|
||||
|
||||
return wxFileSelector(prompt, NULL, default_name, ext, wild,
|
||||
return wxFileSelector(prompt, wxEmptyString, default_name, ext, wild,
|
||||
load ? wxFD_OPEN : wxFD_SAVE, parent);
|
||||
}
|
||||
|
||||
@ -295,10 +289,10 @@ static wxString wxDefaultFileSelector(bool load,
|
||||
// wxLoadFileSelector
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
WXDLLEXPORT wxString wxLoadFileSelector(const wxChar *what,
|
||||
const wxChar *extension,
|
||||
const wxChar *default_name,
|
||||
wxWindow *parent)
|
||||
WXDLLEXPORT wxString wxDoLoadFileSelector(const wxString& what,
|
||||
const wxString& extension,
|
||||
const wxString& default_name,
|
||||
wxWindow *parent)
|
||||
{
|
||||
return wxDefaultFileSelector(true, what, extension, default_name, parent);
|
||||
}
|
||||
@ -307,10 +301,10 @@ WXDLLEXPORT wxString wxLoadFileSelector(const wxChar *what,
|
||||
// wxSaveFileSelector
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
WXDLLEXPORT wxString wxSaveFileSelector(const wxChar *what,
|
||||
const wxChar *extension,
|
||||
const wxChar *default_name,
|
||||
wxWindow *parent)
|
||||
WXDLLEXPORT wxString wxDoSaveFileSelector(const wxString& what,
|
||||
const wxString& extension,
|
||||
const wxString& default_name,
|
||||
wxWindow *parent)
|
||||
{
|
||||
return wxDefaultFileSelector(false, what, extension, default_name, parent);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user