if (aSelectionListAttr) {
// Store shapes type
TopAbs_ShapeEnum aCurrentType =
- ModuleBase_WidgetShapeSelector::shapeType(myTypeCombo->currentText());
+ ModuleBase_Tools::shapeType(myTypeCombo->currentText());
aSelectionListAttr->setSelectionType(myTypeCombo->currentText().toStdString());
}
return true;
if (aSelectionListAttr) {
// Restore shape type
- setCurrentShapeType(
- ModuleBase_WidgetShapeSelector::shapeType(aSelectionListAttr->selectionType().c_str()));
+ setCurrentShapeType(ModuleBase_Tools::shapeType(aSelectionListAttr->selectionType().c_str()));
updateSelectionList(aSelectionListAttr);
return true;
}
//********************************************************************
bool ModuleBase_WidgetMultiSelector::setSelectionCustom(const ModuleBase_ViewerPrs& thePrs)
{
+ TopoDS_Shape aShape = thePrs.shape();
+ if ((myTypeCombo->count() > 1) && (!aShape.IsNull())) {
+ TopAbs_ShapeEnum aType = ModuleBase_Tools::shapeType(myTypeCombo->currentText());
+ if (aShape.ShapeType() != aType)
+ return false;
+ }
ResultPtr aResult;
if (!thePrs.owner().IsNull()) {
ObjectPtr anObject = myWorkshop->selection()->getSelectableObject(thePrs.owner());
aSelectionListAttr->append(aResult, GeomShapePtr());
}
else {
- GeomShapePtr aShape = std::shared_ptr<GeomAPI_Shape>(new GeomAPI_Shape());
+ GeomShapePtr aShape(new GeomAPI_Shape());
aShape->setImpl(new TopoDS_Shape(aTDSShape));
// We can not select a result of our feature
if (aShape->isEqual(aResult->shape()))
{
activateShapeSelection();
QObjectPtrList anEmptyList;
+ // This method will call Selection changed event which will call onSelectionChanged
+ // To clear mySelection, myListControl and storeValue()
+ // So, we don't need to call it
myWorkshop->setSelected(anEmptyList);
- // Clear mySelection, myListControl and storeValue()
- onSelectionChanged();
}
//********************************************************************
for (int idx = 0; idx < myTypeCombo->count(); ++idx) {
aShapeTypeName = myTypeCombo->itemText(idx);
- TopAbs_ShapeEnum aRefType = ModuleBase_WidgetShapeSelector::shapeType(aShapeTypeName);
+ TopAbs_ShapeEnum aRefType = ModuleBase_Tools::shapeType(aShapeTypeName);
if(aRefType == theShapeType && idx != myTypeCombo->currentIndex()) {
myIsActive = false;
activateShapeSelection();
if (myIsActive) {
QString aNewType = myTypeCombo->currentText();
QIntList aList;
- aList.append(ModuleBase_WidgetShapeSelector::shapeType(aNewType));
+ aList.append(ModuleBase_Tools::shapeType(aNewType));
myWorkshop->activateSubShapesSelection(aList);
} else {
myWorkshop->deactivateSubShapesSelection();