Salome HOME
documentation improvement
[modules/geom.git] / src / MeasureGUI / MeasureGUI_InertiaDlg.cxx
index 3a17446b40338fc6b9ee3a891e66ee8fb6e5451a..ee14238b3843f6f455e2040d6ef515c956d40dc5 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2014  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2015  CEA/DEN, EDF R&D, OPEN CASCADE
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -62,10 +62,18 @@ MeasureGUI_InertiaDlg::MeasureGUI_InertiaDlg( GeometryGUI* GUI, QWidget* parent
   myGrp = new MeasureGUI_1Sel12LineEdit( centralWidget() );
   myGrp->GroupBox1->setTitle( tr( "GEOM_MATRIX" ) );
   myGrp->TextLabel1->setText( tr( "GEOM_OBJECT" ) );
-  myGrp->TextLabel2->setText( tr( "GEOM_INERTIA_I" ).arg( "1" ) );
-  myGrp->TextLabel3->setText( tr( "GEOM_INERTIA_I" ).arg( "2" ) );
-  myGrp->TextLabel4->setText( tr( "GEOM_INERTIA_I" ).arg( "3" ) );
-  myGrp->TextLabel5->setText( tr( "GEOM_INERTIA_IXYZ" ) );
+  myGrp->TextLabel2_1->setText( "1:1" );
+  myGrp->TextLabel2_2->setText( "1:2" );
+  myGrp->TextLabel2_3->setText( "1:3" );
+  myGrp->TextLabel3_1->setText( "2:1" );
+  myGrp->TextLabel3_2->setText( "2:2" );
+  myGrp->TextLabel3_3->setText( "2:3" );
+  myGrp->TextLabel4_1->setText( "3:1" );
+  myGrp->TextLabel4_2->setText( "3:2" );
+  myGrp->TextLabel4_3->setText( "3:3" );
+  myGrp->TextLabel5_1->setText( "IX" );
+  myGrp->TextLabel5_2->setText( "IY" );
+  myGrp->TextLabel5_3->setText( "IZ" );
   myGrp->LineEdit11->setReadOnly( true );
   myGrp->LineEdit12->setReadOnly( true );
   myGrp->LineEdit13->setReadOnly( true );
@@ -114,6 +122,19 @@ void MeasureGUI_InertiaDlg::Init()
   MeasureGUI_Skeleton::Init();
 }
 
+//=================================================================================
+// function : activateSelection()
+// purpose  :
+//=================================================================================
+void MeasureGUI_InertiaDlg::activateSelection()
+{
+  MeasureGUI_Skeleton::activateSelection();
+  std::list<int> needTypes;
+  needTypes.push_back( TopAbs_VERTEX ), needTypes.push_back( TopAbs_EDGE ), needTypes.push_back( TopAbs_WIRE ), needTypes.push_back( TopAbs_FACE ), needTypes.push_back( TopAbs_SHELL ), needTypes.push_back( TopAbs_SOLID ), needTypes.push_back( TopAbs_COMPOUND );
+  localSelection(GEOM::GEOM_Object::_nil(), needTypes );
+}
+
+
 //=================================================================================
 // function : processObject
 // purpose  :
@@ -168,13 +189,13 @@ void MeasureGUI_InertiaDlg::processObject()
 bool MeasureGUI_InertiaDlg::getParameters( gp_Mat& I,
                                            gp_XYZ& theIXYZ )
 {
-  if ( myObj->_is_nil() )
+  if ( !myObj )
     return false;
   else {
     GEOM::GEOM_IMeasureOperations_var anOper = GEOM::GEOM_IMeasureOperations::_narrow( getOperation() );
     try {
       double x, y, z;
-      anOper->GetInertia( myObj,
+      anOper->GetInertia( myObj.get(),
                           I( 1, 1 ), I( 1, 2 ), I( 1, 3 ),
                           I( 2, 1 ), I( 2, 2 ), I( 2, 3 ),
                           I( 3, 1 ), I( 3, 2 ), I( 3, 3 ),
@@ -190,3 +211,22 @@ bool MeasureGUI_InertiaDlg::getParameters( gp_Mat& I,
     return anOper->IsDone();
   }
 }
+
+void MeasureGUI_InertiaDlg::SelectionIntoArgument()
+{
+  myObj.nullify();
+  QList<TopAbs_ShapeEnum> aTypes;
+  aTypes << TopAbs_VERTEX << TopAbs_EDGE << TopAbs_WIRE << TopAbs_FACE << TopAbs_SHELL << TopAbs_SOLID << TopAbs_COMPSOLID << TopAbs_COMPOUND << TopAbs_SHAPE;
+  myObj = getSelected( aTypes );
+  if (!myObj) {
+    mySelEdit->setText("");
+    processObject();
+    erasePreview();
+    return;
+  }
+
+  mySelEdit->setText(GEOMBase::GetName(myObj.get()));
+  processObject();
+  redisplayPreview();
+}