X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FPartSet%2FPartSet_WidgetShapeSelector.cpp;h=156a563b846ca3e0d6e120afb1a378ce06c78cbb;hb=1e06d55e5ca7dd930512a9ae565497f81ddb6b72;hp=14444e9da8d6f93873fd1fe2aab4ff1b7cf28561;hpb=8ac575427c615811d8188e80b5a8dc9a3855da1c;p=modules%2Fshaper.git diff --git a/src/PartSet/PartSet_WidgetShapeSelector.cpp b/src/PartSet/PartSet_WidgetShapeSelector.cpp old mode 100755 new mode 100644 index 14444e9da..156a563b8 --- a/src/PartSet/PartSet_WidgetShapeSelector.cpp +++ b/src/PartSet/PartSet_WidgetShapeSelector.cpp @@ -1,10 +1,25 @@ -// Copyright (C) 2014-20xx CEA/DEN, EDF R&D - -// File: PartSet_WidgetShapeSelector.cpp -// Created: 27 Nov 2014 -// Author: Vitaly Smetannikov +// Copyright (C) 2014-2020 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 "PartSet_WidgetShapeSelector.h" + +#include "PartSet_CenterPrs.h" #include "PartSet_Module.h" #include "PartSet_SketcherMgr.h" @@ -44,23 +59,27 @@ PartSet_WidgetShapeSelector::~PartSet_WidgetShapeSelector() } //******************************************************************** -bool PartSet_WidgetShapeSelector::activateSelectionAndFilters(bool toActivate) +void PartSet_WidgetShapeSelector::selectionFilters(QIntList& theModuleSelectionFilters, + SelectMgr_ListOfFilter& theSelectionFilters) { - bool aHasSelectionFilter = ModuleBase_WidgetShapeSelector::activateSelectionAndFilters - (toActivate); + ModuleBase_WidgetShapeSelector::selectionFilters(theModuleSelectionFilters, theSelectionFilters); + if (!myUseSketchPlane) { - XGUI_Workshop* aWorkshop = XGUI_Tools::workshop(myWorkshop); - PartSet_Module* aModule = dynamic_cast(aWorkshop->module()); - bool isUsePlaneFilterOnly = !toActivate; - aModule->sketchMgr()->activatePlaneFilter(isUsePlaneFilterOnly); + if (theModuleSelectionFilters.contains(SF_SketchPlaneFilter)) + theModuleSelectionFilters.removeAll(SF_SketchPlaneFilter); } - return aHasSelectionFilter; } //******************************************************************** bool PartSet_WidgetShapeSelector::isValidSelectionCustom(const ModuleBase_ViewerPrsPtr& thePrs) { - bool aValid = ModuleBase_WidgetShapeSelector::isValidSelectionCustom(thePrs); + bool aValid = false; + if (thePrs.get() && thePrs->interactive().get() && + thePrs->interactive()->IsKind(STANDARD_TYPE(PartSet_CenterPrs))) + aValid = true; // we should not check acceptSubShape for such presentation + else + aValid = ModuleBase_WidgetShapeSelector::isValidSelectionCustom(thePrs); + if (aValid) { ObjectPtr anObject = myWorkshop->selection()->getResult(thePrs); aValid = myExternalObjectMgr->isValidObject(anObject); @@ -76,38 +95,6 @@ void PartSet_WidgetShapeSelector::getGeomSelection(const ModuleBase_ViewerPrsPtr myExternalObjectMgr->getGeomSelection(thePrs, theObject, theShape, myWorkshop, sketch(), myIsInValidate); - /* - FeaturePtr aSelectedFeature = ModelAPI_Feature::feature(theObject); - std::shared_ptr aSPFeature = - std::dynamic_pointer_cast(aSelectedFeature); - // there is no a sketch feature is selected, but the shape exists, - // try to create an exernal object - // TODO: unite with the same functionality in PartSet_WidgetShapeSelector - if (aSPFeature.get() == NULL) { - ObjectPtr anExternalObject = ObjectPtr(); - GeomShapePtr anExternalShape = GeomShapePtr(); - if (myExternalObjectMgr->useExternal()) { - if (myExternalObjectMgr->canCreateExternal()) { - GeomShapePtr aShape = theShape; - if (!aShape.get()) { - ResultPtr aResult = myWorkshop->selection()->getResult(thePrs); - if (aResult.get()) - aShape = aResult->shape(); - } - if (aShape.get() != NULL && !aShape->isNull()) - anExternalObject = - myExternalObjectMgr->externalObject(theObject, aShape, sketch(), myIsInValidate); - } - else { /// use objects of found selection - anExternalObject = theObject; - anExternalShape = theShape; - } - } - /// the object is null if the selected feature is "external"(not sketch entity feature of the - /// current sketch) and it is not created by object manager - theObject = anExternalObject; - theShape = anExternalShape; - }*/ } //********************************************************************