X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3af9f2de592953bec39a58cc871678fa85a3b056..0bbe61b8c18a1795189f0cf73cc61c14a0fb846d:/src/mac/corefoundation/stdpaths_cf.cpp diff --git a/src/mac/corefoundation/stdpaths_cf.cpp b/src/mac/corefoundation/stdpaths_cf.cpp index 62725328e3..5d93769869 100644 --- a/src/mac/corefoundation/stdpaths_cf.cpp +++ b/src/mac/corefoundation/stdpaths_cf.cpp @@ -27,21 +27,15 @@ #include "wx/stdpaths.h" #include "wx/filename.h" +#ifdef __WXMAC__ +#include "wx/mac/private.h" +#endif #include "wx/mac/corefoundation/cfstring.h" -#if defined(__DARWIN__) #include #include -#else -#include -#include -#endif -#if defined(__WXCOCOA__) || defined(__WXMAC_OSX__) #define kDefaultPathStyle kCFURLPOSIXPathStyle -#else -#define kDefaultPathStyle kCFURLHFSPathStyle -#endif // ============================================================================ // implementation @@ -55,12 +49,14 @@ wxStandardPathsCF::wxStandardPathsCF() : m_bundle(CFBundleGetMainBundle()) { CFRetain(m_bundle); + UseAppInfo(AppInfo_AppName | AppInfo_VendorName); } wxStandardPathsCF::wxStandardPathsCF(wxCFBundleRef bundle) : m_bundle(bundle) { CFRetain(m_bundle); + UseAppInfo(AppInfo_AppName | AppInfo_VendorName); } wxStandardPathsCF::~wxStandardPathsCF() @@ -89,7 +85,7 @@ static wxString BundleRelativeURLToPath(CFURLRef relativeURL) wxCHECK_MSG(absoluteURL, wxEmptyString, wxT("Failed to resolve relative URL to absolute URL")); CFStringRef cfStrPath = CFURLCopyFileSystemPath(absoluteURL,kDefaultPathStyle); CFRelease(absoluteURL); - return wxMacCFStringHolder(cfStrPath).AsString(wxLocale::GetSystemEncoding()); + return wxCFStringRef(cfStrPath).AsString(wxLocale::GetSystemEncoding()); } wxString wxStandardPathsCF::GetFromFunc(wxCFURLRef (*func)(wxCFBundleRef)) const @@ -103,20 +99,40 @@ wxString wxStandardPathsCF::GetFromFunc(wxCFURLRef (*func)(wxCFBundleRef)) const return ret; } +wxString wxStandardPathsCF::GetDocumentsDir() const +{ +#ifdef __WXMAC__ + return wxMacFindFolderNoSeparator + ( + kUserDomain, + kDocumentsFolderType, + kCreateFolder + ); +#else + return wxFileName::GetHomeDir() + wxT("/Documents"); +#endif +} + // ---------------------------------------------------------------------------- // wxStandardPathsCF public API // ---------------------------------------------------------------------------- wxString wxStandardPathsCF::GetConfigDir() const { - // TODO: What do we do for pure Carbon? +#ifdef __WXMAC__ + return wxMacFindFolder((short)kLocalDomain, kPreferencesFolderType, kCreateFolder); +#else return wxT("/Library/Preferences"); +#endif } wxString wxStandardPathsCF::GetUserConfigDir() const { - // TODO: What do we do for pure Carbon? +#ifdef __WXMAC__ + return wxMacFindFolder((short)kUserDomain, kPreferencesFolderType, kCreateFolder); +#else return wxFileName::GetHomeDir() + wxT("/Library/Preferences"); +#endif } wxString wxStandardPathsCF::GetDataDir() const @@ -124,14 +140,60 @@ wxString wxStandardPathsCF::GetDataDir() const return GetFromFunc(CFBundleCopySharedSupportURL); } +wxString wxStandardPathsCF::GetExecutablePath() const +{ +#ifdef __WXMAC__ +#if 1 + return GetFromFunc(CFBundleCopyBundleURL); +#else + // TODO remove if cf implementation ok + ProcessInfoRec processinfo; + ProcessSerialNumber procno ; +#ifdef __LP64__ + FSRef fsRef; +#else + FSSpec fsSpec; +#endif + + procno.highLongOfPSN = 0 ; + procno.lowLongOfPSN = kCurrentProcess ; + processinfo.processInfoLength = sizeof(ProcessInfoRec); + processinfo.processName = NULL; +#ifdef __LP64__ + processinfo.processAppRef = &fsRef; +#else + processinfo.processAppSpec = &fsSpec; +#endif + + GetProcessInformation( &procno , &processinfo ) ; +#ifdef __LP64__ + return wxMacFSRefToPath(&fsRef); +#else + return wxMacFSSpec2MacFilename(&fsSpec); +#endif +#endif + +#else + return wxStandardPathsBase::GetExecutablePath(); +#endif +} + wxString wxStandardPathsCF::GetLocalDataDir() const { - return AppendAppName(wxT("/Library/Application Support")); +#ifdef __WXMAC__ + return AppendAppInfo(wxMacFindFolder((short)kLocalDomain, kApplicationSupportFolderType, kCreateFolder)); +#else + return AppendAppInfo(wxT("/Library/Application Support")); +#endif } wxString wxStandardPathsCF::GetUserDataDir() const { - return AppendAppName(wxFileName::GetHomeDir() + _T("/Library/Application Support")); +#ifdef __WXMAC__ + return AppendAppInfo(wxMacFindFolder((short)kUserDomain, kApplicationSupportFolderType, kCreateFolder)); +#else + return AppendAppInfo(wxFileName::GetHomeDir() + _T("/Library/Application Support")); +#endif } wxString wxStandardPathsCF::GetPluginsDir() const @@ -145,7 +207,7 @@ wxString wxStandardPathsCF::GetResourcesDir() const } wxString -wxStandardPathsCF::GetLocalizedResourcesDir(const wxChar *lang, +wxStandardPathsCF::GetLocalizedResourcesDir(const wxString& lang, ResourceCat category) const { return wxStandardPathsBase::