0031456: Visualization - move out Dimensions and Relations from package AIS to PrsDims
[occt.git] / samples / mfc / standard / Common / LengthParamsEdgesPage.cpp
index 5dd10bd..6a28148 100644 (file)
@@ -5,9 +5,8 @@
 #include "LengthParamsEdgesPage.h"
 #include "DimensionDlg.h"
 #include <AIS_InteractiveContext.hxx>
-#include <AIS_LocalContext.hxx>
-#include <AIS_LengthDimension.hxx>
-#include <AIS_AngleDimension.hxx>
+#include <PrsDim_LengthDimension.hxx>
+#include <PrsDim_AngleDimension.hxx>
 #include <GC_MakePlane.hxx>
 // CLengthParamsEdgesPage dialog
 
@@ -58,20 +57,13 @@ END_MESSAGE_MAP()
 
 void CLengthParamsEdgesPage::OnBnClickedEdge1Btn()
 {
-  // Open local context and choose the edge for length dimensions
-  if (!myAISContext->HasOpenedContext())
-  {
-    myAISContext->OpenLocalContext();
-    myAISContext->ActivateStandardMode (TopAbs_EDGE);
-    AfxMessageBox (_T("Local context was not opened. Choose the edge and press the button again"),
-                     MB_ICONINFORMATION | MB_OK);
-    return;
-  }
+  myAISContext->Activate (AIS_Shape::SelectionMode (TopAbs_EDGE));
 
-  // Now it's ok, local context is opened and edge selection mode is activated
+  // Now it's ok, edge selection mode is activated
   // Check if some edge is selected
-  myAISContext->LocalContext()->InitSelected();
-  if (!myAISContext->LocalContext()->MoreSelected())
+  myAISContext->InitSelected();
+  if (!myAISContext->MoreSelected() ||
+       myAISContext->SelectedShape().ShapeType() != TopAbs_EDGE)
   {
     AfxMessageBox(_T("Choose the edge and press the button again"),
                     MB_ICONINFORMATION | MB_OK);
@@ -80,7 +72,7 @@ void CLengthParamsEdgesPage::OnBnClickedEdge1Btn()
 
   myFirstEdge = TopoDS::Edge (myAISContext->SelectedShape());
 
-  myAISContext->LocalContext()->ClearSelected();
+  myAISContext->ClearSelected (Standard_True);
 }
 
 //=======================================================================
@@ -90,8 +82,9 @@ void CLengthParamsEdgesPage::OnBnClickedEdge1Btn()
 
 void CLengthParamsEdgesPage::OnBnClickedEdge2Btn()
 {
-  myAISContext->LocalContext()->InitSelected();
-  if (!myAISContext->LocalContext()->MoreSelected())
+  myAISContext->InitSelected();
+  if (!myAISContext->MoreSelected() ||
+       myAISContext->SelectedShape().ShapeType() != TopAbs_EDGE)
   {
     AfxMessageBox (_T("Choose the edge and press the button again"),
        MB_ICONINFORMATION | MB_OK);
@@ -100,7 +93,7 @@ void CLengthParamsEdgesPage::OnBnClickedEdge2Btn()
 
   mySecondEdge = TopoDS::Edge (myAISContext->SelectedShape());
 
-  myAISContext->LocalContext()->ClearSelected();
+  myAISContext->ClearSelected (Standard_True);
 
   // Build plane through three points
   BRepAdaptor_Curve aCurve1 (myFirstEdge);
@@ -116,8 +109,6 @@ void CLengthParamsEdgesPage::OnBnClickedEdge2Btn()
 
   CDimensionDlg *aDimDlg = (CDimensionDlg*)(GetParentOwner());
 
-  myAISContext->CloseAllContexts();
-
   Handle(Prs3d_DimensionAspect) anAspect = new Prs3d_DimensionAspect();
   anAspect->MakeArrows3d (Standard_False);
   anAspect->MakeText3d (aDimDlg->GetTextType());
@@ -128,7 +119,7 @@ void CLengthParamsEdgesPage::OnBnClickedEdge2Btn()
   if (myIsAngleDimension)
   {
     // Build an angle dimension between two non-parallel edges
-    Handle(AIS_AngleDimension) anAngleDim = new AIS_AngleDimension (myFirstEdge, mySecondEdge);
+    Handle(PrsDim_AngleDimension) anAngleDim = new PrsDim_AngleDimension (myFirstEdge, mySecondEdge);
     anAngleDim->SetDimensionAspect (anAspect);
     anAngleDim->DimensionAspect()->MakeUnitsDisplayed (aDimDlg->IsUnitsDisplayed());
     if (aDimDlg->IsUnitsDisplayed())
@@ -140,16 +131,16 @@ void CLengthParamsEdgesPage::OnBnClickedEdge2Btn()
       }
       else
       {
-        anAngleDim->SetDisplaySpecialSymbol (AIS_DSS_No);
+        anAngleDim->SetDisplaySpecialSymbol (PrsDim_DisplaySpecialSymbol_No);
       }
     }
 
     anAngleDim->SetFlyout (aDimDlg->GetFlyout());
-    myAISContext->Display (anAngleDim);
+    myAISContext->Display (anAngleDim, Standard_True);
   }
   else
   {
-    Handle(AIS_LengthDimension) aLenDim = new AIS_LengthDimension (myFirstEdge, mySecondEdge, aPlane->Pln());
+    Handle(PrsDim_LengthDimension) aLenDim = new PrsDim_LengthDimension (myFirstEdge, mySecondEdge, aPlane->Pln());
     aLenDim->SetDimensionAspect (anAspect);
     aLenDim->SetFlyout (aDimDlg->GetFlyout());
     if (aDimDlg->IsUnitsDisplayed())
@@ -157,9 +148,8 @@ void CLengthParamsEdgesPage::OnBnClickedEdge2Btn()
       aLenDim->SetDisplayUnits (aDimDlg->GetUnits());
     }
 
-    myAISContext->Display (aLenDim);
+    myAISContext->Display (aLenDim, Standard_True);
   }
 
-  myAISContext->OpenLocalContext();
-  myAISContext->ActivateStandardMode (TopAbs_EDGE);
+  myAISContext->Activate (AIS_Shape::SelectionMode (TopAbs_EDGE));
 }