X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FCollectionPlugin%2FCollectionPlugin_WidgetField.cpp;h=a2e291ed8a8f5d39e4a8386895e893fd5ffb3dc0;hb=0a332f5f970393cdf4d83f92aafd629dbe20b607;hp=7d091f00c31505f41d8a589473daeebcd7433ca1;hpb=d3e739dbd0889d27e230d33ff54ce82b2c6b9a13;p=modules%2Fshaper.git diff --git a/src/CollectionPlugin/CollectionPlugin_WidgetField.cpp b/src/CollectionPlugin/CollectionPlugin_WidgetField.cpp index 7d091f00c..a2e291ed8 100644 --- a/src/CollectionPlugin/CollectionPlugin_WidgetField.cpp +++ b/src/CollectionPlugin/CollectionPlugin_WidgetField.cpp @@ -1,8 +1,21 @@ -// Copyright (C) 2014-20xx CEA/DEN, EDF R&D - -// File: CollectionPlugin_WidgetField.cpp -// Created: 16 Nov 2016 -// Author: Vitaly SMETANNIKOV +// Copyright (C) 2014-2019 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 +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +// #include "CollectionPlugin_WidgetField.h" #include "CollectionPlugin_Field.h" @@ -485,7 +498,6 @@ bool CollectionPlugin_WidgetField::storeValueCustom() } } } - updateObject(myFeature); return true; } @@ -499,7 +511,9 @@ bool CollectionPlugin_WidgetField::restoreValueCustom() std::string aTypeStr = aSelList->selectionType(); if (aTypeStr == "") return false; // The attribute is not initialized + isBlocked = myShapeTypeCombo->blockSignals(true); myShapeTypeCombo->setCurrentIndex(getSelectionType(aTypeStr)); + myShapeTypeCombo->blockSignals(isBlocked); // Get number of components AttributeStringArrayPtr aStringsAttr = @@ -826,8 +840,12 @@ bool CollectionPlugin_WidgetField:: for (anIt = theValues.begin(); anIt != theValues.end(); anIt++) { ModuleBase_ViewerPrsPtr aValue = *anIt; ResultPtr aRes = std::dynamic_pointer_cast(aValue->object()); - if (theToValidate && aRes.get() && acceptSubShape(aValue->shape(), aRes)) - aSelected.append(aValue); + if (theToValidate && aRes.get()) { + if (myShapeTypeCombo->currentIndex() > 3) + aSelected.append(aValue); + else if (acceptSubShape(aValue->shape(), aRes)) + aSelected.append(aValue); + } } AttributeSelectionListPtr aSelList = myFeature->data()->selectionList(CollectionPlugin_Field::SELECTED_ID()); @@ -948,7 +966,7 @@ void CollectionPlugin_WidgetField::onTableEdited(int theRow, int theCol) //********************************************************************************** void CollectionPlugin_WidgetField::onShapeTypeChanged(int theType) { - activateSelectionAndFilters(theType == 5? false:true); + updateSelectionModesAndFilters(theType == 5? false:true); AttributeSelectionListPtr aSelList = myFeature->data()->selectionList(CollectionPlugin_Field::SELECTED_ID()); @@ -957,12 +975,16 @@ void CollectionPlugin_WidgetField::onShapeTypeChanged(int theType) if (aTypeName == aSelList->selectionType()) return; aSelList->setSelectionType(aTypeName); + // Updated event has to be sent here in case if type of shapes + // was changed from Part to any other in order to updater Apply button status + myFeature->data()->sendAttributeUpdated(aSelList.get()); //Clear old selection clearData(); aSelList->clear(); AttributeTablesPtr aTablesAttr = myFeature->data()->tables(CollectionPlugin_Field::VALUES_ID()); aTablesAttr->setSize(1, myNbComponentsSpn->value(), myDataTblList.size()); + updateObject(myFeature); emit valuesChanged(); }