]>
git.saurik.com Git - wxWidgets.git/blob - src/mac/corefoundation/stdpaths_cf.cpp
1 ///////////////////////////////////////////////////////////////////////////////
2 // Name: mac/corefoundation/stdpaths.cpp
3 // Purpose: wxStandardPaths implementation for CoreFoundation systems
4 // Author: David Elliott
8 // Copyright: (c) 2004 David Elliott <dfe@cox.net>
9 // Licence: wxWindows licence
10 ///////////////////////////////////////////////////////////////////////////////
12 #include "wx/wxprec.h"
15 #endif //ndef WX_PRECOMP
17 #include "wx/stdpaths.h"
18 #include "wx/filename.h"
19 #include "wx/mac/corefoundation/cfstring.h"
21 #if defined(__DARWIN__)
22 #include <CoreFoundation/CFBundle.h>
23 #include <CoreFoundation/CFURL.h>
29 #if defined(__WXCOCOA__) || defined(__WXMAC_OSX__)
30 #define kDefaultPathStyle kCFURLPOSIXPathStyle
32 #define kDefaultPathStyle kCFURLHFSPathStyle
35 static wxString
BundleRelativeURLToPath(CFURLRef relativeURL
)
37 CFURLRef absoluteURL
= CFURLCopyAbsoluteURL(relativeURL
);
38 wxCHECK_MSG(absoluteURL
, wxEmptyString
, wxT("Failed to resolve relative URL to absolute URL"));
39 CFStringRef cfStrPath
= CFURLCopyFileSystemPath(absoluteURL
,kDefaultPathStyle
);
40 CFRelease(absoluteURL
);
41 return wxMacCFStringHolder(cfStrPath
).AsString(wxLocale::GetSystemEncoding());
44 wxStandardPathsCF::wxStandardPathsCF()
45 : m_bundle(CFBundleGetMainBundle())
50 wxStandardPathsCF::wxStandardPathsCF(struct __CFBundle
*bundle
)
56 wxStandardPathsCF::~wxStandardPathsCF()
61 void wxStandardPathsCF::SetBundle(struct __CFBundle
*bundle
)
68 wxString
wxStandardPathsCF::GetConfigDir() const
70 // TODO: What do we do for pure Carbon?
71 return wxT("/Library/Preferences");
74 wxString
wxStandardPathsCF::GetUserConfigDir() const
76 // TODO: What do we do for pure Carbon?
77 return wxFileName::GetHomeDir() + wxT("/Library/Preferences");
80 wxString
wxStandardPathsCF::GetDataDir() const
82 wxCHECK_MSG(m_bundle
, wxEmptyString
, wxT("wxStandardPaths for CoreFoundation only works with bundled apps"));
83 CFURLRef relativeURL
= CFBundleCopySharedSupportURL(m_bundle
);
84 wxCHECK_MSG(relativeURL
, wxEmptyString
, wxT("Couldn't get SharedSupport URL"));
85 wxString
ret(BundleRelativeURLToPath(relativeURL
));
86 CFRelease(relativeURL
);
90 wxString
wxStandardPathsCF::GetLocalDataDir() const
92 return AppendAppName(wxT("/Library/Application Support"));
95 wxString
wxStandardPathsCF::GetUserDataDir() const
97 return AppendAppName(wxFileName::GetHomeDir() + _T("/Library/Application Support"));
100 wxString
wxStandardPathsCF::GetPluginsDir() const
102 wxCHECK_MSG(m_bundle
, wxEmptyString
, wxT("wxStandardPaths for CoreFoundation only works with bundled apps"));
103 CFURLRef relativeURL
= CFBundleCopyBuiltInPlugInsURL(m_bundle
);
104 wxCHECK_MSG(relativeURL
, wxEmptyString
, wxT("Couldn't get BuiltInPlugIns URL"));
105 wxString
ret(BundleRelativeURLToPath(relativeURL
));
106 CFRelease(relativeURL
);