]>
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"
18 #endif //ndef WX_PRECOMP
20 #include "wx/stdpaths.h"
21 #include "wx/filename.h"
22 #include "wx/mac/corefoundation/cfstring.h"
24 #if defined(__DARWIN__)
25 #include <CoreFoundation/CFBundle.h>
26 #include <CoreFoundation/CFURL.h>
32 #if defined(__WXCOCOA__) || defined(__WXMAC_OSX__)
33 #define kDefaultPathStyle kCFURLPOSIXPathStyle
35 #define kDefaultPathStyle kCFURLHFSPathStyle
38 static wxString
BundleRelativeURLToPath(CFURLRef relativeURL
)
40 CFURLRef absoluteURL
= CFURLCopyAbsoluteURL(relativeURL
);
41 wxCHECK_MSG(absoluteURL
, wxEmptyString
, wxT("Failed to resolve relative URL to absolute URL"));
42 CFStringRef cfStrPath
= CFURLCopyFileSystemPath(absoluteURL
,kDefaultPathStyle
);
43 CFRelease(absoluteURL
);
44 return wxMacCFStringHolder(cfStrPath
).AsString(wxLocale::GetSystemEncoding());
47 wxStandardPathsCF::wxStandardPathsCF()
48 : m_bundle(CFBundleGetMainBundle())
53 wxStandardPathsCF::wxStandardPathsCF(struct __CFBundle
*bundle
)
59 wxStandardPathsCF::~wxStandardPathsCF()
64 void wxStandardPathsCF::SetBundle(struct __CFBundle
*bundle
)
71 wxString
wxStandardPathsCF::GetConfigDir() const
73 // TODO: What do we do for pure Carbon?
74 return wxT("/Library/Preferences");
77 wxString
wxStandardPathsCF::GetUserConfigDir() const
79 // TODO: What do we do for pure Carbon?
80 return wxFileName::GetHomeDir() + wxT("/Library/Preferences");
83 wxString
wxStandardPathsCF::GetDataDir() const
85 wxCHECK_MSG(m_bundle
, wxEmptyString
, wxT("wxStandardPaths for CoreFoundation only works with bundled apps"));
86 CFURLRef relativeURL
= CFBundleCopySharedSupportURL(m_bundle
);
87 wxCHECK_MSG(relativeURL
, wxEmptyString
, wxT("Couldn't get SharedSupport URL"));
88 wxString
ret(BundleRelativeURLToPath(relativeURL
));
89 CFRelease(relativeURL
);
93 wxString
wxStandardPathsCF::GetLocalDataDir() const
95 return AppendAppName(wxT("/Library/Application Support"));
98 wxString
wxStandardPathsCF::GetUserDataDir() const
100 return AppendAppName(wxFileName::GetHomeDir() + _T("/Library/Application Support"));
103 wxString
wxStandardPathsCF::GetPluginsDir() const
105 wxCHECK_MSG(m_bundle
, wxEmptyString
, wxT("wxStandardPaths for CoreFoundation only works with bundled apps"));
106 CFURLRef relativeURL
= CFBundleCopyBuiltInPlugInsURL(m_bundle
);
107 wxCHECK_MSG(relativeURL
, wxEmptyString
, wxT("Couldn't get BuiltInPlugIns URL"));
108 wxString
ret(BundleRelativeURLToPath(relativeURL
));
109 CFRelease(relativeURL
);
113 #endif // wxUSE_STDPATHS