added type and creator routines for mac
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@13548 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -196,6 +196,16 @@ public:
|
||||
return dtMod;
|
||||
}
|
||||
|
||||
#ifdef __WXMAC__
|
||||
bool MacSetTypeAndCreator( wxUint32 type , wxUint32 creator ) ;
|
||||
bool MacGetTypeAndCreator( wxUint32 *type , wxUint32 *creator ) ;
|
||||
// gets the 'common' type and creator for a certain extension
|
||||
static bool MacFindDefaultTypeAndCreator( const wxString& ext , wxUint32 *type , wxUint32 *creator ) ;
|
||||
// registers application defined extensions and their default type and creator
|
||||
static void MacRegisterDefaultTypeAndCreator( const wxString& ext , wxUint32 type , wxUint32 creator ) ;
|
||||
// looks up the appropriate type and creator from the registration and then sets
|
||||
bool MacSetDefaultTypeAndCreator() ;
|
||||
#endif
|
||||
// various file/dir operations
|
||||
|
||||
// retrieve the value of the current working directory
|
||||
|
@@ -1672,3 +1672,104 @@ bool wxFileName::GetTimes(wxDateTime *dtAccess,
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
#ifdef __WXMAC__
|
||||
|
||||
const short kMacExtensionMaxLength = 16 ;
|
||||
typedef struct
|
||||
{
|
||||
char m_ext[kMacExtensionMaxLength] ;
|
||||
OSType m_type ;
|
||||
OSType m_creator ;
|
||||
} MacDefaultExtensionRecord ;
|
||||
|
||||
#include "wx/dynarray.h"
|
||||
WX_DECLARE_OBJARRAY(MacDefaultExtensionRecord, MacDefaultExtensionArray) ;
|
||||
#include "wx/arrimpl.cpp"
|
||||
WX_DEFINE_OBJARRAY(MacDefaultExtensionArray) ;
|
||||
|
||||
MacDefaultExtensionArray gMacDefaultExtensions ;
|
||||
bool gMacDefaultExtensionsInited = false ;
|
||||
|
||||
static void MacEnsureDefaultExtensionsLoaded()
|
||||
{
|
||||
if ( !gMacDefaultExtensionsInited )
|
||||
{
|
||||
// load the default extensions
|
||||
MacDefaultExtensionRecord defaults[] =
|
||||
{
|
||||
{ "txt" , 'TEXT' , 'ttxt' } ,
|
||||
|
||||
} ;
|
||||
// we could load the pc exchange prefs here too
|
||||
|
||||
for ( int i = 0 ; i < WXSIZEOF( defaults ) ; ++i )
|
||||
{
|
||||
gMacDefaultExtensions.Add( defaults[i] ) ;
|
||||
}
|
||||
gMacDefaultExtensionsInited = true ;
|
||||
}
|
||||
}
|
||||
bool wxFileName::MacSetTypeAndCreator( wxUint32 type , wxUint32 creator )
|
||||
{
|
||||
FInfo fndrInfo ;
|
||||
FSSpec spec ;
|
||||
wxMacFilename2FSSpec(GetFullPath(),&spec) ;
|
||||
OSErr err = FSpGetFInfo( &spec , &fndrInfo ) ;
|
||||
wxCHECK( err == noErr , false ) ;
|
||||
|
||||
fndrInfo.fdType = type ;
|
||||
fndrInfo.fdCreator = creator ;
|
||||
FSpSetFInfo( &spec , &fndrInfo ) ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
bool wxFileName::MacGetTypeAndCreator( wxUint32 *type , wxUint32 *creator )
|
||||
{
|
||||
FInfo fndrInfo ;
|
||||
FSSpec spec ;
|
||||
wxMacFilename2FSSpec(GetFullPath(),&spec) ;
|
||||
OSErr err = FSpGetFInfo( &spec , &fndrInfo ) ;
|
||||
wxCHECK( err == noErr , false ) ;
|
||||
|
||||
*type = fndrInfo.fdType ;
|
||||
*creator = fndrInfo.fdCreator ;
|
||||
return true ;
|
||||
}
|
||||
|
||||
bool wxFileName::MacSetDefaultTypeAndCreator()
|
||||
{
|
||||
wxUint32 type , creator ;
|
||||
if ( wxFileName::MacFindDefaultTypeAndCreator(GetExt() , &type ,
|
||||
&creator ) )
|
||||
{
|
||||
MacSetTypeAndCreator( type , creator ) ;
|
||||
}
|
||||
}
|
||||
|
||||
bool wxFileName::MacFindDefaultTypeAndCreator( const wxString& ext , wxUint32 *type , wxUint32 *creator )
|
||||
{
|
||||
MacEnsureDefaultExtensionsLoaded() ;
|
||||
wxString extl = ext.Lower() ;
|
||||
for( int i = gMacDefaultExtensions.Count() - 1 ; i >= 0 ; --i )
|
||||
{
|
||||
if ( gMacDefaultExtensions.Item(i).m_ext == extl )
|
||||
{
|
||||
*type = gMacDefaultExtensions.Item(i).m_type ;
|
||||
*creator = gMacDefaultExtensions.Item(i).m_creator ;
|
||||
return true ;
|
||||
}
|
||||
}
|
||||
return false ;
|
||||
}
|
||||
|
||||
void wxFileName::MacRegisterDefaultTypeAndCreator( const wxString& ext , wxUint32 type , wxUint32 creator )
|
||||
{
|
||||
MacEnsureDefaultExtensionsLoaded() ;
|
||||
MacDefaultExtensionRecord rec ;
|
||||
rec.m_type = type ;
|
||||
rec.m_creator = creator ;
|
||||
strncpy( rec.m_ext , ext.Lower().c_str() , kMacExtensionMaxLength ) ;
|
||||
gMacDefaultExtensions.Add( rec ) ;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
Reference in New Issue
Block a user