Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
#5567: Load name/description/type into basic controls, update advance…
…d page if changed and vice versa
  • Loading branch information
codereader committed Apr 2, 2021
1 parent bc0f15c commit 9585385
Showing 1 changed file with 47 additions and 2 deletions.
49 changes: 47 additions & 2 deletions radiant/ui/materials/editor/MaterialEditor.cpp
Expand Up @@ -334,6 +334,28 @@ void MaterialEditor::setupBasicMaterialPage()
onMaterialChanged();
});

auto description = getControl<wxTextCtrl>("BasicDescription");
description->Bind(wxEVT_TEXT, [description, this](wxCommandEvent& ev)
{
if (_material && !_materialUpdateInProgress)
{
_material->setDescription(description->GetValue().ToStdString());
updateMaterialPropertiesFromMaterial();
onMaterialChanged();
}
});

auto* typeDropdown = getControl<wxChoice>("BasicMaterialType");

typeDropdown->AppendString(""); // empty string for undefined

for (const auto& pair : shaders::SurfaceTypeMapping)
{
typeDropdown->AppendString(pair.first);
}

typeDropdown->Bind(wxEVT_CHOICE, &MaterialEditor::_onMaterialTypeChoice, this);

auto diffuseMapEntry = getControl<MapExpressionEntry>("BasicDiffuseImageEntry")->GetTextCtrl();
diffuseMapEntry->Bind(wxEVT_TEXT, [this](wxCommandEvent&) { _onBasicMapEntryChanged("BasicDiffuseImageEntry", IShaderLayer::DIFFUSE); });
auto bumpMapEntry = getControl<MapExpressionEntry>("BasicBumpImageEntry")->GetTextCtrl();
Expand Down Expand Up @@ -421,6 +443,7 @@ void MaterialEditor::setupMaterialProperties()
if (_material && !_materialUpdateInProgress)
{
_material->setDescription(description->GetValue().ToStdString());
updateBasicPageFromMaterial();
onMaterialChanged();
}
});
Expand Down Expand Up @@ -1495,6 +1518,24 @@ std::pair<IShaderLayer::Ptr, std::size_t> MaterialEditor::findMaterialStageByTyp

void MaterialEditor::updateBasicPageFromMaterial()
{
auto nameEntry = getControl<wxTextCtrl>("BasicName");
nameEntry->SetValue(_material ? _material->getName() : "");

getControl<wxTextCtrl>("BasicDescription")->SetValue(_material ? _material->getDescription() : "");

// Type dropdown
auto* materialTypeDropdown = getControl<wxChoice>("BasicMaterialType");

if (!_material || _material->getSurfaceType() == Material::SURFTYPE_DEFAULT)
{
materialTypeDropdown->Select(0);
}
else
{
auto surfType = shaders::getStringForSurfaceType(_material->getSurfaceType());
materialTypeDropdown->Select(materialTypeDropdown->FindString(surfType));
}

auto editorImgTabImage = getControl<TexturePreview>("BasicEditorImageTabImage");
auto diffuseTabImage = getControl<TexturePreview>("BasicDiffuseTabImage");
auto bumpTabImage = getControl<TexturePreview>("BasicBumpTabImage");
Expand Down Expand Up @@ -1668,6 +1709,8 @@ void MaterialEditor::updateMaterialPropertiesFromMaterial()

getControl<wxPanel>("MaterialNameAndDescription")->Enable(materialCanBeModified);
getControl<wxPanel>("MaterialEditorStageSettingsPanel")->Enable(materialCanBeModified);

getControl<wxPanel>("BasicEditorPanel")->Enable(materialCanBeModified);

auto nameEntry = getControl<wxTextCtrl>("MaterialName");
nameEntry->Enable(materialCanBeModified);
Expand Down Expand Up @@ -2127,10 +2170,12 @@ void MaterialEditor::updateStageControls()

void MaterialEditor::_onMaterialTypeChoice(wxCommandEvent& ev)
{
if (!_material) return;
if (!_material || _materialUpdateInProgress) return;

auto selectedString = getControl<wxChoice>("MaterialType")->GetStringSelection();
auto selectedString = static_cast<wxChoice*>(ev.GetEventObject())->GetStringSelection();
_material->setSurfaceType(shaders::getSurfaceTypeForString(selectedString.ToStdString()));

updateMaterialPropertiesFromMaterial();
}

void MaterialEditor::_onAddStageTransform(wxCommandEvent& ev)
Expand Down

0 comments on commit 9585385

Please sign in to comment.