#include "wx/dynarray.h"
#include "wx/string.h"
#include "wx/intl.h"
+ #include "wx/log.h"
#if wxUSE_GUI
#include "wx/icon.h"
#endif
#endif
-#include "wx/log.h"
#include "wx/file.h"
#include "wx/confbase.h"
#include <CoreServices.h>
#endif
-
+#ifndef __LP64__
// START CODE SAMPLE FROM TECHNOTE 1002 (http://developer.apple.com/technotes/tn/tn1002.html)
// IsRemoteVolume can be used to find out if the
return result;
}
-
+#endif // LP64
//
// On the mac there are two ways to open a file - one is through apple events and the
// finder, another is through mime types.
//
// debug helper
-inline void wxLogMimeDebug(const wxChar* szMsg, OSStatus status)
+inline void wxLogMimeDebug(const wxChar* WXUNUSED_UNLESS_DEBUG(szMsg), OSStatus WXUNUSED_UNLESS_DEBUG(status))
{
wxLogDebug(wxString::Format(wxT("%s LINE:%i OSERROR:%i"), szMsg, __LINE__, (int)status));
}
// in case we're compiling in non-GUI mode
-class WXDLLEXPORT wxIcon;
+class WXDLLIMPEXP_FWD_CORE wxIcon;
-bool wxFileTypeImpl::SetCommand(const wxString& cmd, const wxString& verb, bool overwriteprompt)
+bool wxFileTypeImpl::SetCommand(const wxString& WXUNUSED(cmd), const wxString& WXUNUSED(verb), bool WXUNUSED(overwriteprompt))
{
wxASSERT_MSG( m_manager != NULL , wxT("Bad wxFileType") );
return false;
}
-bool wxFileTypeImpl::SetDefaultIcon(const wxString& strIcon, int index)
+bool wxFileTypeImpl::SetDefaultIcon(const wxString& WXUNUSED(strIcon), int WXUNUSED(index))
{
wxASSERT_MSG( m_manager != NULL , wxT("Bad wxFileType") );
// we need to go straight to launch services
//
-#if defined(__DARWIN__)
-
//on darwin, use launch services
+
#include <ApplicationServices/ApplicationServices.h>
wxString wxFileTypeImpl::GetCommand(const wxString& verb) const
return wxEmptyString;
}
-#else //carbon/classic implementation
-
-wxString wxFileTypeImpl::GetCommand(const wxString& verb) const
-{
- wxASSERT_MSG( m_manager != NULL , wxT("Bad wxFileType") );
-
- if (verb == wxT("open"))
- {
- ICMapEntry entry;
- ICGetMapEntry( (ICInstance) m_manager->m_hIC,
- (Handle) m_manager->m_hDatabase,
- m_lIndex, &entry);
-
- //The entry in the mimetype database only contains the app
- //that's registered - it may not exist... we need to remap the creator
- //type and find the right application
-
- // THIS IS REALLY COMPLICATED :\.
- // There are a lot of conversions going on here.
- Str255 outName;
- FSSpec outSpec;
- OSErr err = FindApplication( entry.fileCreator, false, outName, &outSpec );
- if (err != noErr)
- return wxEmptyString;
-
- Handle outPathHandle;
- short outPathSize;
- err = FSpGetFullPath( &outSpec, &outPathSize, &outPathHandle );
- if (err == noErr)
- {
- char* szPath = *outPathHandle;
- wxString sClassicPath(szPath, wxConvLocal, outPathSize);
-
-#if defined(__DARWIN__)
- // Classic Path --> Unix (OSX) Path
- CFURLRef finalURL = CFURLCreateWithFileSystemPath(
- kCFAllocatorDefault,
- wxMacCFStringHolder(sClassicPath, wxLocale::GetSystemEncoding()),
- kCFURLHFSPathStyle,
- false ); //false == not a directory
-
- //clean up memory from the classic path handle
- DisposeHandle( outPathHandle );
-
- if (finalURL)
- {
- CFStringRef cfsUnixPath = CFURLCopyFileSystemPath(finalURL, kCFURLPOSIXPathStyle);
- CFRelease(finalURL);
-
- // PHEW! Success!
- if (cfsUnixPath)
- return wxMacCFStringHolder(cfsUnixPath).AsString(wxLocale::GetSystemEncoding());
- }
-#else //classic HFS path acceptable
- return sClassicPath;
-#endif
- }
- else
- {
- wxLogMimeDebug(wxT("FSpGetFullPath failed."), (OSStatus)err);
- }
- }
-
- return wxEmptyString;
-}
-#endif //!DARWIN
-
bool wxFileTypeImpl::GetDescription(wxString *desc) const
{
wxASSERT_MSG( m_manager != NULL , wxT("Bad wxFileType") );
return ulCount;
}
-void wxMimeTypesManagerImpl::Initialize(int mailcapStyles, const wxString& extraDir)
+void wxMimeTypesManagerImpl::Initialize(int WXUNUSED(mailcapStyles), const wxString& WXUNUSED(extraDir))
{
wxASSERT_MSG(m_hIC == NULL, wxT("Already initialized wxMimeTypesManager!"));
if (status != noErr)
{
wxLogDebug(wxT("Could not initialize wxMimeTypesManager!"));
- wxASSERT( false );
+ wxFAIL;
m_hIC = NULL;
return;
infoRec.processInfoLength = sizeof(ProcessInfoRec);
infoRec.processName = NULL;
+#ifndef __LP64__
infoRec.processAppSpec = NULL;
+#endif
if ( pPSN == NULL )
{
// ----------------------------------------------------------------------------
#define wxCFDATA_RELEASEBUFFER 1
-#define wxCFDATA_RETAINBUFFER 0
class wxCFData
{
wxLogDebug(wxT("No main bundle"));
}
-#if defined(__DARWIN__)
if (!bInfoSuccess)
return NULL;
-#endif
// on mac you have to embed it into the mac's file reference resource ('FREF' I believe)
// or, alternately, you could just add an entry to m_hDatabase, but you'd need to get
if (status == noErr)
{
Str255 psCreatorName;
+#ifndef __LP64__
FSSpec dummySpec;
status = FindApplication(creator, false, psCreatorName, &dummySpec);
+#else
+ FSRef fsref;
+ status = LSFindApplicationForInfo( creator, NULL, NULL, &fsref ,NULL);
+ HFSUniStr255 name;
+ status = FSGetCatalogInfo(&fsref, kFSCatInfoNone, NULL, &name, NULL, NULL);
+ CFStringRef str = FSCreateStringFromHFSUniStr( 0 , &name );
+ CFStringGetPascalString(str, psCreatorName, 256, CFStringGetSystemEncoding());
+ CFRelease( str );
+#endif
if (status == noErr)
{
wxLogDebug(wxT("No main bundle"));
}
-#if defined(__DARWIN__)
if (!bInfoSuccess)
return false;
-#endif
// this should be as easy as removing the entry from the database
// and then saving the database