0031456: Visualization - move out Dimensions and Relations from package AIS to PrsDims
[occt.git] / samples / mfc / standard / Common / RadiusParamsPage.cpp
index d8b03f1..f2275d1 100644 (file)
@@ -4,9 +4,8 @@
 #include "DimensionDlg.h"
 
 #include <AIS_InteractiveContext.hxx>
-#include <AIS_LocalContext.hxx>
-#include <AIS_RadiusDimension.hxx>
-#include <AIS_DiameterDimension.hxx>
+#include <PrsDim_RadiusDimension.hxx>
+#include <PrsDim_DiameterDimension.hxx>
 #include <ElCLib.hxx>
 #include <TopoDS_Shape.hxx>
 
@@ -58,8 +57,9 @@ END_MESSAGE_MAP()
 void CRadiusParamsPage::OnBnClickedObjectBtn()
 {
   //Build dimension here
-  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);
     return;
@@ -69,7 +69,8 @@ void CRadiusParamsPage::OnBnClickedObjectBtn()
   Standard_Boolean isAttachPoint = Standard_False;
   Standard_Real aFirstPar = 0, aLastPar = 0;
 
-  TopoDS_Shape aSelShape = myAISContext->LocalContext()->SelectedShape();
+  TopoDS_Shape aSelShape = myAISContext->SelectedShape();
+
   if (aSelShape.ShapeType() != TopAbs_EDGE &&
       aSelShape.ShapeType() != TopAbs_FACE &&
       aSelShape.ShapeType() != TopAbs_WIRE)
@@ -92,19 +93,19 @@ void CRadiusParamsPage::OnBnClickedObjectBtn()
     }
   }
 
-  myAISContext->LocalContext()->ClearSelected();
+  myAISContext->ClearSelected (Standard_False);
   CDimensionDlg *aDimDlg = (CDimensionDlg*)(this->GetParentOwner());
   // Try to create dimension if it is possible
-  Handle(AIS_Dimension) aDim;
+  Handle(PrsDim_Dimension) aDim;
   if (myIsDiameterDimension)
   {
-    aDim = new AIS_DiameterDimension (aCircle);
-    Handle(AIS_DiameterDimension)::DownCast(aDim)->SetFlyout (aDimDlg->GetFlyout());
+    aDim = new PrsDim_DiameterDimension (aCircle);
+    Handle(PrsDim_DiameterDimension)::DownCast(aDim)->SetFlyout (aDimDlg->GetFlyout());
   }
   else
   {
-    aDim = new AIS_RadiusDimension (aCircle);
-    Handle(AIS_RadiusDimension)::DownCast(aDim)->SetFlyout (aDimDlg->GetFlyout());
+    aDim = new PrsDim_RadiusDimension (aCircle);
+    Handle(PrsDim_RadiusDimension)::DownCast(aDim)->SetFlyout (aDimDlg->GetFlyout());
   }
 
   Handle(Prs3d_DimensionAspect) anAspect = new Prs3d_DimensionAspect();
@@ -113,7 +114,7 @@ void CRadiusParamsPage::OnBnClickedObjectBtn()
   anAspect->TextAspect()->SetHeight (aDimDlg->GetFontHeight());
   anAspect->MakeTextShaded (aDimDlg->IsText3dShaded());
   anAspect->SetCommonColor (aDimDlg->GetDimensionColor());
-  aDim->DimensionAspect()->MakeUnitsDisplayed (aDimDlg->IsUnitsDisplayed());
+  anAspect->MakeUnitsDisplayed (aDimDlg->IsUnitsDisplayed());
   if (aDimDlg->IsUnitsDisplayed())
   {
     aDim->SetDisplayUnits (aDimDlg->GetUnits());
@@ -122,10 +123,7 @@ void CRadiusParamsPage::OnBnClickedObjectBtn()
   aDim->SetDimensionAspect (anAspect);
 
   // Display dimension in the neutral point
-  myAISContext->CloseAllContexts();
-
-  myAISContext->Display (aDim);
 
-  myAISContext->OpenLocalContext();
-  myAISContext->ActivateStandardMode (TopAbs_EDGE);
+  myAISContext->Display (aDim, Standard_True);
+  myAISContext->Activate (AIS_Shape::SelectionMode (TopAbs_EDGE));
 }