// headers
// ----------------------------------------------------------------------------
-/* this is done in platform-specific files
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
- #pragma implementation "dir.h"
-#endif
-*/
-
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#include "wx/log.h"
#include "wx/intl.h"
#include "wx/filefn.h"
+ #include "wx/arrstr.h"
#endif //WX_PRECOMP
#include "wx/dir.h"
}
// we have a (much) faster version for Unix
-#if (defined(__CYGWIN__) && defined(__WINDOWS__)) || !defined(__UNIX_LIKE__) || defined(__WXMAC__) || defined(__EMX__)
+#if (defined(__CYGWIN__) && defined(__WINDOWS__)) || !defined(__UNIX_LIKE__) || defined(__WXMAC__) || defined(__EMX__) || defined(__WINE__)
bool wxDir::HasSubDirs(const wxString& spec)
{
if ( flags & wxDIR_DIRS )
{
wxString dirname;
- for ( bool cont = GetFirst(&dirname, _T(""), wxDIR_DIRS | wxDIR_HIDDEN);
+ for ( bool cont = GetFirst(&dirname, wxEmptyString, wxDIR_DIRS | (flags & wxDIR_HIDDEN) );
cont;
cont = cont && GetNext(&dirname) )
{
return nFiles;
}
+// ----------------------------------------------------------------------------
+// wxDir::FindFirst()
+// ----------------------------------------------------------------------------
+
+class wxDirTraverserFindFirst : public wxDirTraverser
+{
+public:
+ wxDirTraverserFindFirst() { }
+
+ virtual wxDirTraverseResult OnFile(const wxString& filename)
+ {
+ m_file = filename;
+ return wxDIR_STOP;
+ }
+
+ virtual wxDirTraverseResult OnDir(const wxString& WXUNUSED(dirname))
+ {
+ return wxDIR_CONTINUE;
+ }
+
+ const wxString& GetFile() const
+ {
+ return m_file;
+ }
+
+private:
+ wxString m_file;
+
+ DECLARE_NO_COPY_CLASS(wxDirTraverserFindFirst)
+};
+
+/* static */
+wxString wxDir::FindFirst(const wxString& dirname,
+ const wxString& filespec,
+ int flags)
+{
+ wxDir dir(dirname);
+ if ( dir.IsOpened() )
+ {
+ wxDirTraverserFindFirst traverser;
+
+ dir.Traverse(traverser, filespec, flags | wxDIR_FILES);
+ return traverser.GetFile();
+ }
+
+ return wxEmptyString;
+}