From: David Webster Date: Tue, 20 Aug 2002 05:00:48 +0000 (+0000) Subject: FileDlg updates. X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/b93f4bb9da97b545447df56f21dfce2590ae01e6 FileDlg updates. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@16607 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/os2/filedlg.h b/include/wx/os2/filedlg.h index d1b17552db..39b3516ea5 100644 --- a/include/wx/os2/filedlg.h +++ b/include/wx/os2/filedlg.h @@ -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); - - 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 @@ -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_ diff --git a/src/os2/filedlg.cpp b/src/os2/filedlg.cpp index 21c89aaa91..605d1b2cc4 100644 --- a/src/os2/filedlg.cpp +++ b/src/os2/filedlg.cpp @@ -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); diff --git a/src/os2/wx23.def b/src/os2/wx23.def index 4235f92b8f..f9330bee47 100644 --- a/src/os2/wx23.def +++ b/src/os2/wx23.def @@ -12650,6 +12650,8 @@ EXPORTS __ct__12wxFileDialogFP8wxWindowRC8wxStringN32lRC7wxPoint ;wxFileDialog::ShowModal() ShowModal__12wxFileDialogFv + ;wxFileDialog::GetPaths(wxArrayString&) const + GetPaths__12wxFileDialogCFR13wxArrayString __vft12wxFileDialog8wxObject ;wxFileDialog::sm_classwxFileDialog sm_classwxFileDialog__12wxFileDialog