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)
public:
wxFileDialog(wxWindow *parent, const wxString& message = wxFileSelectorPromptStr,
const wxString& defaultDir = "", const wxString& defaultFile = "", const wxString& wildCard = wxFileSelectorDefaultWildcardStr,
long style = 0, const wxPoint& pos = wxDefaultPosition);
wxFileDialog( wxWindow* pParent
,const wxString& rsMessage = wxFileSelectorPromptStr
,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 SetPath(const wxString& path) { m_path = path; }
inline void SetDirectory(const wxString& dir) { m_dir = dir; }
inline void SetFilename(const wxString& name) { m_fileName = name; }
inline void SetWildcard(const wxString& wildCard) { m_wildCard = wildCard; }
inline void SetStyle(long style) { m_dialogStyle = style; }
inline void SetFilterIndex(int filterIndex) { m_filterIndex = filterIndex; }
inline void SetMessage(const wxString& rsMessage) { m_sMessage = rsMessage; }
inline void SetPath(const wxString& rsPath) { m_sPath = rsPath; }
inline void SetDirectory(const wxString& rsDir) { m_sDir = rsDir; }
inline void SetFilename(const wxString& rsName) { m_sFileName = rsName; }
inline void SetWildcard(const wxString& rsWildCard) { m_sWildCard = rsWildCard; }
inline void SetStyle(long lStyle) { m_lDialogStyle = lStyle; }
inline void SetFilterIndex(int nFilterIndex) { m_nFilterIndex = nFilterIndex; }
inline wxString GetMessage() const { return m_message; }
inline wxString GetPath() const { return m_path; }
inline void GetPaths(wxArrayString& a) { a.Empty(); a.Add(m_path); }
inline wxString GetDirectory() const { return m_dir; }
inline wxString GetFilename() const { return m_fileName; }
inline void GetFilenames(wxArrayString& a) { a.Empty();
a.Add( m_fileName); }
inline wxString GetWildcard() const { return m_wildCard; }
inline long GetStyle() const { return m_dialogStyle; }
inline int GetFilterIndex() const { return m_filterIndex ; }
inline wxString GetMessage(void) const { return m_sMessage; }
inline wxString GetPath(void) const { return m_sPath; }
void GetPaths(wxArrayString& rasPath) const;
inline wxString GetDirectory(void) const { return m_sDir; }
inline wxString GetFilename(void) const { return m_sFileName; }
inline void GetFilenames(wxArrayString& rasFilenames) { rasFilenames.Empty(); rasFilenames.Add( m_sFileName); }
inline wxString GetWildcard(void) const { return m_sWildCard; }
inline long GetStyle(void) const { return m_lDialogStyle; }
inline int GetFilterIndex() const { return m_nFilterIndex ; }
int ShowModal();
protected:
wxString m_message;
long m_dialogStyle;
wxWindow * m_parent;
wxString m_dir;
wxString m_path; // Full path
wxString m_fileName;
wxString m_wildCard;
int m_filterIndex;
};
wxString m_sMessage;
long m_lDialogStyle;
wxWindow* m_pParent;
wxString m_sDir;
wxString m_sPath; // Full path
wxString m_sFileName;
wxArrayString m_asFileNames;
wxString m_sWildCard;
int m_nFilterIndex;
wxPoint m_vPos;
}; // end of CLASS wxFileDialog
#define wxOPEN 0x0001
#define wxSAVE 0x0002
@ -67,43 +73,52 @@ protected:
#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
//
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 *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
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 *what
,const char *extension
,const char *default_name = NULL
,wxWindow *parent = NULL
//
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 *what
,const char *extension
,const char *default_name = NULL
,wxWindow *parent = NULL
//
WXDLLEXPORT wxString wxSaveFileSelector( const char* pzWhat
,const char* pzExtension
,const char* pzDefaultName = NULL
,wxWindow* pParent = NULL
);
#endif
// _WX_FILEDLG_H_
// _WX_FILEDLG_H_

View File

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

View File

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