From aad2997b672b353e8d3cf5152e7ed12e3c25dacf Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Wed, 10 Jul 2013 21:12:07 +0000 Subject: [PATCH] Add default ctors and Create() to wxDirDialog and wxFileDialog in wxOSX. Allow two-step creation of these classes. Closes #15316. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74476 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/osx/dirdlg.h | 18 ++++++++++++++++++ include/wx/osx/filedlg.h | 20 ++++++++++++++++++++ src/osx/carbon/dirdlg.cpp | 6 +++++- src/osx/carbon/filedlg.cpp | 9 +++++++-- src/osx/cocoa/dirdlg.mm | 7 ++++++- src/osx/cocoa/filedlg.mm | 14 ++++++++++---- 6 files changed, 66 insertions(+), 8 deletions(-) diff --git a/include/wx/osx/dirdlg.h b/include/wx/osx/dirdlg.h index a33a20b..9b7660e 100644 --- a/include/wx/osx/dirdlg.h +++ b/include/wx/osx/dirdlg.h @@ -19,12 +19,27 @@ class WXDLLIMPEXP_CORE wxDirDialog : public wxDirDialogBase { public: + wxDirDialog() { Init(); } + wxDirDialog(wxWindow *parent, const wxString& message = wxDirSelectorPromptStr, const wxString& defaultPath = wxT(""), long style = wxDD_DEFAULT_STYLE, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, + const wxString& name = wxDirDialogNameStr) + { + Init(); + + Create(parent,message,defaultPath,style,pos,size,name); + } + + void Create(wxWindow *parent, + const wxString& message = wxDirSelectorPromptStr, + const wxString& defaultPath = wxT(""), + long style = wxDD_DEFAULT_STYLE, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, const wxString& name = wxDirDialogNameStr); #if wxOSX_USE_COCOA @@ -47,6 +62,9 @@ private: WX_NSObject m_sheetDelegate; #endif + // Common part of all ctors. + void Init(); + DECLARE_DYNAMIC_CLASS(wxDirDialog) }; diff --git a/include/wx/osx/filedlg.h b/include/wx/osx/filedlg.h index 2d7e164..7b1e58a 100644 --- a/include/wx/osx/filedlg.h +++ b/include/wx/osx/filedlg.h @@ -31,6 +31,7 @@ protected: wxArrayString m_paths; public: + wxFileDialog() { Init(); } wxFileDialog(wxWindow *parent, const wxString& message = wxFileSelectorPromptStr, const wxString& defaultDir = wxEmptyString, @@ -39,6 +40,21 @@ public: long style = wxFD_DEFAULT_STYLE, const wxPoint& pos = wxDefaultPosition, const wxSize& sz = wxDefaultSize, + const wxString& name = wxFileDialogNameStr) + { + Init(); + + Create(parent,message,defaultDir,defaultFile,wildCard,style,pos,sz,name); + } + + void Create(wxWindow *parent, + const wxString& message = wxFileSelectorPromptStr, + const wxString& defaultDir = wxEmptyString, + const wxString& defaultFile = wxEmptyString, + const wxString& wildCard = wxFileSelectorDefaultWildcardStr, + long style = wxFD_DEFAULT_STYLE, + const wxPoint& pos = wxDefaultPosition, + const wxSize& sz = wxDefaultSize, const wxString& name = wxFileDialogNameStr); #if wxOSX_USE_COCOA @@ -87,6 +103,10 @@ protected: WX_NSObject m_delegate; WX_NSObject m_sheetDelegate; #endif + +private: + // Common part of all ctors. + void Init(); }; #endif // _WX_FILEDLG_H_ diff --git a/src/osx/carbon/dirdlg.cpp b/src/osx/carbon/dirdlg.cpp index 9ff1c07..e006b9d 100644 --- a/src/osx/carbon/dirdlg.cpp +++ b/src/osx/carbon/dirdlg.cpp @@ -55,7 +55,11 @@ static pascal void NavEventProc( } } -wxDirDialog::wxDirDialog(wxWindow *parent, +void wxDirDialog::Init() +{ +} + +void wxDirDialog::Create(wxWindow *parent, const wxString& message, const wxString& defaultPath, long style, diff --git a/src/osx/carbon/filedlg.cpp b/src/osx/carbon/filedlg.cpp index b0a4e7b..6e0b83d 100644 --- a/src/osx/carbon/filedlg.cpp +++ b/src/osx/carbon/filedlg.cpp @@ -456,12 +456,17 @@ static pascal void NavEventProc( } -wxFileDialog::wxFileDialog( +void wxFileDialog::Init() +{ +} + +void wxFileDialog::Create( wxWindow *parent, const wxString& message, const wxString& defaultDir, const wxString& defaultFileName, const wxString& wildCard, long style, const wxPoint& pos, const wxSize& sz, const wxString& name) - : wxFileDialogBase(parent, message, defaultDir, defaultFileName, wildCard, style, pos, sz, name) { + wxFileDialogBase::Create(parent, message, defaultDir, defaultFileName, wildCard, style, pos, sz, name); + wxASSERT_MSG( NavServicesAvailable() , wxT("Navigation Services are not running") ) ; } diff --git a/src/osx/cocoa/dirdlg.mm b/src/osx/cocoa/dirdlg.mm index 02f92f9..f7869a0 100644 --- a/src/osx/cocoa/dirdlg.mm +++ b/src/osx/cocoa/dirdlg.mm @@ -38,7 +38,12 @@ IMPLEMENT_CLASS(wxDirDialog, wxDialog) -wxDirDialog::wxDirDialog(wxWindow *parent, const wxString& message, +void wxDirDialog::Init() +{ + m_sheetDelegate = nil; +} + +void wxDirDialog::Create(wxWindow *parent, const wxString& message, const wxString& defaultPath, long style, const wxPoint& WXUNUSED(pos), const wxSize& WXUNUSED(size), const wxString& WXUNUSED(name)) { diff --git a/src/osx/cocoa/filedlg.mm b/src/osx/cocoa/filedlg.mm index 40d4f46..85ac597 100644 --- a/src/osx/cocoa/filedlg.mm +++ b/src/osx/cocoa/filedlg.mm @@ -187,16 +187,22 @@ bool HasAppKit_10_6() IMPLEMENT_CLASS(wxFileDialog, wxFileDialogBase) -wxFileDialog::wxFileDialog( +void wxFileDialog::Init() +{ + m_filterIndex = -1; + m_delegate = nil; + m_sheetDelegate = nil; +} + +void wxFileDialog::Create( wxWindow *parent, const wxString& message, const wxString& defaultDir, const wxString& defaultFileName, const wxString& wildCard, long style, const wxPoint& pos, const wxSize& sz, const wxString& name) - : wxFileDialogBase(parent, message, defaultDir, defaultFileName, wildCard, style, pos, sz, name) { - m_filterIndex = -1; + wxFileDialogBase::Create(parent, message, defaultDir, defaultFileName, wildCard, style, pos, sz, name); + m_sheetDelegate = [[ModalDialogDelegate alloc] init]; [(ModalDialogDelegate*)m_sheetDelegate setImplementation: this]; - m_delegate = nil; } wxFileDialog::~wxFileDialog() -- 2.7.4