]>
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