diff options
| author | XTra.KrazzY <XTra.KrazzY@gmail.com> | 2008-10-10 13:23:10 +0000 |
|---|---|---|
| committer | XTra.KrazzY <XTra.KrazzY@gmail.com> | 2008-10-10 13:23:10 +0000 |
| commit | 15c3ea50fc2d62344ec8d1666ea07bc12f855552 (patch) | |
| tree | 4ce7f9f77b82629c74eb7fa9b206ee55ed735ec3 /Source/Core | |
| parent | 08984104d7a2920676bcc91602fcb9ab42c80bb8 (diff) | |
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
Diffstat (limited to 'Source/Core')
| -rw-r--r-- | Source/Core/DolphinWX/Src/FilesystemViewer.cpp | 43 | ||||
| -rw-r--r-- | Source/Core/DolphinWX/Src/FilesystemViewer.h | 7 |
2 files changed, 44 insertions, 6 deletions
diff --git a/Source/Core/DolphinWX/Src/FilesystemViewer.cpp b/Source/Core/DolphinWX/Src/FilesystemViewer.cpp index 0b5b56bb9c..da10f04759 100644 --- a/Source/Core/DolphinWX/Src/FilesystemViewer.cpp +++ b/Source/Core/DolphinWX/Src/FilesystemViewer.cpp @@ -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);
diff --git a/Source/Core/DolphinWX/Src/FilesystemViewer.h b/Source/Core/DolphinWX/Src/FilesystemViewer.h index 1dc2a19636..cbbf2b706a 100644 --- a/Source/Core/DolphinWX/Src/FilesystemViewer.h +++ b/Source/Core/DolphinWX/Src/FilesystemViewer.h @@ -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
|
