Skip to content

Commit

Permalink
#5537: DeclarationSelector is using its own default set of columns, u…
Browse files Browse the repository at this point in the history
…nless specified otherwise
  • Loading branch information
codereader committed Sep 16, 2022
1 parent 5e6b7ae commit 2a3ee16
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 15 deletions.
19 changes: 17 additions & 2 deletions radiant/ui/common/DeclarationSelector.cpp
Expand Up @@ -3,6 +3,10 @@
namespace ui
{

DeclarationSelector::DeclarationSelector(wxWindow* parent, decl::Type declType) :
DeclarationSelector(parent, declType, CreateDefaultColumns())
{}

DeclarationSelector::DeclarationSelector(wxWindow* parent, decl::Type declType,
const wxutil::DeclarationTreeView::Columns& columns) :
wxPanel(parent),
Expand Down Expand Up @@ -32,12 +36,17 @@ void DeclarationSelector::createTreeView()
GetSizer()->Add(_treeView, 1, wxEXPAND);
}

wxutil::DeclarationTreeView* DeclarationSelector::GetTreeView()
wxutil::DeclarationTreeView* DeclarationSelector::GetTreeView() const
{
return _treeView;
}

std::string DeclarationSelector::GetSelectedDeclName()
const wxutil::DeclarationTreeView::Columns& DeclarationSelector::GetColumns() const
{
return _columns;
}

std::string DeclarationSelector::GetSelectedDeclName() const
{
return _treeView->GetSelectedDeclName();
}
Expand All @@ -52,6 +61,12 @@ void DeclarationSelector::PopulateTreeView(const wxutil::IResourceTreePopulator:
_treeView->Populate(populator);
}

const wxutil::DeclarationTreeView::Columns& DeclarationSelector::CreateDefaultColumns()
{
static wxutil::DeclarationTreeView::Columns _treeViewColumns;
return _treeViewColumns;
}

void DeclarationSelector::onTreeViewSelectionChanged(wxDataViewEvent& ev)
{
// Invoke the virtual method
Expand Down
13 changes: 11 additions & 2 deletions radiant/ui/common/DeclarationSelector.h
Expand Up @@ -21,13 +21,17 @@ class DeclarationSelector :
wxutil::DeclarationTreeView* _treeView;

public:
// Construct a selector widget with the default set of tree view columns
DeclarationSelector(wxWindow* parent, decl::Type declType);

// Construct a selector widget with the given set of tree view columns
DeclarationSelector(wxWindow* parent, decl::Type declType, const wxutil::DeclarationTreeView::Columns& columns);

/**
* Return the declaration selected by the user, or an empty string if there
* was no selection.
*/
virtual std::string GetSelectedDeclName();
virtual std::string GetSelectedDeclName() const;

/**
* Set the given declaration name as the current selection, highlighting it
Expand All @@ -40,13 +44,18 @@ class DeclarationSelector :
virtual void SetSelectedDeclName(const std::string& declName);

protected:
wxutil::DeclarationTreeView* GetTreeView();
wxutil::DeclarationTreeView* GetTreeView() const;
const wxutil::DeclarationTreeView::Columns& GetColumns() const;

void PopulateTreeView(const wxutil::IResourceTreePopulator::Ptr& populator);

// Event method invoked when the tree view selection has been changed
virtual void onTreeViewSelectionChanged()
{}

// Default tree view columns. Subclasses can use a different set of columns if needed
static const wxutil::DeclarationTreeView::Columns& CreateDefaultColumns();

private:
void createTreeView();
void onTreeViewSelectionChanged(wxDataViewEvent& ev);
Expand Down
10 changes: 2 additions & 8 deletions radiant/ui/common/ShaderSelector.cpp
Expand Up @@ -77,20 +77,14 @@ class ThreadedMaterialLoader final :

ShaderSelector::ShaderSelector(wxWindow* parent, const std::function<void()>& selectionChanged,
TextureFilter textureFilter) :
DeclarationSelector(parent, decl::Type::Material, Columns()),
DeclarationSelector(parent, decl::Type::Material),
_textureFilter(textureFilter),
_selectionChanged(selectionChanged)
{
// Pack in info panel
createPreview();

PopulateTreeView(std::make_shared<ThreadedMaterialLoader>(Columns(), _textureFilter));
}

const wxutil::DeclarationTreeView::Columns& ShaderSelector::Columns()
{
static wxutil::DeclarationTreeView::Columns _shaderColumns;
return _shaderColumns;
PopulateTreeView(std::make_shared<ThreadedMaterialLoader>(GetColumns(), _textureFilter));
}

void ShaderSelector::createPreview()
Expand Down
3 changes: 0 additions & 3 deletions radiant/ui/common/ShaderSelector.h
Expand Up @@ -2,7 +2,6 @@

#include <memory>
#include "DeclarationSelector.h"
#include "wxutil/dataview/DeclarationTreeView.h"

#include "TexturePreviewCombo.h"

Expand Down Expand Up @@ -60,8 +59,6 @@ class ShaderSelector :

private:
void createPreview();

const wxutil::DeclarationTreeView::Columns& Columns();
};

} // namespace ui

0 comments on commit 2a3ee16

Please sign in to comment.