Salome HOME
Merge branch 'Dev_1.1.0' of newgeom:newgeom into Dev_1.1.0
[modules/shaper.git] / src / PartSet / PartSet_Module.cpp
index 79d5b9664242dda853ff7b77a93f94f55f9fed1a..20cd411016fc4806e4f402843ee6926f4f03479e 100644 (file)
 #include <ModuleBase_FilterMulti.h>
 #include <ModuleBase_FilterCustom.h>
 #include <ModuleBase_FilterNoConsructionSubShapes.h>
-#include <ModuleBase_ValidatorLinearEdge.h>
-#include <ModuleBase_ValidatorLinearEdgeOrVertex.h>
-#include <ModuleBase_ValidatorFace.h>
-#include <ModuleBase_ValidatorNoConstructionSubShapes.h>
+#include <GeomValidators_Edge.h>
+#include <GeomValidators_EdgeOrVertex.h>
+#include <GeomValidators_Face.h>
+#include <GeomValidators_ConstructionComposite.h>
 
 #include <PartSet_FilterSketchEntity.h>
 
@@ -67,6 +67,7 @@
 #include <TopoDS.hxx>
 #include <TopoDS_Shape.hxx>
 #include <BRep_Tool.hxx>
+#include <AIS_Dimension.hxx>
 
 #include <QObject>
 #include <QMouseEvent>
@@ -91,7 +92,7 @@ extern "C" PARTSET_EXPORT ModuleBase_IModule* createModule(ModuleBase_IWorkshop*
 
 PartSet_Module::PartSet_Module(ModuleBase_IWorkshop* theWshop)
   : ModuleBase_IModule(theWshop), 
-  myRestartingMode(RM_None)
+  myRestartingMode(RM_None), myVisualLayerId(0)
 {
   //myWorkshop = dynamic_cast<XGUI_Workshop*>(theWshop);
   mySketchMgr = new PartSet_SketcherMgr(this);
@@ -130,15 +131,20 @@ void PartSet_Module::registerValidators()
   aFactory->registerValidator("PartSet_RigidValidator", new PartSet_RigidValidator);
   aFactory->registerValidator("PartSet_DifferentObjects", new PartSet_DifferentObjectsValidator);
   aFactory->registerValidator("PartSet_DifferentShapes", new ModelAPI_ShapeValidator);
-  aFactory->registerValidator("PartSet_SketchValidator", new PartSet_SketchValidator);
 
-  aFactory->registerValidator("ModuleBase_ValidatorLinearEdge", new ModuleBase_ValidatorLinearEdge);
-  aFactory->registerValidator("ModuleBase_ValidatorLinearEdgeOrVertex",
-                              new ModuleBase_ValidatorLinearEdgeOrVertex);
-  aFactory->registerValidator("ModuleBase_ValidatorFace", new ModuleBase_ValidatorFace);
+  aFactory->registerValidator("GeomValidators_Edge", new GeomValidators_Edge);
+  aFactory->registerValidator("GeomValidators_EdgeOrVertex",
+                              new GeomValidators_EdgeOrVertex);
+  aFactory->registerValidator("GeomValidators_Face", new GeomValidators_Face);
 
-  aFactory->registerValidator("ModuleBase_ValidatorNoConstructionSubShapes",
-                              new ModuleBase_ValidatorNoConstructionSubShapes);
+  aFactory->registerValidator("GeomValidators_ConstructionComposite",
+                              new GeomValidators_ConstructionComposite);
+
+  aFactory->registerValidator("PartSet_SketchEntityValidator",
+                              new PartSet_SketchEntityValidator);
+
+  aFactory->registerValidator("PartSet_SameTypeAttr",
+                              new PartSet_SameTypeAttrValidator);
 }
 
 void PartSet_Module::registerFilters()
@@ -147,14 +153,14 @@ void PartSet_Module::registerFilters()
   XGUI_ModuleConnector* aConnector = dynamic_cast<XGUI_ModuleConnector*>(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));
-  aSelectFilter = new PartSet_FilterSketchEntity(workshop());
-  aFactory->registerFilter("SketchEntityFilter", new ModuleBase_FilterCustom(aSelectFilter));
+  //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()
@@ -209,6 +215,8 @@ void PartSet_Module::operationAborted(ModuleBase_Operation* theOperation)
 void PartSet_Module::operationStarted(ModuleBase_Operation* theOperation)
 {
   if (PartSet_SketcherMgr::isSketchOperation(theOperation)) {
+    Handle(V3d_Viewer) aViewer = myWorkshop->viewer()->AISContext()->CurrentViewer();
+    aViewer->AddZLayer(myVisualLayerId);
     mySketchMgr->startSketch(theOperation);
   }
   else if (PartSet_SketcherMgr::isNestedSketchOperation(theOperation)) {
@@ -224,6 +232,9 @@ void PartSet_Module::operationStopped(ModuleBase_Operation* theOperation)
 {
   if (PartSet_SketcherMgr::isSketchOperation(theOperation)) {
     mySketchMgr->stopSketch(theOperation);
+    Handle(V3d_Viewer) aViewer = myWorkshop->viewer()->AISContext()->CurrentViewer();
+    aViewer->RemoveZLayer(myVisualLayerId);
+    myVisualLayerId = 0;
   }
   else if (PartSet_SketcherMgr::isNestedSketchOperation(theOperation)) {
     mySketchMgr->stopNestedSketch(theOperation);
@@ -649,3 +660,17 @@ bool PartSet_Module::deleteObjects()
 
   return true;
 }
+
+
+void PartSet_Module::onObjectDisplayed(ObjectPtr theObject, AISObjectPtr theAIS) 
+{
+  Handle(AIS_InteractiveObject) anAIS = theAIS->impl<Handle(AIS_InteractiveObject)>();
+  if (!anAIS.IsNull()) {
+    Handle(AIS_Dimension) aDim = Handle(AIS_Dimension)::DownCast(anAIS);
+    if (!aDim.IsNull()) {
+      Handle(AIS_InteractiveContext) aCtx = anAIS->GetContext();
+      aCtx->SetZLayer(aDim, myVisualLayerId);
+    }
+  }
+}
+