]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/dirdlg.cpp
Hopefully fixed library names generated by wx-config for OS/2's PM port.
[wxWidgets.git] / src / mac / carbon / dirdlg.cpp
index 0b4c7df19566e52d9da444682f494bada976329b..2150002e4292be2a39989e8ccd32d31a83f028d3 100644 (file)
@@ -9,11 +9,14 @@
 // Licence:       wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
 #pragma implementation "dirdlg.h"
 #endif
 
-#include "wx/defs.h"
+#include "wx/wxprec.h"
+
+#if wxUSE_DIRDLG
+
 #include "wx/utils.h"
 #include "wx/dialog.h"
 #include "wx/dirdlg.h"
@@ -28,9 +31,7 @@
   #include <Navigation.h>
 #endif
 
-#if !USE_SHARED_LIBRARY
 IMPLEMENT_CLASS(wxDirDialog, wxDialog)
-#endif
 
 wxDirDialog::wxDirDialog(wxWindow *parent,
                          const wxString& message,
@@ -50,97 +51,56 @@ wxDirDialog::wxDirDialog(wxWindow *parent,
 int wxDirDialog::ShowModal()
 {
     NavDialogOptions        mNavOptions;
-    NavObjectFilterUPP        mNavFilterUPP = NULL;
-    NavPreviewUPP            mNavPreviewUPP = NULL ;
-    NavReplyRecord            mNavReply;
-    AEDesc*                    mDefaultLocation = NULL ;
-    bool                    mSelectDefault = false ;
-    
+    NavObjectFilterUPP      mNavFilterUPP = NULL;
+    NavReplyRecord          mNavReply;
+
     ::NavGetDefaultDialogOptions(&mNavOptions);
 
-    mNavFilterUPP    = nil;
-    mNavPreviewUPP    = nil;
-    mSelectDefault    = false;
-    mNavReply.validRecord                = false;
-    mNavReply.replacing                    = false;
-    mNavReply.isStationery                = false;
-    mNavReply.translationNeeded            = 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;
-    
+    mNavReply.selection.dataHandle     = nil;
+    mNavReply.keyScript                = smSystemScript;
+    mNavReply.fileTranslation          = nil;
+
     // Set default location, the location
     //   that's displayed when the dialog
     //   first appears
-    
-    if ( mDefaultLocation ) {
-        
-        if (mSelectDefault) {
-            mNavOptions.dialogOptionFlags |= kNavSelectDefaultLocation;
-        } else {
-            mNavOptions.dialogOptionFlags &= ~kNavSelectDefaultLocation;
-        }
-    }
-    
+
     OSErr err = ::NavChooseFolder(
-                        mDefaultLocation,
+                        NULL,
                         &mNavReply,
                         &mNavOptions,
                         NULL,
                         mNavFilterUPP,
                         0L);                            // User Data
-    
+
     if ( (err != noErr) && (err != userCanceledErr) ) {
-        m_path = wxT("") ;
+        m_path = wxEmptyString ;
         return wxID_CANCEL ;
     }
 
     if (mNavReply.validRecord) {        // User chose a folder
-    
-        FSSpec    folderInfo;
-        FSSpec  outFileSpec ;
+
+        FSRef folderInfo;
         AEDesc specDesc ;
-        
-        OSErr err = ::AECoerceDesc( &mNavReply.selection , typeFSS, &specDesc);
+
+        OSErr err = ::AECoerceDesc( &mNavReply.selection , typeFSRef, &specDesc);
         if ( err != noErr ) {
-            m_path = wxT("") ;
+            m_path = wxEmptyString ;
             return wxID_CANCEL ;
-        }            
-        folderInfo = **(FSSpec**) specDesc.dataHandle;
+        }
+        folderInfo = **(FSRef**) specDesc.dataHandle;
         if (specDesc.dataHandle != nil) {
             ::AEDisposeDesc(&specDesc);
         }
 
-//            mNavReply.GetFileSpec(folderInfo);
-        
-            // The FSSpec from NavChooseFolder is NOT the file spec
-            // for the folder. The parID field is actually the DirID
-            // of the folder itself, not the folder's parent, and
-            // the name field is empty. We must call PBGetCatInfo
-            // to get the parent DirID and folder name
-        
-        Str255        name;
-        CInfoPBRec    thePB;            // Directory Info Parameter Block
-        thePB.dirInfo.ioCompletion    = nil;
-        thePB.dirInfo.ioVRefNum        = folderInfo.vRefNum;    // Volume is right
-        thePB.dirInfo.ioDrDirID        = folderInfo.parID;        // Folder's DirID
-        thePB.dirInfo.ioNamePtr        = name;
-        thePB.dirInfo.ioFDirIndex    = -1;    // Lookup using Volume and DirID
-        
-        err = ::PBGetCatInfoSync(&thePB);
-        if ( err != noErr ) {
-            m_path = wxT("")  ;
-            return wxID_CANCEL ;
-        }            
-                                            // Create cannonical FSSpec
-        ::FSMakeFSSpec(thePB.dirInfo.ioVRefNum, thePB.dirInfo.ioDrParID,
-                       name, &outFileSpec);
-                        
-        // outFolderDirID = thePB.dirInfo.ioDrDirID;
-        m_path = wxMacFSSpec2MacFilename( &outFileSpec ) ;
+        m_path = wxMacFSRefToPath( &folderInfo ) ;
         return wxID_OK ;
     }
     return wxID_CANCEL;
 }
 
+#endif