#pragma hdrstop
#endif
-#include "wx/defs.h"
+#if wxUSE_DIRDLG
#include "wx/utils.h"
#include "wx/dialog.h"
#endif // __WXPM__
+#if defined(__WXMAC__) && !defined(__UNIX__)
+#include "moreextr.h"
+#endif
+
#ifdef __BORLANDC__
#include "dos.h"
#endif
#if defined(__WXMSW__) || defined(__WXPM__)
int setdrive(int drive)
{
- char newdrive[3];
+ wxChar newdrive[3];
if (drive < 1 || drive > 31)
return -1;
- newdrive[0] = (char)('A' + (char)drive - (char)1);
- newdrive[1] = ':';
- newdrive[2] = '\0';
+ newdrive[0] = (wxChar)(wxT('A') + drive - 1);
+ newdrive[1] = wxT(':');
+ newdrive[2] = wxT('\0');
#if defined(__WXMSW__)
- if (SetCurrentDirectory((LPSTR)newdrive))
+#ifdef __WIN16__
+ if (wxSetWorkingDirectory(newdrive))
+#else
+ if (::SetCurrentDirectory(newdrive))
+#endif
#else
// VA doesn't know what LPSTR is and has its own set
if (DosSetCurrentDir((PSZ)newdrive))
}
#endif
+// Function which is called by quick sort. We want to override the default wxArrayString behaviour,
+// and sort regardless of case.
+static int LINKAGEMODE wxDirCtrlStringCompareFunction(const void *first, const void *second)
+{
+ wxString *strFirst = (wxString *)first;
+ wxString *strSecond = (wxString *)second;
+
+ return strFirst->CmpNoCase(*strSecond);
+}
+
//-----------------------------------------------------------------------------
// wxDirItemDataEx
//-----------------------------------------------------------------------------
}
}
#endif
-
+#elif defined(__WXMAC__) && !defined(__UNIX__)
+ FSSpec volume ;
+ short index = 1 ;
+ while(1) {
+ short actualCount = 0 ;
+ if ( OnLine( &volume , 1 , &actualCount , &index ) != noErr || actualCount == 0 )
+ break ;
+
+ wxString name = wxMacFSSpec2MacFilename( &volume ) ;
+ AddSection(name+":", name, 0);
+ }
#else
AddSection(wxT("/"), _("The Computer"), 0);
AddSection(wxGetHomeDir(), _("My Home"), 0 );
while (d.GetNext(& eachFilename)) ;
}
}
- dirs.Sort();
+ dirs.Sort((wxArrayString::CompareFunction) wxDirCtrlStringCompareFunction);
// Now do the filenames -- but only if we're allowed to
if ((GetWindowStyle() & wxDIRCTRL_DIR_ONLY) == 0)
while (d.GetNext(& eachFilename)) ;
}
}
- filenames.Sort();
+ filenames.Sort((wxArrayString::CompareFunction) wxDirCtrlStringCompareFunction);
}
// Add the sorted dirs
m_dirCtrl->GetTreeCtrl()->EnsureVisible( new_id );
m_dirCtrl->GetTreeCtrl()->EditLabel( new_id );
}
+
+#endif // wxUSE_DIRDLG