X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FPartSet%2FPartSet_Module.cpp;h=a38f41b65a24baa598eafd38c2526b9f120fbaae;hb=c55b14977783111c8b418b416c7f6c2fa545c5e5;hp=f62c677a27b352e96ede8d12f2f7b523d5b90a8b;hpb=5e455123d32f4d42a3e0b48603e9ee614bd28913;p=modules%2Fshaper.git diff --git a/src/PartSet/PartSet_Module.cpp b/src/PartSet/PartSet_Module.cpp index f62c677a2..a38f41b65 100644 --- a/src/PartSet/PartSet_Module.cpp +++ b/src/PartSet/PartSet_Module.cpp @@ -7,9 +7,9 @@ #include #include #include -#include #include -#include +#include "PartSet_SketcherMgr.h" +#include "PartSet_MenuMgr.h" #include #include @@ -17,17 +17,11 @@ #include #include #include -#include -#include -#include -#include -#include #include #include #include #include -#include #include #include @@ -51,8 +45,9 @@ #include #include #include -//#include -//#include +#include +#include +#include #include #include #include @@ -114,7 +109,7 @@ PartSet_Module::PartSet_Module(ModuleBase_IWorkshop* theWshop) connect(aViewer, SIGNAL(viewTransformed(int)), SLOT(onViewTransformed(int))); - createActions(); + myMenuMgr = new PartSet_MenuMgr(this); } PartSet_Module::~PartSet_Module() @@ -128,12 +123,17 @@ void PartSet_Module::registerValidators() //Registering of validators SessionPtr aMgr = ModelAPI_Session::get(); ModelAPI_ValidatorsFactory* aFactory = aMgr->validators(); - aFactory->registerValidator("PartSet_DistanceValidator", new PartSet_DistanceValidator); - aFactory->registerValidator("PartSet_LengthValidator", new PartSet_LengthValidator); - aFactory->registerValidator("PartSet_PerpendicularValidator", new PartSet_PerpendicularValidator); - aFactory->registerValidator("PartSet_ParallelValidator", new PartSet_ParallelValidator); - aFactory->registerValidator("PartSet_RadiusValidator", new PartSet_RadiusValidator); - aFactory->registerValidator("PartSet_RigidValidator", new PartSet_RigidValidator); + aFactory->registerValidator("PartSet_DistanceSelection", new PartSet_DistanceSelection); + aFactory->registerValidator("PartSet_LengthSelection", new PartSet_LengthSelection); + aFactory->registerValidator("PartSet_PerpendicularSelection", new PartSet_PerpendicularSelection); + aFactory->registerValidator("PartSet_ParallelSelection", new PartSet_ParallelSelection); + aFactory->registerValidator("PartSet_RadiusSelection", new PartSet_RadiusSelection); + aFactory->registerValidator("PartSet_RigidSelection", new PartSet_RigidSelection); + aFactory->registerValidator("PartSet_CoincidentSelection", new PartSet_CoincidentSelection); + aFactory->registerValidator("PartSet_HVDirSelection", new PartSet_HVDirSelection); + aFactory->registerValidator("PartSet_TangentSelection", new PartSet_TangentSelection); + aFactory->registerValidator("PartSet_FilletSelection", new PartSet_FilletSelection); + aFactory->registerValidator("PartSet_DifferentObjects", new PartSet_DifferentObjectsValidator); aFactory->registerValidator("PartSet_DifferentShapes", new ModelAPI_ShapeValidator); @@ -157,15 +157,6 @@ void PartSet_Module::registerFilters() //Registering of selection filters XGUI_ModuleConnector* aConnector = dynamic_cast(workshop()); ModuleBase_FilterFactory* aFactory = aConnector->selectionFilters(); - - //aFactory->registerFilter("EdgeFilter", new ModuleBase_FilterLinearEdge); - //aFactory->registerFilter("FaceFilter", new ModuleBase_FilterFace); - //aFactory->registerFilter("MultiFilter", new ModuleBase_FilterMulti); - //Handle(SelectMgr_Filter) aSelectFilter = new ModuleBase_FilterNoConsructionSubShapes(workshop()); - //aFactory->registerFilter("NoConstructionSubShapesFilter", - // new ModuleBase_FilterCustom(aSelectFilter)); - //Handle(SelectMgr_Filter) aSelectFilter = new PartSet_FilterSketchEntity(workshop()); - //aFactory->registerFilter("SketchEntityFilter", new ModuleBase_FilterCustom(aSelectFilter)); } void PartSet_Module::registerProperties() @@ -280,45 +271,14 @@ bool PartSet_Module::canRedo() const bool PartSet_Module::canDisplayObject(const ObjectPtr& theObject) const { - // the display should be possible almost always, with exception of some specific cases - - bool aCanDisplay = true; - - if (mySketchMgr->activeSketch()) { - aCanDisplay = mySketchMgr->canDisplayObject(theObject); - } - return aCanDisplay; + // the sketch manager put the restriction to the objects display + return mySketchMgr->canDisplayObject(theObject); } + bool PartSet_Module::addViewerItems(QMenu* theMenu, const QMap& theStdActions) const { - ModuleBase_Operation* anOperation = myWorkshop->currentOperation(); - if (!PartSet_SketcherMgr::isSketchOperation(anOperation) && - !PartSet_SketcherMgr::isNestedSketchOperation(anOperation)) - return false; - - ModuleBase_ISelection* aSelection = myWorkshop->selection(); - QObjectPtrList aObjects = aSelection->selectedPresentations(); - if (aObjects.size() > 0) { - bool hasFeature = false; - foreach(ObjectPtr aObject, aObjects) - { - FeaturePtr aFeature = ModelAPI_Feature::feature(aObject); - if (aFeature.get() != NULL) { - hasFeature = true; - } - } - if (hasFeature) { - theMenu->addAction(theStdActions["DELETE_CMD"]); - } - } - bool isAuxiliary; - if (mySketchMgr->canSetAuxiliary(isAuxiliary)) { - QAction* anAction = action("AUXILIARY_CMD"); - theMenu->addAction(anAction); - anAction->setChecked(isAuxiliary); - } - return true; + return myMenuMgr->addViewerItems(theMenu, theStdActions); } bool PartSet_Module::isMouseOverWindow() @@ -496,51 +456,12 @@ ModuleBase_ModelWidget* PartSet_Module::createWidgetByType(const std::string& th new PartSet_WidgetShapeSelector(theParent, workshop(), theWidgetApi, theParentId); aShapeSelectorWgt->setSketcher(mySketchMgr->activeSketch()); aWgt = aShapeSelectorWgt; - } if (theType == "sketch_constraint_shape_selector") { - PartSet_WidgetConstraintShapeSelector* aConstraintShapeSelectorWgt = - new PartSet_WidgetConstraintShapeSelector(theParent, workshop(), theWidgetApi, theParentId); - aConstraintShapeSelectorWgt->setSketcher(mySketchMgr->activeSketch()); - aWgt = aConstraintShapeSelectorWgt; } if (theType == WDG_DOUBLEVALUE_EDITOR) { aWgt = new PartSet_WidgetEditor(theParent, workshop(), theWidgetApi, theParentId); } return aWgt; } -void PartSet_Module::createActions() -{ - QAction* anAction; - - anAction = new QAction(tr("Auxiliary"), this); - anAction->setCheckable(true); - addAction("AUXILIARY_CMD", anAction); -} - -QAction* PartSet_Module::action(const QString& theId) const -{ - if (myActions.contains(theId)) - return myActions[theId]; - return 0; -} - -void PartSet_Module::addAction(const QString& theId, QAction* theAction) -{ - if (myActions.contains(theId)) - qCritical("A command with Id = '%s' already defined!", qPrintable(theId)); - theAction->setData(theId); - connect(theAction, SIGNAL(triggered(bool)), this, SLOT(onAction(bool))); - myActions[theId] = theAction; -} - -void PartSet_Module::onAction(bool isChecked) -{ - QAction* aAction = static_cast(sender()); - QString anId = aAction->data().toString(); - - if (anId == "AUXILIARY_CMD") { - mySketchMgr->setAuxiliary(isChecked); - } -} bool PartSet_Module::deleteObjects() { @@ -556,7 +477,7 @@ bool PartSet_Module::deleteObjects() // the abort leads to selection lost on constraint objects. It can be corrected after #386 issue XGUI_ModuleConnector* aConnector = dynamic_cast(workshop()); XGUI_Workshop* aWorkshop = aConnector->workshop(); - ModuleBase_ISelection* aSel = aConnector->selection(); + ModuleBase_ISelection* aSel = workshop()->selection(); QObjectPtrList aSelectedObj = aSel->selectedPresentations(); // if there are no selected objects in the viewer, that means that the selection in another // place cased this method. It is necessary to return the false value to understande in above