From b93f4bb9da97b545447df56f21dfce2590ae01e6 Mon Sep 17 00:00:00 2001 From: David Webster Date: Tue, 20 Aug 2002 05:00:48 +0000 Subject: [PATCH] FileDlg updates. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@16607 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/os2/filedlg.h | 233 +++++++++++++++++++++++++---------------------- src/os2/filedlg.cpp | 64 ++++++------- src/os2/wx23.def | 2 + 3 files changed, 153 insertions(+), 146 deletions(-) rewrite include/wx/os2/filedlg.h (72%) diff --git a/include/wx/os2/filedlg.h b/include/wx/os2/filedlg.h dissimilarity index 72% index d1b1755..39b3516 100644 --- a/include/wx/os2/filedlg.h +++ b/include/wx/os2/filedlg.h @@ -1,109 +1,124 @@ -///////////////////////////////////////////////////////////////////////////// -// Name: filedlg.h -// Purpose: wxFileDialog class -// Author: David Webster -// Modified by: -// Created: 10/05/99 -// RCS-ID: $Id$ -// Copyright: (c) David Webster -// Licence: wxWindows licence -///////////////////////////////////////////////////////////////////////////// - -#ifndef _WX_FILEDLG_H_ -#define _WX_FILEDLG_H_ - -#include "wx/dialog.h" - -/* - * File selector - */ - -WXDLLEXPORT_DATA(extern const char*) wxFileSelectorPromptStr; -WXDLLEXPORT_DATA(extern const char*) wxFileSelectorDefaultWildcardStr; - -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 ; } - - 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; -}; - -#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_ +///////////////////////////////////////////////////////////////////////////// +// Name: filedlg.h +// Purpose: wxFileDialog class +// Author: David Webster +// Modified by: +// Created: 10/05/99 +// RCS-ID: $Id$ +// Copyright: (c) David Webster +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +#ifndef _WX_FILEDLG_H_ +#define _WX_FILEDLG_H_ + +#include "wx/dialog.h" + +/* + * File selector + */ + +WXDLLEXPORT_DATA(extern const char*) wxFileSelectorPromptStr; +WXDLLEXPORT_DATA(extern const char*) wxFileSelectorDefaultWildcardStr; + +class WXDLLEXPORT wxFileDialog: public wxDialog +{ +DECLARE_DYNAMIC_CLASS(wxFileDialog) +public: + 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_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 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_ diff --git a/src/os2/filedlg.cpp b/src/os2/filedlg.cpp index 21c89aa..605d1b2 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 4235f92..f9330be 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 -- 2.7.4