From 69fbde7058ec75c0dc5e39bb4118582e6d9c5ab7 Mon Sep 17 00:00:00 2001 From: marioalexis Date: Thu, 3 Apr 2025 00:26:24 -0300 Subject: [PATCH] Fem: Rename VectorMode view property to Component --- src/Mod/Fem/Gui/TaskPostBoxes.cpp | 26 ++++----- src/Mod/Fem/Gui/TaskPostDisplay.ui | 22 +------- src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp | 56 ++++++++++++++----- src/Mod/Fem/Gui/ViewProviderFemPostObject.h | 6 +- 4 files changed, 61 insertions(+), 49 deletions(-) diff --git a/src/Mod/Fem/Gui/TaskPostBoxes.cpp b/src/Mod/Fem/Gui/TaskPostBoxes.cpp index 3989857ce5..37047f9883 100644 --- a/src/Mod/Fem/Gui/TaskPostBoxes.cpp +++ b/src/Mod/Fem/Gui/TaskPostBoxes.cpp @@ -392,7 +392,7 @@ TaskPostDisplay::TaskPostDisplay(ViewProviderFemPostObject* view, QWidget* paren updateEnumerationList(getTypedView()->DisplayMode, ui->Representation); updateEnumerationList(getTypedView()->Field, ui->Field); - updateEnumerationList(getTypedView()->VectorMode, ui->VectorMode); + updateEnumerationList(getTypedView()->Component, ui->VectorMode); // get Transparency from ViewProvider int trans = getTypedView()->Transparency.getValue(); @@ -432,18 +432,18 @@ void TaskPostDisplay::onRepresentationActivated(int i) { getTypedView()->DisplayMode.setValue(i); updateEnumerationList(getTypedView()->Field, ui->Field); - updateEnumerationList(getTypedView()->VectorMode, ui->VectorMode); + updateEnumerationList(getTypedView()->Component, ui->VectorMode); } void TaskPostDisplay::onFieldActivated(int i) { getTypedView()->Field.setValue(i); - updateEnumerationList(getTypedView()->VectorMode, ui->VectorMode); + updateEnumerationList(getTypedView()->Component, ui->VectorMode); } void TaskPostDisplay::onVectorModeActivated(int i) { - getTypedView()->VectorMode.setValue(i); + getTypedView()->Component.setValue(i); } void TaskPostDisplay::onTransparencyValueChanged(int i) @@ -660,7 +660,7 @@ TaskPostDataAlongLine::TaskPostDataAlongLine(ViewProviderFemPostDataAlongLine* v updateEnumerationList(getTypedView()->DisplayMode, ui->Representation); updateEnumerationList(getTypedView()->Field, ui->Field); - updateEnumerationList(getTypedView()->VectorMode, ui->VectorMode); + updateEnumerationList(getTypedView()->Component, ui->VectorMode); } TaskPostDataAlongLine::~TaskPostDataAlongLine() @@ -963,7 +963,7 @@ void TaskPostDataAlongLine::onRepresentationActivated(int i) { getTypedView()->DisplayMode.setValue(i); updateEnumerationList(getTypedView()->Field, ui->Field); - updateEnumerationList(getTypedView()->VectorMode, ui->VectorMode); + updateEnumerationList(getTypedView()->Component, ui->VectorMode); } void TaskPostDataAlongLine::onFieldActivated(int i) @@ -971,15 +971,15 @@ void TaskPostDataAlongLine::onFieldActivated(int i) getTypedView()->Field.setValue(i); std::string FieldName = ui->Field->currentText().toStdString(); getObject()->PlotData.setValue(FieldName); - updateEnumerationList(getTypedView()->VectorMode, ui->VectorMode); + updateEnumerationList(getTypedView()->Component, ui->VectorMode); - auto vecMode = static_cast(getView())->VectorMode.getEnum(); + auto vecMode = static_cast(getView())->Component.getEnum(); getObject()->PlotDataComponent.setValue(vecMode); } void TaskPostDataAlongLine::onVectorModeActivated(int i) { - getTypedView()->VectorMode.setValue(i); + getTypedView()->Component.setValue(i); int comp = ui->VectorMode->currentIndex(); getObject()->PlotDataComponent.setValue(comp); } @@ -1628,7 +1628,7 @@ void TaskPostContours::onFieldsChanged(int idx) // we must also update the VectorMode if (!getObject()->NoColor.getValue()) { auto newMode = getTypedObject()->VectorMode.getValue(); - getTypedView()->VectorMode.setValue(newMode); + getTypedView()->Component.setValue(newMode); } } @@ -1644,7 +1644,7 @@ void TaskPostContours::onVectorModeChanged(int idx) updateFields(); // now we can set the VectorMode if (!getObject()->NoColor.getValue()) { - getTypedView()->VectorMode.setValue(idx); + getTypedView()->Component.setValue(idx); } } } @@ -1668,9 +1668,9 @@ void TaskPostContours::onNoColorChanged(bool state) // the ViewProvider field starts with an additional entry "None", // therefore the desired new setting is idx + 1 getTypedView()->Field.setValue(currentField + 1); - // set the VectorMode too + // set the Component too auto currentMode = getTypedObject()->VectorMode.getValue(); - getTypedView()->VectorMode.setValue(currentMode); + getTypedView()->Component.setValue(currentMode); } recompute(); } diff --git a/src/Mod/Fem/Gui/TaskPostDisplay.ui b/src/Mod/Fem/Gui/TaskPostDisplay.ui index 0447dfcbdb..a123e7ade3 100644 --- a/src/Mod/Fem/Gui/TaskPostDisplay.ui +++ b/src/Mod/Fem/Gui/TaskPostDisplay.ui @@ -113,7 +113,7 @@ - Vector + Component @@ -125,26 +125,6 @@ 0 - - - Magnitute - - - - - X - - - - - Y - - - - - Z - - diff --git a/src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp b/src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp index 86b13b39c1..0eaeb5047b 100644 --- a/src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp +++ b/src/Mod/Fem/Gui/ViewProviderFemPostObject.cpp @@ -160,11 +160,11 @@ ViewProviderFemPostObject::ViewProviderFemPostObject() "Coloring", App::Prop_None, "Select the field used for calculating the color"); - ADD_PROPERTY_TYPE(VectorMode, + ADD_PROPERTY_TYPE(Component, ((long)0), "Coloring", App::Prop_None, - "Select what to show for a vector field"); + "Select component to display"); ADD_PROPERTY_TYPE(Transparency, (0), "Object Style", @@ -453,8 +453,8 @@ void ViewProviderFemPostObject::updateProperties() Field.purgeTouched(); // Vector mode - if (VectorMode.hasEnums() && VectorMode.getValue() >= 0) { - val = VectorMode.getValueAsString(); + if (Component.hasEnums() && Component.getValue() >= 0) { + val = Component.getValueAsString(); } colorArrays.clear(); @@ -469,27 +469,41 @@ void ViewProviderFemPostObject::updateProperties() } if (data->GetNumberOfComponents() == 1) { + // scalar colorArrays.emplace_back("Not a vector"); } else { colorArrays.emplace_back("Magnitude"); - if (data->GetNumberOfComponents() >= 2) { + if (data->GetNumberOfComponents() == 2) { + // 2D vector colorArrays.emplace_back("X"); colorArrays.emplace_back("Y"); } - if (data->GetNumberOfComponents() >= 3) { + else if (data->GetNumberOfComponents() == 3) { + // 3D vector + colorArrays.emplace_back("X"); + colorArrays.emplace_back("Y"); colorArrays.emplace_back("Z"); } + else if (data->GetNumberOfComponents() == 6) { + // symmetric tensor + colorArrays.emplace_back("XX"); + colorArrays.emplace_back("YY"); + colorArrays.emplace_back("ZZ"); + colorArrays.emplace_back("XY"); + colorArrays.emplace_back("YZ"); + colorArrays.emplace_back("ZX"); + } } } - VectorMode.setValue(empty); + Component.setValue(empty); m_vectorEnum.setEnums(colorArrays); - VectorMode.setValue(m_vectorEnum); + Component.setValue(m_vectorEnum); it = std::ranges::find(colorArrays, val); if (!val.empty() && it != colorArrays.end()) { - VectorMode.setValue(val.c_str()); + Component.setValue(val.c_str()); } m_blockPropertyChanges = false; @@ -693,10 +707,10 @@ void ViewProviderFemPostObject::WriteColorData(bool ResetColorBarRange) return; } - int component = VectorMode.getValue() - 1; // 0 is either "Not a vector" or magnitude, - // for -1 is correct for magnitude. - // x y and z are one number too high - if (strcmp(VectorMode.getValueAsString(), "Not a vector") == 0) { + int component = Component.getValue() - 1; // 0 is either "Not a vector" or magnitude, + // for -1 is correct for magnitude. + // x y and z are one number too high + if (strcmp(Component.getValueAsString(), "Not a vector") == 0) { component = 0; } @@ -920,7 +934,7 @@ void ViewProviderFemPostObject::onChanged(const App::Property* prop) updateProperties(); WriteColorData(ResetColorBarRange); } - else if (prop == &VectorMode && setupPipeline()) { + else if (prop == &Component && setupPipeline()) { WriteColorData(ResetColorBarRange); } else if (prop == &Transparency) { @@ -1108,3 +1122,17 @@ void ViewProviderFemPostObject::onSelectionChanged(const Gui::SelectionChanges& } } } + +void ViewProviderFemPostObject::handleChangedPropertyName(Base::XMLReader& reader, + const char* typeName, + const char* propName) +{ + if (strcmp(propName, "Field") == 0 && strcmp(typeName, "App::PropertyEnumeration") == 0) { + App::PropertyEnumeration field; + field.Restore(reader); + Component.setValue(field.getValue()); + } + else { + Gui::ViewProviderDocumentObject::handleChangedPropertyName(reader, typeName, propName); + } +} diff --git a/src/Mod/Fem/Gui/ViewProviderFemPostObject.h b/src/Mod/Fem/Gui/ViewProviderFemPostObject.h index 19aa86be95..0e2e74954e 100644 --- a/src/Mod/Fem/Gui/ViewProviderFemPostObject.h +++ b/src/Mod/Fem/Gui/ViewProviderFemPostObject.h @@ -81,7 +81,7 @@ public: ~ViewProviderFemPostObject() override; App::PropertyEnumeration Field; - App::PropertyEnumeration VectorMode; + App::PropertyEnumeration Component; App::PropertyPercent Transparency; App::PropertyBool PlainColorEdgeOnSurface; App::PropertyColor EdgeColor; @@ -130,6 +130,10 @@ public: // //@} protected: + void handleChangedPropertyName(Base::XMLReader& reader, + const char* typeName, + const char* propName) override; + virtual void setupTaskDialog(TaskDlgPost* dlg); bool setupPipeline(); void updateVtk();