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:
@@ -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
|
||||
|
Reference in New Issue
Block a user