diff --git a/libs/wxutil/DeclFileInfo.h b/libs/wxutil/DeclFileInfo.h index 2f2b4d1cec..c49e275834 100644 --- a/libs/wxutil/DeclFileInfo.h +++ b/libs/wxutil/DeclFileInfo.h @@ -30,7 +30,7 @@ class DeclFileInfo : auto sizer = new wxBoxSizer(wxHORIZONTAL); - sizer->Add(new wxStaticText(this, wxID_ANY, decl::getTypeName(declType)), 0, wxALIGN_CENTER_VERTICAL, 0); + sizer->Add(new wxStaticText(this, wxID_ANY, decl::getTypeName(declType) + " "), 0, wxALIGN_CENTER_VERTICAL, 0); sizer->Add(_nameLabel, 0, wxALIGN_CENTER_VERTICAL, 0); sizer->Add(new wxStaticText(this, wxID_ANY, _(" defined in ")), 0, wxALIGN_CENTER_VERTICAL, 0); sizer->Add(_fileLabel, 0, wxALIGN_CENTER_VERTICAL, 0); diff --git a/radiant/ui/einspector/SkinChooser.cpp b/radiant/ui/einspector/SkinChooser.cpp index 75dc00f6ed..c369142ab7 100644 --- a/radiant/ui/einspector/SkinChooser.cpp +++ b/radiant/ui/einspector/SkinChooser.cpp @@ -31,6 +31,7 @@ SkinChooser::SkinChooser() : _treeStore(new wxutil::TreeModel(_columns)), _treeView(nullptr), _materialsList(nullptr), + _fileInfo(nullptr), _lastSkin("") { FitToScreen(0.6f, 0.6f); @@ -100,13 +101,16 @@ void SkinChooser::populateWindow() sigc::mem_fun(*_preview, &wxutil::ModelPreview::queueDraw) ); + _fileInfo = new wxutil::DeclFileInfo(leftPanel, decl::Type::Skin); + leftPanel->GetSizer()->Add(_treeView, 1, wxEXPAND); + leftPanel->GetSizer()->Add(_fileInfo, 0, wxEXPAND | wxTOP, 6); leftPanel->GetSizer()->Add(_materialsList, 0, wxEXPAND | wxTOP, 6); // Pack treeview and preview splitter->SplitVertically(leftPanel, _preview->getWidget()); - FitToScreen(0.6f, 0.8f); + FitToScreen(0.8f, 0.8f); // Set the default size of the window splitter->SetSashPosition(static_cast(GetSize().GetWidth() * 0.3f)); @@ -224,7 +228,7 @@ void SkinChooser::populateSkins() row[_columns.displayName] = wxVariant(wxDataViewIconText(displayPath, !isFolder ? skinIcon : folderIcon)); - row[_columns.fullName] = leafName; + row[_columns.fullName] = path; row[_columns.isFolder] = isFolder; }); } @@ -303,9 +307,23 @@ void SkinChooser::onMainFrameShuttingDown() void SkinChooser::handleSelectionChange() { + auto selectedSkin = getSelectedSkin(); + // Set the model preview to show the model with the selected skin _preview->setModel(_model); - _preview->setSkin(getSelectedSkin()); + _preview->setSkin(selectedSkin); + + if (!selectedSkin.empty()) + { + _fileInfo->setName(selectedSkin); + auto& skin = GlobalModelSkinCache().capture(selectedSkin); + _fileInfo->setPath(skin.getSkinFileName()); + } + else + { + _fileInfo->setName("-"); + _fileInfo->setPath("-"); + } updateMaterialsList(); } diff --git a/radiant/ui/einspector/SkinChooser.h b/radiant/ui/einspector/SkinChooser.h index aec23f7e36..a6532b8804 100644 --- a/radiant/ui/einspector/SkinChooser.h +++ b/radiant/ui/einspector/SkinChooser.h @@ -8,6 +8,7 @@ #include "wxutil/dialog/DialogBase.h" #include "wxutil/preview/ModelPreview.h" +#include "wxutil/DeclFileInfo.h" #include #include "wxutil/dataview/TreeModel.h" @@ -52,6 +53,8 @@ class SkinChooser : wxutil::TreeView* _treeView; MaterialsList* _materialsList; + wxutil::DeclFileInfo* _fileInfo; + // The model name to use for skin matching std::string _model;