{
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);
-
- 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 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 ; }
+ 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& 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(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
#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_
{
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;
*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 )
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
);
{
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);