FileDlg updates.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@16607 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
David Webster
2002-08-20 05:00:48 +00:00
parent e4c2bd8403
commit b93f4bb9da
3 changed files with 100 additions and 93 deletions

View File

@@ -25,41 +25,47 @@ class WXDLLEXPORT wxFileDialog: public wxDialog
{ {
DECLARE_DYNAMIC_CLASS(wxFileDialog) DECLARE_DYNAMIC_CLASS(wxFileDialog)
public: public:
wxFileDialog(wxWindow *parent, const wxString& message = wxFileSelectorPromptStr, wxFileDialog( wxWindow* pParent
const wxString& defaultDir = "", const wxString& defaultFile = "", const wxString& wildCard = wxFileSelectorDefaultWildcardStr, ,const wxString& rsMessage = wxFileSelectorPromptStr
long style = 0, const wxPoint& pos = wxDefaultPosition); ,const wxString& rsDefaultDir = ""
,const wxString& rsDefaultFile = ""
,const wxString& rsWildCard = wxFileSelectorDefaultWildcardStr
,long lStyle = 0
,const wxPoint& rPos = wxDefaultPosition
);
inline void SetMessage(const wxString& message) { m_message = message; } inline void SetMessage(const wxString& rsMessage) { m_sMessage = rsMessage; }
inline void SetPath(const wxString& path) { m_path = path; } inline void SetPath(const wxString& rsPath) { m_sPath = rsPath; }
inline void SetDirectory(const wxString& dir) { m_dir = dir; } inline void SetDirectory(const wxString& rsDir) { m_sDir = rsDir; }
inline void SetFilename(const wxString& name) { m_fileName = name; } inline void SetFilename(const wxString& rsName) { m_sFileName = rsName; }
inline void SetWildcard(const wxString& wildCard) { m_wildCard = wildCard; } inline void SetWildcard(const wxString& rsWildCard) { m_sWildCard = rsWildCard; }
inline void SetStyle(long style) { m_dialogStyle = style; } inline void SetStyle(long lStyle) { m_lDialogStyle = lStyle; }
inline void SetFilterIndex(int filterIndex) { m_filterIndex = filterIndex; } inline void SetFilterIndex(int nFilterIndex) { m_nFilterIndex = nFilterIndex; }
inline wxString GetMessage() const { return m_message; } inline wxString GetMessage(void) const { return m_sMessage; }
inline wxString GetPath() const { return m_path; } inline wxString GetPath(void) const { return m_sPath; }
inline void GetPaths(wxArrayString& a) { a.Empty(); a.Add(m_path); } void GetPaths(wxArrayString& rasPath) const;
inline wxString GetDirectory() const { return m_dir; } inline wxString GetDirectory(void) const { return m_sDir; }
inline wxString GetFilename() const { return m_fileName; } inline wxString GetFilename(void) const { return m_sFileName; }
inline void GetFilenames(wxArrayString& a) { a.Empty(); inline void GetFilenames(wxArrayString& rasFilenames) { rasFilenames.Empty(); rasFilenames.Add( m_sFileName); }
a.Add( m_fileName); } inline wxString GetWildcard(void) const { return m_sWildCard; }
inline wxString GetWildcard() const { return m_wildCard; } inline long GetStyle(void) const { return m_lDialogStyle; }
inline long GetStyle() const { return m_dialogStyle; } inline int GetFilterIndex() const { return m_nFilterIndex ; }
inline int GetFilterIndex() const { return m_filterIndex ; }
int ShowModal(); int ShowModal();
protected: protected:
wxString m_message; wxString m_sMessage;
long m_dialogStyle; long m_lDialogStyle;
wxWindow * m_parent; wxWindow* m_pParent;
wxString m_dir; wxString m_sDir;
wxString m_path; // Full path wxString m_sPath; // Full path
wxString m_fileName; wxString m_sFileName;
wxString m_wildCard; wxArrayString m_asFileNames;
int m_filterIndex; wxString m_sWildCard;
}; int m_nFilterIndex;
wxPoint m_vPos;
}; // end of CLASS wxFileDialog
#define wxOPEN 0x0001 #define wxOPEN 0x0001
#define wxSAVE 0x0002 #define wxSAVE 0x0002
@@ -67,43 +73,52 @@ protected:
#define wxHIDE_READONLY 0x0008 #define wxHIDE_READONLY 0x0008
#define wxFILE_MUST_EXIST 0x0010 #define wxFILE_MUST_EXIST 0x0010
//
// File selector - backward compatibility // File selector - backward compatibility
WXDLLEXPORT wxString wxFileSelector( const char *message = wxFileSelectorPromptStr //
,const char *default_path = NULL WXDLLEXPORT wxString wxFileSelector( const char* pzMessage = wxFileSelectorPromptStr
,const char *default_filename = NULL ,const char* pzDefaultPath = NULL
,const char *default_extension = NULL ,const char* pzDefaultFilename = NULL
,const char *wildcard = wxFileSelectorDefaultWildcardStr ,const char* pzDefaultExtension = NULL
,int flags = 0 ,const char* pzWildcard = wxFileSelectorDefaultWildcardStr
,wxWindow *parent = NULL ,int nFlags = 0
,int x = -1 ,wxWindow* pParent = NULL
,int y = -1 ,int nX = -1
,int nY = -1
); );
//
// An extended version of wxFileSelector // An extended version of wxFileSelector
WXDLLEXPORT wxString wxFileSelectorEx( const char *message = wxFileSelectorPromptStr
,const char *default_path = NULL WXDLLEXPORT wxString wxFileSelectorEx( const char* pzMessage = wxFileSelectorPromptStr
,const char *default_filename = NULL ,const char* pzDefaultPath = NULL
,int *indexDefaultExtension = NULL ,const char* pzDefaultFilename = NULL
,const char *wildcard = wxFileSelectorDefaultWildcardStr ,int* pnIndexDefaultExtension = NULL
,int flags = 0 ,const char* pzWildcard = wxFileSelectorDefaultWildcardStr
,wxWindow *parent = NULL ,int nFlags = 0
,int x = -1 ,wxWindow* pParent = NULL
,int y = -1 ,int nX = -1
,int nY = -1
); );
//
// Generic file load dialog // Generic file load dialog
WXDLLEXPORT wxString wxLoadFileSelector( const char *what //
,const char *extension WXDLLEXPORT wxString wxLoadFileSelector( const char* pzWhat
,const char *default_name = NULL ,const char* pzExtension
,wxWindow *parent = NULL ,const char* pzDefaultName = NULL
,wxWindow* pParent = NULL
); );
//
// Generic file save dialog // Generic file save dialog
WXDLLEXPORT wxString wxSaveFileSelector( const char *what //
,const char *extension WXDLLEXPORT wxString wxSaveFileSelector( const char* pzWhat
,const char *default_name = NULL ,const char* pzExtension
,wxWindow *parent = NULL ,const char* pzDefaultName = NULL
,wxWindow* pParent = NULL
); );
#endif #endif
// _WX_FILEDLG_H_
// _WX_FILEDLG_H_

View File

@@ -227,12 +227,14 @@ int wxFileDialog::ShowModal()
{ {
wxString sTheFilter; wxString sTheFilter;
wxString sFilterBuffer; wxString sFilterBuffer;
wxChar* pzFilterBuffer;
static wxChar zFileNameBuffer[wxMAXPATH]; // the file-name static wxChar zFileNameBuffer[wxMAXPATH]; // the file-name
HWND hWnd = 0; HWND hWnd = 0;
wxChar zTitleBuffer[wxMAXFILE + 1 + wxMAXEXT]; // the file-name, without path wxChar zTitleBuffer[wxMAXFILE + 1 + wxMAXEXT]; // the file-name, without path
wxString sDir; wxString sDir;
size_t i; size_t i;
size_t nLen = m_sDir.length(); size_t nLen = m_sDir.length();
int nCount = 0;
FILEDLG vFileDlg; FILEDLG vFileDlg;
ULONG lFlags = 0L; ULONG lFlags = 0L;
@@ -246,9 +248,11 @@ int wxFileDialog::ShowModal()
*zFileNameBuffer = wxT('\0'); *zFileNameBuffer = wxT('\0');
*zTitleBuffer = wxT('\0'); *zTitleBuffer = wxT('\0');
m_lDialogStyle & wxSAVE ? lFlags != FDS_SAVEAS_DIALOG if (m_lDialogStyle & wxSAVE)
: FDS_OPEN_DIALOG lFlags = FDS_SAVEAS_DIALOG;
; else
lFlags = FDS_OPEN_DIALOG;
if ((m_lDialogStyle & wxHIDE_READONLY) || (m_lDialogStyle & wxSAVE)) if ((m_lDialogStyle & wxHIDE_READONLY) || (m_lDialogStyle & wxSAVE))
lFlags |= FDS_SAVEAS_DIALOG; lFlags |= FDS_SAVEAS_DIALOG;
if (m_lDialogStyle & wxMULTIPLE ) if (m_lDialogStyle & wxMULTIPLE )
@@ -309,42 +313,27 @@ int wxFileDialog::ShowModal()
if ( wxStrlen(m_sWildCard) == 0 ) if ( wxStrlen(m_sWildCard) == 0 )
sTheFilter = ""; sTheFilter = "";
else else
sTheFilter = m_sWildCard ; sTheFilter = m_sWildCard;
if (!wxStrchr(sTheFilter, wxT('|') ) ) pzFilterBuffer = strtok((char*)sTheFilter.c_str(), "|");
while(pzFilterBuffer != NULL)
{ {
// if (nCount > 0 && !(nCount % 2))
// Only one filter ==> default text sDir += wxT(";");
// if (nCount % 2)
sFilterBuffer.Printf( _("Files (%s)|%s")
,sTheFilter.c_str()
,sTheFilter.c_str()
);
}
else
{ // more then one filter
sFilterBuffer = sTheFilter;
}
sFilterBuffer += wxT("|");
//
// Replace | with \0
//
for (i = 0; i < sFilterBuffer.Len(); i++ )
{
if (sFilterBuffer.GetChar(i) == wxT('|'))
{ {
sFilterBuffer[i] = wxT('\0'); sDir += pzFilterBuffer;
} }
pzFilterBuffer = strtok(NULL, "|");
nCount++;
} }
if (!sTheFilter.IsEmpty()) if (nCount == 0)
sDir += sTheFilter;
else
sDir += m_sFileName; sDir += m_sFileName;
if (sDir.IsEmpty())
sDir = "*.*";
wxStrcpy(vFileDlg.szFullFile, sDir.c_str()); wxStrcpy(vFileDlg.szFullFile, sDir.c_str());
hWnd = ::WinFileDlg( GetHwndOf(m_pParent) hWnd = ::WinFileDlg( HWND_DESKTOP
,GetHwndOf(m_pParent) ,GetHwndOf(m_pParent)
,&vFileDlg ,&vFileDlg
); );
@@ -357,14 +346,15 @@ int wxFileDialog::ShowModal()
{ {
if (i == 0) if (i == 0)
{ {
m_sDir = wxPathOnly(wxString((const char*)vFileDlg.papszFQFilename[i])); m_sDir = wxPathOnly(wxString((const char*)*vFileDlg.papszFQFilename[0]));
m_sPath = (const char*)vFileDlg.papszFQFilename[i]; m_sPath = (const char*)*vFileDlg.papszFQFilename[0];
} }
m_sFileName = wxFileNameFromPath(wxString((const char*)vFileDlg.papszFQFilename[i])); m_sFileName = wxFileNameFromPath(wxString((const char*)*vFileDlg.papszFQFilename[i]));
m_asFileNames.Add(m_sFileName); m_asFileNames.Add(m_sFileName);
} }
::WinFreeFileDlgList(vFileDlg.papszFQFilename);
} }
else if (!m_lDialogStyle & wxSAVE) else if (!(m_lDialogStyle & wxSAVE))
{ {
m_sPath = vFileDlg.szFullFile; m_sPath = vFileDlg.szFullFile;
m_sFileName = wxFileNameFromPath(vFileDlg.szFullFile); m_sFileName = wxFileNameFromPath(vFileDlg.szFullFile);

View File

@@ -12650,6 +12650,8 @@ EXPORTS
__ct__12wxFileDialogFP8wxWindowRC8wxStringN32lRC7wxPoint __ct__12wxFileDialogFP8wxWindowRC8wxStringN32lRC7wxPoint
;wxFileDialog::ShowModal() ;wxFileDialog::ShowModal()
ShowModal__12wxFileDialogFv ShowModal__12wxFileDialogFv
;wxFileDialog::GetPaths(wxArrayString&) const
GetPaths__12wxFileDialogCFR13wxArrayString
__vft12wxFileDialog8wxObject __vft12wxFileDialog8wxObject
;wxFileDialog::sm_classwxFileDialog ;wxFileDialog::sm_classwxFileDialog
sm_classwxFileDialog__12wxFileDialog sm_classwxFileDialog__12wxFileDialog