#endif
#ifdef __WXMAC__
+# ifdef __DARWIN__
+# include "MoreFilesX.h"
+# else
# include "MoreFiles.h"
# include "MoreFilesExtras.h"
# include "FullPath.h"
# include "FSpCompat.h"
+# endif
#endif
// ----------------------------------------------------------------------------
#endif // __WXPM__
#if defined(__WXMAC__)
-# include "MoreFilesExtras.h"
+# ifdef __DARWIN__
+# include "MoreFilesX.h"
+# else
+# include "MoreFilesExtras.h"
+# endif
#endif
#ifdef __BORLANDC__
bool success = TRUE;
// Check if this is a root directory and if so,
- // whether the drive is avaiable.
+ // whether the drive is available.
if (dirName.Len() == 3 && dirName[(size_t)1] == wxT(':'))
{
wxString dirNameLower(dirName.Lower());
#endif // __WIN32__/!__WIN32__
#elif defined(__WXMAC__)
+# ifdef __DARWIN__
+ FSRef **theVolRefs;
+ ItemCount theVolCount;
+ char thePath[FILENAME_MAX];
+
+ if (FSGetMountedVolumes(&theVolRefs, &theVolCount) == noErr) {
+ ItemCount index;
+ ::HLock( (Handle)theVolRefs ) ;
+ for (index = 0; index < theVolCount; ++index) {
+ // get the POSIX path associated with the FSRef
+ if ( FSRefMakePath(&((*theVolRefs)[index]),
+ (UInt8 *)thePath, sizeof(thePath)) != noErr ) {
+ continue;
+ }
+ // add path separator at end if necessary
+ wxString path( thePath ) ;
+ if (path.Last() != wxFILE_SEP_PATH) {
+ path += wxFILE_SEP_PATH;
+ }
+ // get Mac volume name for display
+ FSVolumeRefNum vRefNum ;
+ HFSUniStr255 volumeName ;
+
+ if ( FSGetVRefNum(&((*theVolRefs)[index]), &vRefNum) != noErr ) {
+ continue;
+ }
+ if ( FSGetVInfo(vRefNum, &volumeName, NULL, NULL) != noErr ) {
+ continue;
+ }
+ // get C string from Unicode HFS name
+ // see: http://developer.apple.com/carbon/tipsandtricks.html
+ CFStringRef cfstr = CFStringCreateWithCharacters( kCFAllocatorDefault,
+ volumeName.unicode,
+ volumeName.length );
+ // Do something with str
+ char *cstr = NewPtr(CFStringGetLength(cfstr) + 1);
+ if (( cstr == NULL ) ||
+ !CFStringGetCString(cfstr, cstr, CFStringGetLength(cfstr) + 1,
+ kCFStringEncodingMacRoman)) {
+ CFRelease( cstr );
+ continue;
+ }
+ wxString name( cstr ) ;
+ DisposePtr( cstr ) ;
+ CFRelease( cfstr );
+
+ GetVolParmsInfoBuffer volParmsInfo;
+ UInt32 actualSize;
+ if ( FSGetVolParms(vRefNum, sizeof(volParmsInfo), &volParmsInfo, &actualSize) != noErr ) {
+ continue;
+ }
+
+ if ( VolIsEjectable(&volParmsInfo) ) {
+ AddSection(path, name, 5/*cd-rom*/);
+ }
+ else {
+ AddSection(path, name, 4/*disk*/);
+ }
+ }
+ ::HUnlock( (Handle)theVolRefs ) ;
+ ::DisposeHandle( (Handle)theVolRefs ) ;
+ }
+# else
FSSpec volume ;
short index = 1 ;
while(1) {
short actualCount = 0 ;
- if ( OnLine( &volume , 1 , &actualCount , &index ) != noErr || actualCount == 0 )
+ if ( OnLine( &volume , 1 , &actualCount , &index ) != noErr || actualCount == 0 ) {
break ;
-
+ }
+
wxString name = wxMacFSSpec2MacFilename( &volume ) ;
- AddSection(name + wxFILE_SEP_PATH, name, 0);
+ AddSection(name + wxFILE_SEP_PATH, name, 4/*disk*/);
}
+# endif /* __DARWIN__ */
#elif defined(__UNIX__)
AddSection(wxT("/"), wxT("/"), 3/*computer icon*/);
#else
#include "wx/mac/private.h"
-#include "MoreFiles.h"
-#include "MoreFilesExtras.h"
+#ifdef __DARWIN__
+# include "MoreFilesX.h"
+#else
+# include "MoreFiles.h"
+# include "MoreFilesExtras.h"
+#endif
// ----------------------------------------------------------------------------
// constants
wxDirData::wxDirData(const wxString& dirname)
: m_dirname(dirname)
{
+ OSErr err;
+
// throw away the trailing slashes
size_t n = m_dirname.length();
wxCHECK_RET( n, _T("empty dir name in wxDir") );
;
m_dirname.Truncate(n + 1);
+
+#ifdef __DARWIN__
+ FSRef theRef;
+
+ // get the FSRef associated with the POSIX path
+ err = FSPathMakeRef((const UInt8 *) m_dirname, &theRef, NULL);
+ FSGetVRefNum(&theRef, &(m_CPB.hFileInfo.ioVRefNum));
+
+ err = FSGetNodeID( &theRef , &m_dirId , &m_isDir ) ;
+#else
+ FSSpec fsspec ;
- FSSpec fsspec ;
+ wxMacFilename2FSSpec( m_dirname , &fsspec ) ;
+ m_CPB.hFileInfo.ioVRefNum = fsspec.vRefNum ;
- wxMacFilename2FSSpec( m_dirname , &fsspec ) ;
- m_CPB.hFileInfo.ioVRefNum = fsspec.vRefNum ;
- m_CPB.hFileInfo.ioNamePtr = m_name ;
- m_index = 0 ;
+ err = FSpGetDirectoryID( &fsspec , &m_dirId , &m_isDir ) ;
+#endif
+ wxASSERT_MSG( (err == noErr) || (err == nsvErr) , "Error accessing directory " + m_dirname) ;
- OSErr err = FSpGetDirectoryID( &fsspec , &m_dirId , &m_isDir ) ;
- wxASSERT_MSG( err == noErr , "Error accessing directory") ;
+ m_CPB.hFileInfo.ioNamePtr = m_name ;
+ m_index = 0 ;
}
wxDirData::~wxDirData()
#endif
wxString result;
- short err = noErr ;
+ short err = noErr ;
- while ( err == noErr )
- {
- m_index++ ;
- m_CPB.dirInfo.ioFDirIndex = m_index;
- m_CPB.dirInfo.ioDrDirID = m_dirId; /* we need to do this every time */
- err = PBGetCatInfoSync((CInfoPBPtr)&m_CPB);
- if ( err != noErr )
- break ;
-
+ while ( err == noErr )
+ {
+ m_index++ ;
+ m_CPB.dirInfo.ioFDirIndex = m_index;
+ m_CPB.dirInfo.ioDrDirID = m_dirId; /* we need to do this every time */
+ err = PBGetCatInfoSync((CInfoPBPtr)&m_CPB);
+ if ( err != noErr )
+ break ;
+
#if TARGET_CARBON
- p2cstrcpy( c_name, m_name ) ;
- strcpy( (char *)m_name, c_name);
+ p2cstrcpy( c_name, m_name ) ;
+ strcpy( (char *)m_name, c_name);
#else
- p2cstr( m_name ) ;
+ p2cstr( m_name ) ;
+#endif
+ // its hidden but we don't want it
+ if ( ( m_CPB.hFileInfo.ioFlFndrInfo.fdFlags & kIsInvisible ) && !(m_flags & wxDIR_HIDDEN) )
+ continue ;
+#ifdef __DARWIN__
+ // under X, names that start with '.' are hidden
+ if ( ( m_name[0] == '.' ) && !(m_flags & wxDIR_HIDDEN) )
+ continue;
#endif
#if TARGET_CARBON
- // under X thats the way the mounting points look like
- if ( ( m_CPB.dirInfo.ioDrDirID == 0 ) && ( m_flags & wxDIR_DIRS) )
- break ;
+ // under X thats the way the mounting points look like
+ if ( ( m_CPB.dirInfo.ioDrDirID == 0 ) && ( m_flags & wxDIR_DIRS) )
+ break ;
#endif
- if ( ( m_CPB.dirInfo.ioFlAttrib & ioDirMask) != 0 && (m_flags & wxDIR_DIRS) ) // we have a directory
- break ;
-
- if ( ( m_CPB.dirInfo.ioFlAttrib & ioDirMask) == 0 && !(m_flags & wxDIR_FILES ) ) // its a file but we don't want it
- continue ;
-
- if ( ( m_CPB.hFileInfo.ioFlFndrInfo.fdFlags & kIsInvisible ) && !(m_flags & wxDIR_HIDDEN) ) // its hidden but we don't want it
- continue ;
-
- wxString file( m_name ) ;
- if ( m_filespec.IsEmpty() || m_filespec == "*.*" || m_filespec == "*" )
- {
- }
- else if ( m_filespec.Length() > 1 && m_filespec.Left(1) =="*" )
- {
- if ( file.Right( m_filespec.Length() - 1 ).Upper() != m_filespec.Mid(1).Upper() )
- {
- continue ;
- }
- }
- else if ( m_filespec.Length() > 1 && m_filespec.Right(1) == "*" )
- {
- if ( file.Left( m_filespec.Length() - 1 ).Upper() != m_filespec.Left( m_filespec.Length() - 1 ).Upper() )
- {
- continue ;
- }
- }
- else if ( file.Upper() != m_filespec.Upper() )
- {
- continue ;
- }
-
- break ;
- }
- if ( err != noErr )
- {
- return FALSE ;
- }
-
- *filename = (char*) m_name ;
+ // we have a directory
+ if ( ( m_CPB.dirInfo.ioFlAttrib & ioDirMask) != 0 && (m_flags & wxDIR_DIRS) )
+ break ;
+
+ // its a file but we don't want it
+ if ( ( m_CPB.dirInfo.ioFlAttrib & ioDirMask) == 0 && !(m_flags & wxDIR_FILES ) )
+ continue ;
+
+ wxString file( m_name ) ;
+ if ( m_filespec.IsEmpty() || m_filespec == "*.*" || m_filespec == "*" )
+ {
+ }
+ else if ( m_filespec.Length() > 1 && m_filespec.Left(1) =="*" )
+ {
+ if ( file.Right( m_filespec.Length() - 1 ).Upper() != m_filespec.Mid(1).Upper() )
+ {
+ continue ;
+ }
+ }
+ else if ( m_filespec.Length() > 1 && m_filespec.Right(1) == "*" )
+ {
+ if ( file.Left( m_filespec.Length() - 1 ).Upper() != m_filespec.Left( m_filespec.Length() - 1 ).Upper() )
+ {
+ continue ;
+ }
+ }
+ else if ( file.Upper() != m_filespec.Upper() )
+ {
+ continue ;
+ }
+
+ break ;
+ }
+ if ( err != noErr )
+ {
+ return FALSE ;
+ }
+
+ *filename = (char*) m_name ;
return TRUE;
}
#include <Navigation.h>
-#include "MoreFiles.h"
-#include "MoreFilesExtras.h"
-
+#ifdef __DARWIN__
+# include "MoreFilesX.h"
+#else
+# include "MoreFiles.h"
+# include "MoreFilesExtras.h"
+#endif
+
extern bool gUseNavServices ;
// the data we need to pass to our standard file hook routine
NavFilterModes filterMode
)
{
- bool display = true;
- OpenUserDataRecPtr data = (OpenUserDataRecPtr) callBackUD ;
-
- if (filterMode == kNavFilteringBrowserList)
- {
- NavFileOrFolderInfo* theInfo = (NavFileOrFolderInfo*) info ;
- if (theItem->descriptorType == typeFSS && !theInfo->isFolder)
- {
- FSSpec spec;
- memcpy( &spec , *theItem->dataHandle , sizeof(FSSpec) ) ;
- display = CheckFile( spec.name , theInfo->fileAndFolder.fileInfo.finderInfo.fdType , data ) ;
- }
- }
-
- return display;
+ bool display = true;
+ OpenUserDataRecPtr data = (OpenUserDataRecPtr) callBackUD ;
+
+ if (filterMode == kNavFilteringBrowserList)
+ {
+ NavFileOrFolderInfo* theInfo = (NavFileOrFolderInfo*) info ;
+ if (theItem->descriptorType == typeFSS && !theInfo->isFolder)
+ {
+ FSSpec spec;
+ memcpy( &spec , *theItem->dataHandle , sizeof(FSSpec) ) ;
+ display = CheckFile( spec.name , theInfo->fileAndFolder.fileInfo.finderInfo.fdType , data ) ;
+ }
+ }
+
+ return display;
}
int wxFileDialog::ShowModal()
{
- NavDialogOptions mNavOptions;
- NavObjectFilterUPP mNavFilterUPP = NULL;
- NavPreviewUPP mNavPreviewUPP = NULL ;
- NavReplyRecord mNavReply;
- AEDesc mDefaultLocation ;
- bool mSelectDefault = false ;
+ NavDialogOptions mNavOptions;
+ NavObjectFilterUPP mNavFilterUPP = NULL;
+ NavPreviewUPP mNavPreviewUPP = NULL ;
+ NavReplyRecord mNavReply;
+ AEDesc mDefaultLocation ;
+ bool mSelectDefault = false ;
- ::NavGetDefaultDialogOptions(&mNavOptions);
+ ::NavGetDefaultDialogOptions(&mNavOptions);
- mNavFilterUPP = nil;
- mNavPreviewUPP = nil;
- mSelectDefault = false;
- mNavReply.validRecord = false;
- mNavReply.replacing = false;
- mNavReply.isStationery = false;
- mNavReply.translationNeeded = false;
- mNavReply.selection.descriptorType = typeNull;
- mNavReply.selection.dataHandle = nil;
- mNavReply.keyScript = smSystemScript;
- mNavReply.fileTranslation = nil;
+ mNavFilterUPP = nil;
+ mNavPreviewUPP = nil;
+ mSelectDefault = false;
+ mNavReply.validRecord = false;
+ mNavReply.replacing = false;
+ mNavReply.isStationery = false;
+ mNavReply.translationNeeded = false;
+ mNavReply.selection.descriptorType = typeNull;
+ mNavReply.selection.dataHandle = nil;
+ mNavReply.keyScript = smSystemScript;
+ mNavReply.fileTranslation = nil;
- // Set default location, the location
- // that's displayed when the dialog
- // first appears
+ // Set default location, the location
+ // that's displayed when the dialog
+ // first appears
- FSSpec location ;
- wxMacFilename2FSSpec( m_dir , &location ) ;
- OSErr err = noErr ;
+ FSSpec location ;
+ wxMacFilename2FSSpec( m_dir , &location ) ;
+ OSErr err = noErr ;
- mDefaultLocation.descriptorType = typeNull;
- mDefaultLocation.dataHandle = nil;
+ mDefaultLocation.descriptorType = typeNull;
+ mDefaultLocation.dataHandle = nil;
- err = ::AECreateDesc(typeFSS, &location, sizeof(FSSpec), &mDefaultLocation );
+ err = ::AECreateDesc(typeFSS, &location, sizeof(FSSpec), &mDefaultLocation );
- if ( mDefaultLocation.dataHandle ) {
+ if ( mDefaultLocation.dataHandle ) {
- if (mSelectDefault) {
- mNavOptions.dialogOptionFlags |= kNavSelectDefaultLocation;
- } else {
- mNavOptions.dialogOptionFlags &= ~kNavSelectDefaultLocation;
- }
- }
+ if (mSelectDefault) {
+ mNavOptions.dialogOptionFlags |= kNavSelectDefaultLocation;
+ } else {
+ mNavOptions.dialogOptionFlags &= ~kNavSelectDefaultLocation;
+ }
+ }
#if TARGET_CARBON
- c2pstrcpy((StringPtr)mNavOptions.message, m_message) ;
+ c2pstrcpy((StringPtr)mNavOptions.message, m_message) ;
#else
- strcpy((char *)mNavOptions.message, m_message) ;
- c2pstr((char *)mNavOptions.message ) ;
+ strcpy((char *)mNavOptions.message, m_message) ;
+ c2pstr((char *)mNavOptions.message ) ;
#endif
#if TARGET_CARBON
- c2pstrcpy((StringPtr)mNavOptions.savedFileName, m_fileName) ;
+ c2pstrcpy((StringPtr)mNavOptions.savedFileName, m_fileName) ;
#else
- strcpy((char *)mNavOptions.savedFileName, m_fileName) ;
- c2pstr((char *)mNavOptions.savedFileName ) ;
+ strcpy((char *)mNavOptions.savedFileName, m_fileName) ;
+ c2pstr((char *)mNavOptions.savedFileName ) ;
#endif
- OpenUserDataRec myData;
- MakeUserDataRec( &myData , m_wildCard ) ;
- myData.currentfilter = m_filterIndex ;
- if ( myData.extensions.GetCount() > 0 )
- {
- mNavOptions.popupExtension = (NavMenuItemSpecArrayHandle) NewHandle( sizeof( NavMenuItemSpec ) * myData.extensions.GetCount() ) ;
- myData.menuitems = mNavOptions.popupExtension ;
- for ( size_t i = 0 ; i < myData.extensions.GetCount() ; ++i )
- {
- (*mNavOptions.popupExtension)[i].version = kNavMenuItemSpecVersion ;
- (*mNavOptions.popupExtension)[i].menuCreator = 'WXNG' ;
- (*mNavOptions.popupExtension)[i].menuType = i ;
- #if TARGET_CARBON
- c2pstrcpy((StringPtr)(*mNavOptions.popupExtension)[i].menuItemName, myData.name[i]) ;
- #else
- strcpy((char *)(*mNavOptions.popupExtension)[i].menuItemName, myData.name[i]) ;
- c2pstr((char *)(*mNavOptions.popupExtension)[i].menuItemName ) ;
- #endif
- }
- }
- if ( m_dialogStyle & wxSAVE )
- {
- myData.saveMode = true ;
+ OpenUserDataRec myData;
+ MakeUserDataRec( &myData , m_wildCard ) ;
+ myData.currentfilter = m_filterIndex ;
+ if ( myData.extensions.GetCount() > 0 )
+ {
+ mNavOptions.popupExtension = (NavMenuItemSpecArrayHandle) NewHandle( sizeof( NavMenuItemSpec ) * myData.extensions.GetCount() ) ;
+ myData.menuitems = mNavOptions.popupExtension ;
+ for ( size_t i = 0 ; i < myData.extensions.GetCount() ; ++i )
+ {
+ (*mNavOptions.popupExtension)[i].version = kNavMenuItemSpecVersion ;
+ (*mNavOptions.popupExtension)[i].menuCreator = 'WXNG' ;
+ (*mNavOptions.popupExtension)[i].menuType = i ;
+#if TARGET_CARBON
+ c2pstrcpy((StringPtr)(*mNavOptions.popupExtension)[i].menuItemName, myData.name[i]) ;
+#else
+ strcpy((char *)(*mNavOptions.popupExtension)[i].menuItemName, myData.name[i]) ;
+ c2pstr((char *)(*mNavOptions.popupExtension)[i].menuItemName ) ;
+#endif
+ }
+ }
+ if ( m_dialogStyle & wxSAVE )
+ {
+ myData.saveMode = true ;
- mNavOptions.dialogOptionFlags |= kNavDontAutoTranslate ;
- mNavOptions.dialogOptionFlags |= kNavDontAddTranslateItems ;
+ mNavOptions.dialogOptionFlags |= kNavDontAutoTranslate ;
+ mNavOptions.dialogOptionFlags |= kNavDontAddTranslateItems ;
- err = ::NavPutFile(
- &mDefaultLocation,
- &mNavReply,
- &mNavOptions,
- sStandardNavEventFilter ,
- NULL,
- kNavGenericSignature,
- &myData); // User Data
- m_filterIndex = myData.currentfilter ;
- }
- else
- {
- myData.saveMode = false ;
+ err = ::NavPutFile(
+ &mDefaultLocation,
+ &mNavReply,
+ &mNavOptions,
+ sStandardNavEventFilter ,
+ NULL,
+ kNavGenericSignature,
+ &myData); // User Data
+ m_filterIndex = myData.currentfilter ;
+ }
+ else
+ {
+ myData.saveMode = false ;
- mNavFilterUPP = NewNavObjectFilterUPP( CrossPlatformFilterCallback ) ;
- if ( m_dialogStyle & wxMULTIPLE )
- mNavOptions.dialogOptionFlags |= kNavAllowMultipleFiles ;
- else
- mNavOptions.dialogOptionFlags &= ~kNavAllowMultipleFiles ;
+ mNavFilterUPP = NewNavObjectFilterUPP( CrossPlatformFilterCallback ) ;
+ if ( m_dialogStyle & wxMULTIPLE )
+ mNavOptions.dialogOptionFlags |= kNavAllowMultipleFiles ;
+ else
+ mNavOptions.dialogOptionFlags &= ~kNavAllowMultipleFiles ;
- err = ::NavGetFile(
- &mDefaultLocation,
- &mNavReply,
- &mNavOptions,
- sStandardNavEventFilter ,
- mNavPreviewUPP,
- mNavFilterUPP,
- NULL ,
- &myData);
- m_filterIndex = myData.currentfilter ;
- }
+ err = ::NavGetFile(
+ &mDefaultLocation,
+ &mNavReply,
+ &mNavOptions,
+ sStandardNavEventFilter ,
+ mNavPreviewUPP,
+ mNavFilterUPP,
+ NULL ,
+ &myData);
+ m_filterIndex = myData.currentfilter ;
+ }
- DisposeNavObjectFilterUPP(mNavFilterUPP);
- if ( mDefaultLocation.dataHandle != nil )
- {
- ::AEDisposeDesc(&mDefaultLocation);
- }
+ DisposeNavObjectFilterUPP(mNavFilterUPP);
+ if ( mDefaultLocation.dataHandle != nil )
+ {
+ ::AEDisposeDesc(&mDefaultLocation);
+ }
- if ( (err != noErr) && (err != userCanceledErr) ) {
- m_path = "" ;
- return wxID_CANCEL ;
- }
+ if ( (err != noErr) && (err != userCanceledErr) ) {
+ m_path = "" ;
+ return wxID_CANCEL ;
+ }
- if (mNavReply.validRecord) {
+ if (mNavReply.validRecord) {
- FSSpec outFileSpec ;
- AEDesc specDesc ;
- AEKeyword keyWord ;
+ FSSpec outFileSpec ;
+ AEDesc specDesc ;
+ AEKeyword keyWord ;
- long count ;
- ::AECountItems( &mNavReply.selection , &count ) ;
- for ( long i = 1 ; i <= count ; ++i )
- {
- OSErr err = ::AEGetNthDesc( &mNavReply.selection , i , typeFSS, &keyWord , &specDesc);
- if ( err != noErr ) {
- m_path = "" ;
- return wxID_CANCEL ;
- }
- outFileSpec = **(FSSpec**) specDesc.dataHandle;
- if (specDesc.dataHandle != nil) {
- ::AEDisposeDesc(&specDesc);
- }
- m_path = wxMacFSSpec2MacFilename( &outFileSpec ) ;
- m_paths.Add( m_path ) ;
- m_fileName = wxFileNameFromPath(m_path);
- m_fileNames.Add(m_fileName);
- }
- // set these to the first hit
- m_path = m_paths[ 0 ] ;
+ long count ;
+ ::AECountItems( &mNavReply.selection , &count ) ;
+ for ( long i = 1 ; i <= count ; ++i )
+ {
+ OSErr err = ::AEGetNthDesc( &mNavReply.selection , i , typeFSS, &keyWord , &specDesc);
+ if ( err != noErr ) {
+ m_path = "" ;
+ return wxID_CANCEL ;
+ }
+ outFileSpec = **(FSSpec**) specDesc.dataHandle;
+ if (specDesc.dataHandle != nil) {
+ ::AEDisposeDesc(&specDesc);
+ }
+ m_path = wxMacFSSpec2MacFilename( &outFileSpec ) ;
+ m_paths.Add( m_path ) ;
m_fileName = wxFileNameFromPath(m_path);
- m_dir = wxPathOnly(m_path);
- NavDisposeReply( &mNavReply ) ;
- return wxID_OK ;
- }
- return wxID_CANCEL;
+ m_fileNames.Add(m_fileName);
+ }
+ // set these to the first hit
+ m_path = m_paths[ 0 ] ;
+ m_fileName = wxFileNameFromPath(m_path);
+ m_dir = wxPathOnly(m_path);
+ NavDisposeReply( &mNavReply ) ;
+ return wxID_OK ;
+ }
+ return wxID_CANCEL;
}
// Generic file load/save dialog
static wxString
wxDefaultFileSelector(bool load, const char *what, const char *extension, const char *default_name, wxWindow *parent)
{
- char *ext = (char *)extension;
-
- char prompt[50];
- wxString str;
- if (load)
- str = "Load %s file";
- else
- str = "Save %s file";
- sprintf(prompt, wxGetTranslation(str), what);
-
- if (*ext == '.') ext++;
- char wild[60];
- sprintf(wild, "*.%s", ext);
-
- return wxFileSelector (prompt, NULL, default_name, ext, wild, 0, parent);
+ char *ext = (char *)extension;
+
+ char prompt[50];
+ wxString str;
+ if (load)
+ str = "Load %s file";
+ else
+ str = "Save %s file";
+ sprintf(prompt, wxGetTranslation(str), what);
+
+ if (*ext == '.') ext++;
+ char wild[60];
+ sprintf(wild, "*.%s", ext);
+
+ return wxFileSelector (prompt, NULL, default_name, ext, wild, 0, parent);
}
// Generic file load dialog
#include <string.h>
#include <stdarg.h>
-#include "MoreFiles.h"
-#include "MoreFilesExtras.h"
+#ifdef __DARWIN__
+# include "MoreFilesX.h"
+#else
+# include "MoreFiles.h"
+# include "MoreFilesExtras.h"
+#endif
#ifndef __DARWIN__
#include <Threads.h>
OSType folderType,
Boolean createFolder)
{
- short vRefNum ;
- long dirID ;
- wxString strDir ;
-
- if ( FindFolder( vol, folderType, createFolder, &vRefNum, &dirID) == noErr)
- {
- FSSpec file ;
- if ( FSMakeFSSpec( vRefNum , dirID , "\p" , &file ) == noErr )
- {
- strDir = wxMacFSSpec2MacFilename( &file ) + wxFILE_SEP_PATH ;
- }
- }
- return strDir ;
+ short vRefNum ;
+ long dirID ;
+ wxString strDir ;
+
+ if ( FindFolder( vol, folderType, createFolder, &vRefNum, &dirID) == noErr)
+ {
+ FSSpec file ;
+ if ( FSMakeFSSpec( vRefNum , dirID , "\p" , &file ) == noErr )
+ {
+ strDir = wxMacFSSpec2MacFilename( &file ) + wxFILE_SEP_PATH ;
+ }
+ }
+ return strDir ;
}
#ifndef __DARWIN__
void wxClientDisplayRect(int *x, int *y, int *width, int *height)
{
- BitMap screenBits;
- GetQDGlobalsScreenBits( &screenBits );
+ BitMap screenBits;
+ GetQDGlobalsScreenBits( &screenBits );
if (x) *x = 0;
if (y) *y = 0;
*width = screenBits.bounds.right - screenBits.bounds.left ;
*height = screenBits.bounds.bottom - screenBits.bounds.top ;
- SInt16 mheight ;
- #if TARGET_CARBON
- GetThemeMenuBarHeight( &mheight ) ;
- #else
+ SInt16 mheight ;
+#if TARGET_CARBON
+ GetThemeMenuBarHeight( &mheight ) ;
+#else
mheight = LMGetMBarHeight() ;
- #endif
+#endif
*height -= mheight ;
if ( y )
- *y = mheight ;
+ *y = mheight ;
}
wxWindow* wxFindWindowAtPoint(const wxPoint& pt)
#include "wx/mac/private.h"
-#include "MoreFiles.h"
-#include "MoreFilesExtras.h"
+#ifdef __DARWIN__
+# include "MoreFilesX.h"
+#else
+# include "MoreFiles.h"
+# include "MoreFilesExtras.h"
+#endif
// ----------------------------------------------------------------------------
// constants
wxDirData::wxDirData(const wxString& dirname)
: m_dirname(dirname)
{
+ OSErr err;
+
// throw away the trailing slashes
size_t n = m_dirname.length();
wxCHECK_RET( n, _T("empty dir name in wxDir") );
;
m_dirname.Truncate(n + 1);
+
+#ifdef __DARWIN__
+ FSRef theRef;
+
+ // get the FSRef associated with the POSIX path
+ err = FSPathMakeRef((const UInt8 *) m_dirname, &theRef, NULL);
+ FSGetVRefNum(&theRef, &(m_CPB.hFileInfo.ioVRefNum));
+
+ err = FSGetNodeID( &theRef , &m_dirId , &m_isDir ) ;
+#else
+ FSSpec fsspec ;
- FSSpec fsspec ;
+ wxMacFilename2FSSpec( m_dirname , &fsspec ) ;
+ m_CPB.hFileInfo.ioVRefNum = fsspec.vRefNum ;
- wxMacFilename2FSSpec( m_dirname , &fsspec ) ;
- m_CPB.hFileInfo.ioVRefNum = fsspec.vRefNum ;
- m_CPB.hFileInfo.ioNamePtr = m_name ;
- m_index = 0 ;
+ err = FSpGetDirectoryID( &fsspec , &m_dirId , &m_isDir ) ;
+#endif
+ wxASSERT_MSG( (err == noErr) || (err == nsvErr) , "Error accessing directory " + m_dirname) ;
- OSErr err = FSpGetDirectoryID( &fsspec , &m_dirId , &m_isDir ) ;
- wxASSERT_MSG( err == noErr , "Error accessing directory") ;
+ m_CPB.hFileInfo.ioNamePtr = m_name ;
+ m_index = 0 ;
}
wxDirData::~wxDirData()
#endif
wxString result;
- short err = noErr ;
+ short err = noErr ;
- while ( err == noErr )
- {
- m_index++ ;
- m_CPB.dirInfo.ioFDirIndex = m_index;
- m_CPB.dirInfo.ioDrDirID = m_dirId; /* we need to do this every time */
- err = PBGetCatInfoSync((CInfoPBPtr)&m_CPB);
- if ( err != noErr )
- break ;
-
+ while ( err == noErr )
+ {
+ m_index++ ;
+ m_CPB.dirInfo.ioFDirIndex = m_index;
+ m_CPB.dirInfo.ioDrDirID = m_dirId; /* we need to do this every time */
+ err = PBGetCatInfoSync((CInfoPBPtr)&m_CPB);
+ if ( err != noErr )
+ break ;
+
#if TARGET_CARBON
- p2cstrcpy( c_name, m_name ) ;
- strcpy( (char *)m_name, c_name);
+ p2cstrcpy( c_name, m_name ) ;
+ strcpy( (char *)m_name, c_name);
#else
- p2cstr( m_name ) ;
+ p2cstr( m_name ) ;
+#endif
+ // its hidden but we don't want it
+ if ( ( m_CPB.hFileInfo.ioFlFndrInfo.fdFlags & kIsInvisible ) && !(m_flags & wxDIR_HIDDEN) )
+ continue ;
+#ifdef __DARWIN__
+ // under X, names that start with '.' are hidden
+ if ( ( m_name[0] == '.' ) && !(m_flags & wxDIR_HIDDEN) )
+ continue;
#endif
#if TARGET_CARBON
- // under X thats the way the mounting points look like
- if ( ( m_CPB.dirInfo.ioDrDirID == 0 ) && ( m_flags & wxDIR_DIRS) )
- break ;
+ // under X thats the way the mounting points look like
+ if ( ( m_CPB.dirInfo.ioDrDirID == 0 ) && ( m_flags & wxDIR_DIRS) )
+ break ;
#endif
- if ( ( m_CPB.dirInfo.ioFlAttrib & ioDirMask) != 0 && (m_flags & wxDIR_DIRS) ) // we have a directory
- break ;
-
- if ( ( m_CPB.dirInfo.ioFlAttrib & ioDirMask) == 0 && !(m_flags & wxDIR_FILES ) ) // its a file but we don't want it
- continue ;
-
- if ( ( m_CPB.hFileInfo.ioFlFndrInfo.fdFlags & kIsInvisible ) && !(m_flags & wxDIR_HIDDEN) ) // its hidden but we don't want it
- continue ;
-
- wxString file( m_name ) ;
- if ( m_filespec.IsEmpty() || m_filespec == "*.*" || m_filespec == "*" )
- {
- }
- else if ( m_filespec.Length() > 1 && m_filespec.Left(1) =="*" )
- {
- if ( file.Right( m_filespec.Length() - 1 ).Upper() != m_filespec.Mid(1).Upper() )
- {
- continue ;
- }
- }
- else if ( m_filespec.Length() > 1 && m_filespec.Right(1) == "*" )
- {
- if ( file.Left( m_filespec.Length() - 1 ).Upper() != m_filespec.Left( m_filespec.Length() - 1 ).Upper() )
- {
- continue ;
- }
- }
- else if ( file.Upper() != m_filespec.Upper() )
- {
- continue ;
- }
-
- break ;
- }
- if ( err != noErr )
- {
- return FALSE ;
- }
-
- *filename = (char*) m_name ;
+ // we have a directory
+ if ( ( m_CPB.dirInfo.ioFlAttrib & ioDirMask) != 0 && (m_flags & wxDIR_DIRS) )
+ break ;
+
+ // its a file but we don't want it
+ if ( ( m_CPB.dirInfo.ioFlAttrib & ioDirMask) == 0 && !(m_flags & wxDIR_FILES ) )
+ continue ;
+
+ wxString file( m_name ) ;
+ if ( m_filespec.IsEmpty() || m_filespec == "*.*" || m_filespec == "*" )
+ {
+ }
+ else if ( m_filespec.Length() > 1 && m_filespec.Left(1) =="*" )
+ {
+ if ( file.Right( m_filespec.Length() - 1 ).Upper() != m_filespec.Mid(1).Upper() )
+ {
+ continue ;
+ }
+ }
+ else if ( m_filespec.Length() > 1 && m_filespec.Right(1) == "*" )
+ {
+ if ( file.Left( m_filespec.Length() - 1 ).Upper() != m_filespec.Left( m_filespec.Length() - 1 ).Upper() )
+ {
+ continue ;
+ }
+ }
+ else if ( file.Upper() != m_filespec.Upper() )
+ {
+ continue ;
+ }
+
+ break ;
+ }
+ if ( err != noErr )
+ {
+ return FALSE ;
+ }
+
+ *filename = (char*) m_name ;
return TRUE;
}
#include <Navigation.h>
-#include "MoreFiles.h"
-#include "MoreFilesExtras.h"
-
+#ifdef __DARWIN__
+# include "MoreFilesX.h"
+#else
+# include "MoreFiles.h"
+# include "MoreFilesExtras.h"
+#endif
+
extern bool gUseNavServices ;
// the data we need to pass to our standard file hook routine
NavFilterModes filterMode
)
{
- bool display = true;
- OpenUserDataRecPtr data = (OpenUserDataRecPtr) callBackUD ;
-
- if (filterMode == kNavFilteringBrowserList)
- {
- NavFileOrFolderInfo* theInfo = (NavFileOrFolderInfo*) info ;
- if (theItem->descriptorType == typeFSS && !theInfo->isFolder)
- {
- FSSpec spec;
- memcpy( &spec , *theItem->dataHandle , sizeof(FSSpec) ) ;
- display = CheckFile( spec.name , theInfo->fileAndFolder.fileInfo.finderInfo.fdType , data ) ;
- }
- }
-
- return display;
+ bool display = true;
+ OpenUserDataRecPtr data = (OpenUserDataRecPtr) callBackUD ;
+
+ if (filterMode == kNavFilteringBrowserList)
+ {
+ NavFileOrFolderInfo* theInfo = (NavFileOrFolderInfo*) info ;
+ if (theItem->descriptorType == typeFSS && !theInfo->isFolder)
+ {
+ FSSpec spec;
+ memcpy( &spec , *theItem->dataHandle , sizeof(FSSpec) ) ;
+ display = CheckFile( spec.name , theInfo->fileAndFolder.fileInfo.finderInfo.fdType , data ) ;
+ }
+ }
+
+ return display;
}
int wxFileDialog::ShowModal()
{
- NavDialogOptions mNavOptions;
- NavObjectFilterUPP mNavFilterUPP = NULL;
- NavPreviewUPP mNavPreviewUPP = NULL ;
- NavReplyRecord mNavReply;
- AEDesc mDefaultLocation ;
- bool mSelectDefault = false ;
+ NavDialogOptions mNavOptions;
+ NavObjectFilterUPP mNavFilterUPP = NULL;
+ NavPreviewUPP mNavPreviewUPP = NULL ;
+ NavReplyRecord mNavReply;
+ AEDesc mDefaultLocation ;
+ bool mSelectDefault = false ;
- ::NavGetDefaultDialogOptions(&mNavOptions);
+ ::NavGetDefaultDialogOptions(&mNavOptions);
- mNavFilterUPP = nil;
- mNavPreviewUPP = nil;
- mSelectDefault = false;
- mNavReply.validRecord = false;
- mNavReply.replacing = false;
- mNavReply.isStationery = false;
- mNavReply.translationNeeded = false;
- mNavReply.selection.descriptorType = typeNull;
- mNavReply.selection.dataHandle = nil;
- mNavReply.keyScript = smSystemScript;
- mNavReply.fileTranslation = nil;
+ mNavFilterUPP = nil;
+ mNavPreviewUPP = nil;
+ mSelectDefault = false;
+ mNavReply.validRecord = false;
+ mNavReply.replacing = false;
+ mNavReply.isStationery = false;
+ mNavReply.translationNeeded = false;
+ mNavReply.selection.descriptorType = typeNull;
+ mNavReply.selection.dataHandle = nil;
+ mNavReply.keyScript = smSystemScript;
+ mNavReply.fileTranslation = nil;
- // Set default location, the location
- // that's displayed when the dialog
- // first appears
+ // Set default location, the location
+ // that's displayed when the dialog
+ // first appears
- FSSpec location ;
- wxMacFilename2FSSpec( m_dir , &location ) ;
- OSErr err = noErr ;
+ FSSpec location ;
+ wxMacFilename2FSSpec( m_dir , &location ) ;
+ OSErr err = noErr ;
- mDefaultLocation.descriptorType = typeNull;
- mDefaultLocation.dataHandle = nil;
+ mDefaultLocation.descriptorType = typeNull;
+ mDefaultLocation.dataHandle = nil;
- err = ::AECreateDesc(typeFSS, &location, sizeof(FSSpec), &mDefaultLocation );
+ err = ::AECreateDesc(typeFSS, &location, sizeof(FSSpec), &mDefaultLocation );
- if ( mDefaultLocation.dataHandle ) {
+ if ( mDefaultLocation.dataHandle ) {
- if (mSelectDefault) {
- mNavOptions.dialogOptionFlags |= kNavSelectDefaultLocation;
- } else {
- mNavOptions.dialogOptionFlags &= ~kNavSelectDefaultLocation;
- }
- }
+ if (mSelectDefault) {
+ mNavOptions.dialogOptionFlags |= kNavSelectDefaultLocation;
+ } else {
+ mNavOptions.dialogOptionFlags &= ~kNavSelectDefaultLocation;
+ }
+ }
#if TARGET_CARBON
- c2pstrcpy((StringPtr)mNavOptions.message, m_message) ;
+ c2pstrcpy((StringPtr)mNavOptions.message, m_message) ;
#else
- strcpy((char *)mNavOptions.message, m_message) ;
- c2pstr((char *)mNavOptions.message ) ;
+ strcpy((char *)mNavOptions.message, m_message) ;
+ c2pstr((char *)mNavOptions.message ) ;
#endif
#if TARGET_CARBON
- c2pstrcpy((StringPtr)mNavOptions.savedFileName, m_fileName) ;
+ c2pstrcpy((StringPtr)mNavOptions.savedFileName, m_fileName) ;
#else
- strcpy((char *)mNavOptions.savedFileName, m_fileName) ;
- c2pstr((char *)mNavOptions.savedFileName ) ;
+ strcpy((char *)mNavOptions.savedFileName, m_fileName) ;
+ c2pstr((char *)mNavOptions.savedFileName ) ;
#endif
- OpenUserDataRec myData;
- MakeUserDataRec( &myData , m_wildCard ) ;
- myData.currentfilter = m_filterIndex ;
- if ( myData.extensions.GetCount() > 0 )
- {
- mNavOptions.popupExtension = (NavMenuItemSpecArrayHandle) NewHandle( sizeof( NavMenuItemSpec ) * myData.extensions.GetCount() ) ;
- myData.menuitems = mNavOptions.popupExtension ;
- for ( size_t i = 0 ; i < myData.extensions.GetCount() ; ++i )
- {
- (*mNavOptions.popupExtension)[i].version = kNavMenuItemSpecVersion ;
- (*mNavOptions.popupExtension)[i].menuCreator = 'WXNG' ;
- (*mNavOptions.popupExtension)[i].menuType = i ;
- #if TARGET_CARBON
- c2pstrcpy((StringPtr)(*mNavOptions.popupExtension)[i].menuItemName, myData.name[i]) ;
- #else
- strcpy((char *)(*mNavOptions.popupExtension)[i].menuItemName, myData.name[i]) ;
- c2pstr((char *)(*mNavOptions.popupExtension)[i].menuItemName ) ;
- #endif
- }
- }
- if ( m_dialogStyle & wxSAVE )
- {
- myData.saveMode = true ;
+ OpenUserDataRec myData;
+ MakeUserDataRec( &myData , m_wildCard ) ;
+ myData.currentfilter = m_filterIndex ;
+ if ( myData.extensions.GetCount() > 0 )
+ {
+ mNavOptions.popupExtension = (NavMenuItemSpecArrayHandle) NewHandle( sizeof( NavMenuItemSpec ) * myData.extensions.GetCount() ) ;
+ myData.menuitems = mNavOptions.popupExtension ;
+ for ( size_t i = 0 ; i < myData.extensions.GetCount() ; ++i )
+ {
+ (*mNavOptions.popupExtension)[i].version = kNavMenuItemSpecVersion ;
+ (*mNavOptions.popupExtension)[i].menuCreator = 'WXNG' ;
+ (*mNavOptions.popupExtension)[i].menuType = i ;
+#if TARGET_CARBON
+ c2pstrcpy((StringPtr)(*mNavOptions.popupExtension)[i].menuItemName, myData.name[i]) ;
+#else
+ strcpy((char *)(*mNavOptions.popupExtension)[i].menuItemName, myData.name[i]) ;
+ c2pstr((char *)(*mNavOptions.popupExtension)[i].menuItemName ) ;
+#endif
+ }
+ }
+ if ( m_dialogStyle & wxSAVE )
+ {
+ myData.saveMode = true ;
- mNavOptions.dialogOptionFlags |= kNavDontAutoTranslate ;
- mNavOptions.dialogOptionFlags |= kNavDontAddTranslateItems ;
+ mNavOptions.dialogOptionFlags |= kNavDontAutoTranslate ;
+ mNavOptions.dialogOptionFlags |= kNavDontAddTranslateItems ;
- err = ::NavPutFile(
- &mDefaultLocation,
- &mNavReply,
- &mNavOptions,
- sStandardNavEventFilter ,
- NULL,
- kNavGenericSignature,
- &myData); // User Data
- m_filterIndex = myData.currentfilter ;
- }
- else
- {
- myData.saveMode = false ;
+ err = ::NavPutFile(
+ &mDefaultLocation,
+ &mNavReply,
+ &mNavOptions,
+ sStandardNavEventFilter ,
+ NULL,
+ kNavGenericSignature,
+ &myData); // User Data
+ m_filterIndex = myData.currentfilter ;
+ }
+ else
+ {
+ myData.saveMode = false ;
- mNavFilterUPP = NewNavObjectFilterUPP( CrossPlatformFilterCallback ) ;
- if ( m_dialogStyle & wxMULTIPLE )
- mNavOptions.dialogOptionFlags |= kNavAllowMultipleFiles ;
- else
- mNavOptions.dialogOptionFlags &= ~kNavAllowMultipleFiles ;
+ mNavFilterUPP = NewNavObjectFilterUPP( CrossPlatformFilterCallback ) ;
+ if ( m_dialogStyle & wxMULTIPLE )
+ mNavOptions.dialogOptionFlags |= kNavAllowMultipleFiles ;
+ else
+ mNavOptions.dialogOptionFlags &= ~kNavAllowMultipleFiles ;
- err = ::NavGetFile(
- &mDefaultLocation,
- &mNavReply,
- &mNavOptions,
- sStandardNavEventFilter ,
- mNavPreviewUPP,
- mNavFilterUPP,
- NULL ,
- &myData);
- m_filterIndex = myData.currentfilter ;
- }
+ err = ::NavGetFile(
+ &mDefaultLocation,
+ &mNavReply,
+ &mNavOptions,
+ sStandardNavEventFilter ,
+ mNavPreviewUPP,
+ mNavFilterUPP,
+ NULL ,
+ &myData);
+ m_filterIndex = myData.currentfilter ;
+ }
- DisposeNavObjectFilterUPP(mNavFilterUPP);
- if ( mDefaultLocation.dataHandle != nil )
- {
- ::AEDisposeDesc(&mDefaultLocation);
- }
+ DisposeNavObjectFilterUPP(mNavFilterUPP);
+ if ( mDefaultLocation.dataHandle != nil )
+ {
+ ::AEDisposeDesc(&mDefaultLocation);
+ }
- if ( (err != noErr) && (err != userCanceledErr) ) {
- m_path = "" ;
- return wxID_CANCEL ;
- }
+ if ( (err != noErr) && (err != userCanceledErr) ) {
+ m_path = "" ;
+ return wxID_CANCEL ;
+ }
- if (mNavReply.validRecord) {
+ if (mNavReply.validRecord) {
- FSSpec outFileSpec ;
- AEDesc specDesc ;
- AEKeyword keyWord ;
+ FSSpec outFileSpec ;
+ AEDesc specDesc ;
+ AEKeyword keyWord ;
- long count ;
- ::AECountItems( &mNavReply.selection , &count ) ;
- for ( long i = 1 ; i <= count ; ++i )
- {
- OSErr err = ::AEGetNthDesc( &mNavReply.selection , i , typeFSS, &keyWord , &specDesc);
- if ( err != noErr ) {
- m_path = "" ;
- return wxID_CANCEL ;
- }
- outFileSpec = **(FSSpec**) specDesc.dataHandle;
- if (specDesc.dataHandle != nil) {
- ::AEDisposeDesc(&specDesc);
- }
- m_path = wxMacFSSpec2MacFilename( &outFileSpec ) ;
- m_paths.Add( m_path ) ;
- m_fileName = wxFileNameFromPath(m_path);
- m_fileNames.Add(m_fileName);
- }
- // set these to the first hit
- m_path = m_paths[ 0 ] ;
+ long count ;
+ ::AECountItems( &mNavReply.selection , &count ) ;
+ for ( long i = 1 ; i <= count ; ++i )
+ {
+ OSErr err = ::AEGetNthDesc( &mNavReply.selection , i , typeFSS, &keyWord , &specDesc);
+ if ( err != noErr ) {
+ m_path = "" ;
+ return wxID_CANCEL ;
+ }
+ outFileSpec = **(FSSpec**) specDesc.dataHandle;
+ if (specDesc.dataHandle != nil) {
+ ::AEDisposeDesc(&specDesc);
+ }
+ m_path = wxMacFSSpec2MacFilename( &outFileSpec ) ;
+ m_paths.Add( m_path ) ;
m_fileName = wxFileNameFromPath(m_path);
- m_dir = wxPathOnly(m_path);
- NavDisposeReply( &mNavReply ) ;
- return wxID_OK ;
- }
- return wxID_CANCEL;
+ m_fileNames.Add(m_fileName);
+ }
+ // set these to the first hit
+ m_path = m_paths[ 0 ] ;
+ m_fileName = wxFileNameFromPath(m_path);
+ m_dir = wxPathOnly(m_path);
+ NavDisposeReply( &mNavReply ) ;
+ return wxID_OK ;
+ }
+ return wxID_CANCEL;
}
// Generic file load/save dialog
static wxString
wxDefaultFileSelector(bool load, const char *what, const char *extension, const char *default_name, wxWindow *parent)
{
- char *ext = (char *)extension;
-
- char prompt[50];
- wxString str;
- if (load)
- str = "Load %s file";
- else
- str = "Save %s file";
- sprintf(prompt, wxGetTranslation(str), what);
-
- if (*ext == '.') ext++;
- char wild[60];
- sprintf(wild, "*.%s", ext);
-
- return wxFileSelector (prompt, NULL, default_name, ext, wild, 0, parent);
+ char *ext = (char *)extension;
+
+ char prompt[50];
+ wxString str;
+ if (load)
+ str = "Load %s file";
+ else
+ str = "Save %s file";
+ sprintf(prompt, wxGetTranslation(str), what);
+
+ if (*ext == '.') ext++;
+ char wild[60];
+ sprintf(wild, "*.%s", ext);
+
+ return wxFileSelector (prompt, NULL, default_name, ext, wild, 0, parent);
}
// Generic file load dialog
#include <string.h>
#include <stdarg.h>
-#include "MoreFiles.h"
-#include "MoreFilesExtras.h"
+#ifdef __DARWIN__
+# include "MoreFilesX.h"
+#else
+# include "MoreFiles.h"
+# include "MoreFilesExtras.h"
+#endif
#ifndef __DARWIN__
#include <Threads.h>
OSType folderType,
Boolean createFolder)
{
- short vRefNum ;
- long dirID ;
- wxString strDir ;
-
- if ( FindFolder( vol, folderType, createFolder, &vRefNum, &dirID) == noErr)
- {
- FSSpec file ;
- if ( FSMakeFSSpec( vRefNum , dirID , "\p" , &file ) == noErr )
- {
- strDir = wxMacFSSpec2MacFilename( &file ) + wxFILE_SEP_PATH ;
- }
- }
- return strDir ;
+ short vRefNum ;
+ long dirID ;
+ wxString strDir ;
+
+ if ( FindFolder( vol, folderType, createFolder, &vRefNum, &dirID) == noErr)
+ {
+ FSSpec file ;
+ if ( FSMakeFSSpec( vRefNum , dirID , "\p" , &file ) == noErr )
+ {
+ strDir = wxMacFSSpec2MacFilename( &file ) + wxFILE_SEP_PATH ;
+ }
+ }
+ return strDir ;
}
#ifndef __DARWIN__
void wxClientDisplayRect(int *x, int *y, int *width, int *height)
{
- BitMap screenBits;
- GetQDGlobalsScreenBits( &screenBits );
+ BitMap screenBits;
+ GetQDGlobalsScreenBits( &screenBits );
if (x) *x = 0;
if (y) *y = 0;
*width = screenBits.bounds.right - screenBits.bounds.left ;
*height = screenBits.bounds.bottom - screenBits.bounds.top ;
- SInt16 mheight ;
- #if TARGET_CARBON
- GetThemeMenuBarHeight( &mheight ) ;
- #else
+ SInt16 mheight ;
+#if TARGET_CARBON
+ GetThemeMenuBarHeight( &mheight ) ;
+#else
mheight = LMGetMBarHeight() ;
- #endif
+#endif
*height -= mheight ;
if ( y )
- *y = mheight ;
+ *y = mheight ;
}
wxWindow* wxFindWindowAtPoint(const wxPoint& pt)