X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/62705a278a57b8d3dd67222f20b161584a86982d..b16de7461ac6d97b0b04a5ce4e73447925e93416:/src/mac/corefoundation/utilsexc_cf.cpp diff --git a/src/mac/corefoundation/utilsexc_cf.cpp b/src/mac/corefoundation/utilsexc_cf.cpp index bb6e19d6ed..12f26671c0 100644 --- a/src/mac/corefoundation/utilsexc_cf.cpp +++ b/src/mac/corefoundation/utilsexc_cf.cpp @@ -19,114 +19,6 @@ #include "wx/stdpaths.h" #include "wx/apptrait.h" -#ifdef __WXCOCOA__ -#include -#include -#else -#include "wx/mac/private.h" -#include "LaunchServices.h" -#endif - -#include "wx/uri.h" -#include "wx/mac/corefoundation/cfstring.h" - -long wxMacExecute(wxChar **argv, - int flags, - wxProcess *process) -{ - CFIndex cfiCount = 0; - //get count - for(wxChar** argvcopy = argv; *argvcopy != NULL ; ++argvcopy) - { - ++cfiCount; - } - - if(cfiCount == 0) //no file to launch? - { - wxLogDebug(wxT("wxMacExecute No file to launch!")); - return -1; - } - - CFURLRef cfurlApp = CFURLCreateWithString( - kCFAllocatorDefault, - wxMacCFStringHolder(*argv++, wxLocale::GetSystemEncoding()), - NULL); - wxASSERT(cfurlApp); - - CFBundleRef cfbApp = CFBundleCreate(kCFAllocatorDefault, cfurlApp); - if(!cfbApp) - { - wxLogDebug(wxT("wxMacExecute Bad bundle")); - CFRelease(cfurlApp); - return -1; - } - - - UInt32 dwBundleType, dwBundleCreator; - CFBundleGetPackageInfo(cfbApp, &dwBundleType, &dwBundleCreator); - - //Only call wxMacExecute for .app bundles - others could be actual unix programs - if(dwBundleType != 'APPL') - { - CFRelease(cfurlApp); - return -1; - } - - // - // We have a good bundle - so let's launch it! - // - - CFMutableArrayRef cfaFiles = CFArrayCreateMutable(kCFAllocatorDefault, cfiCount - 1, NULL); - - wxASSERT(cfaFiles); - - if(--cfiCount) - { - for( ; *argv != NULL ; ++argv) - { -// wxLogDebug(*argv); - wxString sCurrentFile; - - if(wxURI(*argv).IsReference()) - sCurrentFile = wxString(wxT("file://")) + *argv; - else - sCurrentFile = *argv; - - CFURLRef cfurlCurrentFile = CFURLCreateWithString( - kCFAllocatorDefault, - wxMacCFStringHolder(sCurrentFile, wxLocale::GetSystemEncoding()), - NULL); - wxASSERT(cfurlCurrentFile); - - CFArrayAppendValue( - cfaFiles, - cfurlCurrentFile - ); - } - } - - LSLaunchURLSpec launchspec; - launchspec.appURL = cfurlApp; - launchspec.itemURLs = cfaFiles; - launchspec.passThruParams = NULL; //AEDesc* - launchspec.launchFlags = kLSLaunchDefaults | kLSLaunchDontSwitch; //TODO: Possibly be smarter with flags - launchspec.asyncRefCon = NULL; - - OSStatus status = LSOpenFromURLSpec(&launchspec, - NULL); //2nd is CFURLRef* really launched - - //cleanup - CFRelease(cfurlApp); - CFRelease(cfaFiles); - - //check for error - if(status != noErr) - { - wxLogDebug(wxString::Format(wxT("wxMacExecute ERROR: %d")), (int)status); - return -1; - } - return 0; //success -} #include