1 /////////////////////////////////////////////////////////////////////////////
2 // Name: src/osx/cocoa/dirdlg.mm
3 // Purpose: wxDirDialog
4 // Author: Stefan Csomor
7 // RCS-ID: $Id: dirdlg.mm 40007 2006-07-05 13:10:46Z SC $
8 // Copyright: (c) Stefan Csomor
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
12 // ============================================================================
14 // ============================================================================
16 // ----------------------------------------------------------------------------
18 // ----------------------------------------------------------------------------
20 // For compilers that support precompilation, includes "wx.h".
21 #include "wx/wxprec.h"
23 #if wxUSE_DIRDLG && !defined(__WXUNIVERSAL__)
25 #include "wx/dirdlg.h"
28 #include "wx/msgdlg.h"
29 #include "wx/filedlg.h"
33 #include "wx/filename.h"
35 #include "wx/osx/private.h"
37 IMPLEMENT_CLASS(wxDirDialog, wxDialog)
39 wxDirDialog::wxDirDialog(wxWindow *parent, const wxString& message,
40 const wxString& defaultPath, long style, const wxPoint& pos,
41 const wxSize& size, const wxString& name)
45 SetMessage( message );
46 SetWindowStyle(style);
51 int wxDirDialog::ShowModal()
53 int result = wxID_CANCEL;
55 NSOpenPanel *oPanel = [NSOpenPanel openPanel];
56 [oPanel setCanChooseDirectories:YES];
57 [oPanel setResolvesAliases:YES];
58 [oPanel setCanChooseFiles:NO];
60 wxCFStringRef cf( m_message );
61 [oPanel setMessage:cf.AsNSString()];
63 if ( HasFlag(wxDD_NEW_DIR_BUTTON) )
64 [oPanel setCanCreateDirectories:YES];
66 wxCFStringRef dir( m_path );
68 m_path = wxEmptyString;
70 if ( [oPanel runModalForDirectory:dir.AsNSString() file:nil types:nil] == NSOKButton )
72 wxCFStringRef resultpath( [[[oPanel filenames] objectAtIndex:0] retain] );
74 SetPath( resultpath.AsString() );
80 #endif // wxUSE_DIRDLG