From 58f9059a1ffbb7ea9e16f60600fd300f113043b2 Mon Sep 17 00:00:00 2001 From: codereader Date: Tue, 17 Nov 2020 07:20:54 +0100 Subject: [PATCH] #5108: Add VirtualFileSystem::getArchiveExtensions() method, list PK4 files in MapSelector --- include/ifilesystem.h | 3 +++ radiant/ui/mapselector/MapSelector.cpp | 10 ++++++++++ radiantcore/vfs/Doom3FileSystem.cpp | 5 +++++ radiantcore/vfs/Doom3FileSystem.h | 2 ++ 4 files changed, 20 insertions(+) diff --git a/include/ifilesystem.h b/include/ifilesystem.h index 4eb57fe707..1a33a9a587 100644 --- a/include/ifilesystem.h +++ b/include/ifilesystem.h @@ -146,6 +146,9 @@ class VirtualFileSystem : /// \brief Shuts down the filesystem. virtual void shutdown() = 0; + // Returns the extension set this VFS instance has been initialised with + virtual const ExtensionSet& getArchiveExtensions() const = 0; + // greebo: Adds/removes observers to/from the VFS virtual void addObserver(Observer& observer) = 0; virtual void removeObserver(Observer& observer) = 0; diff --git a/radiant/ui/mapselector/MapSelector.cpp b/radiant/ui/mapselector/MapSelector.cpp index 289633cbf5..0dfef59823 100644 --- a/radiant/ui/mapselector/MapSelector.cpp +++ b/radiant/ui/mapselector/MapSelector.cpp @@ -1,7 +1,9 @@ #include "MapSelector.h" #include "i18n.h" +#include "ifilesystem.h" +#include "string/case_conv.h" #include #include @@ -90,6 +92,14 @@ void MapSelector::setupTreeView(wxWindow* parent) fileExtensions.insert(pattern.extension); } + // Add all PK extensions too + const auto& pakExtensions = GlobalFileSystem().getArchiveExtensions(); + + for (const auto& extension : pakExtensions) + { + fileExtensions.insert(string::to_lower_copy(extension)); + } + _treeView->SetFileExtensions(fileExtensions); } diff --git a/radiantcore/vfs/Doom3FileSystem.cpp b/radiantcore/vfs/Doom3FileSystem.cpp index 9c759eba20..c7c96f30ee 100644 --- a/radiantcore/vfs/Doom3FileSystem.cpp +++ b/radiantcore/vfs/Doom3FileSystem.cpp @@ -352,6 +352,11 @@ void Doom3FileSystem::shutdown() rMessage() << "Filesystem shut down" << std::endl; } +const VirtualFileSystem::ExtensionSet& Doom3FileSystem::getArchiveExtensions() const +{ + return _allowedExtensions; +} + void Doom3FileSystem::addObserver(Observer& observer) { _observers.insert(&observer); diff --git a/radiantcore/vfs/Doom3FileSystem.h b/radiantcore/vfs/Doom3FileSystem.h index 6312759bbd..436b04a417 100644 --- a/radiantcore/vfs/Doom3FileSystem.h +++ b/radiantcore/vfs/Doom3FileSystem.h @@ -34,6 +34,8 @@ class Doom3FileSystem : void initialise(const SearchPaths& vfsSearchPaths, const ExtensionSet& allowedExtensions) override; void shutdown() override; + const ExtensionSet& getArchiveExtensions() const override; + int getFileCount(const std::string& filename) override; ArchiveFilePtr openFile(const std::string& filename) override; ArchiveTextFilePtr openTextFile(const std::string& filename) override;