Made filesystem viewer to show folders and subfolders right. Only bug remaining (supposed to be simple) is that after the first folder recursion the searching stops.

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@826 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
XTra.KrazzY 2008-10-10 13:23:10 +00:00
parent 08984104d7
commit 15c3ea50fc
2 changed files with 44 additions and 6 deletions

View File

@ -51,14 +51,11 @@ CFilesystemViewer::CFilesystemViewer(const std::string fileName, wxWindow* paren
CreateGUIControls();
// shuffle2: things only appear in the tree for me when using debug build; why? :<
// TODO: make proper looking dirs
wxTreeItemId dirId = NULL;
for(u32 a = 1; a < Our_Files.size(); ++a)
{
m_Treectrl->AppendItem(RootId, wxString::Format(_T("%s"), Our_Files[a]->m_FullPath));
fileIter beginning = Our_Files.begin(), pos = Our_Files.begin();
CreateDirectoryTree(RootId, beginning, pos, "\\");
//if(Our_Files[a]->IsDirectory())
}
m_Treectrl->Expand(RootId);
// Disk header and apploader
@ -99,6 +96,40 @@ CFilesystemViewer::~CFilesystemViewer()
delete OpenISO;
}
void CFilesystemViewer::CreateDirectoryTree(wxTreeItemId& parent,
fileIter& begin,
fileIter& iterPos,
char *directory)
{
//TODO(XK): Fix more than one folder/file not appearing in the root
if(iterPos == begin)
++iterPos;
char *name = (char *)((*iterPos)->m_FullPath);
do
{
if((*iterPos)->IsDirectory()) {
char *dirName;
name[strlen(name) - 1] = '\0';
dirName = strrchr(name, '\\');
if(!dirName)
dirName = name;
else
dirName++;
//filename = strrchr(name, '\\'); ++filename;
wxTreeItemId item = m_Treectrl->AppendItem(parent, wxT(dirName));
CreateDirectoryTree(item, begin, ++iterPos, name);
} else {
//filename = strrchr(name, '\\'); ++filename;
m_Treectrl->AppendItem(parent, wxT(strrchr(name, '\\') + 1));
}
++iterPos;
name = (char *)((*iterPos)->m_FullPath);
} while(strstr(name, directory));
}
void CFilesystemViewer::CreateGUIControls()
{
m_Close = new wxButton(this, ID_CLOSE, wxT("Close"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator);

View File

@ -25,6 +25,8 @@
#include <wx/treectrl.h>
#include <wx/gbsizer.h>
#include <string>
#include "Filesystem.h"
#undef FILESYSTEM_VIEWER_STYLE
#define FILESYSTEM_VIEWER_STYLE wxCAPTION | wxSYSTEM_MENU | wxDIALOG_NO_PARENT | wxCLOSE_BOX
@ -132,6 +134,11 @@ class CFilesystemViewer : public wxDialog
void OnExtractFile(wxCommandEvent& event);
void OnReplaceFile(wxCommandEvent& event);
void OnRenameFile(wxCommandEvent& event);
typedef std::vector<const DiscIO::SFileInfo *>::iterator fileIter;
void CreateDirectoryTree(wxTreeItemId& parent,fileIter& begin,
fileIter& iterPos, char *directory);
};
#endif