use MoreFilesX instead of MoreFiles when building with Apple Developer Tools

improved wxGenericDirCtrl when building with Apple Developer Tools
improved wxDirData to correctly handle hidden directories


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@18483 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Gilles Depeyrot
2003-01-01 17:53:02 +00:00
parent 15126fa8c2
commit 2d4e4f802f
8 changed files with 648 additions and 511 deletions

View File

@@ -79,7 +79,11 @@
#endif // __WXPM__
#if defined(__WXMAC__)
# include "MoreFilesExtras.h"
# ifdef __DARWIN__
# include "MoreFilesX.h"
# else
# include "MoreFilesExtras.h"
# endif
#endif
#ifdef __BORLANDC__
@@ -373,7 +377,7 @@ bool wxIsDriveAvailable(const wxString& dirName)
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());
@@ -660,16 +664,81 @@ void wxGenericDirCtrl::SetupSections()
#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