wxFileDialog cleanup, extracted common code to fldlgcmn.cpp (patch 754187)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@21149 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
30e671a59f
commit
b600ed1362
@ -164,6 +164,7 @@ fileconf.cpp Common Base
|
||||
filefn.cpp Common Base
|
||||
filename.cpp Common Base
|
||||
filesys.cpp Common Base
|
||||
fldlgcmn.cpp Common
|
||||
fontcmn.cpp Common
|
||||
fontmap.cpp Common Base
|
||||
framecmn.cpp Common
|
||||
|
@ -1,8 +1,27 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: filedlg.h
|
||||
// Purpose: wxFileDialog base header
|
||||
// Author: Robert Roebling
|
||||
// Modified by:
|
||||
// Created: 8/17/99
|
||||
// Copyright: (c) Robert Roebling
|
||||
// RCS-ID:
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef _WX_FILEDLG_H_BASE_
|
||||
#define _WX_FILEDLG_H_BASE_
|
||||
|
||||
#if wxUSE_FILEDLG
|
||||
|
||||
#if defined(__GNUG__) && !defined(__APPLE__)
|
||||
#pragma interface "filedlg.h"
|
||||
#endif
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// wxFileDialog data and generic functions
|
||||
//----------------------------------------------------------------------------
|
||||
|
||||
enum
|
||||
{
|
||||
wxOPEN = 0x0001,
|
||||
@ -14,6 +33,59 @@ enum
|
||||
wxCHANGE_DIR = 0x0040
|
||||
};
|
||||
|
||||
WXDLLEXPORT_DATA(extern const wxChar*) wxFileSelectorPromptStr;
|
||||
WXDLLEXPORT_DATA(extern const wxChar*) wxFileSelectorDefaultWildcardStr;
|
||||
|
||||
// Parses the filterStr, returning the number of filters.
|
||||
// Returns 0 if none or if there's a problem, they arrays will contain an equal
|
||||
// number of items found before the error.
|
||||
// filterStr is in the form:
|
||||
// "All files (*.*)|*.*|Image Files (*.jpeg *.png)|*.jpg;*.png"
|
||||
extern int wxParseFileFilter(const wxString& filterStr,
|
||||
wxArrayString& descriptions,
|
||||
wxArrayString& filters);
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// 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 = -1, int y = -1);
|
||||
|
||||
// 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,
|
||||
int flags = 0,
|
||||
wxWindow *parent = NULL,
|
||||
int x = -1, int y = -1);
|
||||
|
||||
// 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);
|
||||
|
||||
// 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);
|
||||
|
||||
|
||||
#if defined (__WXUNIVERSAL__)
|
||||
#include "wx/generic/filedlgg.h"
|
||||
#elif defined(__WXMSW__)
|
||||
@ -36,5 +108,4 @@ enum
|
||||
|
||||
#endif // wxUSE_FILEDLG
|
||||
|
||||
#endif
|
||||
// _WX_FILEDLG_H_BASE_
|
||||
#endif // _WX_FILEDLG_H_BASE_
|
||||
|
@ -39,19 +39,8 @@ class WXDLLEXPORT wxTextCtrl;
|
||||
#define USE_GENERIC_FILEDIALOG
|
||||
#endif
|
||||
|
||||
#ifdef USE_GENERIC_FILEDIALOG
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// data
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
WXDLLEXPORT_DATA(extern const wxChar *)wxFileSelectorPromptStr;
|
||||
WXDLLEXPORT_DATA(extern const wxChar *)wxFileSelectorDefaultWildcardStr;
|
||||
|
||||
#endif // USE_GENERIC_FILEDIALOG
|
||||
|
||||
//-------------------------------------------------------------------------
|
||||
// File selector
|
||||
// wxGenericFileDialog
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
class WXDLLEXPORT wxGenericFileDialog: public wxDialog
|
||||
@ -160,46 +149,10 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
// 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 = -1, int y = -1);
|
||||
|
||||
// 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,
|
||||
int flags = 0,
|
||||
wxWindow *parent = NULL,
|
||||
int x = -1, int y = -1);
|
||||
|
||||
// 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);
|
||||
|
||||
// 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);
|
||||
|
||||
#endif // USE_GENERIC_FILEDIALOG
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// wxFileData
|
||||
// wxFileData - a class to hold the file info for the wxFileCtrl
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
class WXDLLEXPORT wxFileData
|
||||
@ -214,29 +167,43 @@ public:
|
||||
is_drive = 0x0008
|
||||
};
|
||||
|
||||
// Full copy constructor
|
||||
wxFileData( const wxFileData& fileData );
|
||||
// Create a filedata from this information
|
||||
wxFileData( const wxString &filePath, const wxString &fileName,
|
||||
fileType type, int image_id );
|
||||
|
||||
// (re)read the extra data about the file from the system
|
||||
void ReadData();
|
||||
|
||||
// get the name of the file, dir, drive
|
||||
wxString GetFileName() const { return m_fileName; }
|
||||
// get the full path + name of the file, dir, path
|
||||
wxString GetFilePath() const { return m_filePath; }
|
||||
// Set the path + name and name of the item
|
||||
void SetNewName( const wxString &filePath, const wxString &fileName );
|
||||
|
||||
// Get the size of the file in bytes
|
||||
long GetSize() const { return m_size; }
|
||||
// Get the type of file, either file extension or <DIR>, <LINK>, <DRIVE>
|
||||
wxString GetType() const;
|
||||
wxString GetFileType() const;
|
||||
// get the last modification time
|
||||
wxDateTime GetTime() const { return m_dateTime; }
|
||||
wxDateTime GetDateTime() const { return m_dateTime; }
|
||||
// Get the time as a formatted string
|
||||
wxString GetModificationTime() const;
|
||||
// in UNIX get rwx for file, in MSW get attributes ARHS
|
||||
wxString GetPermissions() const { return m_permissions; }
|
||||
// Get the id of the image used in a wxImageList
|
||||
int GetImageId() const { return m_image; }
|
||||
|
||||
bool IsFile() const { return !IsDir() && !IsLink() && !IsDrive(); }
|
||||
bool IsDir() const { return (m_type & is_dir ) != 0; }
|
||||
bool IsLink() const { return (m_type & is_link ) != 0; }
|
||||
bool IsExe() const { return (m_type & is_exe ) != 0; }
|
||||
bool IsDrive() const { return (m_type & is_drive) != 0; }
|
||||
|
||||
int GetFileType() const { return m_type; }
|
||||
// Get/Set the type of file, file/dir/drive/link
|
||||
int GetType() const { return m_type; }
|
||||
|
||||
// the wxFileCtrl fields in report view
|
||||
enum fileListFieldType
|
||||
@ -251,12 +218,13 @@ public:
|
||||
FileList_Max
|
||||
};
|
||||
|
||||
// Get the entry for report view of wxFileCtrl
|
||||
wxString GetEntry( fileListFieldType num ) const;
|
||||
|
||||
// Get a string representation of the file info
|
||||
wxString GetHint() const;
|
||||
// initialize a wxListItem attributes
|
||||
void MakeItem( wxListItem &item );
|
||||
void SetNewName( const wxString &filePath, const wxString &fileName );
|
||||
|
||||
private:
|
||||
wxString m_fileName;
|
||||
@ -294,6 +262,7 @@ public:
|
||||
bool GetShowHidden() const { return m_showHidden; }
|
||||
|
||||
virtual long Add( wxFileData *fd, wxListItem &item );
|
||||
virtual void UpdateItem(const wxListItem &item);
|
||||
virtual void UpdateFiles();
|
||||
virtual void MakeDir();
|
||||
virtual void GoToParentDir();
|
||||
@ -327,7 +296,5 @@ private:
|
||||
DECLARE_EVENT_TABLE()
|
||||
};
|
||||
|
||||
#endif
|
||||
// _WX_FILEDLGG_H_
|
||||
|
||||
#endif // _WX_FILEDLGG_H_
|
||||
|
||||
|
@ -21,9 +21,6 @@
|
||||
// File selector
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
extern const wxChar *wxFileSelectorPromptStr;
|
||||
extern const wxChar *wxFileSelectorDefaultWildcardStr;
|
||||
|
||||
class wxFileDialog: public wxDialog
|
||||
{
|
||||
public:
|
||||
@ -67,47 +64,4 @@ private:
|
||||
DECLARE_DYNAMIC_CLASS(wxFileDialog)
|
||||
};
|
||||
|
||||
#define wxOPEN 1
|
||||
#define wxSAVE 2
|
||||
#define wxOVERWRITE_PROMPT 4
|
||||
#define wxHIDE_READONLY 8
|
||||
#define wxFILE_MUST_EXIST 16
|
||||
|
||||
// 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 = -1, int y = -1);
|
||||
|
||||
// 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,
|
||||
int flags = 0,
|
||||
wxWindow *parent = NULL,
|
||||
int x = -1, int y = -1);
|
||||
|
||||
// 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);
|
||||
|
||||
// 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);
|
||||
|
||||
#endif
|
||||
// __GTKFILEDLGH__
|
||||
#endif // __GTKFILEDLGH__
|
||||
|
@ -21,9 +21,6 @@
|
||||
// File selector
|
||||
//-------------------------------------------------------------------------
|
||||
|
||||
extern const wxChar *wxFileSelectorPromptStr;
|
||||
extern const wxChar *wxFileSelectorDefaultWildcardStr;
|
||||
|
||||
class wxFileDialog: public wxDialog
|
||||
{
|
||||
public:
|
||||
@ -67,47 +64,4 @@ private:
|
||||
DECLARE_DYNAMIC_CLASS(wxFileDialog)
|
||||
};
|
||||
|
||||
#define wxOPEN 1
|
||||
#define wxSAVE 2
|
||||
#define wxOVERWRITE_PROMPT 4
|
||||
#define wxHIDE_READONLY 8
|
||||
#define wxFILE_MUST_EXIST 16
|
||||
|
||||
// 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 = -1, int y = -1);
|
||||
|
||||
// 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,
|
||||
int flags = 0,
|
||||
wxWindow *parent = NULL,
|
||||
int x = -1, int y = -1);
|
||||
|
||||
// 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);
|
||||
|
||||
// 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);
|
||||
|
||||
#endif
|
||||
// __GTKFILEDLGH__
|
||||
#endif // __GTKFILEDLGH__
|
||||
|
@ -22,9 +22,6 @@
|
||||
* File selector
|
||||
*/
|
||||
|
||||
WXDLLEXPORT_DATA(extern const wxChar*) wxFileSelectorPromptStr;
|
||||
WXDLLEXPORT_DATA(extern const wxChar*) wxFileSelectorDefaultWildcardStr;
|
||||
|
||||
class WXDLLEXPORT wxFileDialog: public wxDialog
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS(wxFileDialog)
|
||||
@ -71,29 +68,4 @@ public:
|
||||
|
||||
};
|
||||
|
||||
#define wxOPEN 0x0001
|
||||
#define wxSAVE 0x0002
|
||||
#define wxOVERWRITE_PROMPT 0x0004
|
||||
#define wxHIDE_READONLY 0x0008
|
||||
#define wxFILE_MUST_EXIST 0x0010
|
||||
|
||||
// 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 = -1, int y = -1);
|
||||
|
||||
// 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, int flags = 0,
|
||||
wxWindow *parent = NULL, int x = -1, int y = -1);
|
||||
|
||||
// Generic file load dialog
|
||||
WXDLLEXPORT wxString wxLoadFileSelector(const wxChar *what, const wxChar *extension, const wxChar *default_name = NULL, wxWindow *parent = NULL);
|
||||
|
||||
// Generic file save dialog
|
||||
WXDLLEXPORT wxString wxSaveFileSelector(const wxChar *what, const wxChar *extension, const wxChar *default_name = NULL, wxWindow *parent = NULL);
|
||||
|
||||
#endif
|
||||
// _WX_FILEDLG_H_
|
||||
#endif // _WX_FILEDLG_H_
|
||||
|
@ -22,9 +22,6 @@
|
||||
* File selector
|
||||
*/
|
||||
|
||||
WXDLLEXPORT_DATA(extern const char*) wxFileSelectorPromptStr;
|
||||
WXDLLEXPORT_DATA(extern const char*) wxFileSelectorDefaultWildcardStr;
|
||||
|
||||
class WXDLLEXPORT wxFileDialog: public wxDialog
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS(wxFileDialog)
|
||||
@ -70,29 +67,4 @@ public:
|
||||
int ShowModal();
|
||||
};
|
||||
|
||||
#define wxOPEN 0x0001
|
||||
#define wxSAVE 0x0002
|
||||
#define wxOVERWRITE_PROMPT 0x0004
|
||||
#define wxHIDE_READONLY 0x0008
|
||||
#define wxFILE_MUST_EXIST 0x0010
|
||||
|
||||
// File selector - backward compatibility
|
||||
WXDLLEXPORT wxString wxFileSelector(const char *message = wxFileSelectorPromptStr, const char *default_path = NULL,
|
||||
const char *default_filename = NULL, const char *default_extension = NULL,
|
||||
const char *wildcard = wxFileSelectorDefaultWildcardStr, int flags = 0,
|
||||
wxWindow *parent = NULL, int x = -1, int y = -1);
|
||||
|
||||
// An extended version of wxFileSelector
|
||||
WXDLLEXPORT wxString wxFileSelectorEx(const char *message = wxFileSelectorPromptStr, const char *default_path = NULL,
|
||||
const char *default_filename = NULL, int *indexDefaultExtension = NULL,
|
||||
const char *wildcard = wxFileSelectorDefaultWildcardStr, int flags = 0,
|
||||
wxWindow *parent = NULL, int x = -1, int y = -1);
|
||||
|
||||
// Generic file load dialog
|
||||
WXDLLEXPORT wxString wxLoadFileSelector(const char *what, const char *extension, const char *default_name = NULL, wxWindow *parent = NULL);
|
||||
|
||||
// Generic file save dialog
|
||||
WXDLLEXPORT wxString wxSaveFileSelector(const char *what, const char *extension, const char *default_name = NULL, wxWindow *parent = NULL);
|
||||
|
||||
#endif
|
||||
// _WX_FILEDLG_H_
|
||||
#endif // _WX_FILEDLG_H_
|
||||
|
@ -22,9 +22,6 @@
|
||||
* File selector
|
||||
*/
|
||||
|
||||
WXDLLEXPORT_DATA(extern const wxChar*) wxFileSelectorPromptStr;
|
||||
WXDLLEXPORT_DATA(extern const wxChar*) wxFileSelectorDefaultWildcardStr;
|
||||
|
||||
class WXDLLEXPORT wxFileDialog: public wxDialog
|
||||
{
|
||||
public:
|
||||
@ -72,42 +69,5 @@ private:
|
||||
DECLARE_NO_COPY_CLASS(wxFileDialog)
|
||||
};
|
||||
|
||||
// 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 = -1, int y = -1);
|
||||
|
||||
// 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,
|
||||
int flags = 0,
|
||||
wxWindow *parent = NULL,
|
||||
int x = -1, int y = -1);
|
||||
|
||||
// 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);
|
||||
|
||||
// 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);
|
||||
|
||||
#endif
|
||||
// _WX_FILEDLG_H_
|
||||
#endif // _WX_FILEDLG_H_
|
||||
|
||||
|
@ -64,58 +64,4 @@ protected:
|
||||
wxPoint m_vPos;
|
||||
}; // end of CLASS wxFileDialog
|
||||
|
||||
#define wxOPEN 0x0001
|
||||
#define wxSAVE 0x0002
|
||||
#define wxOVERWRITE_PROMPT 0x0004
|
||||
#define wxHIDE_READONLY 0x0008
|
||||
#define wxFILE_MUST_EXIST 0x0010
|
||||
|
||||
//
|
||||
// File selector - backward compatibility
|
||||
//
|
||||
WXDLLEXPORT wxString wxFileSelector( const char* pzMessage = wxFileSelectorPromptStr
|
||||
,const char* pzDefaultPath = NULL
|
||||
,const char* pzDefaultFilename = NULL
|
||||
,const char* pzDefaultExtension = NULL
|
||||
,const char* pzWildcard = wxFileSelectorDefaultWildcardStr
|
||||
,int nFlags = 0
|
||||
,wxWindow* pParent = NULL
|
||||
,int nX = -1
|
||||
,int nY = -1
|
||||
);
|
||||
|
||||
//
|
||||
// An extended version of wxFileSelector
|
||||
|
||||
WXDLLEXPORT wxString wxFileSelectorEx( const char* pzMessage = wxFileSelectorPromptStr
|
||||
,const char* pzDefaultPath = NULL
|
||||
,const char* pzDefaultFilename = NULL
|
||||
,int* pnIndexDefaultExtension = NULL
|
||||
,const char* pzWildcard = wxFileSelectorDefaultWildcardStr
|
||||
,int nFlags = 0
|
||||
,wxWindow* pParent = NULL
|
||||
,int nX = -1
|
||||
,int nY = -1
|
||||
);
|
||||
|
||||
//
|
||||
// Generic file load dialog
|
||||
//
|
||||
WXDLLEXPORT wxString wxLoadFileSelector( const char* pzWhat
|
||||
,const char* pzExtension
|
||||
,const char* pzDefaultName = NULL
|
||||
,wxWindow* pParent = NULL
|
||||
);
|
||||
|
||||
//
|
||||
// Generic file save dialog
|
||||
//
|
||||
WXDLLEXPORT wxString wxSaveFileSelector( const char* pzWhat
|
||||
,const char* pzExtension
|
||||
,const char* pzDefaultName = NULL
|
||||
,wxWindow* pParent = NULL
|
||||
);
|
||||
|
||||
#endif
|
||||
|
||||
// _WX_FILEDLG_H_
|
||||
#endif // _WX_FILEDLG_H_
|
||||
|
280
src/common/fldlgcmn.cpp
Normal file
280
src/common/fldlgcmn.cpp
Normal file
@ -0,0 +1,280 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: common/fldlgcmn.cpp
|
||||
// Purpose: wxFileDialog common functions
|
||||
// Author: John Labenski
|
||||
// Modified by:
|
||||
// Created: 14.06.03 (extracted from src/*/filedlg.cpp)
|
||||
// RCS-ID:
|
||||
// Copyright: (c) Robert Roebling
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifdef __GNUG__
|
||||
#pragma implementation "filedlg.h"
|
||||
#endif
|
||||
|
||||
#ifdef __BORLANDC__
|
||||
#pragma hdrstop
|
||||
#endif
|
||||
|
||||
// For compilers that support precompilation, includes "wx.h".
|
||||
#include "wx/wxprec.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
|
||||
|
||||
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)
|
||||
{
|
||||
// The defaultExtension, if non-NULL, 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
|
||||
// should be better than the native Microsoft implementation because
|
||||
// Windows only allows *one* default extension, whereas here we do the
|
||||
// right thing depending on the filter the user has chosen.
|
||||
|
||||
// If there's a default extension specified but no filter, we create a
|
||||
// suitable filter.
|
||||
|
||||
wxString filter2;
|
||||
if ( defaultExtension && !filter )
|
||||
filter2 = wxString(wxT("*.")) + defaultExtension;
|
||||
else if ( filter )
|
||||
filter2 = filter;
|
||||
|
||||
wxString defaultDirString;
|
||||
if (defaultDir)
|
||||
defaultDirString = defaultDir;
|
||||
|
||||
wxString defaultFilenameString;
|
||||
if (defaultFileName)
|
||||
defaultFilenameString = defaultFileName;
|
||||
|
||||
wxFileDialog fileDialog(parent, title, defaultDirString,
|
||||
defaultFilenameString, filter2,
|
||||
flags, wxPoint(x, y));
|
||||
if( wxStrlen(defaultExtension) != 0 )
|
||||
{
|
||||
int filterFind = 0,
|
||||
filterIndex = 0;
|
||||
|
||||
for( unsigned int i = 0; i < filter2.Len(); i++ )
|
||||
{
|
||||
if( filter2.GetChar(i) == wxT('|') )
|
||||
{
|
||||
// save the start index of the new filter
|
||||
unsigned int is = i++;
|
||||
|
||||
// find the end of the filter
|
||||
for( ; i < filter2.Len(); i++ )
|
||||
{
|
||||
if(filter2[i] == wxT('|'))
|
||||
break;
|
||||
}
|
||||
|
||||
if( i-is-1 > 0 && is+1 < filter2.Len() )
|
||||
{
|
||||
if( filter2.Mid(is+1,i-is-1).Contains(defaultExtension) )
|
||||
{
|
||||
filterFind = filterIndex;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
filterIndex++;
|
||||
}
|
||||
}
|
||||
|
||||
fileDialog.SetFilterIndex(filterFind);
|
||||
}
|
||||
|
||||
wxString filename;
|
||||
if ( fileDialog.ShowModal() == wxID_OK )
|
||||
{
|
||||
filename = fileDialog.GetPath();
|
||||
}
|
||||
|
||||
return filename;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
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 filter2;
|
||||
if ( defaultExtension && !filter )
|
||||
filter2 = wxString(wxT("*.")) + wxString(defaultExtension) ;
|
||||
else if ( filter )
|
||||
filter2 = filter;
|
||||
|
||||
wxString defaultDirString;
|
||||
if (defaultDir)
|
||||
defaultDirString = defaultDir;
|
||||
|
||||
wxString defaultFilenameString;
|
||||
if (defaultFileName)
|
||||
defaultFilenameString = defaultFileName;
|
||||
|
||||
wxFileDialog fileDialog( parent, title, defaultDirString, defaultFilenameString, filter2, flags, wxPoint(x, y) );
|
||||
|
||||
if ( fileDialog.ShowModal() == wxID_OK )
|
||||
{
|
||||
return fileDialog.GetPath();
|
||||
}
|
||||
else
|
||||
{
|
||||
return wxEmptyString;
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
wxString wxFileSelectorEx(const wxChar *title,
|
||||
const wxChar *defaultDir,
|
||||
const wxChar *defaultFileName,
|
||||
int* defaultFilterIndex,
|
||||
const wxChar *filter,
|
||||
int flags,
|
||||
wxWindow* parent,
|
||||
int x,
|
||||
int y)
|
||||
|
||||
{
|
||||
wxFileDialog fileDialog(parent,
|
||||
title ? title : wxT(""),
|
||||
defaultDir ? defaultDir : wxT(""),
|
||||
defaultFileName ? defaultFileName : wxT(""),
|
||||
filter ? filter : wxT(""),
|
||||
flags, wxPoint(x, y));
|
||||
|
||||
wxString filename;
|
||||
if ( fileDialog.ShowModal() == wxID_OK )
|
||||
{
|
||||
if ( defaultFilterIndex )
|
||||
*defaultFilterIndex = fileDialog.GetFilterIndex();
|
||||
|
||||
filename = fileDialog.GetPath();
|
||||
}
|
||||
|
||||
return filename;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Generic file load/save dialog (for internal use only)
|
||||
// see wx[Load/Save]FileSelector
|
||||
static wxString wxDefaultFileSelector(bool load,
|
||||
const wxChar *what,
|
||||
const wxChar *extension,
|
||||
const wxChar *default_name,
|
||||
wxWindow *parent)
|
||||
{
|
||||
wxString prompt;
|
||||
wxString str;
|
||||
if (load)
|
||||
str = _("Load %s file");
|
||||
else
|
||||
str = _("Save %s file");
|
||||
prompt.Printf(str, what);
|
||||
|
||||
wxString wild;
|
||||
const wxChar *ext = extension;
|
||||
if ( ext )
|
||||
{
|
||||
if ( *ext == wxT('.') )
|
||||
ext++;
|
||||
|
||||
wild.Printf(wxT("*.%s"), ext);
|
||||
}
|
||||
else // no extension specified
|
||||
{
|
||||
wild = wxFileSelectorDefaultWildcardStr;
|
||||
}
|
||||
|
||||
return wxFileSelector(prompt, NULL, default_name, ext, wild,
|
||||
load ? wxOPEN : wxSAVE, parent);
|
||||
}
|
||||
|
||||
// Generic file load dialog
|
||||
WXDLLEXPORT wxString wxLoadFileSelector(const wxChar *what,
|
||||
const wxChar *extension,
|
||||
const wxChar *default_name,
|
||||
wxWindow *parent)
|
||||
{
|
||||
return wxDefaultFileSelector(TRUE, what, extension, default_name, parent);
|
||||
}
|
||||
|
||||
// Generic file save dialog
|
||||
WXDLLEXPORT wxString wxSaveFileSelector(const wxChar *what,
|
||||
const wxChar *extension,
|
||||
const wxChar *default_name,
|
||||
wxWindow *parent)
|
||||
{
|
||||
return wxDefaultFileSelector(FALSE, what, extension, default_name, parent);
|
||||
}
|
||||
|
||||
|
||||
// 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 wxParseFileFilter(const wxString& filterStr,
|
||||
wxArrayString& descriptions,
|
||||
wxArrayString& filters)
|
||||
{
|
||||
wxString str(filterStr);
|
||||
|
||||
wxString description, filter;
|
||||
int pos = -1;
|
||||
bool finished = FALSE;
|
||||
do
|
||||
{
|
||||
pos = str.Find(wxT('|'));
|
||||
if (pos == -1)
|
||||
return 0; // Problem
|
||||
description = str.Left(pos);
|
||||
str = str.Mid(pos+1);
|
||||
pos = str.Find(wxT('|'));
|
||||
if (pos == -1)
|
||||
{
|
||||
filter = str;
|
||||
finished = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
filter = str.Left(pos);
|
||||
str = str.Mid(pos+1);
|
||||
}
|
||||
|
||||
descriptions.Add(description);
|
||||
filters.Add(filter);
|
||||
}
|
||||
while (!finished);
|
||||
|
||||
return filters.GetCount();
|
||||
}
|
||||
|
||||
#endif // wxUSE_FILEDLG
|
||||
|
@ -99,6 +99,9 @@ extern bool wxIsDriveAvailable(const wxString& dirName);
|
||||
#undef GetFirstChild
|
||||
#endif
|
||||
|
||||
// declared in filedlg.h, defined in fldlgcmn.cpp
|
||||
extern int wxParseFileFilter(const wxString& filterStr, wxArrayString& descriptions, wxArrayString& filters);
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxGetAvailableDrives, for WINDOWS, DOS, WXPM, MAC, UNIX (returns "/")
|
||||
// ----------------------------------------------------------------------------
|
||||
@ -348,6 +351,7 @@ bool wxIsDriveAvailable(const wxString& dirName)
|
||||
}
|
||||
#endif // __WINDOWS__ || __WXPM__
|
||||
|
||||
|
||||
// Function which is called by quick sort. We want to override the default wxArrayString behaviour,
|
||||
// and sort regardless of case.
|
||||
static int LINKAGEMODE wxDirCtrlStringCompareFunction(const void *first, const void *second)
|
||||
@ -1032,41 +1036,11 @@ bool wxGenericDirCtrl::ExtractWildcard(const wxString& filterStr, int n, wxStrin
|
||||
|
||||
// Parses the global filter, 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"
|
||||
// filterStr is in the form: "All files (*.*)|*.*|JPEG Files (*.jpeg)|*.jpg"
|
||||
|
||||
int wxGenericDirCtrl::ParseFilter(const wxString& filterStr, wxArrayString& filters, wxArrayString& descriptions)
|
||||
{
|
||||
wxString str(filterStr);
|
||||
|
||||
wxString description, filter;
|
||||
int pos;
|
||||
bool finished = FALSE;
|
||||
do
|
||||
{
|
||||
pos = str.Find(wxT('|'));
|
||||
if (pos == -1)
|
||||
return 0; // Problem
|
||||
description = str.Left(pos);
|
||||
str = str.Mid(pos+1);
|
||||
pos = str.Find(wxT('|'));
|
||||
if (pos == -1)
|
||||
{
|
||||
filter = str;
|
||||
finished = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
filter = str.Left(pos);
|
||||
str = str.Mid(pos+1);
|
||||
}
|
||||
descriptions.Add(description);
|
||||
filters.Add(filter);
|
||||
}
|
||||
while (!finished) ;
|
||||
|
||||
return filters.Count();
|
||||
return wxParseFileFilter(filterStr, descriptions, filters );
|
||||
}
|
||||
|
||||
void wxGenericDirCtrl::DoResize()
|
||||
|
@ -9,14 +9,6 @@
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// ============================================================================
|
||||
// declarations
|
||||
// ============================================================================
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// headers
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
#ifdef __GNUG__
|
||||
#pragma implementation "filedlgg.h"
|
||||
#endif
|
||||
@ -121,7 +113,7 @@ int wxFileDataTypeCompare( long data1, long data2, long data)
|
||||
if (fd2->IsDir() && !fd1->IsDir()) return data;
|
||||
if (fd1->IsLink() && !fd2->IsLink()) return -data;
|
||||
if (fd2->IsLink() && !fd1->IsLink()) return data;
|
||||
return data*wxStrcmp( fd1->GetType(), fd2->GetType() );
|
||||
return data*wxStrcmp( fd1->GetFileType(), fd2->GetFileType() );
|
||||
}
|
||||
|
||||
static
|
||||
@ -134,7 +126,7 @@ int wxFileDataTimeCompare( long data1, long data2, long data)
|
||||
if (fd1->IsDir() && !fd2->IsDir()) return -data;
|
||||
if (fd2->IsDir() && !fd1->IsDir()) return data;
|
||||
|
||||
return fd1->GetTime().IsLaterThan(fd2->GetTime()) ? int(data) : -int(data);
|
||||
return fd1->GetDateTime().IsLaterThan(fd2->GetDateTime()) ? int(data) : -int(data);
|
||||
}
|
||||
|
||||
#ifdef __UNIX__
|
||||
@ -157,6 +149,17 @@ extern size_t wxGetAvailableDrives(wxArrayString &paths, wxArrayString &names, w
|
||||
// wxFileData
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
wxFileData::wxFileData( const wxFileData& fileData )
|
||||
{
|
||||
m_fileName = fileData.GetFileName();
|
||||
m_filePath = fileData.GetFilePath();
|
||||
m_size = fileData.GetSize();
|
||||
m_dateTime = fileData.GetDateTime();
|
||||
m_permissions = fileData.GetPermissions();
|
||||
m_type = fileData.GetType();
|
||||
m_image = GetImageId();
|
||||
}
|
||||
|
||||
wxFileData::wxFileData( const wxString &filePath, const wxString &fileName, fileType type, int image_id )
|
||||
{
|
||||
m_fileName = fileName;
|
||||
@ -164,6 +167,11 @@ wxFileData::wxFileData( const wxString &filePath, const wxString &fileName, file
|
||||
m_type = type;
|
||||
m_image = image_id;
|
||||
|
||||
ReadData();
|
||||
}
|
||||
|
||||
void wxFileData::ReadData()
|
||||
{
|
||||
if (IsDrive())
|
||||
{
|
||||
m_size = 0;
|
||||
@ -229,7 +237,7 @@ wxFileData::wxFileData( const wxString &filePath, const wxString &fileName, file
|
||||
#endif
|
||||
}
|
||||
|
||||
wxString wxFileData::GetType() const
|
||||
wxString wxFileData::GetFileType() const
|
||||
{
|
||||
if (IsDir())
|
||||
return _("<DIR>");
|
||||
@ -290,7 +298,7 @@ wxString wxFileData::GetEntry( fileListFieldType num ) const
|
||||
break;
|
||||
|
||||
case FileList_Type:
|
||||
s = GetType();
|
||||
s = GetFileType();
|
||||
break;
|
||||
|
||||
case FileList_Time:
|
||||
@ -449,6 +457,23 @@ long wxFileCtrl::Add( wxFileData *fd, wxListItem &item )
|
||||
return ret;
|
||||
}
|
||||
|
||||
void wxFileCtrl::UpdateItem(const wxListItem &item)
|
||||
{
|
||||
wxFileData *fd = (wxFileData*)GetItemData(item);
|
||||
wxCHECK_RET(fd, wxT("invalid filedata"));
|
||||
|
||||
fd->ReadData();
|
||||
|
||||
SetItemText(item, fd->GetFileName());
|
||||
SetItemImage(item, fd->GetImageId(), fd->GetImageId());
|
||||
|
||||
if (GetWindowStyleFlag() & wxLC_REPORT)
|
||||
{
|
||||
for (int i = 1; i < wxFileData::FileList_Max; i++)
|
||||
SetItem( item.m_itemId, i, fd->GetEntry((wxFileData::fileListFieldType)i) );
|
||||
}
|
||||
}
|
||||
|
||||
void wxFileCtrl::UpdateFiles()
|
||||
{
|
||||
// don't do anything before ShowModal() call which sets m_dirName
|
||||
@ -701,6 +726,7 @@ void wxFileCtrl::OnListEndLabelEdit( wxListEvent &event )
|
||||
{
|
||||
fd->SetNewName( new_name, event.GetLabel() );
|
||||
SetItemState( event.GetItem(), wxLIST_STATE_SELECTED, wxLIST_STATE_SELECTED );
|
||||
UpdateItem( event.GetItem() );
|
||||
EnsureVisible( event.GetItem() );
|
||||
}
|
||||
else
|
||||
@ -853,24 +879,19 @@ wxGenericFileDialog::wxGenericFileDialog(wxWindow *parent,
|
||||
if (m_wildCard.IsEmpty())
|
||||
m_wildCard = _("All files (*)|*");
|
||||
|
||||
wxStringTokenizer tokens( m_wildCard, wxT("|") );
|
||||
wxString firstWild;
|
||||
wxString firstWildText;
|
||||
if (tokens.CountTokens() == 1)
|
||||
wxArrayString wildDescriptions, wildFilters;
|
||||
int wild_count = wxParseFileFilter(m_wildCard, wildDescriptions, wildFilters);
|
||||
|
||||
wxASSERT_MSG(wild_count > 0, wxT("Wrong file type descripition") );
|
||||
|
||||
// if error parsing, add default back
|
||||
if (wildFilters.GetCount() < 1u)
|
||||
{
|
||||
firstWildText = tokens.GetNextToken();
|
||||
firstWild = firstWildText;
|
||||
wild_count = 1;
|
||||
m_wildCard = _("All files (*)|*");
|
||||
wildDescriptions.Add(_("All files (*)"));
|
||||
wildFilters.Add(wxT("*"));
|
||||
}
|
||||
else
|
||||
{
|
||||
wxASSERT_MSG( tokens.CountTokens() % 2 == 0, wxT("Wrong file type descripition") );
|
||||
firstWildText = tokens.GetNextToken();
|
||||
firstWild = tokens.GetNextToken();
|
||||
}
|
||||
if ( firstWild.Left( 2 ) == wxT("*.") )
|
||||
m_filterExtension = firstWild.Mid( 1 );
|
||||
if ( m_filterExtension == wxT(".*") )
|
||||
m_filterExtension = wxEmptyString;
|
||||
|
||||
// layout
|
||||
|
||||
@ -940,7 +961,7 @@ wxGenericFileDialog::wxGenericFileDialog(wxWindow *parent,
|
||||
style2 |= wxLC_SINGLE_SEL;
|
||||
|
||||
m_list = new wxFileCtrl( this, ID_LIST_CTRL,
|
||||
firstWild, ms_lastShowHidden,
|
||||
wildFilters[0], ms_lastShowHidden,
|
||||
wxDefaultPosition, wxSize(540,200),
|
||||
style2);
|
||||
|
||||
@ -988,14 +1009,11 @@ wxGenericFileDialog::wxGenericFileDialog(wxWindow *parent,
|
||||
mainsizer->Add( choicesizer, 0, wxEXPAND );
|
||||
}
|
||||
|
||||
m_choice->Append( firstWildText, (void*) new wxString( firstWild ) );
|
||||
while (tokens.HasMoreTokens())
|
||||
for (size_t n=0; n<wildFilters.GetCount(); n++)
|
||||
{
|
||||
firstWildText = tokens.GetNextToken();
|
||||
firstWild = tokens.GetNextToken();
|
||||
m_choice->Append( firstWildText, (void*) new wxString( firstWild ) );
|
||||
m_choice->Append( wildDescriptions[n], (void*) new wxString( wildFilters[n] ) );
|
||||
}
|
||||
m_choice->SetSelection( 0 );
|
||||
SetFilterIndex( 0 );
|
||||
|
||||
SetAutoLayout( TRUE );
|
||||
SetSizer( mainsizer );
|
||||
@ -1124,6 +1142,11 @@ void wxGenericFileDialog::HandleAction( const wxString &fn )
|
||||
if (filename.IsEmpty()) return;
|
||||
if (filename == wxT(".")) return;
|
||||
|
||||
// "some/place/" means they want to chdir not try to load "place"
|
||||
bool want_dir = filename.Last() == wxFILE_SEP_PATH;
|
||||
if (want_dir)
|
||||
filename = filename.RemoveLast();
|
||||
|
||||
if (filename == wxT(".."))
|
||||
{
|
||||
m_list->GoToParentDir();
|
||||
@ -1141,13 +1164,9 @@ void wxGenericFileDialog::HandleAction( const wxString &fn )
|
||||
return;
|
||||
}
|
||||
|
||||
if (filename[0u] == wxT('~'))
|
||||
if (filename.BeforeFirst(wxT('/')) == wxT("~"))
|
||||
{
|
||||
filename.Remove( 0, 1 );
|
||||
wxString tmp( wxGetUserHome() );
|
||||
tmp += wxT('/');
|
||||
tmp += filename;
|
||||
filename = tmp;
|
||||
filename = wxGetUserHome() + filename.Remove(0, 1);
|
||||
}
|
||||
#endif // __UNIX__
|
||||
|
||||
@ -1178,6 +1197,14 @@ void wxGenericFileDialog::HandleAction( const wxString &fn )
|
||||
return;
|
||||
}
|
||||
|
||||
// they really wanted a dir, but it doesn't exist
|
||||
if (want_dir)
|
||||
{
|
||||
wxMessageBox(_("Directory doesn't exist."), _("Error"),
|
||||
wxOK | wxICON_ERROR );
|
||||
return;
|
||||
}
|
||||
|
||||
// append the default extension to the filename if it doesn't have any
|
||||
//
|
||||
// VZ: the logic of testing for !wxFileExists() only for the open file
|
||||
@ -1356,152 +1383,6 @@ void wxGenericFileDialog::UpdateControls()
|
||||
|
||||
IMPLEMENT_DYNAMIC_CLASS(wxFileDialog, wxGenericFileDialog);
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// global functions
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
// common part of both wxFileSelectorEx() and wxFileSelector()
|
||||
static wxString
|
||||
DoSelectFile(const wxChar *title,
|
||||
const wxChar *defaultDir,
|
||||
const wxChar *defaultFileName,
|
||||
const wxChar *defaultExtension,
|
||||
int *indexDefaultExtension,
|
||||
const wxChar *filter,
|
||||
int flags,
|
||||
wxWindow *parent,
|
||||
int x,
|
||||
int y)
|
||||
{
|
||||
// the filter may be either given explicitly or created automatically from
|
||||
// the default extension
|
||||
wxString filterReal;
|
||||
if ( filter )
|
||||
{
|
||||
// the user has specified the filter explicitly, use it
|
||||
filterReal = filter;
|
||||
}
|
||||
else if ( !wxIsEmpty(defaultExtension) )
|
||||
{
|
||||
// create the filter to match the given extension
|
||||
filterReal << wxT("*.") << defaultExtension;
|
||||
}
|
||||
|
||||
wxFileDialog fileDialog(parent,
|
||||
title,
|
||||
defaultDir,
|
||||
defaultFileName,
|
||||
filterReal,
|
||||
flags,
|
||||
wxPoint(x, y));
|
||||
|
||||
wxString path;
|
||||
if ( fileDialog.ShowModal() == wxID_OK )
|
||||
{
|
||||
path = fileDialog.GetPath();
|
||||
if ( indexDefaultExtension )
|
||||
{
|
||||
*indexDefaultExtension = fileDialog.GetFilterIndex();
|
||||
}
|
||||
}
|
||||
|
||||
return path;
|
||||
}
|
||||
|
||||
wxString
|
||||
wxFileSelectorEx(const wxChar *title,
|
||||
const wxChar *defaultDir,
|
||||
const wxChar *defaultFileName,
|
||||
int *indexDefaultExtension,
|
||||
const wxChar *filter,
|
||||
int flags,
|
||||
wxWindow *parent,
|
||||
int x,
|
||||
int y)
|
||||
{
|
||||
return DoSelectFile(title,
|
||||
defaultDir,
|
||||
defaultFileName,
|
||||
wxT(""), // def ext determined by index
|
||||
indexDefaultExtension,
|
||||
filter,
|
||||
flags,
|
||||
parent,
|
||||
x,
|
||||
y);
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
return DoSelectFile(title,
|
||||
defaultDir,
|
||||
defaultFileName,
|
||||
defaultExtension,
|
||||
NULL, // not interested in filter index
|
||||
filter,
|
||||
flags,
|
||||
parent,
|
||||
x,
|
||||
y);
|
||||
}
|
||||
|
||||
static wxString GetWildcardString(const wxChar *ext)
|
||||
{
|
||||
wxString wild;
|
||||
if ( ext )
|
||||
{
|
||||
if ( *ext == wxT('.') )
|
||||
ext++;
|
||||
|
||||
wild << _T("*.") << ext;
|
||||
}
|
||||
else // no extension specified
|
||||
{
|
||||
wild = wxFileSelectorDefaultWildcardStr;
|
||||
}
|
||||
|
||||
return wild;
|
||||
}
|
||||
|
||||
wxString wxLoadFileSelector(const wxChar *what,
|
||||
const wxChar *ext,
|
||||
const wxChar *nameDef,
|
||||
wxWindow *parent)
|
||||
{
|
||||
wxString prompt;
|
||||
if ( what && *what )
|
||||
prompt = wxString::Format(_("Load %s file"), what);
|
||||
else
|
||||
prompt = _("Load file");
|
||||
|
||||
return wxFileSelector(prompt, NULL, nameDef, ext,
|
||||
GetWildcardString(ext), 0, parent);
|
||||
}
|
||||
|
||||
wxString wxSaveFileSelector(const wxChar *what,
|
||||
const wxChar *ext,
|
||||
const wxChar *nameDef,
|
||||
wxWindow *parent)
|
||||
{
|
||||
wxString prompt;
|
||||
if ( what && *what )
|
||||
prompt = wxString::Format(_("Save %s file"), what);
|
||||
else
|
||||
prompt = _("Save file");
|
||||
|
||||
return wxFileSelector(prompt, NULL, nameDef, ext,
|
||||
GetWildcardString(ext), 0, parent);
|
||||
}
|
||||
|
||||
#endif // USE_GENERIC_FILEDIALOG
|
||||
|
||||
#endif // wxUSE_FILEDLG
|
||||
|
@ -192,84 +192,3 @@ void wxFileDialog::SetPath(const wxString& path)
|
||||
}
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// global functions
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
wxString
|
||||
wxFileSelectorEx(const wxChar *message,
|
||||
const wxChar *default_path,
|
||||
const wxChar *default_filename,
|
||||
int *indexDefaultExtension,
|
||||
const wxChar *wildcard,
|
||||
int flags,
|
||||
wxWindow *parent,
|
||||
int x, int y)
|
||||
{
|
||||
// TODO: implement this somehow
|
||||
return wxFileSelector(message, default_path, default_filename, wxT(""),
|
||||
wildcard, flags, parent, x, y);
|
||||
}
|
||||
|
||||
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 filter2;
|
||||
if ( defaultExtension && !filter )
|
||||
filter2 = wxString(wxT("*.")) + wxString(defaultExtension) ;
|
||||
else if ( filter )
|
||||
filter2 = filter;
|
||||
|
||||
wxString defaultDirString;
|
||||
if (defaultDir)
|
||||
defaultDirString = defaultDir;
|
||||
|
||||
wxString defaultFilenameString;
|
||||
if (defaultFileName)
|
||||
defaultFilenameString = defaultFileName;
|
||||
|
||||
wxFileDialog fileDialog( parent, title, defaultDirString, defaultFilenameString, filter2, flags, wxPoint(x, y) );
|
||||
|
||||
if ( fileDialog.ShowModal() == wxID_OK )
|
||||
{
|
||||
return fileDialog.GetPath();
|
||||
}
|
||||
else
|
||||
{
|
||||
return wxEmptyString;
|
||||
}
|
||||
}
|
||||
|
||||
wxString wxLoadFileSelector( const wxChar *what, const wxChar *extension, const wxChar *default_name, wxWindow *parent )
|
||||
{
|
||||
wxChar *ext = (wxChar *)extension;
|
||||
|
||||
wxString prompt = wxString::Format(_("Load %s file"), what);
|
||||
|
||||
if (*ext == wxT('.'))
|
||||
ext++;
|
||||
|
||||
wxString wild = wxString::Format(_T("*.%s"), ext);
|
||||
|
||||
return wxFileSelector(prompt, (const wxChar *) NULL, default_name,
|
||||
ext, wild, 0, parent);
|
||||
}
|
||||
|
||||
wxString wxSaveFileSelector(const wxChar *what, const wxChar *extension, const wxChar *default_name,
|
||||
wxWindow *parent )
|
||||
{
|
||||
wxChar *ext = (wxChar *)extension;
|
||||
|
||||
wxString prompt = wxString::Format(_("Save %s file"), what);
|
||||
|
||||
if (*ext == wxT('.'))
|
||||
ext++;
|
||||
|
||||
wxString wild = wxString::Format(_T("*.%s"), ext);
|
||||
|
||||
return wxFileSelector(prompt, (const wxChar *) NULL, default_name,
|
||||
ext, wild, 0, parent);
|
||||
}
|
||||
|
||||
|
@ -192,84 +192,3 @@ void wxFileDialog::SetPath(const wxString& path)
|
||||
}
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// global functions
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
wxString
|
||||
wxFileSelectorEx(const wxChar *message,
|
||||
const wxChar *default_path,
|
||||
const wxChar *default_filename,
|
||||
int *indexDefaultExtension,
|
||||
const wxChar *wildcard,
|
||||
int flags,
|
||||
wxWindow *parent,
|
||||
int x, int y)
|
||||
{
|
||||
// TODO: implement this somehow
|
||||
return wxFileSelector(message, default_path, default_filename, wxT(""),
|
||||
wildcard, flags, parent, x, y);
|
||||
}
|
||||
|
||||
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 filter2;
|
||||
if ( defaultExtension && !filter )
|
||||
filter2 = wxString(wxT("*.")) + wxString(defaultExtension) ;
|
||||
else if ( filter )
|
||||
filter2 = filter;
|
||||
|
||||
wxString defaultDirString;
|
||||
if (defaultDir)
|
||||
defaultDirString = defaultDir;
|
||||
|
||||
wxString defaultFilenameString;
|
||||
if (defaultFileName)
|
||||
defaultFilenameString = defaultFileName;
|
||||
|
||||
wxFileDialog fileDialog( parent, title, defaultDirString, defaultFilenameString, filter2, flags, wxPoint(x, y) );
|
||||
|
||||
if ( fileDialog.ShowModal() == wxID_OK )
|
||||
{
|
||||
return fileDialog.GetPath();
|
||||
}
|
||||
else
|
||||
{
|
||||
return wxEmptyString;
|
||||
}
|
||||
}
|
||||
|
||||
wxString wxLoadFileSelector( const wxChar *what, const wxChar *extension, const wxChar *default_name, wxWindow *parent )
|
||||
{
|
||||
wxChar *ext = (wxChar *)extension;
|
||||
|
||||
wxString prompt = wxString::Format(_("Load %s file"), what);
|
||||
|
||||
if (*ext == wxT('.'))
|
||||
ext++;
|
||||
|
||||
wxString wild = wxString::Format(_T("*.%s"), ext);
|
||||
|
||||
return wxFileSelector(prompt, (const wxChar *) NULL, default_name,
|
||||
ext, wild, 0, parent);
|
||||
}
|
||||
|
||||
wxString wxSaveFileSelector(const wxChar *what, const wxChar *extension, const wxChar *default_name,
|
||||
wxWindow *parent )
|
||||
{
|
||||
wxChar *ext = (wxChar *)extension;
|
||||
|
||||
wxString prompt = wxString::Format(_("Save %s file"), what);
|
||||
|
||||
if (*ext == wxT('.'))
|
||||
ext++;
|
||||
|
||||
wxString wild = wxString::Format(_T("*.%s"), ext);
|
||||
|
||||
return wxFileSelector(prompt, (const wxChar *) NULL, default_name,
|
||||
ext, wild, 0, parent);
|
||||
}
|
||||
|
||||
|
@ -274,65 +274,6 @@ static pascal Boolean CrossPlatformFileFilter(CInfoPBPtr myCInfoPBPtr, void *dat
|
||||
|
||||
// end wxmac
|
||||
|
||||
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)
|
||||
{
|
||||
// If there's a default extension specified but no filter, we create a suitable
|
||||
// filter.
|
||||
|
||||
wxString filter2;
|
||||
if ( defaultExtension && !filter )
|
||||
filter2 = wxString(wxT("*.")) + wxString(defaultExtension) ;
|
||||
else if ( filter )
|
||||
filter2 = filter;
|
||||
|
||||
wxString defaultDirString;
|
||||
if (defaultDir)
|
||||
defaultDirString = defaultDir;
|
||||
else
|
||||
defaultDirString = wxEmptyString ;
|
||||
|
||||
wxString defaultFilenameString;
|
||||
if (defaultFileName)
|
||||
defaultFilenameString = defaultFileName;
|
||||
else
|
||||
defaultFilenameString = wxEmptyString;
|
||||
|
||||
wxFileDialog fileDialog(parent, title, defaultDirString, defaultFilenameString, filter2, flags, wxPoint(x, y));
|
||||
|
||||
if ( fileDialog.ShowModal() == wxID_OK )
|
||||
{
|
||||
return fileDialog.GetPath();
|
||||
}
|
||||
else
|
||||
return wxGetEmptyString();
|
||||
}
|
||||
|
||||
WXDLLEXPORT wxString wxFileSelectorEx(const wxChar *title,
|
||||
const wxChar *defaultDir,
|
||||
const wxChar *defaultFileName,
|
||||
int* defaultFilterIndex,
|
||||
const wxChar *filter,
|
||||
int flags,
|
||||
wxWindow* parent,
|
||||
int x,
|
||||
int y)
|
||||
|
||||
{
|
||||
wxFileDialog fileDialog(parent, title ? title : wxT(""), defaultDir ? defaultDir : wxT(""),
|
||||
defaultFileName ? defaultFileName : wxT(""), filter ? filter : wxT(""), flags, wxPoint(x, y));
|
||||
|
||||
if ( fileDialog.ShowModal() == wxID_OK )
|
||||
{
|
||||
*defaultFilterIndex = fileDialog.GetFilterIndex();
|
||||
return fileDialog.GetPath();
|
||||
}
|
||||
else
|
||||
return wxGetEmptyString();
|
||||
}
|
||||
|
||||
wxFileDialog::wxFileDialog(wxWindow *parent, const wxString& message,
|
||||
const wxString& defaultDir, const wxString& defaultFileName, const wxString& wildCard,
|
||||
long style, const wxPoint& pos)
|
||||
@ -526,40 +467,3 @@ int wxFileDialog::ShowModal()
|
||||
return wxID_CANCEL;
|
||||
}
|
||||
|
||||
// Generic file load/save dialog
|
||||
static wxString
|
||||
wxDefaultFileSelector(bool load, const wxChar *what, const wxChar *extension, const wxChar *default_name, wxWindow *parent)
|
||||
{
|
||||
wxString prompt;
|
||||
|
||||
wxString str;
|
||||
if (load)
|
||||
str = wxT("Load %s file");
|
||||
else
|
||||
str = wxT("Save %s file");
|
||||
prompt.Printf( wxGetTranslation(str), what);
|
||||
|
||||
const wxChar *ext = extension;
|
||||
if (*ext == wxT('.'))
|
||||
ext++;
|
||||
|
||||
wxString wild;
|
||||
wild.Printf(wxT("*.%s"), ext);
|
||||
|
||||
return wxFileSelector (prompt, NULL, default_name, ext, wild, 0, parent);
|
||||
}
|
||||
|
||||
// Generic file load dialog
|
||||
wxString
|
||||
wxLoadFileSelector(const wxChar *what, const wxChar *extension, const wxChar *default_name, wxWindow *parent)
|
||||
{
|
||||
return wxDefaultFileSelector(TRUE, what, extension, default_name, parent);
|
||||
}
|
||||
|
||||
|
||||
// Generic file save dialog
|
||||
wxString
|
||||
wxSaveFileSelector(const wxChar *what, const wxChar *extension, const wxChar *default_name, wxWindow *parent)
|
||||
{
|
||||
return wxDefaultFileSelector(FALSE, what, extension, default_name, parent);
|
||||
}
|
||||
|
@ -274,65 +274,6 @@ static pascal Boolean CrossPlatformFileFilter(CInfoPBPtr myCInfoPBPtr, void *dat
|
||||
|
||||
// end wxmac
|
||||
|
||||
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)
|
||||
{
|
||||
// If there's a default extension specified but no filter, we create a suitable
|
||||
// filter.
|
||||
|
||||
wxString filter2;
|
||||
if ( defaultExtension && !filter )
|
||||
filter2 = wxString(wxT("*.")) + wxString(defaultExtension) ;
|
||||
else if ( filter )
|
||||
filter2 = filter;
|
||||
|
||||
wxString defaultDirString;
|
||||
if (defaultDir)
|
||||
defaultDirString = defaultDir;
|
||||
else
|
||||
defaultDirString = wxEmptyString ;
|
||||
|
||||
wxString defaultFilenameString;
|
||||
if (defaultFileName)
|
||||
defaultFilenameString = defaultFileName;
|
||||
else
|
||||
defaultFilenameString = wxEmptyString;
|
||||
|
||||
wxFileDialog fileDialog(parent, title, defaultDirString, defaultFilenameString, filter2, flags, wxPoint(x, y));
|
||||
|
||||
if ( fileDialog.ShowModal() == wxID_OK )
|
||||
{
|
||||
return fileDialog.GetPath();
|
||||
}
|
||||
else
|
||||
return wxGetEmptyString();
|
||||
}
|
||||
|
||||
WXDLLEXPORT wxString wxFileSelectorEx(const wxChar *title,
|
||||
const wxChar *defaultDir,
|
||||
const wxChar *defaultFileName,
|
||||
int* defaultFilterIndex,
|
||||
const wxChar *filter,
|
||||
int flags,
|
||||
wxWindow* parent,
|
||||
int x,
|
||||
int y)
|
||||
|
||||
{
|
||||
wxFileDialog fileDialog(parent, title ? title : wxT(""), defaultDir ? defaultDir : wxT(""),
|
||||
defaultFileName ? defaultFileName : wxT(""), filter ? filter : wxT(""), flags, wxPoint(x, y));
|
||||
|
||||
if ( fileDialog.ShowModal() == wxID_OK )
|
||||
{
|
||||
*defaultFilterIndex = fileDialog.GetFilterIndex();
|
||||
return fileDialog.GetPath();
|
||||
}
|
||||
else
|
||||
return wxGetEmptyString();
|
||||
}
|
||||
|
||||
wxFileDialog::wxFileDialog(wxWindow *parent, const wxString& message,
|
||||
const wxString& defaultDir, const wxString& defaultFileName, const wxString& wildCard,
|
||||
long style, const wxPoint& pos)
|
||||
@ -526,40 +467,3 @@ int wxFileDialog::ShowModal()
|
||||
return wxID_CANCEL;
|
||||
}
|
||||
|
||||
// Generic file load/save dialog
|
||||
static wxString
|
||||
wxDefaultFileSelector(bool load, const wxChar *what, const wxChar *extension, const wxChar *default_name, wxWindow *parent)
|
||||
{
|
||||
wxString prompt;
|
||||
|
||||
wxString str;
|
||||
if (load)
|
||||
str = wxT("Load %s file");
|
||||
else
|
||||
str = wxT("Save %s file");
|
||||
prompt.Printf( wxGetTranslation(str), what);
|
||||
|
||||
const wxChar *ext = extension;
|
||||
if (*ext == wxT('.'))
|
||||
ext++;
|
||||
|
||||
wxString wild;
|
||||
wild.Printf(wxT("*.%s"), ext);
|
||||
|
||||
return wxFileSelector (prompt, NULL, default_name, ext, wild, 0, parent);
|
||||
}
|
||||
|
||||
// Generic file load dialog
|
||||
wxString
|
||||
wxLoadFileSelector(const wxChar *what, const wxChar *extension, const wxChar *default_name, wxWindow *parent)
|
||||
{
|
||||
return wxDefaultFileSelector(TRUE, what, extension, default_name, parent);
|
||||
}
|
||||
|
||||
|
||||
// Generic file save dialog
|
||||
wxString
|
||||
wxSaveFileSelector(const wxChar *what, const wxChar *extension, const wxChar *default_name, wxWindow *parent)
|
||||
{
|
||||
return wxDefaultFileSelector(FALSE, what, extension, default_name, parent);
|
||||
}
|
||||
|
@ -57,65 +57,6 @@ IMPLEMENT_CLASS(wxFileDialog, wxDialog)
|
||||
#define wxFSB_HEIGHT 500
|
||||
|
||||
|
||||
wxString wxFileSelector(const char *title,
|
||||
const char *defaultDir, const char *defaultFileName,
|
||||
const char *defaultExtension, const char *filter, int flags,
|
||||
wxWindow *parent, int x, int y)
|
||||
{
|
||||
// If there's a default extension specified but no filter, we create a suitable
|
||||
// filter.
|
||||
|
||||
wxString filter2("");
|
||||
if ( defaultExtension && !filter )
|
||||
filter2 = wxString("*.") + wxString(defaultExtension) ;
|
||||
else if ( filter )
|
||||
filter2 = filter;
|
||||
|
||||
wxString defaultDirString;
|
||||
if (defaultDir)
|
||||
defaultDirString = defaultDir;
|
||||
else
|
||||
defaultDirString = "";
|
||||
|
||||
wxString defaultFilenameString;
|
||||
if (defaultFileName)
|
||||
defaultFilenameString = defaultFileName;
|
||||
else
|
||||
defaultFilenameString = "";
|
||||
|
||||
wxFileDialog fileDialog(parent, title, defaultDirString, defaultFilenameString, filter2, flags, wxPoint(x, y));
|
||||
|
||||
if ( fileDialog.ShowModal() == wxID_OK )
|
||||
{
|
||||
return fileDialog.GetPath();
|
||||
}
|
||||
else
|
||||
return wxEmptyString;
|
||||
}
|
||||
|
||||
wxString wxFileSelectorEx(const char *title,
|
||||
const char *defaultDir,
|
||||
const char *defaultFileName,
|
||||
int* defaultFilterIndex,
|
||||
const char *filter,
|
||||
int flags,
|
||||
wxWindow* parent,
|
||||
int x,
|
||||
int y)
|
||||
|
||||
{
|
||||
wxFileDialog fileDialog(parent, title ? title : "", defaultDir ? defaultDir : "",
|
||||
defaultFileName ? defaultFileName : "", filter ? filter : "", flags, wxPoint(x, y));
|
||||
|
||||
if ( fileDialog.ShowModal() == wxID_OK )
|
||||
{
|
||||
*defaultFilterIndex = fileDialog.GetFilterIndex();
|
||||
return fileDialog.GetPath();
|
||||
}
|
||||
else
|
||||
return wxEmptyString;
|
||||
}
|
||||
|
||||
wxString wxFileDialog::m_fileSelectorAnswer = "";
|
||||
bool wxFileDialog::m_fileSelectorReturned = FALSE;
|
||||
|
||||
@ -377,39 +318,3 @@ int wxFileDialog::ShowModal()
|
||||
return wxID_OK;
|
||||
}
|
||||
|
||||
// Generic file load/save dialog
|
||||
static wxString
|
||||
wxDefaultFileSelector(bool load, const char *what, const char *extension, const char *default_name, wxWindow *parent)
|
||||
{
|
||||
char *ext = wxConstCast(extension, char);
|
||||
|
||||
wxString prompt;
|
||||
wxString str;
|
||||
if (load)
|
||||
str = _("Load %s file");
|
||||
else
|
||||
str = _("Save %s file");
|
||||
prompt.Printf(str, what);
|
||||
|
||||
if (*ext == '.')
|
||||
ext++;
|
||||
wxString wild;
|
||||
wild.Printf("*.%s", ext);
|
||||
|
||||
return wxFileSelector (prompt, NULL, default_name, ext, wild, 0, parent);
|
||||
}
|
||||
|
||||
// Generic file load dialog
|
||||
wxString wxLoadFileSelector(const char *what, const char *extension, const char *default_name, wxWindow *parent)
|
||||
{
|
||||
return wxDefaultFileSelector(TRUE, what, extension, default_name, parent);
|
||||
}
|
||||
|
||||
|
||||
// Generic file save dialog
|
||||
wxString wxSaveFileSelector(const char *what, const char *extension, const char *default_name, wxWindow *parent)
|
||||
{
|
||||
return wxDefaultFileSelector(FALSE, what, extension, default_name, parent);
|
||||
}
|
||||
|
||||
|
||||
|
@ -83,122 +83,9 @@
|
||||
IMPLEMENT_CLASS(wxFileDialog, wxDialog)
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// global functions
|
||||
// wxFileDialog
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
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)
|
||||
{
|
||||
// In the original implementation, defaultExtension is passed to the
|
||||
// lpstrDefExt member of OPENFILENAME. This extension, if non-NULL, 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
|
||||
// should be better than the native Microsoft implementation because
|
||||
// Windows only allows *one* default extension, whereas here we do the
|
||||
// right thing depending on the filter the user has chosen.
|
||||
|
||||
// If there's a default extension specified but no filter, we create a
|
||||
// suitable filter.
|
||||
|
||||
wxString filter2;
|
||||
if ( defaultExtension && !filter )
|
||||
filter2 = wxString(wxT("*.")) + defaultExtension;
|
||||
else if ( filter )
|
||||
filter2 = filter;
|
||||
|
||||
wxString defaultDirString;
|
||||
if (defaultDir)
|
||||
defaultDirString = defaultDir;
|
||||
|
||||
wxString defaultFilenameString;
|
||||
if (defaultFileName)
|
||||
defaultFilenameString = defaultFileName;
|
||||
|
||||
wxFileDialog fileDialog(parent, title, defaultDirString,
|
||||
defaultFilenameString, filter2,
|
||||
flags, wxPoint(x, y));
|
||||
if( wxStrlen(defaultExtension) != 0 )
|
||||
{
|
||||
int filterFind = 0,
|
||||
filterIndex = 0;
|
||||
|
||||
for( unsigned int i = 0; i < filter2.Len(); i++ )
|
||||
{
|
||||
if( filter2.GetChar(i) == wxT('|') )
|
||||
{
|
||||
// save the start index of the new filter
|
||||
unsigned int is = i++;
|
||||
|
||||
// find the end of the filter
|
||||
for( ; i < filter2.Len(); i++ )
|
||||
{
|
||||
if(filter2[i] == wxT('|'))
|
||||
break;
|
||||
}
|
||||
|
||||
if( i-is-1 > 0 && is+1 < filter2.Len() )
|
||||
{
|
||||
if( filter2.Mid(is+1,i-is-1).Contains(defaultExtension) )
|
||||
{
|
||||
filterFind = filterIndex;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
filterIndex++;
|
||||
}
|
||||
}
|
||||
|
||||
fileDialog.SetFilterIndex(filterFind);
|
||||
}
|
||||
|
||||
wxString filename;
|
||||
if ( fileDialog.ShowModal() == wxID_OK )
|
||||
{
|
||||
filename = fileDialog.GetPath();
|
||||
}
|
||||
|
||||
return filename;
|
||||
}
|
||||
|
||||
|
||||
wxString wxFileSelectorEx(const wxChar *title,
|
||||
const wxChar *defaultDir,
|
||||
const wxChar *defaultFileName,
|
||||
int* defaultFilterIndex,
|
||||
const wxChar *filter,
|
||||
int flags,
|
||||
wxWindow* parent,
|
||||
int x,
|
||||
int y)
|
||||
|
||||
{
|
||||
wxFileDialog fileDialog(parent,
|
||||
title ? title : wxT(""),
|
||||
defaultDir ? defaultDir : wxT(""),
|
||||
defaultFileName ? defaultFileName : wxT(""),
|
||||
filter ? filter : wxT(""),
|
||||
flags, wxPoint(x, y));
|
||||
|
||||
wxString filename;
|
||||
if ( fileDialog.ShowModal() == wxID_OK )
|
||||
{
|
||||
if ( defaultFilterIndex )
|
||||
*defaultFilterIndex = fileDialog.GetFilterIndex();
|
||||
|
||||
filename = fileDialog.GetPath();
|
||||
}
|
||||
|
||||
return filename;
|
||||
}
|
||||
|
||||
wxFileDialog::wxFileDialog(wxWindow *parent,
|
||||
const wxString& message,
|
||||
const wxString& defaultDir,
|
||||
@ -545,50 +432,5 @@ int wxFileDialog::ShowModal()
|
||||
|
||||
}
|
||||
|
||||
// Generic file load/save dialog (for internal use only)
|
||||
static
|
||||
wxString wxDefaultFileSelector(bool load,
|
||||
const wxChar *what,
|
||||
const wxChar *extension,
|
||||
const wxChar *default_name,
|
||||
wxWindow *parent)
|
||||
{
|
||||
wxString prompt;
|
||||
wxString str;
|
||||
if (load)
|
||||
str = _("Load %s file");
|
||||
else
|
||||
str = _("Save %s file");
|
||||
prompt.Printf(str, what);
|
||||
|
||||
const wxChar *ext = extension;
|
||||
if (*ext == wxT('.'))
|
||||
ext++;
|
||||
|
||||
wxString wild;
|
||||
wild.Printf(wxT("*.%s"), ext);
|
||||
|
||||
return wxFileSelector(prompt, NULL, default_name, ext, wild,
|
||||
load ? wxOPEN : wxSAVE, parent);
|
||||
}
|
||||
|
||||
// Generic file load dialog
|
||||
WXDLLEXPORT wxString wxLoadFileSelector(const wxChar *what,
|
||||
const wxChar *extension,
|
||||
const wxChar *default_name,
|
||||
wxWindow *parent)
|
||||
{
|
||||
return wxDefaultFileSelector(TRUE, what, extension, default_name, parent);
|
||||
}
|
||||
|
||||
// Generic file save dialog
|
||||
WXDLLEXPORT wxString wxSaveFileSelector(const wxChar *what,
|
||||
const wxChar *extension,
|
||||
const wxChar *default_name,
|
||||
wxWindow *parent)
|
||||
{
|
||||
return wxDefaultFileSelector(FALSE, what, extension, default_name, parent);
|
||||
}
|
||||
|
||||
#endif // wxUSE_FILEDLG
|
||||
|
||||
|
@ -58,127 +58,6 @@
|
||||
#endif
|
||||
IMPLEMENT_CLASS(wxFileDialog, wxDialog)
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// global functions
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
wxString wxFileSelector(
|
||||
const char* pzTitle
|
||||
, const char* pzDefaultDir
|
||||
, const char* pzDefaultFileName
|
||||
, const char* pzDefaultExtension
|
||||
, const char* pzFilter
|
||||
, int nFlags
|
||||
, wxWindow* pParent
|
||||
, int nX
|
||||
, int nY
|
||||
)
|
||||
{
|
||||
wxString sFilter("");
|
||||
wxString sDefaultDirString;
|
||||
wxString sDefaultFilenameString;
|
||||
|
||||
//
|
||||
// If there's a default extension specified but no filter, we create
|
||||
// a suitable filter.
|
||||
//
|
||||
if (pzDefaultExtension && !pzFilter)
|
||||
sFilter = wxString("*.") + wxString(pzDefaultExtension);
|
||||
else if (pzFilter)
|
||||
sFilter = pzFilter;
|
||||
|
||||
if (pzDefaultDir)
|
||||
sDefaultDirString = pzDefaultDir;
|
||||
else
|
||||
sDefaultDirString = "";
|
||||
|
||||
if (pzDefaultFileName)
|
||||
sDefaultFilenameString = pzDefaultFileName;
|
||||
else
|
||||
sDefaultFilenameString = "";
|
||||
|
||||
wxFileDialog vFileDialog( pParent
|
||||
,pzTitle
|
||||
,sDefaultDirString
|
||||
,sDefaultFilenameString
|
||||
,sFilter
|
||||
,nFlags
|
||||
,wxPoint(nX, nY)
|
||||
);
|
||||
|
||||
if (wxStrlen(pzDefaultExtension) != 0)
|
||||
{
|
||||
int nFilterFind = 0;
|
||||
int nFilterIndex = 0;
|
||||
|
||||
for (unsigned int i = 0; i < sFilter.Len(); i++)
|
||||
{
|
||||
if (sFilter.GetChar(i) == wxT('|'))
|
||||
{
|
||||
//
|
||||
// Save the start index of the new filter
|
||||
unsigned int uIs = i++;
|
||||
|
||||
//
|
||||
// Find the end of the filter
|
||||
//
|
||||
for(; i < sFilter.Len(); i++)
|
||||
{
|
||||
if(sFilter[i] == wxT('|'))
|
||||
break;
|
||||
}
|
||||
|
||||
if( i - uIs - 1 > 0 && uIs + 1 < sFilter.Len() )
|
||||
{
|
||||
if(sFilter.Mid(uIs + 1, i - uIs - 1).Contains(pzDefaultExtension))
|
||||
{
|
||||
nFilterFind = nFilterIndex;
|
||||
break;
|
||||
}
|
||||
}
|
||||
nFilterIndex++;
|
||||
}
|
||||
}
|
||||
vFileDialog.SetFilterIndex(nFilterFind);
|
||||
}
|
||||
if (vFileDialog.ShowModal() == wxID_OK)
|
||||
{
|
||||
return vFileDialog.GetPath();
|
||||
}
|
||||
else
|
||||
return wxEmptyString;
|
||||
} // end of wxFileSelector
|
||||
|
||||
wxString wxFileSelectorEx (
|
||||
const char* pzTitle
|
||||
, const char* pzDefaultDir
|
||||
, const char* pzDefaultFileName
|
||||
, int* pnDefaultFilterIndex
|
||||
, const char* pzFilter
|
||||
, int nFlags
|
||||
, wxWindow* pParent
|
||||
, int nX
|
||||
, int nY
|
||||
)
|
||||
{
|
||||
wxFileDialog vFileDialog( pParent
|
||||
,pzTitle ? pzTitle : ""
|
||||
,pzDefaultDir ? pzDefaultDir : ""
|
||||
,pzDefaultFileName ? pzDefaultFileName : ""
|
||||
,pzFilter ? pzFilter : ""
|
||||
,nFlags
|
||||
,wxPoint(nX, nY)
|
||||
);
|
||||
|
||||
if (vFileDialog.ShowModal() == wxID_OK)
|
||||
{
|
||||
*pnDefaultFilterIndex = vFileDialog.GetFilterIndex();
|
||||
return vFileDialog.GetPath();
|
||||
}
|
||||
else
|
||||
return wxEmptyString;
|
||||
} // end of wxFileSelectorEx
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// CLASS wxFileDialog
|
||||
// ----------------------------------------------------------------------------
|
||||
@ -443,75 +322,3 @@ int wxFileDialog::ShowModal()
|
||||
return wxID_CANCEL;
|
||||
} // end of wxFileDialog::ShowModal
|
||||
|
||||
//
|
||||
// Generic file load/save dialog
|
||||
//
|
||||
static wxString wxDefaultFileSelector (
|
||||
bool bLoad
|
||||
, const char* pzWhat
|
||||
, const char* pzExtension
|
||||
, const char* pzDefaultName
|
||||
, wxWindow* pParent
|
||||
)
|
||||
{
|
||||
char* pzExt = (char *)pzExtension;
|
||||
char zPrompt[50];
|
||||
wxString sStr;
|
||||
char zWild[60];
|
||||
|
||||
if (bLoad)
|
||||
sStr = "Load %s file";
|
||||
else
|
||||
sStr = "Save %s file";
|
||||
sprintf(zPrompt, wxGetTranslation(sStr), pzWhat);
|
||||
|
||||
if (*pzExt == '.')
|
||||
pzExt++;
|
||||
sprintf(zWild, "*.%s", pzExt);
|
||||
return wxFileSelector ( zPrompt
|
||||
,NULL
|
||||
,pzDefaultName
|
||||
,pzExt
|
||||
,zWild
|
||||
,0
|
||||
,pParent
|
||||
);
|
||||
} // end of wxDefaultFileSelector
|
||||
|
||||
//
|
||||
// Generic file load dialog
|
||||
//
|
||||
wxString wxLoadFileSelector (
|
||||
const char* pzWhat
|
||||
, const char* pzExtension
|
||||
, const char* pzDefaultName
|
||||
, wxWindow* pParent
|
||||
)
|
||||
{
|
||||
return wxDefaultFileSelector( TRUE
|
||||
,pzWhat
|
||||
,pzExtension
|
||||
,pzDefaultName
|
||||
,pParent
|
||||
);
|
||||
} // end of wxLoadFileSelector
|
||||
|
||||
|
||||
//
|
||||
// Generic file save dialog
|
||||
//
|
||||
wxString wxSaveFileSelector (
|
||||
const char* pzWhat
|
||||
, const char* pzExtension
|
||||
, const char* pzDefaultName
|
||||
, wxWindow* pParent
|
||||
)
|
||||
{
|
||||
return wxDefaultFileSelector( FALSE
|
||||
,pzWhat
|
||||
,pzExtension
|
||||
,pzDefaultName
|
||||
,pParent
|
||||
);
|
||||
} // end of wxSaveFileSelector
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user