X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FPartSet%2FPartSet_WidgetSketchLabel.cpp;h=231c512fa895b2770608c9b24c5c84b1e9240fd0;hb=91b664498fff007ffce9731f842f85f3f498bd75;hp=f8e8d39245c5747559aedd97d7981abad1187d92;hpb=4fcd7c5e40f2bdbb084fa348afd5dcce7ba9882a;p=modules%2Fshaper.git diff --git a/src/PartSet/PartSet_WidgetSketchLabel.cpp b/src/PartSet/PartSet_WidgetSketchLabel.cpp index f8e8d3924..231c512fa 100644 --- a/src/PartSet/PartSet_WidgetSketchLabel.cpp +++ b/src/PartSet/PartSet_WidgetSketchLabel.cpp @@ -85,7 +85,8 @@ PartSet_WidgetSketchLabel::PartSet_WidgetSketchLabel(QWidget* theParent, ModuleBase_IWorkshop* theWorkshop, const Config_WidgetAPI* theData, const QMap& toShowConstraints) -: ModuleBase_WidgetValidated(theParent, theWorkshop, theData), myOpenTransaction(false) +: ModuleBase_WidgetValidated(theParent, theWorkshop, theData), myOpenTransaction(false), +myIsSelection(false) { QVBoxLayout* aLayout = new QVBoxLayout(this); ModuleBase_Tools::zeroMargins(aLayout); @@ -120,6 +121,12 @@ PartSet_WidgetSketchLabel::PartSet_WidgetSketchLabel(QWidget* theParent, ModuleBase_Tools::zeroMargins(aLayout); aLayout->addWidget(mySizeOfViewWidget); aLayout->addWidget(aLabel); + + myRemoveExternal = new QCheckBox(tr("Remove external dependencies"), aFirstWgt); + myRemoveExternal->setChecked(false); + aLayout->addWidget(myRemoveExternal); + myRemoveExternal->setVisible(false); + aLayout->addStretch(1); myStackWidget->addWidget(aFirstWgt); @@ -160,7 +167,9 @@ PartSet_WidgetSketchLabel::PartSet_WidgetSketchLabel(QWidget* theParent, if (toShowConstraints.contains(aState)) aShowConstraints->setChecked(toShowConstraints[aState]); } - + myShowPoints = new QCheckBox(tr("Show free points"), this); + connect(myShowPoints, SIGNAL(toggled(bool)), this, SIGNAL(showFreePoints(bool))); + aLayout->addWidget(myShowPoints); QPushButton* aPlaneBtn = new QPushButton(tr("Change sketch plane"), aSecondWgt); connect(aPlaneBtn, SIGNAL(clicked(bool)), SLOT(onChangePlane())); @@ -275,8 +284,11 @@ bool PartSet_WidgetSketchLabel::setSelectionInternal( else { // it removes the processed value from the parameters list ModuleBase_ViewerPrsPtr aValue = theValues.first();//.takeFirst(); - if (!theToValidate || isValidInFilters(aValue)) + if (!theToValidate || isValidInFilters(aValue)) { + myIsSelection = true; aDone = setSelectionCustom(aValue); + myIsSelection = false; + } } return aDone; @@ -302,11 +314,8 @@ void PartSet_WidgetSketchLabel::updateByPlaneSelected(const ModuleBase_ViewerPrs isSetSizeOfView = false; } } - if (isSetSizeOfView) - aModule->sketchMgr()->previewSketchPlane()->setSizeOfView(aSizeOfView, true); + aModule->sketchMgr()->previewSketchPlane()->setSizeOfView(aSizeOfView, isSetSizeOfView); aModule->sketchMgr()->previewSketchPlane()->createSketchPlane(aSketch, myWorkshop); - if (isSetSizeOfView) - aModule->sketchMgr()->previewSketchPlane()->setSizeOfView(aSizeOfView, false); } // 2. if the planes were displayed, change the view projection @@ -334,9 +343,6 @@ void PartSet_WidgetSketchLabel::updateByPlaneSelected(const ModuleBase_ViewerPrs } } } - if (aModule) - aModule->onViewTransformed(); - if (myOpenTransaction) { SessionPtr aMgr = ModelAPI_Session::get(); aMgr->finishOperation(); @@ -356,12 +362,17 @@ void PartSet_WidgetSketchLabel::updateByPlaneSelected(const ModuleBase_ViewerPrs myWorkshop->selectionActivate()->updateSelectionFilters(); myWorkshop->selectionActivate()->updateSelectionModes(); + if (aModule) + aModule->onViewTransformed(); + // 6. Update sketcher actions XGUI_ActionsMgr* anActMgr = aWorkshop->actionsMgr(); myWorkshop->updateCommandStatus(); aWorkshop->selector()->clearSelection(); myWorkshop->viewer()->update(); + + myRemoveExternal->setVisible(false); } std::shared_ptr PartSet_WidgetSketchLabel::plane() const @@ -404,6 +415,11 @@ void PartSet_WidgetSketchLabel::restoreAttributeValue(const AttributePtr& theAtt bool PartSet_WidgetSketchLabel::setSelectionCustom(const ModuleBase_ViewerPrsPtr& thePrs) { + if (myIsSelection && myRemoveExternal->isVisible()) { + if (myRemoveExternal->isChecked()) { + myFeature->customAction(SketchPlugin_Sketch::ACTION_REMOVE_EXTERNAL()); + } + } return fillSketchPlaneBySelection(thePrs); } @@ -661,6 +677,7 @@ void PartSet_WidgetSketchLabel::onChangePlane() PartSet_Module* aModule = dynamic_cast(myWorkshop->module()); if (aModule) { mySizeOfViewWidget->setVisible(false); + myRemoveExternal->setVisible(true); myStackWidget->setCurrentIndex(0); CompositeFeaturePtr aSketch = std::dynamic_pointer_cast(myFeature); @@ -677,7 +694,14 @@ void PartSet_WidgetSketchLabel::onChangePlane() aWorkshop->selectionActivate()->updateSelectionModes(); SessionPtr aMgr = ModelAPI_Session::get(); - aMgr->startOperation(); + aMgr->startOperation("Change Sketch plane"); myOpenTransaction = true; } -} \ No newline at end of file +} + +void PartSet_WidgetSketchLabel::setShowPointsState(bool theState) +{ + bool aBlock = myShowPoints->blockSignals(true); + myShowPoints->setChecked(theState); + myShowPoints->blockSignals(aBlock); +}