#include <ModelAPI_Validator.h>
#include <ModelAPI_Data.h>
#include <ModelAPI_Session.h>
-#include <ModelAPI_ShapeValidator.h>
+#include <GeomValidators_DifferentShapes.h>
#include <ModelAPI_ResultBody.h>
#include <GeomDataAPI_Point2D.h>
aFactory->registerValidator("PartSet_TangentSelection", new PartSet_TangentSelection);
aFactory->registerValidator("PartSet_FilletSelection", new PartSet_FilletSelection);
aFactory->registerValidator("PartSet_AngleSelection", new PartSet_AngleSelection);
-
aFactory->registerValidator("PartSet_DifferentObjects", new PartSet_DifferentObjectsValidator);
- aFactory->registerValidator("PartSet_DifferentShapes", new ModelAPI_ShapeValidator);
-
aFactory->registerValidator("PartSet_CoincidentAttr", new PartSet_CoincidentAttr);
+ aFactory->registerValidator("GeomValidators_DifferentShapes", new GeomValidators_DifferentShapes);
aFactory->registerValidator("GeomValidators_ShapeType", new GeomValidators_ShapeType);
aFactory->registerValidator("GeomValidators_Face", new GeomValidators_Face);
-
aFactory->registerValidator("GeomValidators_Finite", new GeomValidators_Finite);
aFactory->registerValidator("GeomValidators_ConstructionComposite",
aFactory->registerValidator("PartSet_SketchEntityValidator",
new PartSet_SketchEntityValidator);
- aFactory->registerValidator("PartSet_SameTypeAttr",
- new PartSet_SameTypeAttrValidator);
-
aFactory->registerValidator("GeomValidators_Different",
new GeomValidators_Different);
}
myRestartingMode == RM_EmptyFeatureUsed)) {
myLastOperationId = aFOperation->id();
myLastFeature = myRestartingMode == RM_LastFeatureUsed ? aFOperation->feature() : FeaturePtr();
-
- launchOperation(myLastOperationId);
+ if (!sketchMgr()->sketchSolverError())
+ launchOperation(myLastOperationId);
}
breakOperationSequence();
}
ModuleBase_OperationFeature* aFOperation = dynamic_cast<ModuleBase_OperationFeature*>(theOperation);
if (aFOperation)
- myCustomPrs->activate(aFOperation->feature());
+ myCustomPrs->activate(aFOperation->feature(), true);
+}
+
+void PartSet_Module::onOperationResumed(ModuleBase_Operation* theOperation)
+{
+ ModuleBase_IModule::onOperationResumed(theOperation);
+
+ ModuleBase_OperationFeature* aFOperation = dynamic_cast<ModuleBase_OperationFeature*>(theOperation);
+ if (aFOperation)
+ myCustomPrs->activate(aFOperation->feature(), true);
}
void PartSet_Module::onOperationStopped(ModuleBase_Operation* theOperation)
{
- myCustomPrs->deactivate();
+ bool isModified = myCustomPrs->deactivate(false);
if (PartSet_SketcherMgr::isSketchOperation(theOperation)) {
mySketchMgr->stopSketch(theOperation);
else if (PartSet_SketcherMgr::isNestedSketchOperation(theOperation)) {
mySketchMgr->stopNestedSketch(theOperation);
}
+
+ if (isModified) {
+ XGUI_ModuleConnector* aConnector = dynamic_cast<XGUI_ModuleConnector*>(myWorkshop);
+ XGUI_Displayer* aDisplayer = aConnector->workshop()->displayer();
+ aDisplayer->updateViewer();
+ }
}
ModuleBase_Operation* PartSet_Module::currentOperation() const
XGUI_ModuleConnector* aConnector = dynamic_cast<XGUI_ModuleConnector*>(workshop());
XGUI_Workshop* aWorkshop = aConnector->workshop();
XGUI_OperationMgr* anOpMgr = aWorkshop->operationMgr();
+ // do nothing if the feature can not be applyed
if (anOpMgr->isApplyEnabled())
anOperation->commit();
- else
- anOperation->abort();
}
}
}
void PartSet_Module::onBeforeObjectErase(ObjectPtr theObject, AISObjectPtr theAIS)
{
+ // this is obsolete
// it should be recomputed in order to disappear in the viewer if the corresponded object
// is erased
- if (myCustomPrs->isActive())
- myCustomPrs->customize(theObject);
+ //if (myCustomPrs->isActive())
+ // myCustomPrs->redisplay(theObject, false);
}
void PartSet_Module::onViewTransformed(int theTrsfType)
aDisplayer->updateViewer();
}
-void PartSet_Module::customizeObject(ObjectPtr theObject)
+bool PartSet_Module::customizeObject(ObjectPtr theObject, const bool theUpdateViewer)
{
+ bool isRedisplayed = false;
if (myCustomPrs->isActive())
- myCustomPrs->customize(theObject);
+ isRedisplayed = myCustomPrs->redisplay(theObject, theUpdateViewer);
+
+ return isRedisplayed;
}
void PartSet_Module::customizeObjectBrowser(QWidget* theObjectBrowser)
QObjectPtrList aObjects = myWorkshop->selection()->selectedObjects();
int aSelected = aObjects.size();
SessionPtr aMgr = ModelAPI_Session::get();
+ QAction* aActivatePartAction = myMenuMgr->action("ACTIVATE_PART_CMD");
if (aSelected == 1) {
bool hasResult = false;
bool hasFeature = false;
}
if (aPart.get()) // this may be null is Part feature is disabled
aPartDoc = aPart->partDoc();
- if (aMgr->activeDocument() == aPartDoc)
- theMenu->addAction(myMenuMgr->action("DEACTIVATE_PART_CMD"));
- else
- theMenu->addAction(myMenuMgr->action("ACTIVATE_PART_CMD"));
+
+ theMenu->addAction(aActivatePartAction);
+ aActivatePartAction->setEnabled((aMgr->activeDocument() != aPartDoc));
+
} else if (aObject->document() == aMgr->activeDocument()) {
if (hasParameter || hasFeature)
theMenu->addAction(myMenuMgr->action("EDIT_CMD"));
ResultBodyPtr aResult = std::dynamic_pointer_cast<ModelAPI_ResultBody>(aObject);
if( aResult.get() )
- {
theMenu->addAction(myMenuMgr->action("SELECT_PARENT_CMD"));
- }
} else { // If feature is 0 the it means that selected root object (document)
if (aMgr->activeDocument() != aMgr->moduleDocument())
theMenu->addAction(myMenuMgr->action("ACTIVATE_PARTSET_CMD"));
if (aMgr->activeDocument() != aMgr->moduleDocument())
theMenu->addAction(myMenuMgr->action("ACTIVATE_PARTSET_CMD"));
}
- bool aCanDeactivate = (myWorkshop->currentOperation() == 0);
- myMenuMgr->action("ACTIVATE_PARTSET_CMD")->setEnabled(aCanDeactivate);
- myMenuMgr->action("DEACTIVATE_PART_CMD")->setEnabled(aCanDeactivate);
- myMenuMgr->action("ACTIVATE_PART_CMD")->setEnabled(aCanDeactivate);
+ bool aNotDeactivate = (myWorkshop->currentOperation() == 0);
+ myMenuMgr->action("ACTIVATE_PARTSET_CMD")->setEnabled(aNotDeactivate);
+ if (!aNotDeactivate)
+ aActivatePartAction->setEnabled(false);
}
void PartSet_Module::processEvent(const std::shared_ptr<Events_Message>& theMessage)