Salome HOME
0021882: [CEA 673] Add preference for default color for mesh groups
[modules/smesh.git] / src / SMESHGUI / SMESHGUI_MakeNodeAtPointDlg.cxx
index 0793da3c0c78789cbc7fa450725a15dfe4a77f6d..090a385cc5c541d2e276feb924cf91c1bb96c3bf 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2011  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2012  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
@@ -47,6 +47,7 @@
 #include <SALOME_ListIO.hxx>
 #include <SUIT_Desktop.h>
 #include <SVTK_ViewModel.h>
+#include <SVTK_ViewWindow.h>
 #include <SalomeApp_Tools.h>
 #include <SalomeApp_TypeFilter.h>
 #include <SUIT_ResourceMgr.h>
@@ -324,6 +325,10 @@ SMESHGUI_MakeNodeAtPointOp::SMESHGUI_MakeNodeAtPointOp()
   connect(myDlg->myId,SIGNAL (textChanged(const QString&)),SLOT(redisplayPreview()));
   connect(myDlg->myPreviewChkBox,   SIGNAL (toggled(bool)),SLOT(redisplayPreview()));
   connect(myDlg->myAutoSearchChkBox,SIGNAL (toggled(bool)),SLOT(redisplayPreview()));
+
+  // IPAL22913: TC6.5.0: selected in "Move node" dialog box node is not highlighted
+  // note: this slot seems to be lost together with removed obsolete SMESHGUI_MoveNodesDlg class
+  connect(myDlg->myId,SIGNAL (textChanged(const QString&)),SLOT(onTextChange(const QString&)));
 }
 
 //=======================================================================
@@ -374,7 +379,6 @@ void SMESHGUI_MakeNodeAtPointOp::startOperation()
   onSelectionDone(); // init myMeshActor
 
   if ( myMeshActor ) {
-//     myMeshOldDisplayMode = myMeshActor->GetRepresentation();
 //     myMeshActor->SetRepresentation( VTK_WIREFRAME );
     myMeshActor->SetPointRepresentation(true);
     SMESH::RepaintCurrentView();
@@ -393,7 +397,6 @@ void SMESHGUI_MakeNodeAtPointOp::stopOperation()
   myNoPreview = true;
   mySimulation->SetVisibility(false);
   if ( myMeshActor ) {
-//     myMeshActor->SetRepresentation( myMeshOldDisplayMode );
     myMeshActor->SetPointRepresentation(false);
     SMESH::RepaintCurrentView();
     myMeshActor = 0;
@@ -429,6 +432,10 @@ bool SMESHGUI_MakeNodeAtPointOp::onApply()
     return false;
   }
 
+  QStringList aParameters;
+  aParameters << myDlg->myX->text();
+  aParameters << myDlg->myY->text();
+  aParameters << myDlg->myZ->text();
 
   try {
     SMESH::SMESH_Mesh_var aMesh = SMESH::GetMeshByIO(myMeshActor->getIO());
@@ -441,6 +448,8 @@ bool SMESHGUI_MakeNodeAtPointOp::onApply()
     if (aMeshEditor->_is_nil())
       return true;
 
+    aMesh->SetParameters( aParameters.join(":").toLatin1().constData() );
+
     bool ok;
     int anId = myDlg->myId->text().toInt( &ok );
     if( !ok || anId < 1 )
@@ -455,12 +464,6 @@ bool SMESHGUI_MakeNodeAtPointOp::onApply()
 
     if (aResult)
     {
-      QStringList aParameters;
-      aParameters << myDlg->myX->text();
-      aParameters << myDlg->myY->text();
-      aParameters << myDlg->myZ->text();
-      aMesh->SetParameters( aParameters.join(":").toLatin1().constData() );
-
       myDlg->myCurrentX->SetValue(0);
       myDlg->myCurrentY->SetValue(0);
       myDlg->myCurrentZ->SetValue(0);
@@ -717,6 +720,35 @@ void SMESHGUI_MakeNodeAtPointOp::redisplayPreview()
   myNoPreview = false;
 }
 
+//================================================================================
+/*!
+ * \brief SLOT called when the node id is manually changed
+ */
+//================================================================================
+
+void SMESHGUI_MakeNodeAtPointOp::onTextChange( const QString& theText )
+{
+  if( myMeshActor )
+  {
+    if( SMDS_Mesh* aMesh = myMeshActor->GetObject()->GetMesh() )
+    {
+      Handle(SALOME_InteractiveObject) anIO = myMeshActor->getIO();
+      SALOME_ListIO aList;
+      aList.Append( anIO );
+      selectionMgr()->setSelectedObjects( aList, false );
+
+      if( const SMDS_MeshNode* aNode = aMesh->FindNode( theText.toInt() ) )
+      {
+        TColStd_MapOfInteger aListInd;
+        aListInd.Add( aNode->GetID() );
+        selector()->AddOrRemoveIndex( anIO, aListInd, false );
+        if( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( SMESHGUI::GetSMESHGUI() ) )
+          aViewWindow->highlight( anIO, true, true );
+      }
+    }
+  }
+}
+
 //================================================================================
 /*!
  * \brief Activate Node selection