#include "wx/button.h"
#include "wx/layout.h"
#include "wx/msgdlg.h"
+#include "wx/textctrl.h"
#include "wx/textdlg.h"
#include "wx/filefn.h"
#include "wx/cmndata.h"
#include "wx/log.h"
#include "wx/sizer.h"
#include "wx/tokenzr.h"
+#include "wx/dir.h"
#if wxUSE_STATLINE
#include "wx/statline.h"
bool wxDirItemData::HasSubDirs()
{
- wxString search = m_path + wxT("/*");
- wxLogNull log;
- wxString path = wxFindFirstFile( search, wxDIR );
- return (bool)(!path.IsNull());
+ return wxDir(m_path).HasSubDirs();
}
//-----------------------------------------------------------------------------
wxBeginBusyCursor();
wxDirItemData *data = (wxDirItemData *)GetItemData(event.GetItem());
- wxASSERT(data);
-
- wxString search,path,filename;
m_paths.Clear();
m_names.Clear();
-#ifdef __WXMSW__
- search = data->m_path + "\\*.*";
-#else
- search = data->m_path + "/*";
-#endif
- for (path = wxFindFirstFile( search, wxDIR ); !path.IsNull();
- path=wxFindNextFile() )
+
+ wxString path = data->m_path;
+
+ wxDir dir(path);
+
+ path += _T('/');
+
+ wxString filename;
+ bool cont = dir.GetFirst(&filename, "", wxDIR_DIRS | wxDIR_HIDDEN);
+ while ( cont )
{
- filename = wxFileNameFromPath( path );
- /* Don't add "." and ".." to the tree. I think wxFindNextFile
- * also checks this, but I don't quite understand what happens
- * there. Also wxFindNextFile seems to swallow hidden dirs */
- if ((filename != ".") && (filename != ".."))
- {
- m_paths.Add(path);
- m_names.Add(filename);
- }
+ m_paths.Add(path + filename);
+ m_names.Add(filename);
+
+ cont = dir.GetNext(&filename);
}
CreateItems( event.GetItem() );
wxBoxSizer *topsizer = new wxBoxSizer( wxVERTICAL );
// 1) dir ctrl
- m_dir = new wxDirCtrl( this, ID_DIRCTRL, "/",
+ m_dir = new wxDirCtrl( this, ID_DIRCTRL, _T("/"),
wxDefaultPosition,
wxSize(200,200),
wxTR_HAS_BUTTONS |
long cookie = 0;
// default to root dir
wxTreeItemId item = m_dir->GetFirstChild(m_dir->GetRootItem(), cookie);
-
+
if (!m_path.IsEmpty() && (m_path != wxT("/")) && (m_dir->m_paths.Count() > 1))
{
size_t count = m_dir->m_paths.GetCount();
if (m_path.Find( m_dir->m_paths[i] ) == 0)
{
path = m_dir->m_paths[i];
-
+
for (size_t j = 0; j < i; j++)
item = m_dir->GetNextChild(m_dir->GetRootItem(), cookie);
-
+
wxStringTokenizer tk2(path, wxFILE_SEP_PATH, wxTOKEN_STRTOK);
for (size_t h = 0; h < tk2.CountTokens(); h++)
tk.GetNextToken();
-
+
break;
}
}