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:
Stefan Csomor
2002-01-13 17:38:55 +00:00
parent 8cdb648efa
commit 4dfbcdd53d
2 changed files with 111 additions and 0 deletions

View File

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

View File

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