From 2d344cd7e142598f5e1d0b04cedf7d848cdf05f8 Mon Sep 17 00:00:00 2001 From: codereader Date: Fri, 29 Jul 2022 18:27:16 +0200 Subject: [PATCH] #6021: Migrate EClassTreeBuilder population code to use the base methods in ThreadedDeclarationTreePopulator --- radiant/ui/eclasstree/EClassTree.cpp | 2 +- radiant/ui/eclasstree/EClassTreeBuilder.cpp | 62 ++++++++------------- radiant/ui/eclasstree/EClassTreeBuilder.h | 5 +- 3 files changed, 24 insertions(+), 45 deletions(-) diff --git a/radiant/ui/eclasstree/EClassTree.cpp b/radiant/ui/eclasstree/EClassTree.cpp index 893929a4f1..0aed2687d5 100644 --- a/radiant/ui/eclasstree/EClassTree.cpp +++ b/radiant/ui/eclasstree/EClassTree.cpp @@ -52,7 +52,7 @@ void EClassTree::onTreeViewPopulationFinished(wxutil::ResourceTreeView::Populati if (!className.empty()) { - _eclassView->SetSelectedFullname(className); + _eclassView->SetSelectedDeclName(className); } else { diff --git a/radiant/ui/eclasstree/EClassTreeBuilder.cpp b/radiant/ui/eclasstree/EClassTreeBuilder.cpp index 32d60d1676..28dabfdf41 100644 --- a/radiant/ui/eclasstree/EClassTreeBuilder.cpp +++ b/radiant/ui/eclasstree/EClassTreeBuilder.cpp @@ -1,13 +1,9 @@ #include "EClassTreeBuilder.h" #include "EClassTree.h" -#include "ifavourites.h" - -#include "wxutil/Bitmap.h" #include "wxutil/dataview/VFSTreePopulator.h" #include "wxutil/dataview/TreeModel.h" -#include "wxutil/dataview/TreeViewItemStyle.h" namespace ui { @@ -18,11 +14,9 @@ namespace } EClassTreeBuilder::EClassTreeBuilder(const wxutil::DeclarationTreeView::Columns& columns) : - ThreadedDeclarationTreePopulator(decl::Type::EntityDef, columns), + ThreadedDeclarationTreePopulator(decl::Type::EntityDef, columns, ENTITY_ICON), _columns(columns) -{ - _entityIcon.CopyFromBitmap(wxutil::GetLocalBitmap(ENTITY_ICON)); -} +{} EClassTreeBuilder::~EClassTreeBuilder() { @@ -35,45 +29,33 @@ void EClassTreeBuilder::PopulateModel(const wxutil::TreeModel::Ptr& model) ThrowIfCancellationRequested(); - GlobalEntityClassManager().forEachEntityClass(*this); - - ThrowIfCancellationRequested(); -} - -void EClassTreeBuilder::SortModel(const wxutil::TreeModel::Ptr& model) -{ - model->SortModelByColumn(_columns.leafName); -} - -void EClassTreeBuilder::visit(const IEntityClassPtr& eclass) -{ - ThrowIfCancellationRequested(); + GlobalEntityClassManager().forEachEntityClass([&](const IEntityClassPtr& eclass) + { + ThrowIfCancellationRequested(); - // Prefix mod name - std::string fullPath = eclass->getModName() + "/"; + // Prefix mod name + auto fullPath = eclass->getModName() + "/"; - // Prefix inheritance path (recursively) - fullPath += GetInheritancePathRecursively(*eclass); + // Prefix inheritance path (recursively) + fullPath += GetInheritancePathRecursively(*eclass); - // The entityDef name itself - fullPath += eclass->getDeclName(); + // The entityDef name itself + fullPath += eclass->getDeclName(); - // Let the VFSTreePopulator sort this into the tree - _treePopulator->addPath(fullPath, [&](wxutil::TreeModel::Row& row, - const std::string& path, const std::string& leafName, bool isFolder) + // Let the VFSTreePopulator sort this into the tree + _treePopulator->addPath(fullPath, [&](wxutil::TreeModel::Row& row, + const std::string& path, const std::string& leafName, bool isFolder) { - bool isFavourite = IsFavourite(leafName); + AssignValuesToRow(row, path, leafName, leafName, false); + }); + }); - row[_columns.iconAndName] = wxVariant(wxDataViewIconText(leafName, _entityIcon)); - row[_columns.iconAndName] = wxutil::TreeViewItemStyle::Declaration(isFavourite); - row[_columns.fullName] = leafName; - row[_columns.leafName] = leafName; - row[_columns.declName] = leafName; - row[_columns.isFolder] = false; - row[_columns.isFavourite] = isFavourite; + ThrowIfCancellationRequested(); +} - row.SendItemAdded(); - }); +void EClassTreeBuilder::SortModel(const wxutil::TreeModel::Ptr& model) +{ + model->SortModelByColumn(_columns.leafName); } std::string EClassTreeBuilder::GetInheritancePathRecursively(IEntityClass& eclass) diff --git a/radiant/ui/eclasstree/EClassTreeBuilder.h b/radiant/ui/eclasstree/EClassTreeBuilder.h index 24c64a9a58..1134f9342e 100644 --- a/radiant/ui/eclasstree/EClassTreeBuilder.h +++ b/radiant/ui/eclasstree/EClassTreeBuilder.h @@ -16,8 +16,7 @@ namespace ui * Visitor class to retrieve entityDef names and sort them into the hierarchy tree. */ class EClassTreeBuilder final : - public wxutil::ThreadedDeclarationTreePopulator, - public EntityClassVisitor + public wxutil::ThreadedDeclarationTreePopulator { private: const wxutil::DeclarationTreeView::Columns& _columns; @@ -31,8 +30,6 @@ class EClassTreeBuilder final : ~EClassTreeBuilder(); - void visit(const IEntityClassPtr& eclass) override; - protected: void PopulateModel(const wxutil::TreeModel::Ptr& model) override; void SortModel(const wxutil::TreeModel::Ptr& model) override;