]> 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 9c6c131e68f976f13a5e2d2a0e5f81d5a4a0a947..2150002e4292be2a39989e8ccd32d31a83f028d3 100644 (file)
@@ -6,14 +6,17 @@
 // Created:     1998-01-01
 // RCS-ID:      $Id$
 // Copyright:   (c) Stefan Csomor
-// Licence:    wxWindows licence
+// 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,
@@ -40,107 +41,66 @@ wxDirDialog::wxDirDialog(wxWindow *parent,
                          const wxSize& WXUNUSED(size),
                          const wxString& WXUNUSED(name))
 {
-       wxASSERT_MSG( NavServicesAvailable() , "Navigation Services are not running" ) ;
+    wxASSERT_MSG( NavServicesAvailable() , wxT("Navigation Services are not running") ) ;
     m_message = message;
     m_dialogStyle = style;
     m_parent = parent;
-       m_path = defaultPath;
+    m_path = defaultPath;
 }
 
 int wxDirDialog::ShowModal()
 {
-       NavDialogOptions                mNavOptions;
-       NavObjectFilterUPP              mNavFilterUPP = NULL;
-       NavPreviewUPP                   mNavPreviewUPP = NULL ;
-       NavReplyRecord                  mNavReply;
-       AEDesc*                                 mDefaultLocation = NULL ;
-       bool                                    mSelectDefault = false ;
-       
-       ::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;
-       
-       // 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,
-                                               &mNavReply,
-                                               &mNavOptions,
-                                               NULL,
-                                               mNavFilterUPP,
-                                               0L);                                                    // User Data
-       
-       if ( (err != noErr) && (err != userCanceledErr) ) {
-               m_path = "" ;
-               return wxID_CANCEL ;
-       }
-
-       if (mNavReply.validRecord) {            // User chose a folder
-       
-               FSSpec  folderInfo;
-               FSSpec  outFileSpec ;
-               AEDesc specDesc ;
-               
-               OSErr err = ::AECoerceDesc( &mNavReply.selection , typeFSS, &specDesc);
-               if ( err != noErr ) {
-                       m_path = "" ;
-                       return wxID_CANCEL ;
-               }                       
-               folderInfo = **(FSSpec**) 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 = "" ;
-                       return wxID_CANCEL ;
-               }                       
-                                                                                       // Create cannonical FSSpec
-               ::FSMakeFSSpec(thePB.dirInfo.ioVRefNum, thePB.dirInfo.ioDrParID,
-                                          name, &outFileSpec);
-                                               
-               // outFolderDirID = thePB.dirInfo.ioDrDirID;
-               m_path = wxMacFSSpec2MacFilename( &outFileSpec ) ;
-               return wxID_OK ;
-       }
-       return wxID_CANCEL;
+    NavDialogOptions        mNavOptions;
+    NavObjectFilterUPP      mNavFilterUPP = NULL;
+    NavReplyRecord          mNavReply;
+
+    ::NavGetDefaultDialogOptions(&mNavOptions);
+
+    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
+
+    OSErr err = ::NavChooseFolder(
+                        NULL,
+                        &mNavReply,
+                        &mNavOptions,
+                        NULL,
+                        mNavFilterUPP,
+                        0L);                            // User Data
+
+    if ( (err != noErr) && (err != userCanceledErr) ) {
+        m_path = wxEmptyString ;
+        return wxID_CANCEL ;
+    }
+
+    if (mNavReply.validRecord) {        // User chose a folder
+
+        FSRef folderInfo;
+        AEDesc specDesc ;
+
+        OSErr err = ::AECoerceDesc( &mNavReply.selection , typeFSRef, &specDesc);
+        if ( err != noErr ) {
+            m_path = wxEmptyString ;
+            return wxID_CANCEL ;
+        }
+        folderInfo = **(FSRef**) specDesc.dataHandle;
+        if (specDesc.dataHandle != nil) {
+            ::AEDisposeDesc(&specDesc);
+        }
+
+        m_path = wxMacFSRefToPath( &folderInfo ) ;
+        return wxID_OK ;
+    }
+    return wxID_CANCEL;
 }
 
+#endif