X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModuleBase%2FModuleBase_WidgetConcealedObjects.cpp;h=350ccff14f5349b2874bde0db5568ae4901c6bab;hb=374a366d81778aa27ed32cc080c0f95bdb03f1c5;hp=5154ea04a4410abce48dca8522c6c22579351dcf;hpb=c4eab94a20a0d93100549a210582d46409fec1cc;p=modules%2Fshaper.git diff --git a/src/ModuleBase/ModuleBase_WidgetConcealedObjects.cpp b/src/ModuleBase/ModuleBase_WidgetConcealedObjects.cpp index 5154ea04a..350ccff14 100644 --- a/src/ModuleBase/ModuleBase_WidgetConcealedObjects.cpp +++ b/src/ModuleBase/ModuleBase_WidgetConcealedObjects.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2014-2019 CEA/DEN, EDF R&D +// Copyright (C) 2014-2021 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -21,6 +21,7 @@ #include #include +#include #include #include #include @@ -37,6 +38,8 @@ #include #include +#include + const int DEFAULT_NAME_COLUMN_WIDTH = 200; ModuleBase_WidgetConcealedObjects::ModuleBase_WidgetConcealedObjects(QWidget* theParent, @@ -44,6 +47,10 @@ ModuleBase_WidgetConcealedObjects::ModuleBase_WidgetConcealedObjects(QWidget* th : ModuleBase_ModelWidget(theParent, theData) { myBaseShapeAttribute = theData->getProperty("base_shape_attribute"); + std::string aPickParents = theData->getProperty("pick_concealed_parents"); + std::transform(aPickParents.begin(), aPickParents.end(), aPickParents.begin(), ::tolower); + myPickConcealedParents = aPickParents == "1" || aPickParents == "true" || aPickParents == "yes"; + QGridLayout* aMainLay = new QGridLayout(this); ModuleBase_Tools::adjustMargins(aMainLay); @@ -66,14 +73,12 @@ bool ModuleBase_WidgetConcealedObjects::storeValueCustom() DataPtr aData = myFeature->data(); AttributeRefListPtr anAttributeList = aData->reflist(attributeID()); anAttributeList->clear(); - int aSize1 = anAttributeList->size(false); for (int i = 0, aSize = myView->rowCount(); i < aSize; i++) { QCheckBox* aButton = dynamic_cast(myView->cellWidget(i, 0)->findChild()); if (aButton->isChecked()) anAttributeList->append(myConcealedResults[i]); } - int aSize = anAttributeList->size(false); return true; } @@ -92,11 +97,24 @@ bool ModuleBase_WidgetConcealedObjects::restoreValueCustom() myBaseFeature = aBaseFeature; if (myBaseFeature.get()) { std::list > aResults; + std::set aParents; ModelAPI_Tools::getConcealedResults(myBaseFeature, aResults); std::list >::const_iterator anIt = aResults.begin(), aLast = aResults.end(); for (; anIt != aLast; anIt++) { ResultPtr aResult = *anIt; + if (myPickConcealedParents) { + // pick the parent result of the concealed object + ResultBodyPtr aRootParent = ModelAPI_Tools::bodyOwner(aResult, true); + if (aRootParent) { + if (aParents.find(aRootParent) == aParents.end()) { + aResult = aRootParent; + aParents.insert(aRootParent); + } + else // do not add parent compound once again + continue; + } + } int aRowId = myView->rowCount(); addViewRow(aResult); @@ -107,7 +125,6 @@ bool ModuleBase_WidgetConcealedObjects::restoreValueCustom() DataPtr aData = myFeature->data(); AttributeRefListPtr anAttributeList = aData->reflist(attributeID()); - int aSize = anAttributeList->size(); for (int i = 0, aSize = myView->rowCount(); i < aSize; i++) { ResultPtr aResult = myConcealedResults[i]; QCheckBox* aButton = @@ -143,7 +160,8 @@ void ModuleBase_WidgetConcealedObjects::addViewRow( aVisibilityBtn->setChecked(false); myView->setCellWidget(anId, 0, aVisibilityWdg); - myView->setItem(anId, 1, new QTableWidgetItem(theResult->data()->name().c_str())); + myView->setItem(anId, 1, + new QTableWidgetItem(QString::fromStdWString(theResult->data()->name()))); if (anId == 1) { myView->setColumnWidth(0, myView->verticalHeader()->defaultSectionSize()); @@ -151,7 +169,7 @@ void ModuleBase_WidgetConcealedObjects::addViewRow( } } -void ModuleBase_WidgetConcealedObjects::onItemToggled(bool theState) +void ModuleBase_WidgetConcealedObjects::onItemToggled(bool /*theState*/) { emit valuesChanged(); updateObject(myFeature);