X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/de6185e212ebc37ff11ff70278e3c4f68419b097..80a779275ae04443c568dca919adb26cf6f5002c:/src/mac/carbon/filedlg.cpp?ds=sidebyside diff --git a/src/mac/carbon/filedlg.cpp b/src/mac/carbon/filedlg.cpp index dcc70f4bdb..cd3767ac7d 100644 --- a/src/mac/carbon/filedlg.cpp +++ b/src/mac/carbon/filedlg.cpp @@ -17,9 +17,9 @@ #include "wx/intl.h" #include "wx/app.h" #include "wx/utils.h" + #include "wx/dialog.h" #endif -#include "wx/dialog.h" #include "wx/tokenzr.h" #include "wx/filename.h" @@ -30,12 +30,8 @@ #include "PLStringFuncs.h" #endif -#include "MoreFilesX.h" - IMPLEMENT_CLASS(wxFileDialog, wxFileDialogBase) -extern bool gUseNavServices; - // the data we need to pass to our standard file hook routine // includes a pointer to the dialog, a pointer to the standard // file reply record (so we can inspect the current selection) @@ -78,10 +74,10 @@ static pascal void NavEventProc( { // Set default location for the modern Navigation APIs // Apple Technical Q&A 1151 - FSSpec theFSSpec; - wxMacFilename2FSSpec(data->defaultLocation, &theFSSpec); + FSRef theFile; + wxMacPathToFSRef(data->defaultLocation, &theFile); AEDesc theLocation = { typeNull, NULL }; - if (noErr == ::AECreateDesc(typeFSS, &theFSSpec, sizeof(FSSpec), &theLocation)) + if (noErr == ::AECreateDesc(typeFSRef, &theFile, sizeof(FSRef), &theLocation)) ::NavCustomControl(ioParams->context, kNavCtlSetLocation, (void *) &theLocation); } @@ -135,7 +131,7 @@ void MakeUserDataRec(OpenUserDataRec *myData , const wxString& filter ) bool isName = true ; wxString current ; - for ( unsigned int i = 0; i < filter2.Len() ; i++ ) + for ( unsigned int i = 0; i < filter2.length() ; i++ ) { if ( filter2.GetChar(i) == wxT('|') ) { @@ -215,7 +211,7 @@ static Boolean CheckFile( const wxString &filename , OSType type , OpenUserDataR if ( extension.GetChar(0) == '*' ) extension = extension.Mid(1) ; - if ( file.Len() >= extension.Len() && extension == file.Right(extension.Len() ) ) + if ( file.length() >= extension.length() && extension == file.Right(extension.length() ) ) return true ; } } @@ -259,8 +255,8 @@ static pascal Boolean CrossPlatformFileFilter(CInfoPBPtr myCInfoPBPtr, void *dat wxFileDialog::wxFileDialog( wxWindow *parent, const wxString& message, const wxString& defaultDir, const wxString& defaultFileName, const wxString& wildCard, - long style, const wxPoint& pos) - : wxFileDialogBase(parent, message, defaultDir, defaultFileName, wildCard, style, pos) + long style, const wxPoint& pos, const wxSize& sz, const wxString& name) + : wxFileDialogBase(parent, message, defaultDir, defaultFileName, wildCard, style, pos, sz, name) { wxASSERT_MSG( NavServicesAvailable() , wxT("Navigation Services are not running") ) ; } @@ -279,16 +275,11 @@ pascal Boolean CrossPlatformFilterCallback( NavFileOrFolderInfo* theInfo = (NavFileOrFolderInfo*) info ; if ( !theInfo->isFolder ) { - if (theItem->descriptorType == typeFSS) - { - FSSpec spec; - memcpy( &spec , *theItem->dataHandle , sizeof(FSSpec) ) ; - wxString file = wxMacMakeStringFromPascal( spec.name ) ; - display = CheckFile( file , theInfo->fileAndFolder.fileInfo.finderInfo.fdType , data ) ; - } - else if ( theItem->descriptorType == typeFSRef ) + AECoerceDesc (theItem, typeFSRef, theItem); + + FSRef fsref ; + if ( AEGetDescData (theItem, &fsref, sizeof (FSRef)) == noErr ) { - FSRef fsref ; memcpy( &fsref , *theItem->dataHandle , sizeof(FSRef) ) ; wxString file = wxMacFSRefToPath( &fsref ) ; display = CheckFile( file , theInfo->fileAndFolder.fileInfo.finderInfo.fdType , data ) ; @@ -319,7 +310,6 @@ int wxFileDialog::ShowModal() NavDialogRef dialog; NavObjectFilterUPP navFilterUPP = NULL; - CFArrayRef cfArray = NULL; // for popupExtension OpenUserDataRec myData; myData.defaultLocation = m_dir; @@ -338,7 +328,7 @@ int wxFileDialog::ShowModal() } } - if (m_dialogStyle & wxSAVE) + if (HasFlag(wxFD_SAVE)) { myData.saveMode = true; @@ -352,7 +342,7 @@ int wxFileDialog::ShowModal() dialogCreateOptions.optionFlags |= kNavPreserveSaveFileExtension; #if TARGET_API_MAC_OSX - if (!(m_dialogStyle & wxOVERWRITE_PROMPT)) + if (!(m_windowStyle & wxFD_OVERWRITE_PROMPT)) dialogCreateOptions.optionFlags |= kNavDontConfirmReplacement; #endif @@ -386,8 +376,6 @@ int wxFileDialog::ShowModal() // clean up filter related data, etc. if (navFilterUPP) ::DisposeNavObjectFilterUPP(navFilterUPP); - if (cfArray) - ::CFRelease(cfArray); if (err != noErr) return wxID_CANCEL; @@ -413,7 +401,7 @@ int wxFileDialog::ShowModal() if (err != noErr) break; - if (m_dialogStyle & wxSAVE) + if (HasFlag(wxFD_SAVE)) thePath = wxMacFSRefToPath( &theFSRef, navReply.saveFileName ); else thePath = wxMacFSRefToPath( &theFSRef );