Salome HOME
SMH: Preparation version 3.0.0 - merge (HEAD+POLYWORK)
[modules/smesh.git] / src / SMESHGUI / SMESHGUI_NodesDlg.cxx
index 67b0daa2310cfec249b9c58e245e6abc9ae84356..a3f0966ff07c7d98f65a89fec57077464f036332 100644 (file)
@@ -1,23 +1,23 @@
 //  SMESH SMESHGUI : GUI for SMESH component
 //
 //  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org 
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+//  This library is free software; you can redistribute it and/or
+//  modify it under the terms of the GNU Lesser General Public
+//  License as published by the Free Software Foundation; either
+//  version 2.1 of the License.
+//
+//  This library is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+//  Lesser General Public License for more details.
+//
+//  You should have received a copy of the GNU Lesser General Public
+//  License along with this library; if not, write to the Free Software
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
 //
 //
 //
 #include "SMESHGUI_NodesDlg.h"
 
 #include "SMESHGUI.h"
+#include "SMESHGUI_SpinBox.h"
 #include "SMESHGUI_Utils.h"
+#include "SMESHGUI_VTKUtils.h"
 #include "SMESHGUI_MeshUtils.h"
 
-#include "SMESHGUI_VTKUtils.h"
+#include "SMESH_Actor.h"
 #include "SMESH_ActorUtils.h"
+#include "SMESH_ObjectDef.h"
 
-#include "VTKViewer_ViewFrame.h"
-#include "SALOME_Actor.h"
+#include "SMDS_Mesh.hxx"
+#include "SMDS_MeshNode.hxx"
 
-#include "SMESHGUI_SpinBox.h"
+#include "SUIT_Session.h"
+#include "SUIT_OverrideCursor.h"
+#include "SUIT_ViewWindow.h"
+#include "SUIT_ViewManager.h"
+#include "SUIT_MessageBox.h"
 
-#include "QAD_Application.h"
-#include "QAD_Desktop.h"
-#include "QAD_WaitCursor.h"
-#include "QAD_MessageBox.h"
+#include "SalomeApp_Study.h"
+#include "SalomeApp_Application.h"
 
-#include "SMESH_Actor.h"
-#include "SMESH_ObjectDef.h"
+#include "SVTK_ViewWindow.h"
 
-#include "SMDS_Mesh.hxx"
-#include "SMDS_MeshNode.hxx"
+#include "SALOME_Actor.h"
+#include "SALOME_ListIO.hxx"
+#include "SVTK_Selection.h"
+
+#include "utilities.h"
 
 // VTK Includes
 #include <vtkCell.h>
 #include <qvalidator.h>
 #include <qevent.h>
 
-#include "utilities.h"
-
 using namespace std;
 
 
-namespace SMESH{
+namespace SMESH {
 
-  void AddNode(SMESH::SMESH_Mesh_ptr theMesh, float x, float y, float z){
-    QAD_WaitCursor wc;
-    try{
-      SALOMEDS::SObject_var aSobj = SMESH::FindSObject(theMesh);
-      CORBA::String_var anEntry = aSobj->GetID();
+  void AddNode (SMESH::SMESH_Mesh_ptr theMesh, float x, float y, float z)
+  {
+    SUIT_OverrideCursor wc;
+    try {
+      _PTR(SObject) aSobj = SMESH::FindSObject(theMesh);
       SMESH::SMESH_MeshEditor_var aMeshEditor = theMesh->GetMeshEditor();
       aMeshEditor->AddNode(x,y,z);
-      SALOMEDS::Study_var aStudy = GetActiveStudyDocument();
+      _PTR(Study) aStudy = GetActiveStudyDocument();
       CORBA::Long anId = aStudy->StudyId();
-      if(TVisualObjPtr aVisualObj = SMESH::GetVisualObj(anId,anEntry.in())){
+      if (TVisualObjPtr aVisualObj = SMESH::GetVisualObj(anId, aSobj->GetID().c_str())) {
        aVisualObj->Update(true);
       }
-    }catch(SALOME::SALOME_Exception& exc) {
-      INFOS("Follow exception was cought:\n\t"<<exc.details.text);
-    }catch(const std::exception& exc){
-      INFOS("Follow exception was cought:\n\t"<<exc.what());
-    }catch(...){
+    } catch (SALOME::SALOME_Exception& exc) {
+      INFOS("Follow exception was cought:\n\t" << exc.details.text);
+    } catch (const std::exception& exc) {
+      INFOS("Follow exception was cought:\n\t" << exc.what());
+    } catch (...) {
       INFOS("Unknown exception was cought !!!");
     }
   }
 
-
-  class TNodeSimulation{
-    QAD_Study* myStudy;
-    QAD_StudyFrame* myStudyFrame;
-    VTKViewer_ViewFrame* myViewFrame;
+  class TNodeSimulation {
+    SalomeApp_Application* myApplication;
+    SUIT_ViewWindow* myViewWindow;
+    SVTK_ViewWindow* myVTKViewWindow;
 
     SALOME_Actor *myPreviewActor;
     vtkDataSetMapper* myMapper;
     vtkPoints* myPoints;
 
   public:
-
-    TNodeSimulation(QAD_Study* theStudy):
-      myStudy(theStudy),
-      myStudyFrame(theStudy->getActiveStudyFrame()),
-      myViewFrame(GetVtkViewFrame(theStudy->getActiveStudyFrame()))
+    TNodeSimulation (SalomeApp_Application* theApplication)
     {
+      myApplication = theApplication;
+      SUIT_ViewManager* mgr = theApplication->activeViewManager();
+      if (!mgr) return;
+      myViewWindow = mgr->getActiveView();
+      myVTKViewWindow = GetVtkViewWindow(myViewWindow);
+
       vtkUnstructuredGrid* aGrid = vtkUnstructuredGrid::New();
-  
+
       // Create points
       myPoints = vtkPoints::New();
-      myPoints->SetNumberOfPoints( 1 );
+      myPoints->SetNumberOfPoints(1);
       myPoints->SetPoint(0,0.0,0.0,0.0);
-      
+
       // Create cells
       vtkIdList *anIdList = vtkIdList::New();
-      anIdList->SetNumberOfIds( 1 );
+      anIdList->SetNumberOfIds(1);
 
       vtkCellArray *aCells = vtkCellArray::New();
-      aCells->Allocate( 2, 0 );
+      aCells->Allocate(2, 0);
 
       vtkUnsignedCharArray* aCellTypesArray = vtkUnsignedCharArray::New();
-      aCellTypesArray->SetNumberOfComponents( 1 );
-      aCellTypesArray->Allocate( 1 );
-      
-      anIdList->SetId( 0, 0 );
-      aCells->InsertNextCell( anIdList );
-      aCellTypesArray->InsertNextValue( VTK_VERTEX );
-      
+      aCellTypesArray->SetNumberOfComponents(1);
+      aCellTypesArray->Allocate(1);
+
+      anIdList->SetId(0, 0);
+      aCells->InsertNextCell(anIdList);
+      aCellTypesArray->InsertNextValue(VTK_VERTEX);
+
       vtkIntArray* aCellLocationsArray = vtkIntArray::New();
-      aCellLocationsArray->SetNumberOfComponents( 1 );
-      aCellLocationsArray->SetNumberOfTuples( 1 );
-      
+      aCellLocationsArray->SetNumberOfComponents(1);
+      aCellLocationsArray->SetNumberOfTuples(1);
+
       aCells->InitTraversal();
       vtkIdType npts;
-      aCellLocationsArray->SetValue( 0, aCells->GetTraversalLocation( npts ) );
-  
-      aGrid->SetCells( aCellTypesArray, aCellLocationsArray, aCells );
+      aCellLocationsArray->SetValue(0, aCells->GetTraversalLocation(npts));
 
-      aGrid->SetPoints( myPoints );
-      aGrid->SetCells( aCellTypesArray, aCellLocationsArray,aCells );
+      aGrid->SetCells(aCellTypesArray, aCellLocationsArray, aCells);
+
+      aGrid->SetPoints(myPoints);
+      aGrid->SetCells(aCellTypesArray, aCellLocationsArray,aCells);
       aCellLocationsArray->Delete();
       aCellTypesArray->Delete();
       aCells->Delete();
-      anIdList->Delete(); 
+      anIdList->Delete();
 
       // Create and display actor
       myMapper = vtkDataSetMapper::New();
-      myMapper->SetInput( aGrid );
+      myMapper->SetInput(aGrid);
       aGrid->Delete();
 
       myPreviewActor = SALOME_Actor::New();
       myPreviewActor->SetInfinitive(true);
       myPreviewActor->VisibilityOff();
       myPreviewActor->PickableOff();
-      myPreviewActor->SetMapper( myMapper );
+      myPreviewActor->SetMapper(myMapper);
 
       vtkProperty* aProp = vtkProperty::New();
       aProp->SetRepresentationToPoints();
@@ -186,30 +192,29 @@ namespace SMESH{
       float aPointSize = GetFloat("SMESH:SettingsNodesSize",3);
       aProp->SetPointSize(aPointSize);
 
-      myPreviewActor->SetProperty( aProp );
+      myPreviewActor->SetProperty(aProp);
       aProp->Delete();
 
-      myViewFrame->AddActor( myPreviewActor );
-
+      myVTKViewWindow->AddActor(myPreviewActor);
     }
 
-
-    void SetPosition(float x, float y, float z){
+    void SetPosition (float x, float y, float z)
+    {
       myPoints->SetPoint(0,x,y,z);
       myPoints->Modified();
       SetVisibility(true);
     }
 
-
-    void SetVisibility(bool theVisibility){
+    void SetVisibility (bool theVisibility)
+    {
       myPreviewActor->SetVisibility(theVisibility);
       RepaintCurrentView();
     }
 
-
-    ~TNodeSimulation(){
-      if(FindVtkViewFrame(myStudy,myStudyFrame)){
-       myViewFrame->RemoveActor(myPreviewActor);
+    ~TNodeSimulation()
+    {
+      if (FindVtkViewWindow(myApplication->activeViewManager(), myViewWindow)) {
+       myVTKViewWindow->RemoveActor(myPreviewActor);
       }
       myPreviewActor->Delete();
 
@@ -218,121 +223,119 @@ namespace SMESH{
 
       myPoints->Delete();
     }
-
   };
-
 }
 
-
 //=================================================================================
 // class    : SMESHGUI_NodesDlg()
-// purpose  : 
+// purpose  :
 //=================================================================================
-SMESHGUI_NodesDlg::SMESHGUI_NodesDlgQWidget* parent,
+SMESHGUI_NodesDlg::SMESHGUI_NodesDlg (QWidget* parent,
                                      const char* name,
-                                     SALOME_Selection* Sel,
+                                     SalomeApp_SelectionMgr* Sel,
                                      bool modal,
-                                     WFlags fl )
-  : QDialog( parent, name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu |
-            Qt::WDestructiveClose)
+                                     WFlags fl)
+  : QDialog(parent, name, modal, WStyle_Customize | WStyle_NormalBorder |
+            WStyle_Title | WStyle_SysMenu | Qt::WDestructiveClose)
 {
-  mySimulation = new SMESH::TNodeSimulation(SMESH::GetActiveStudy());
-
-  QPixmap image0(QAD_Desktop::getResourceManager()->loadPixmap( "SMESH",tr("ICON_DLG_NODE")));
-  if ( !name )
-    setName( "SMESHGUI_NodesDlg" );
-  resize( 303, 185 ); 
-  setCaption( tr( "MESH_NODE_TITLE"  ) );
-  setSizeGripEnabled( TRUE );
-  SMESHGUI_NodesDlgLayout = new QGridLayout( this ); 
-  SMESHGUI_NodesDlgLayout->setSpacing( 6 );
-  SMESHGUI_NodesDlgLayout->setMargin( 11 );
+  SalomeApp_Application* anApp = dynamic_cast<SalomeApp_Application*>
+    (SUIT_Session::session()->activeApplication());
+  mySimulation = new SMESH::TNodeSimulation (anApp);
+
+  QPixmap image0 (SMESHGUI::resourceMgr()->loadPixmap("SMESH", tr("ICON_DLG_NODE")));
+  if (!name)
+    setName("SMESHGUI_NodesDlg");
+  resize(303, 185);
+  setCaption(tr("MESH_NODE_TITLE"));
+  setSizeGripEnabled(TRUE);
+  SMESHGUI_NodesDlgLayout = new QGridLayout(this);
+  SMESHGUI_NodesDlgLayout->setSpacing(6);
+  SMESHGUI_NodesDlgLayout->setMargin(11);
 
   /***************************************************************/
-  GroupButtons = new QGroupBox( this, "GroupButtons" );
-  GroupButtons->setGeometry( QRect( 10, 10, 281, 48 ) ); 
-  GroupButtons->setTitle( tr( ""  ) );
-  GroupButtons->setColumnLayout(0, Qt::Vertical );
-  GroupButtons->layout()->setSpacing( 0 );
-  GroupButtons->layout()->setMargin( 0 );
-  GroupButtonsLayout = new QGridLayout( GroupButtons->layout() );
-  GroupButtonsLayout->setAlignment( Qt::AlignTop );
-  GroupButtonsLayout->setSpacing( 6 );
-  GroupButtonsLayout->setMargin( 11 );
-  buttonCancel = new QPushButton( GroupButtons, "buttonCancel" );
-  buttonCancel->setText( tr( "SMESH_BUT_CLOSE"  ) );
-  buttonCancel->setAutoDefault( TRUE );
-  GroupButtonsLayout->addWidget( buttonCancel, 0, 3 );
-  buttonApply = new QPushButton( GroupButtons, "buttonApply" );
-  buttonApply->setText( tr( "SMESH_BUT_APPLY"  ) );
-  buttonApply->setAutoDefault( TRUE );
-  GroupButtonsLayout->addWidget( buttonApply, 0, 1 );
-  QSpacerItem* spacer_9 = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
-  GroupButtonsLayout->addItem( spacer_9, 0, 2 );
-  buttonOk = new QPushButton( GroupButtons, "buttonOk" );
-  buttonOk->setText( tr( "SMESH_BUT_OK"  ) );
-  buttonOk->setAutoDefault( TRUE );
-  buttonOk->setDefault( TRUE );
-  GroupButtonsLayout->addWidget( buttonOk, 0, 0 );
-  SMESHGUI_NodesDlgLayout->addWidget( GroupButtons, 2, 0 );
+  GroupButtons = new QGroupBox(this, "GroupButtons");
+  GroupButtons->setGeometry(QRect(10, 10, 281, 48));
+  GroupButtons->setTitle(tr("" ));
+  GroupButtons->setColumnLayout(0, Qt::Vertical);
+  GroupButtons->layout()->setSpacing(0);
+  GroupButtons->layout()->setMargin(0);
+  GroupButtonsLayout = new QGridLayout(GroupButtons->layout());
+  GroupButtonsLayout->setAlignment(Qt::AlignTop);
+  GroupButtonsLayout->setSpacing(6);
+  GroupButtonsLayout->setMargin(11);
+  buttonCancel = new QPushButton(GroupButtons, "buttonCancel");
+  buttonCancel->setText(tr("SMESH_BUT_CLOSE" ));
+  buttonCancel->setAutoDefault(TRUE);
+  GroupButtonsLayout->addWidget(buttonCancel, 0, 3);
+  buttonApply = new QPushButton(GroupButtons, "buttonApply");
+  buttonApply->setText(tr("SMESH_BUT_APPLY" ));
+  buttonApply->setAutoDefault(TRUE);
+  GroupButtonsLayout->addWidget(buttonApply, 0, 1);
+  QSpacerItem* spacer_9 = new QSpacerItem(20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
+  GroupButtonsLayout->addItem(spacer_9, 0, 2);
+  buttonOk = new QPushButton(GroupButtons, "buttonOk");
+  buttonOk->setText(tr("SMESH_BUT_OK" ));
+  buttonOk->setAutoDefault(TRUE);
+  buttonOk->setDefault(TRUE);
+  GroupButtonsLayout->addWidget(buttonOk, 0, 0);
+  SMESHGUI_NodesDlgLayout->addWidget(GroupButtons, 2, 0);
 
   /***************************************************************/
-  GroupConstructors = new QButtonGroup( this, "GroupConstructors" );
-  GroupConstructors->setTitle( tr( "MESH_NODE"  ) );
-  GroupConstructors->setExclusive( TRUE );
-  GroupConstructors->setColumnLayout(0, Qt::Vertical );
-  GroupConstructors->layout()->setSpacing( 0 );
-  GroupConstructors->layout()->setMargin( 0 );
-  GroupConstructorsLayout = new QGridLayout( GroupConstructors->layout() );
-  GroupConstructorsLayout->setAlignment( Qt::AlignTop );
-  GroupConstructorsLayout->setSpacing( 6 );
-  GroupConstructorsLayout->setMargin( 11 );
-  Constructor1 = new QRadioButton( GroupConstructors, "Constructor1" );
-  Constructor1->setText( tr( ""  ) );
-  Constructor1->setPixmap( image0 );
-  Constructor1->setChecked( TRUE );
-  GroupConstructorsLayout->addWidget( Constructor1, 0, 0 );
-  QSpacerItem* spacer_2 = new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum );
-  GroupConstructorsLayout->addItem( spacer_2, 0, 1 );
-  SMESHGUI_NodesDlgLayout->addWidget( GroupConstructors, 0, 0 );
+  GroupConstructors = new QButtonGroup(this, "GroupConstructors");
+  GroupConstructors->setTitle(tr("MESH_NODE" ));
+  GroupConstructors->setExclusive(TRUE);
+  GroupConstructors->setColumnLayout(0, Qt::Vertical);
+  GroupConstructors->layout()->setSpacing(0);
+  GroupConstructors->layout()->setMargin(0);
+  GroupConstructorsLayout = new QGridLayout(GroupConstructors->layout());
+  GroupConstructorsLayout->setAlignment(Qt::AlignTop);
+  GroupConstructorsLayout->setSpacing(6);
+  GroupConstructorsLayout->setMargin(11);
+  Constructor1 = new QRadioButton(GroupConstructors, "Constructor1");
+  Constructor1->setText(tr("" ));
+  Constructor1->setPixmap(image0);
+  Constructor1->setChecked(TRUE);
+  GroupConstructorsLayout->addWidget(Constructor1, 0, 0);
+  QSpacerItem* spacer_2 = new QSpacerItem(20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
+  GroupConstructorsLayout->addItem(spacer_2, 0, 1);
+  SMESHGUI_NodesDlgLayout->addWidget(GroupConstructors, 0, 0);
 
   /***************************************************************/
-  GroupCoordinates = new QGroupBox( this, "GroupCoordinates" );
-  GroupCoordinates->setTitle( tr( "SMESH_COORDINATES"  ) );
-  GroupCoordinates->setColumnLayout(0, Qt::Vertical );
-  GroupCoordinates->layout()->setSpacing( 0 );
-  GroupCoordinates->layout()->setMargin( 0 );
-  GroupCoordinatesLayout = new QGridLayout( GroupCoordinates->layout() );
-  GroupCoordinatesLayout->setAlignment( Qt::AlignTop );
-  GroupCoordinatesLayout->setSpacing( 6 );
-  GroupCoordinatesLayout->setMargin( 11 );
-  TextLabel_X = new QLabel( GroupCoordinates, "TextLabel_X" );
-  TextLabel_X->setText( tr( "SMESH_X"  ) );
-  GroupCoordinatesLayout->addWidget( TextLabel_X, 0, 0 );
-  TextLabel_Y = new QLabel( GroupCoordinates, "TextLabel_Y" );
-  TextLabel_Y->setText( tr( "SMESH_Y"  ) );
-  GroupCoordinatesLayout->addWidget( TextLabel_Y, 0, 2 );
-  
-  TextLabel_Z = new QLabel( GroupCoordinates, "TextLabel_Z" );
-  TextLabel_Z->setText( tr( "SMESH_Z"  ) );
-  GroupCoordinatesLayout->addWidget( TextLabel_Z, 0, 4 );
-  
-  SpinBox_X = new SMESHGUI_SpinBox( GroupCoordinates, "SpinBox_X" ) ;
-  GroupCoordinatesLayout->addWidget( SpinBox_X, 0, 1 );
-
-  SpinBox_Y = new SMESHGUI_SpinBox( GroupCoordinates, "SpinBox_Y" ) ;
-  GroupCoordinatesLayout->addWidget( SpinBox_Y, 0, 3 );
-  SpinBox_Z = new SMESHGUI_SpinBox( GroupCoordinates, "SpinBox_Z" ) ;
-  GroupCoordinatesLayout->addWidget( SpinBox_Z, 0, 5 );
-
-  SMESHGUI_NodesDlgLayout->addWidget( GroupCoordinates, 1, 0 );
+  GroupCoordinates = new QGroupBox(this, "GroupCoordinates");
+  GroupCoordinates->setTitle(tr("SMESH_COORDINATES" ));
+  GroupCoordinates->setColumnLayout(0, Qt::Vertical);
+  GroupCoordinates->layout()->setSpacing(0);
+  GroupCoordinates->layout()->setMargin(0);
+  GroupCoordinatesLayout = new QGridLayout(GroupCoordinates->layout());
+  GroupCoordinatesLayout->setAlignment(Qt::AlignTop);
+  GroupCoordinatesLayout->setSpacing(6);
+  GroupCoordinatesLayout->setMargin(11);
+  TextLabel_X = new QLabel(GroupCoordinates, "TextLabel_X");
+  TextLabel_X->setText(tr("SMESH_X" ));
+  GroupCoordinatesLayout->addWidget(TextLabel_X, 0, 0);
+  TextLabel_Y = new QLabel(GroupCoordinates, "TextLabel_Y");
+  TextLabel_Y->setText(tr("SMESH_Y" ));
+  GroupCoordinatesLayout->addWidget(TextLabel_Y, 0, 2);
+
+  TextLabel_Z = new QLabel(GroupCoordinates, "TextLabel_Z");
+  TextLabel_Z->setText(tr("SMESH_Z" ));
+  GroupCoordinatesLayout->addWidget(TextLabel_Z, 0, 4);
+
+  SpinBox_X = new SMESHGUI_SpinBox(GroupCoordinates, "SpinBox_X");
+  GroupCoordinatesLayout->addWidget(SpinBox_X, 0, 1);
+
+  SpinBox_Y = new SMESHGUI_SpinBox(GroupCoordinates, "SpinBox_Y");
+  GroupCoordinatesLayout->addWidget(SpinBox_Y, 0, 3);
+
+  SpinBox_Z = new SMESHGUI_SpinBox(GroupCoordinates, "SpinBox_Z");
+  GroupCoordinatesLayout->addWidget(SpinBox_Z, 0, 5);
+
+  SMESHGUI_NodesDlgLayout->addWidget(GroupCoordinates, 1, 0);
+
   /* Initialisation and display */
-  Init(Sel) ;
+  Init(Sel);
 }
 
-
 //=======================================================================
 // function : ~SMESHGUI_NodesDlg()
 // purpose  : Destructor
@@ -342,54 +345,57 @@ SMESHGUI_NodesDlg::~SMESHGUI_NodesDlg()
   delete mySimulation;
 }
 
-
 //=================================================================================
 // function : Init()
 // purpose  :
 //=================================================================================
-void SMESHGUI_NodesDlg::Init(SALOME_Selection* Sel)
+void SMESHGUI_NodesDlg::Init (SalomeApp_SelectionMgr* Sel)
 {
   /* Get setting of step value from file configuration */
-  double step ;
-  // QString St = QAD_CONFIG->getSetting( "xxxxxxxxxxxxx" ) ;  TODO
-  // step = St.toDouble() ;                                    TODO
-  step = 25.0 ;
-  
+  double step;
+  // QString St = SUIT_CONFIG->getSetting("xxxxxxxxxxxxx");  TODO
+  // step = St.toDouble();                                    TODO
+  step = 25.0;
+
   /* min, max, step and decimals for spin boxes */
-  SpinBox_X->RangeStepAndValidator( -999.999, +999.999, step, 3 ) ;
-  SpinBox_Y->RangeStepAndValidator( -999.999, +999.999, step, 3 ) ;
-  SpinBox_Z->RangeStepAndValidator( -999.999, +999.999, step, 3 ) ;  
-  SpinBox_X->SetValue( 0.0 ) ;
-  SpinBox_Y->SetValue( 0.0 ) ;
-  SpinBox_Z->SetValue( 0.0 ) ;
-  
-  mySelection = Sel ;
-  myMeshGUI = SMESHGUI::GetSMESHGUI() ;   
-  myMeshGUI->SetActiveDialogBox( (QDialog*)this ) ;
-  
+  SpinBox_X->RangeStepAndValidator(-999.999, +999.999, step, 3);
+  SpinBox_Y->RangeStepAndValidator(-999.999, +999.999, step, 3);
+  SpinBox_Z->RangeStepAndValidator(-999.999, +999.999, step, 3);
+  SpinBox_X->SetValue(0.0);
+  SpinBox_Y->SetValue(0.0);
+  SpinBox_Z->SetValue(0.0);
+
+  mySelectionMgr = Sel;
+  myMeshGUI = SMESHGUI::GetSMESHGUI();
+  myMeshGUI->SetActiveDialogBox((QDialog*)this);
+
   /* signals and slots connections */
-  connect( buttonOk, SIGNAL( clicked() ), this, SLOT( ClickOnOk() ) );
-  connect( buttonCancel, SIGNAL( clicked() ), this, SLOT( ClickOnCancel() ) );
-  connect( buttonApply, SIGNAL( clicked() ), this, SLOT(ClickOnApply() ) );
-  
-  connect( SpinBox_X, SIGNAL ( valueChanged(double) ), SLOT( ValueChangedInSpinBox(double) )) ;
-  connect( SpinBox_Y, SIGNAL ( valueChanged(double) ), SLOT( ValueChangedInSpinBox(double) )) ;
-  connect( SpinBox_Z, SIGNAL ( valueChanged(double) ), SLOT( ValueChangedInSpinBox(double) )) ;
-
-  connect( mySelection, SIGNAL( currentSelectionChanged() ), SLOT( SelectionIntoArgument() ));
-  connect( myMeshGUI, SIGNAL ( SignalDeactivateActiveDialog() ), SLOT( DeactivateActiveDialog() )) ;
+  connect(buttonOk, SIGNAL(clicked()), this, SLOT(ClickOnOk()));
+  connect(buttonCancel, SIGNAL(clicked()), this, SLOT(ClickOnCancel()));
+  connect(buttonApply, SIGNAL(clicked()), this, SLOT(ClickOnApply()));
+
+  connect(SpinBox_X, SIGNAL (valueChanged(double)), SLOT(ValueChangedInSpinBox(double)));
+  connect(SpinBox_Y, SIGNAL (valueChanged(double)), SLOT(ValueChangedInSpinBox(double)));
+  connect(SpinBox_Z, SIGNAL (valueChanged(double)), SLOT(ValueChangedInSpinBox(double)));
+
+  connect(mySelectionMgr, SIGNAL(currentSelectionChanged()), SLOT(SelectionIntoArgument()));
+  connect(myMeshGUI, SIGNAL (SignalDeactivateActiveDialog()), SLOT(DeactivateActiveDialog()));
   /* to close dialog if study frame change */
-  connect( myMeshGUI, SIGNAL ( SignalStudyFrameChanged() ), SLOT( ClickOnCancel() ) ) ;
+  connect(myMeshGUI, SIGNAL (SignalStudyFrameChanged()), SLOT(ClickOnCancel()));
+
   /* Move widget on the botton right corner of main widget */
-  int x, y ;
-  myMeshGUI->DefineDlgPosition( this, x, y ) ;
-  this->move( x, y ) ;
-  this->show() ;
+  int x, y;
+  myMeshGUI->DefineDlgPosition(this, x, y);
+  this->move(x, y);
+  this->show();
 
   // set selection mode
   SMESH::SetPointRepresentation(true);
-  QAD_Application::getDesktop()->SetSelectionMode( NodeSelection, true );
+#ifdef NEW_GUI
+  mySelectionMgr->setSelectionModes(NodeSelection, true);
+#else
+  mySelectionMgr->setSelectionModes(NodeSelection);
+#endif
 
   SelectionIntoArgument();
 }
@@ -398,16 +404,15 @@ void SMESHGUI_NodesDlg::Init(SALOME_Selection* Sel)
 // function : ValueChangedInSpinBox()
 // purpose  :
 //=================================================================================
-void SMESHGUI_NodesDlg::ValueChangedInSpinBox( double newValue )
+void SMESHGUI_NodesDlg::ValueChangedInSpinBox (double newValue)
 {
-  if(!myMesh->_is_nil()){
-    double vx = SpinBox_X->GetValue() ;
-    double vy = SpinBox_Y->GetValue() ;
-    double vz = SpinBox_Z->GetValue() ;
+  if (!myMesh->_is_nil()) {
+    double vx = SpinBox_X->GetValue();
+    double vy = SpinBox_Y->GetValue();
+    double vz = SpinBox_Z->GetValue();
 
     mySimulation->SetPosition(vx,vy,vz);
   }
-  return ;
 }
 
 //=================================================================================
@@ -416,73 +421,83 @@ void SMESHGUI_NodesDlg::ValueChangedInSpinBox( double newValue )
 //=================================================================================
 void SMESHGUI_NodesDlg::ClickOnOk()
 {
-  if ( ClickOnApply() )
-    ClickOnCancel() ;
+  if (ClickOnApply())
+    ClickOnCancel();
 }
 
-//=======================================================================
+//=================================================================================
 // function : ClickOnApply()
 // purpose  :
-//=======================================================================
+//=================================================================================
 bool SMESHGUI_NodesDlg::ClickOnApply()
 {
-  if (myMeshGUI->ActiveStudyLocked())
+  if (myMeshGUI->isActiveStudyLocked())
     return false;
 
-  if ( myMesh->_is_nil() ) {
-    QAD_MessageBox::warn1(QAD_Application::getDesktop(),
-                          tr("SMESH_WRN_WARNING"),
-                          tr("MESH_IS_NOT_SELECTED"),
-                          tr("SMESH_BUT_OK"));
+  if (myMesh->_is_nil()) {
+    SUIT_MessageBox::warn1(SMESHGUI::desktop(), tr("SMESH_WRN_WARNING"),
+                           tr("MESH_IS_NOT_SELECTED"), tr("SMESH_BUT_OK"));
     return false;
   }
-                              
+
   /* Recup args and call method */
-  double x = SpinBox_X->GetValue() ;
-  double y = SpinBox_Y->GetValue() ;
-  double z = SpinBox_Z->GetValue() ;
+  double x = SpinBox_X->GetValue();
+  double y = SpinBox_Y->GetValue();
+  double z = SpinBox_Z->GetValue();
   mySimulation->SetVisibility(false);
-  SMESH::AddNode(myMesh,x,y,z) ; 
+  SMESH::AddNode(myMesh,x,y,z);
   SMESH::SetPointRepresentation(true);
 
   // select myMesh
-  if ( mySelection->IObjectCount() != 1 ) {
-    if(VTKViewer_ViewFrame* aViewFrame = SMESH::GetCurrentVtkView()) {
-      vtkActorCollection *aCollection = aViewFrame->getRenderer()->GetActors();
+  SALOME_ListIO aList;
+  mySelectionMgr->selectedObjects(aList);
+  if (aList.Extent() != 1) {
+    if (SVTK_ViewWindow* aViewWindow = SMESH::GetCurrentVtkView()) {
+      vtkActorCollection *aCollection = aViewWindow->getRenderer()->GetActors();
       aCollection->InitTraversal();
-      while(vtkActor *anAct = aCollection->GetNextActor()){
-        if(SMESH_Actor *anActor = dynamic_cast<SMESH_Actor*>(anAct))
-          if(anActor->hasIO())
-            if(SMESH_MeshObj *aMeshObj = dynamic_cast<SMESH_MeshObj*>(anActor->GetObject().get()))
-              if(myMesh->_is_equivalent( aMeshObj->GetMeshServer() ))
-              {
-                mySelection->ClearIObjects();
-                mySelection->AddIObject( anActor->getIO(), false );
+      while (vtkActor *anAct = aCollection->GetNextActor()) {
+        if (SMESH_Actor *anActor = dynamic_cast<SMESH_Actor*>(anAct)) {
+          if (anActor->hasIO()) {
+            if (SMESH_MeshObj *aMeshObj = dynamic_cast<SMESH_MeshObj*>(anActor->GetObject().get())) {
+              if (myMesh->_is_equivalent(aMeshObj->GetMeshServer())) {
+#ifdef NEW_GUI
+                mySelectionMgr->clearSelected();
+                mySelectionMgr->AddIObject(anActor->getIO(), false);
+#else
+                aList.Clear();
+                aList.Append(anActor->getIO());
+                mySelectionMgr->setSelectedObjects(aList, false);
+#endif
                 break;
               }
+            }
+          }
+        }
       }
     }
   }
   return true;
 }
 
-
-//=======================================================================
+//=================================================================================
 // function : ClickOnCancel()
 // purpose  :
-//=======================================================================
+//=================================================================================
 void SMESHGUI_NodesDlg::ClickOnCancel()
 {
-  mySelection->ClearIObjects();
+  MESSAGE("SMESHGUI_NodesDlg::ClickOnCancel() 1");
+  disconnect(mySelectionMgr, 0, this, 0);
+  mySelectionMgr->clearSelected();
+  mySelectionMgr->setSelectionModes(ActorSelection);
+
+  MESSAGE("SMESHGUI_NodesDlg::ClickOnCancel() 2");
   mySimulation->SetVisibility(false);
   SMESH::SetPointRepresentation(false);
-  QAD_Application::getDesktop()->SetSelectionMode( ActorSelection );
-  disconnect( mySelection, 0, this, 0 );
   myMeshGUI->ResetState();
-  reject() ;
-  return ;
-}
 
+  reject();
+  MESSAGE("SMESHGUI_NodesDlg::ClickOnCancel() 3");
+}
 
 //=================================================================================
 // function : SelectionIntoArgument()
@@ -490,26 +505,28 @@ void SMESHGUI_NodesDlg::ClickOnCancel()
 //=================================================================================
 void SMESHGUI_NodesDlg::SelectionIntoArgument()
 {
-  if ( !GroupConstructors->isEnabled() )
+  if (!GroupConstructors->isEnabled())
     return;
 
   mySimulation->SetVisibility(false);
   SMESH::SetPointRepresentation(true);
 
-  if(mySelection->IObjectCount() == 1){
-    Handle(SALOME_InteractiveObject) anIO = mySelection->firstIObject();
-    if(anIO->hasEntry()){
+  SALOME_ListIO aList;
+  mySelectionMgr->selectedObjects(aList);
+  if (aList.Extent() == 1) {
+    Handle(SALOME_InteractiveObject) anIO = aList.First();
+    if (anIO->hasEntry()) {
       myMesh = SMESH::GetMeshByIO(anIO);
-      if(myMesh->_is_nil()) return;
+      if (myMesh->_is_nil()) return;
       QString aText;
-      if(SMESH::GetNameOfSelectedNodes( mySelection, aText ) == 1){
-       if(SMESH_Actor* anActor = SMESH::FindActorByObject(myMesh.in())){
-         if(SMDS_Mesh* aMesh = anActor->GetObject()->GetMesh()){
-           if(const SMDS_MeshNode* aNode = aMesh->FindNode(aText.toInt())){
-             SpinBox_X->SetValue( aNode->X() );
-             SpinBox_Y->SetValue( aNode->Y() ) ;
-             SpinBox_Z->SetValue( aNode->Z() ) ;
-             }
+      if (SMESH::GetNameOfSelectedNodes(mySelectionMgr, aText) == 1) {
+       if (SMESH_Actor* anActor = SMESH::FindActorByObject(myMesh.in())) {
+         if (SMDS_Mesh* aMesh = anActor->GetObject()->GetMesh()) {
+           if (const SMDS_MeshNode* aNode = aMesh->FindNode(aText.toInt())) {
+             SpinBox_X->SetValue(aNode->X());
+             SpinBox_Y->SetValue(aNode->Y());
+             SpinBox_Z->SetValue(aNode->Z());
+            }
          }
        }
       }
@@ -520,24 +537,22 @@ void SMESHGUI_NodesDlg::SelectionIntoArgument()
   }
 }
 
-
-//=======================================================================
+//=================================================================================
 // function : closeEvent()
 // purpose  :
-//=======================================================================
-void SMESHGUI_NodesDlg::closeEvent(QCloseEvent* e)
+//=================================================================================
+void SMESHGUI_NodesDlg::closeEvent (QCloseEvent*)
 {
-  this->ClickOnCancel() ; /* same than click on cancel button */
+  this->ClickOnCancel(); /* same than click on cancel button */
 }
 
-//=======================================================================
-//function : hideEvent
-//purpose  : caused by ESC key
-//=======================================================================
-
-void SMESHGUI_NodesDlg::hideEvent ( QHideEvent * e )
+//=================================================================================
+// function : hideEvent()
+// purpose  : caused by ESC key
+//=================================================================================
+void SMESHGUI_NodesDlg::hideEvent (QHideEvent*)
 {
-  if ( !isMinimized() )
+  if (!isMinimized())
     ClickOnCancel();
 }
 
@@ -545,43 +560,45 @@ void SMESHGUI_NodesDlg::hideEvent ( QHideEvent * e )
 // function : enterEvent()
 // purpose  : to reactivate this dialog box when mouse enter onto the window
 //=================================================================================
-void SMESHGUI_NodesDlg::enterEvent( QEvent* e)
+void SMESHGUI_NodesDlg::enterEvent(QEvent*)
 {
-  if ( !GroupConstructors->isEnabled() )
-    ActivateThisDialog() ;
+  if (!GroupConstructors->isEnabled())
+    ActivateThisDialog();
 }
 
-
 //=================================================================================
 // function : DeactivateActiveDialog()
 // purpose  : public slot to deactivate if active
 //=================================================================================
 void SMESHGUI_NodesDlg::DeactivateActiveDialog()
 {
-  if ( GroupConstructors->isEnabled() ) {
-    GroupConstructors->setEnabled(false) ;
-    GroupCoordinates->setEnabled(false) ;
-    GroupButtons->setEnabled(false) ;
-    mySimulation->SetVisibility(false) ;
-    myMeshGUI->ResetState() ;    
-    myMeshGUI->SetActiveDialogBox(0) ;
+  if (GroupConstructors->isEnabled()) {
+    GroupConstructors->setEnabled(false);
+    GroupCoordinates->setEnabled(false);
+    GroupButtons->setEnabled(false);
+    mySimulation->SetVisibility(false);
+    myMeshGUI->ResetState();
+    myMeshGUI->SetActiveDialogBox(0);
   }
 }
 
-
 //=================================================================================
 // function : ActivateThisDialog()
 // purpose  :
 //=================================================================================
-void SMESHGUI_NodesDlg::ActivateThisDialog( )
+void SMESHGUI_NodesDlg::ActivateThisDialog()
 {
-  myMeshGUI->EmitSignalDeactivateDialog() ;
-  GroupConstructors->setEnabled(true) ;
-  GroupCoordinates->setEnabled(true) ;
-  GroupButtons->setEnabled(true) ;
+  myMeshGUI->EmitSignalDeactivateDialog();
+  GroupConstructors->setEnabled(true);
+  GroupCoordinates->setEnabled(true);
+  GroupButtons->setEnabled(true);
 
   SMESH::SetPointRepresentation(true);
-  QAD_Application::getDesktop()->SetSelectionMode( NodeSelection, true );
+#ifdef NEW_GUI
+  mySelectionMgr->setSelectionModes(NodeSelection, true);
+#else
+  mySelectionMgr->setSelectionModes(NodeSelection);
+#endif
 
   SelectionIntoArgument();
 }