Salome HOME
Using files from package LightApp instead of files from package SalomeApp
[modules/smesh.git] / src / SMESHGUI / SMESHGUI_CreatePatternDlg.cxx
index 3e63d654f9b34945a32fc5fa50cd97a4defff4dd..fdf604ae7bc73a13b865078ff1b1f4508536d489 100755 (executable)
@@ -1,23 +1,23 @@
 //  SMESH SMESHGUI : GUI for SMESH component\r
 //\r
 //  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,\r
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS \r
-// \r
-//  This library is free software; you can redistribute it and/or \r
-//  modify it under the terms of the GNU Lesser General Public \r
-//  License as published by the Free Software Foundation; either \r
-//  version 2.1 of the License. \r
-// \r
-//  This library is distributed in the hope that it will be useful, \r
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of \r
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU \r
-//  Lesser General Public License for more details. \r
-// \r
-//  You should have received a copy of the GNU Lesser General Public \r
-//  License along with this library; if not, write to the Free Software \r
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA \r
-// \r
-//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org \r
+//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS\r
+//\r
+//  This library is free software; you can redistribute it and/or\r
+//  modify it under the terms of the GNU Lesser General Public\r
+//  License as published by the Free Software Foundation; either\r
+//  version 2.1 of the License.\r
+//\r
+//  This library is distributed in the hope that it will be useful,\r
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
+//  Lesser General Public License for more details.\r
+//\r
+//  You should have received a copy of the GNU Lesser General Public\r
+//  License along with this library; if not, write to the Free Software\r
+//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA\r
+//\r
+//  See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org\r
 //\r
 //\r
 //\r
 \r
 #include "SMESHGUI_CreatePatternDlg.h"\r
 \r
-#include "QAD_Desktop.h"\r
-#include "QAD_FileDlg.h"\r
-\r
-#include "SMESHGUI_PatternWidget.h"\r
-#include "SMESHGUI_SpinBox.h"\r
 #include "SMESHGUI.h"\r
-#include "SALOME_Selection.h"\r
-#include "SALOME_ListIteratorOfListOfFilter.hxx"\r
-#include "SALOMEGUI_QtCatchCorbaException.hxx"\r
-#include "SMESH_NumberFilter.hxx"\r
+#include "SMESHGUI_SpinBox.h"\r
+#include "SMESHGUI_PatternWidget.h"\r
 #include "SMESHGUI_Utils.h"\r
 #include "SMESHGUI_VTKUtils.h"\r
 #include "SMESHGUI_PatternUtils.h"\r
+#include "SMESHGUI_GEOMGenUtils.h"\r
+\r
+#include "SMESH_NumberFilter.hxx"\r
+\r
+#include "SUIT_ResourceMgr.h"\r
+#include "SUIT_Desktop.h"\r
+#include "SUIT_FileDlg.h"\r
+\r
+#include "SalomeApp_Study.h"\r
+#include "LightApp_DataOwner.h"\r
+#include "LightApp_SelectionMgr.h"\r
+#include "SalomeApp_Tools.h"\r
+\r
+#include "SALOMEDS_SObject.hxx"\r
 \r
+#include "SALOME_ListIO.hxx"\r
+#include "SVTK_ViewModel.h"\r
+#include "SVTK_ViewWindow.h"\r
+#include "SVTK_Selector.h"\r
+#include "SVTK_Selection.h"\r
+\r
+// OCCT Includes\r
 #include <TColStd_MapOfInteger.hxx>\r
 \r
+// QT Includes\r
 #include <qframe.h>\r
 #include <qlayout.h>\r
 #include <qlineedit.h>\r
 #define SPACING 5\r
 #define MARGIN  10\r
 \r
-/*\r
-  Class       : SMESHGUI_CreatePatternDlg\r
-  Description : Dialog to specify filters for VTK viewer\r
-*/\r
+/*!\r
 Class       : SMESHGUI_CreatePatternDlg\r
 Description : Dialog to specify filters for VTK viewer\r
+ */\r
 \r
 //=======================================================================\r
-// name    : SMESHGUI_CreatePatternDlg::SMESHGUI_CreatePatternDlg\r
-// Purpose : Constructor\r
+// function : SMESHGUI_CreatePatternDlg()\r
+// purpose  : Constructor\r
 //=======================================================================\r
-SMESHGUI_CreatePatternDlg::SMESHGUI_CreatePatternDlg( QWidget*          theParent,\r
-                                                      SALOME_Selection* theSelection,\r
-                                                      const int         theType,\r
-                                                      const char*       theName )\r
-: QDialog( theParent, theName, false,\r
-           WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu )\r
+SMESHGUI_CreatePatternDlg::SMESHGUI_CreatePatternDlg( SMESHGUI*   theModule,\r
+                                                      const int   theType,\r
+                                                      const char* theName)\r
+     : QDialog( SMESH::GetDesktop( theModule ), theName, false,\r
+                WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu),\r
+     mySMESHGUI( theModule ),\r
+     mySelectionMgr( SMESH::GetSelectionMgr( theModule ) )\r
 {\r
-  setCaption( tr( "CAPTION" ) );\r
+  setCaption(tr("CAPTION"));\r
+\r
+  QVBoxLayout* aDlgLay = new QVBoxLayout (this, MARGIN, SPACING);\r
 \r
-  QVBoxLayout* aDlgLay = new QVBoxLayout( this, MARGIN, SPACING );\r
+  QFrame* aMainFrame = createMainFrame  (this);\r
+  QFrame* aBtnFrame  = createButtonFrame(this);\r
 \r
-  QFrame* aMainFrame = createMainFrame  ( this );\r
-  QFrame* aBtnFrame  = createButtonFrame( this );\r
+  aDlgLay->addWidget(aMainFrame);\r
+  aDlgLay->addWidget(aBtnFrame);\r
 \r
-  aDlgLay->addWidget( aMainFrame );\r
-  aDlgLay->addWidget( aBtnFrame );\r
+  aDlgLay->setStretchFactor(aMainFrame, 1);\r
 \r
-  aDlgLay->setStretchFactor( aMainFrame, 1 );\r
+  if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))\r
+    mySelector = aViewWindow->GetSelector();\r
 \r
-  Init( theSelection, theType );\r
+  Init(theType);\r
 }\r
 \r
 //=======================================================================\r
-// name    : SMESHGUI_CreatePatternDlg::createMainFrame\r
-// Purpose : Create frame containing dialog's input fields\r
+// function : createMainFrame()\r
+// purpose  : Create frame containing dialog's input fields\r
 //=======================================================================\r
-QFrame* SMESHGUI_CreatePatternDlg::createMainFrame( QWidget* theParent )\r
+QFrame* SMESHGUI_CreatePatternDlg::createMainFrame (QWidget* theParent)\r
 {\r
-  QPixmap iconSlct( QAD_Desktop::getResourceManager()->loadPixmap( "SMESH", tr( "ICON_SELECT" ) ) );\r
-  QPixmap icon2d  ( QAD_Desktop::getResourceManager()->loadPixmap( "SMESH", tr( "ICON_PATTERN_2d" ) ) );\r
-  QPixmap icon3d  ( QAD_Desktop::getResourceManager()->loadPixmap( "SMESH", tr( "ICON_PATTERN_3d" ) ) );\r
+  QPixmap iconSlct     (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_SELECT")));\r
+  QPixmap icon2d       (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_PATTERN_2d")));\r
+  QPixmap icon3d       (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_PATTERN_3d")));\r
+  QPixmap iconSample2d (SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap("SMESH", tr("ICON_PATTERN_SAMPLE_2D")));\r
 \r
-  QPixmap iconSample2d( QAD_Desktop::getResourceManager()->loadPixmap( "SMESH", tr( "ICON_PATTERN_SAMPLE_2D" ) ) );\r
-\r
-  QGroupBox* aMainGrp = new QGroupBox( 1, Qt::Horizontal, theParent );\r
-  aMainGrp->setFrameStyle( QFrame::NoFrame );\r
-  aMainGrp->setInsideMargin( 0 );\r
+  QGroupBox* aMainGrp = new QGroupBox(1, Qt::Horizontal, theParent);\r
+  aMainGrp->setFrameStyle(QFrame::NoFrame);\r
+  aMainGrp->setInsideMargin(0);\r
 \r
   // Pattern type group\r
 \r
-  myTypeGrp = new QButtonGroup( 1, Qt::Vertical, tr( "PATTERN_TYPE" ), aMainGrp );\r
-  mySwitch2d = new QRadioButton( myTypeGrp );\r
-  mySwitch3d = new QRadioButton( myTypeGrp );\r
-  mySwitch2d->setPixmap( icon2d );\r
-  mySwitch3d->setPixmap( icon3d );\r
-  myTypeGrp->insert( mySwitch2d, Type_2d );\r
-  myTypeGrp->insert( mySwitch3d, Type_3d );\r
+  myTypeGrp = new QButtonGroup (1, Qt::Vertical, tr("PATTERN_TYPE"), aMainGrp);\r
+  mySwitch2d = new QRadioButton (myTypeGrp);\r
+  mySwitch3d = new QRadioButton (myTypeGrp);\r
+  mySwitch2d->setPixmap(icon2d);\r
+  mySwitch3d->setPixmap(icon3d);\r
+  myTypeGrp->insert(mySwitch2d, Type_2d);\r
+  myTypeGrp->insert(mySwitch3d, Type_3d);\r
 \r
-  QGroupBox* aPatternGrp = new QGroupBox( 1, Qt::Horizontal, tr( "PATTERN" ), aMainGrp );\r
+  QGroupBox* aPatternGrp = new QGroupBox(1, Qt::Horizontal, tr("PATTERN"), aMainGrp);\r
 \r
   // Mesh and pattern name group\r
-  \r
-  QGroupBox* aMeshGrp = new QGroupBox( 1, Qt::Vertical, aPatternGrp );\r
-  aMeshGrp->setFrameStyle( QFrame::NoFrame );\r
-  aMeshGrp->setInsideMargin( 0 );\r
-  \r
-  new QLabel( tr( "MESH_OR_SUBMESH" ), aMeshGrp );\r
-\r
-  QPushButton* aSelBtn = new QPushButton( aMeshGrp );\r
-  aSelBtn->setPixmap( iconSlct );\r
-  myMeshEdit = new QLineEdit( aMeshGrp );\r
-  myMeshEdit->setReadOnly( true );\r
-\r
-  QGroupBox* aPattGrp = new QGroupBox( 1, Qt::Vertical, aPatternGrp );\r
-  aPattGrp->setFrameStyle( QFrame::NoFrame );\r
-  aPattGrp->setInsideMargin( 0 );\r
-  \r
-  new QLabel( tr( "PATTERN_NAME" ), aPattGrp );\r
-  myName = new QLineEdit( aPattGrp );\r
+\r
+  QGroupBox* aMeshGrp = new QGroupBox(1, Qt::Vertical, aPatternGrp);\r
+  aMeshGrp->setFrameStyle(QFrame::NoFrame);\r
+  aMeshGrp->setInsideMargin(0);\r
+\r
+  new QLabel(tr("MESH_OR_SUBMESH"), aMeshGrp);\r
+\r
+  QPushButton* aSelBtn = new QPushButton(aMeshGrp);\r
+  aSelBtn->setPixmap(iconSlct);\r
+  myMeshEdit = new QLineEdit(aMeshGrp);\r
+  myMeshEdit->setReadOnly(true);\r
+\r
+  QGroupBox* aPattGrp = new QGroupBox(1, Qt::Vertical, aPatternGrp);\r
+  aPattGrp->setFrameStyle(QFrame::NoFrame);\r
+  aPattGrp->setInsideMargin(0);\r
+\r
+  new QLabel(tr("PATTERN_NAME"), aPattGrp);\r
+  myName = new QLineEdit(aPattGrp);\r
 \r
   // Picture 2d\r
-  \r
-  myPicture2d = new SMESHGUI_PatternWidget( aPatternGrp ),\r
-  myPicture2d->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ) );\r
+\r
+  myPicture2d = new SMESHGUI_PatternWidget(aPatternGrp),\r
+  myPicture2d->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding));\r
 \r
   // Project check box\r
-  \r
-  myProjectChk = new QCheckBox( tr( "PROJECT" ), aPatternGrp );\r
-  \r
+\r
+  myProjectChk = new QCheckBox(tr("PROJECT"), aPatternGrp);\r
+\r
   // Connect signals and slots\r
 \r
-  connect( myTypeGrp,    SIGNAL( clicked( int )  ), SLOT( onTypeChanged( int ) ) );\r
-  connect( myProjectChk, SIGNAL( toggled( bool ) ), SLOT( onProject( bool )    ) );\r
-  connect( aSelBtn,      SIGNAL( clicked()       ), SLOT( onSelBtnClicked() ) );\r
+  connect(myTypeGrp,    SIGNAL(clicked(int) ), SLOT(onTypeChanged(int)));\r
+  connect(myProjectChk, SIGNAL(toggled(bool)), SLOT(onProject(bool)   ));\r
+  connect(aSelBtn,      SIGNAL(clicked()      ), SLOT(onSelBtnClicked()));\r
 \r
   return aMainGrp;\r
 }\r
 \r
 //=======================================================================\r
-// name    : SMESHGUI_CreatePatternDlg::createButtonFrame\r
-// Purpose : Create frame containing buttons\r
+// function : createButtonFrame()\r
+// purpose  : Create frame containing buttons\r
 //=======================================================================\r
-QFrame* SMESHGUI_CreatePatternDlg::createButtonFrame( QWidget* theParent )\r
+QFrame* SMESHGUI_CreatePatternDlg::createButtonFrame (QWidget* theParent)\r
 {\r
-  QFrame* aFrame = new QFrame( theParent );\r
-  aFrame->setFrameStyle( QFrame::Box | QFrame::Sunken );\r
+  QFrame* aFrame = new QFrame(theParent);\r
+  aFrame->setFrameStyle(QFrame::Box | QFrame::Sunken);\r
 \r
-  myOkBtn    = new QPushButton( tr( "SMESH_BUT_OK"     ), aFrame );\r
-  mySaveBtn  = new QPushButton( tr( "SAVE"             ), aFrame );\r
-  myCloseBtn = new QPushButton( tr( "SMESH_BUT_CANCEL" ), aFrame );\r
+  myOkBtn    = new QPushButton(tr("SMESH_BUT_OK"    ), aFrame);\r
+  mySaveBtn  = new QPushButton(tr("SAVE"            ), aFrame);\r
+  myCloseBtn = new QPushButton(tr("SMESH_BUT_CANCEL"), aFrame);\r
 \r
-  QSpacerItem* aSpacer = new QSpacerItem( 0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum );\r
+  QSpacerItem* aSpacer = new QSpacerItem(0, 0, QSizePolicy::Expanding, QSizePolicy::Minimum);\r
 \r
-  QHBoxLayout* aLay = new QHBoxLayout( aFrame, MARGIN, SPACING );\r
+  QHBoxLayout* aLay = new QHBoxLayout(aFrame, MARGIN, SPACING);\r
 \r
-  aLay->addWidget( myOkBtn );\r
-  aLay->addWidget( mySaveBtn );\r
-  aLay->addItem( aSpacer);\r
-  aLay->addWidget( myCloseBtn );\r
+  aLay->addWidget(myOkBtn);\r
+  aLay->addWidget(mySaveBtn);\r
+  aLay->addItem(aSpacer);\r
+  aLay->addWidget(myCloseBtn);\r
 \r
-  connect( myOkBtn,    SIGNAL( clicked() ), SLOT( onOk() ) );\r
-  connect( myCloseBtn, SIGNAL( clicked() ), SLOT( onClose() ) ) ;\r
-  connect( mySaveBtn, SIGNAL( clicked() ), SLOT( onSave() ) );\r
+  connect(myOkBtn,    SIGNAL(clicked()), SLOT(onOk()));\r
+  connect(myCloseBtn, SIGNAL(clicked()), SLOT(onClose()));\r
+  connect(mySaveBtn, SIGNAL(clicked()), SLOT(onSave()));\r
 \r
   return aFrame;\r
 }\r
 \r
 //=======================================================================\r
-// name    : SMESHGUI_CreatePatternDlg::~SMESHGUI_CreatePatternDlg\r
-// Purpose : Destructor\r
+// function : ~SMESHGUI_CreatePatternDlg()\r
+// purpose  : Destructor\r
 //=======================================================================\r
 SMESHGUI_CreatePatternDlg::~SMESHGUI_CreatePatternDlg()\r
 {\r
+  // no need to delete child widgets, Qt does it all for us\r
 }\r
 \r
 //=======================================================================\r
-// name    : SMESHGUI_CreatePatternDlg::onProject\r
-// Purpose : SLOT. Called when state of "Project nodes on ther face"\r
-//           checkbox is changed\r
+// function : onProject()\r
+// purpose  : SLOT. Called when state of "Project nodes on ther face"\r
+//            checkbox is changed\r
 //=======================================================================\r
-void SMESHGUI_CreatePatternDlg::onProject( bool )\r
+void SMESHGUI_CreatePatternDlg::onProject (bool)\r
 {\r
-  loadFromObject( false );\r
+  loadFromObject(false);\r
   displayPreview();\r
 }\r
 \r
 //=======================================================================\r
-// name    : SMESHGUI_CreatePatternDlg::Init\r
-// Purpose : Init dialog fields, connect signals and slots, show dialog\r
+// function : Init()\r
+// purpose  : Init dialog fields, connect signals and slots, show dialog\r
 //=======================================================================\r
-void SMESHGUI_CreatePatternDlg::Init( SALOME_Selection* theSelection, const int theType )\r
+void SMESHGUI_CreatePatternDlg::Init( const int theType )\r
 {\r
-  myIsLoaded  = false;\r
-  myType      = -1;\r
-  myNbPoints  = -1;\r
-  mySelection = theSelection;\r
-  mySubMesh   = SMESH::SMESH_subMesh::_nil();\r
-  myMesh      = SMESH::SMESH_Mesh::_nil();\r
-  myGeomObj   = GEOM::GEOM_Object::_nil();\r
-  myPattern   = SMESH::SMESH_Pattern::_nil();\r
-  \r
+  myIsLoaded     = false;\r
+  myType         = -1;\r
+  myNbPoints     = -1;\r
+  mySubMesh      = SMESH::SMESH_subMesh::_nil();\r
+  myMesh         = SMESH::SMESH_Mesh::_nil();\r
+  myGeomObj      = GEOM::GEOM_Object::_nil();\r
+  myPattern      = SMESH::SMESH_Pattern::_nil();\r
+\r
   erasePreview();\r
 \r
-  SMESHGUI* aSMESHGUI = SMESHGUI::GetSMESHGUI();\r
-  aSMESHGUI->SetActiveDialogBox( ( QDialog* )this );\r
+  mySMESHGUI->SetActiveDialogBox((QDialog*)this);\r
 \r
   // selection and SMESHGUI\r
-  connect( mySelection, SIGNAL( currentSelectionChanged() ), SLOT( onSelectionDone() ) );\r
-  connect( aSMESHGUI, SIGNAL( SignalDeactivateActiveDialog() ), SLOT( onDeactivate() ) );\r
-  connect( aSMESHGUI, SIGNAL( SignalCloseAllDialogs() ), SLOT( onClose() ) );\r
+  connect(mySelectionMgr, SIGNAL(currentSelectionChanged()), SLOT(onSelectionDone()));\r
+  connect(mySMESHGUI, SIGNAL(SignalDeactivateActiveDialog()), SLOT(onDeactivate()));\r
+  connect(mySMESHGUI, SIGNAL(SignalCloseAllDialogs()), SLOT(onClose()));\r
 \r
-  mySwitch2d->setEnabled( theType == Type_2d );\r
-  mySwitch3d->setEnabled( theType == Type_3d );\r
+  mySwitch2d->setEnabled(theType == Type_2d);\r
+  mySwitch3d->setEnabled(theType == Type_3d);\r
 \r
-  if ( theType == Type_2d )\r
+  if (theType == Type_2d)\r
     myProjectChk->show();\r
   else\r
     myProjectChk->hide();\r
-  \r
-  myTypeGrp->setButton( theType );\r
-  onTypeChanged( theType );\r
-  \r
-  myName->setText( getDefaultName() );\r
-  myMeshEdit->setText( "" );\r
-\r
-  setSizePolicy( QSizePolicy( QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding ) );\r
+\r
+  myTypeGrp->setButton(theType);\r
+  onTypeChanged(theType);\r
+\r
+  myName->setText(getDefaultName());\r
+  myMeshEdit->setText("");\r
+\r
+  setSizePolicy(QSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding));\r
   qApp->processEvents();\r
   updateGeometry();\r
   myPicture2d->updateGeometry();\r
   adjustSize();\r
-  resize( minimumSize() );\r
+  resize(minimumSize());\r
 \r
   activateSelection();\r
   onSelectionDone();\r
 \r
-  int x, y ;\r
-  aSMESHGUI->DefineDlgPosition( this, x, y );\r
-  this->move( x, y );\r
+  int x, y;\r
+  mySMESHGUI->DefineDlgPosition(this, x, y);\r
+  this->move(x, y);\r
   this->show();\r
 }\r
 \r
 //=======================================================================\r
-// name    : SMESHGUI_CreatePatternDlg::SetMesh\r
-// Purpose : Set mesh to dialog\r
+// function : SetMesh()\r
+// purpose  : Set mesh to dialog\r
 //=======================================================================\r
-void SMESHGUI_CreatePatternDlg::SetMesh( SMESH::SMESH_Mesh_ptr thePtr )\r
+void SMESHGUI_CreatePatternDlg::SetMesh (SMESH::SMESH_Mesh_ptr thePtr)\r
 {\r
-  myMesh = SMESH::SMESH_Mesh::_duplicate( thePtr );\r
+  myMesh = SMESH::SMESH_Mesh::_duplicate(thePtr);\r
   mySubMesh = SMESH::SMESH_subMesh::_nil();\r
 \r
   bool isValidMesh = false;\r
-  if ( !myMesh->_is_nil() )\r
+  if (!myMesh->_is_nil())\r
   {\r
-    SALOMEDS::SObject_var aSobj = SMESH::FindSObject( thePtr );\r
-    CORBA::String_var anEntry = aSobj->GetID();\r
-    Handle(SALOME_InteractiveObject) anIObj =\r
-      new SALOME_InteractiveObject( anEntry.in(), "SMESH" );\r
-\r
-    const SALOME_ListOfFilter& aList = mySelection->StoredFilters();\r
-    SALOME_ListIteratorOfListOfFilter anIter( aList );\r
-    for ( ; anIter.More(); anIter.Next() )\r
-      if ( !anIter.Value()->IsOk( anIObj ) )\r
-        break;\r
-\r
-    if ( !anIter.More() )\r
-      isValidMesh = true;\r
-  }\r
+    _PTR(SObject) aSobj = SMESH::FindSObject(myMesh.in());\r
+    //Handle(SALOME_InteractiveObject) anIObj =\r
+    //  new SALOME_InteractiveObject(aSobj->GetID().c_str(), "SMESH");\r
+    SUIT_DataOwnerPtr anIObj (new LightApp_DataOwner(aSobj->GetID().c_str()));\r
 \r
-\r
-  if ( isValidMesh )\r
-  {\r
-    SALOMEDS::SObject_var aSO = SMESH::FindSObject( myMesh.in() );\r
-    myMeshEdit->setText( aSO->GetName() );\r
-    myGeomObj = getGeom( aSO );\r
+    isValidMesh = mySelectionMgr->isOk(anIObj);\r
   }\r
-  else\r
-  {\r
-    myMeshEdit->setText( "" );\r
+\r
+  if (isValidMesh) {\r
+    _PTR(SObject) aSO = SMESH::FindSObject(myMesh.in());\r
+    myMeshEdit->setText(aSO->GetName().c_str());\r
+    myGeomObj = SMESH::GetGeom(aSO);\r
+  } else {\r
+    myMeshEdit->setText("");\r
     myGeomObj = GEOM::GEOM_Object::_nil();\r
   }\r
 \r
-  if ( myType == Type_2d )\r
-  {\r
-    loadFromObject( false );\r
+  if (myType == Type_2d) {\r
+    loadFromObject(false);\r
     displayPreview();\r
   }\r
 }\r
 \r
 //=======================================================================\r
-// name    : SMESHGUI_CreatePatternDlg::isValid\r
-// Purpose : Verify validity of entry data\r
+// function : isValid()\r
+// purpose  : Verify validity of entry data\r
 //=======================================================================\r
 bool SMESHGUI_CreatePatternDlg::isValid()\r
 {\r
-  if ( myGeomObj->_is_nil() )\r
-  {\r
-    QMessageBox::information( SMESHGUI::GetSMESHGUI()->GetDesktop(),\r
-      tr( "SMESH_INSUFFICIENT_DATA" ), tr( "SMESHGUI_INVALID_PARAMETERS" ), QMessageBox::Ok );\r
+  if (myGeomObj->_is_nil()) {\r
+    QMessageBox::information(SMESH::GetDesktop( mySMESHGUI ),\r
+                             tr("SMESH_INSUFFICIENT_DATA"),\r
+                             tr("SMESHGUI_INVALID_PARAMETERS"),\r
+                             QMessageBox::Ok);\r
     return false;\r
   }\r
   else\r
     return true;\r
 }\r
 \r
-\r
-\r
 //=======================================================================\r
-// name    : SMESHGUI_CreatePatternDlg::getDefaultName\r
-// Purpose : Get default pattern name\r
+// function : getDefaultName()\r
+// purpose  : Get default pattern name\r
 //=======================================================================\r
 QString SMESHGUI_CreatePatternDlg::getDefaultName() const\r
 {\r
-  return myType == Type_2d ? tr( "DEFAULT_2D" ) : tr( "DEFAULT_3D" );\r
+  return myType == Type_2d ? tr("DEFAULT_2D") : tr("DEFAULT_3D");\r
 }\r
 \r
 //=======================================================================\r
-// name    : SMESHGUI_CreatePatternDlg::onSave\r
-// Purpose : SLOT called when "Save" button pressed. Build pattern and\r
-\r
+// function : onSave()\r
+// purpose  : SLOT called when "Save" button pressed. Build pattern and\r
 //           save it to disk\r
 //=======================================================================\r
 void SMESHGUI_CreatePatternDlg::onSave()\r
 {\r
-  try\r
-  {\r
-    if ( !isValid() )\r
+  try {\r
+    if (!isValid())\r
       return;\r
 \r
-    if ( !myIsLoaded )\r
-      loadFromObject( true );\r
+    if (!myIsLoaded)\r
+      loadFromObject(true);\r
 \r
     // Load pattern from object\r
-    if ( !myIsLoaded )\r
+    if (!myIsLoaded)\r
       return;\r
 \r
     ///////////////////////////////////////////////////////\r
-    QAD_FileDlg* aDlg = new QAD_FileDlg( this, false );\r
-    aDlg->setCaption( tr( "SAVE_PATTERN" ) );\r
-    aDlg->setMode( QFileDialogP::AnyFile );\r
-    aDlg->setFilters( tr( "PATTERN_FILT" ) );\r
-    if ( myName->text() != "" )\r
-      aDlg->setSelection( myName->text() );\r
-\r
-    if ( aDlg->exec() != Accepted )\r
+    SUIT_FileDlg* aDlg = new SUIT_FileDlg (this, false);\r
+    aDlg->setCaption(tr("SAVE_PATTERN"));\r
+    aDlg->setMode(QFileDialog::AnyFile);\r
+    aDlg->setFilters(tr("PATTERN_FILT"));\r
+    if (myName->text() != "")\r
+      aDlg->setSelection(myName->text());\r
+\r
+    if (aDlg->exec() != Accepted)\r
       return;\r
 \r
     QString fName = aDlg->selectedFile();\r
-    if ( fName.isEmpty() )\r
+    if (fName.isEmpty())\r
       return;\r
 \r
-    if ( QFileInfo( fName ).extension().isEmpty() )\r
-      fName = autoExtension( fName );\r
+    if (QFileInfo(fName).extension().isEmpty())\r
+      fName = autoExtension(fName);\r
 \r
-    fName = QDir::convertSeparators( fName );\r
+    fName = QDir::convertSeparators(fName);\r
 \r
-    QString aData( myPattern->GetString() );\r
+    QString aData (myPattern->GetString());\r
     long aLen = aData.length();\r
 \r
-    QFile aFile( fName );\r
-    aFile.open( IO_WriteOnly );\r
-    long aWritten = aFile.writeBlock( aData, aLen );\r
+    QFile aFile (fName);\r
+    aFile.open(IO_WriteOnly);\r
+    long aWritten = aFile.writeBlock(aData, aLen);\r
     aFile.close();\r
 \r
-    if ( aWritten != aLen )\r
-    {\r
-      QMessageBox::information( SMESHGUI::GetSMESHGUI()->GetDesktop(),\r
-        tr( "SMESH_ERROR" ), tr( "ERROR_OF_SAVING" ), QMessageBox::Ok );\r
-    }\r
-    else\r
-    {\r
-      QAD_Application::getDesktop()->SetSelectionMode( ActorSelection );\r
-      disconnect( mySelection, 0, this, 0 );\r
-      disconnect( SMESHGUI::GetSMESHGUI(), 0, this, 0 );\r
-      SMESHGUI::GetSMESHGUI()->ResetState();\r
+    if (aWritten != aLen) {\r
+      QMessageBox::information(SMESH::GetDesktop( mySMESHGUI ), tr("SMESH_ERROR"),\r
+                               tr("ERROR_OF_SAVING"), QMessageBox::Ok);\r
+    } else {\r
+      //SUIT_Application::getDesktop()->setSelectionModes(ActorSelection);\r
+      if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))\r
+       aViewWindow->SetSelectionMode(ActorSelection);\r
+      disconnect(mySelectionMgr, 0, this, 0);\r
+      disconnect(mySMESHGUI, 0, this, 0);\r
+      mySMESHGUI->ResetState();\r
       accept();\r
       emit NewPattern();\r
     }\r
-  }\r
-  catch( const SALOME::SALOME_Exception& S_ex )\r
-  {\r
-    QtCatchCorbaException( S_ex );\r
-  }\r
-  catch( ... )\r
-  {\r
+  } catch (const SALOME::SALOME_Exception& S_ex) {\r
+    SalomeApp_Tools::QtCatchCorbaException(S_ex);\r
+  } catch (...) {\r
   }\r
 }\r
 \r
 //=======================================================================\r
-// name    : SMESHGUI_CreatePatternDlg::GetPatternName\r
-// Purpose : Get name of pattern\r
+// function : GetPatternName()\r
+// purpose  : Get name of pattern\r
 //=======================================================================\r
 QString SMESHGUI_CreatePatternDlg::GetPatternName() const\r
 {\r
@@ -414,8 +411,8 @@ QString SMESHGUI_CreatePatternDlg::GetPatternName() const
 }\r
 \r
 //=======================================================================\r
-// name    : SMESHGUI_CreatePatternDlg::GetPattern\r
-// Purpose : Get result pattern\r
+// function : GetPattern()\r
+// purpose  : Get result pattern\r
 //=======================================================================\r
 SMESH::SMESH_Pattern_ptr SMESHGUI_CreatePatternDlg::GetPattern()\r
 {\r
@@ -423,185 +420,144 @@ SMESH::SMESH_Pattern_ptr SMESHGUI_CreatePatternDlg::GetPattern()
 }\r
 \r
 //=======================================================================\r
-// name    : SMESHGUI_CreatePatternDlg::onOk\r
-// Purpose : SLOT called when "Ok" button pressed.\r
+// function : onOk()\r
+// purpose  : SLOT called when "Ok" button pressed.\r
 //=======================================================================\r
 void SMESHGUI_CreatePatternDlg::onOk()\r
 {\r
-  try\r
-  {\r
-    if ( !isValid() )\r
+  try {\r
+    if (!isValid())\r
       return;\r
 \r
-    if ( !myIsLoaded )\r
-      loadFromObject( true );\r
+    if (!myIsLoaded)\r
+      loadFromObject(true);\r
 \r
     // Load pattern from object\r
-    if ( !myIsLoaded )\r
+    if (!myIsLoaded) {\r
       return;\r
-    else\r
-    {\r
-      QAD_Application::getDesktop()->SetSelectionMode( ActorSelection );\r
-      disconnect( mySelection, 0, this, 0 );\r
-      disconnect( SMESHGUI::GetSMESHGUI(), 0, this, 0 );\r
-      SMESHGUI::GetSMESHGUI()->ResetState();\r
+    } else {\r
+      //SUIT_Application::getDesktop()->setSelectionModes(ActorSelection);\r
+      if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))\r
+       aViewWindow->SetSelectionMode(ActorSelection);\r
+      disconnect(mySelectionMgr, 0, this, 0);\r
+      disconnect(mySMESHGUI, 0, this, 0);\r
+      mySMESHGUI->ResetState();\r
       accept();\r
       emit NewPattern();\r
     }\r
-  }\r
-  catch( const SALOME::SALOME_Exception& S_ex )\r
-  {\r
-    QtCatchCorbaException( S_ex );\r
-  }\r
-  catch( ... )\r
-  {\r
+  } catch (const SALOME::SALOME_Exception& S_ex) {\r
+    SalomeApp_Tools::QtCatchCorbaException(S_ex);\r
+  } catch (...) {\r
   }\r
 }\r
 \r
 //=======================================================================\r
-// name    : SMESHGUI_CreatePatternDlg::onClose\r
-// Purpose : SLOT called when "Close" button pressed. Close dialog\r
+// function : onClose()\r
+// purpose  : SLOT called when "Close" button pressed. Close dialog\r
 //=======================================================================\r
 void SMESHGUI_CreatePatternDlg::onClose()\r
 {\r
-  QAD_Application::getDesktop()->SetSelectionMode( ActorSelection );\r
-  disconnect( mySelection, 0, this, 0 );\r
-  disconnect( SMESHGUI::GetSMESHGUI(), 0, this, 0 );\r
-  SMESHGUI::GetSMESHGUI()->ResetState();\r
+  if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))\r
+    aViewWindow->SetSelectionMode(ActorSelection);\r
+  disconnect(mySelectionMgr, 0, this, 0);\r
+  disconnect(mySMESHGUI, 0, this, 0);\r
+  mySMESHGUI->ResetState();\r
   reject();\r
   emit Close();\r
 }\r
 \r
 //=======================================================================\r
-// name    : SMESHGUI_CreatePatternDlg::loadFromObject\r
-// Purpose : Load pattern from geom object corresponding to the mesh/submesh\r
+// function : loadFromObject()\r
+// purpose  : Load pattern from geom object corresponding to the mesh/submesh\r
 //=======================================================================\r
-bool SMESHGUI_CreatePatternDlg::loadFromObject( const bool theMess )\r
+bool SMESHGUI_CreatePatternDlg::loadFromObject (const bool theMess)\r
 {\r
-  try\r
-  {\r
+  try {\r
     myIsLoaded = false;\r
-    \r
-    if ( myPattern->_is_nil() )\r
+\r
+    if (myPattern->_is_nil())\r
       myPattern = SMESH::GetPattern();\r
 \r
-    if ( myMesh->_is_nil() && mySubMesh->_is_nil() || myGeomObj->_is_nil() )\r
+    if (myMesh->_is_nil() && mySubMesh->_is_nil() || myGeomObj->_is_nil())\r
       return false;\r
 \r
     SMESH::SMESH_Mesh_ptr aMesh = mySubMesh->_is_nil() ? myMesh.in() : mySubMesh->GetFather();\r
 \r
     myIsLoaded = myType == Type_2d\r
-      ? myPattern->LoadFromFace( aMesh, myGeomObj, myProjectChk->isChecked() )\r
-      : myPattern->LoadFrom3DBlock( aMesh, myGeomObj );\r
+      ? myPattern->LoadFromFace(aMesh, myGeomObj, myProjectChk->isChecked())\r
+      : myPattern->LoadFrom3DBlock(aMesh, myGeomObj);\r
 \r
-    if ( !myIsLoaded && theMess )\r
-    {\r
+    if (!myIsLoaded && theMess) {\r
       QString aMess;\r
       SMESH::SMESH_Pattern::ErrorCode aCode = myPattern->GetErrorCode();\r
-      \r
-      if      ( aCode == SMESH::SMESH_Pattern::ERR_LOAD_EMPTY_SUBMESH   ) aMess = tr( "ERR_LOAD_EMPTY_SUBMESH" );\r
-      else if ( aCode == SMESH::SMESH_Pattern::ERR_LOADF_NARROW_FACE    ) aMess = tr( "ERR_LOADF_NARROW_FACE" );\r
-      else if ( aCode == SMESH::SMESH_Pattern::ERR_LOADF_CLOSED_FACE    ) aMess = tr( "ERR_LOADF_CLOSED_FACE" );\r
-      else if ( aCode == SMESH::SMESH_Pattern::ERR_LOADV_BAD_SHAPE      ) aMess = tr( "ERR_LOADV_BAD_SHAPE" );\r
-      else if ( aCode == SMESH::SMESH_Pattern::ERR_LOADV_COMPUTE_PARAMS ) aMess = tr( "ERR_LOADV_COMPUTE_PARAMS" );\r
-      else                                                                aMess = tr( "ERROR_OF_CREATION" );\r
-\r
-      QMessageBox::information(\r
-        SMESHGUI::GetSMESHGUI()->GetDesktop(), tr( "SMESH_ERROR" ), aMess, QMessageBox::Ok );\r
-    }\r
 \r
-  }\r
-  catch( const SALOME::SALOME_Exception& S_ex )\r
-  {\r
-    QtCatchCorbaException( S_ex );\r
-  }\r
-    \r
-  return myIsLoaded;\r
-}\r
-\r
-//=======================================================================\r
-// name    : SMESHGUI_CreatePatternDlg::getGeom\r
-// Purpose : Retrieve geom object from SObject\r
-//=======================================================================\r
-GEOM::GEOM_Object_ptr SMESHGUI_CreatePatternDlg::getGeom( SALOMEDS::SObject_ptr theSO )\r
-{\r
-  if ( theSO->_is_nil() )\r
-    return GEOM::GEOM_Object::_nil();\r
+      if      (aCode == SMESH::SMESH_Pattern::ERR_LOAD_EMPTY_SUBMESH  ) aMess = tr("ERR_LOAD_EMPTY_SUBMESH");\r
+      else if (aCode == SMESH::SMESH_Pattern::ERR_LOADF_NARROW_FACE   ) aMess = tr("ERR_LOADF_NARROW_FACE");\r
+      else if (aCode == SMESH::SMESH_Pattern::ERR_LOADF_CLOSED_FACE   ) aMess = tr("ERR_LOADF_CLOSED_FACE");\r
+      else if (aCode == SMESH::SMESH_Pattern::ERR_LOADV_BAD_SHAPE     ) aMess = tr("ERR_LOADV_BAD_SHAPE");\r
+      else if (aCode == SMESH::SMESH_Pattern::ERR_LOADV_COMPUTE_PARAMS) aMess = tr("ERR_LOADV_COMPUTE_PARAMS");\r
+      else                                                              aMess = tr("ERROR_OF_CREATION");\r
 \r
-  SALOMEDS::Study_var aStudy =\r
-    SMESHGUI::GetSMESHGUI()->GetActiveStudy()->getStudyDocument();\r
-\r
-  SALOMEDS::ChildIterator_var anIter = aStudy->NewChildIterator( theSO );\r
-  for( ; anIter->More(); anIter->Next() )\r
-  {\r
-    SALOMEDS::SObject_var aSO = anIter->Value();\r
-    SALOMEDS::SObject_var aRefSO;\r
-\r
-    GEOM::GEOM_Object_var aMeshShape = GEOM::GEOM_Object::_narrow(\r
-      aSO->ReferencedObject( aRefSO )? aRefSO->GetObject() : aSO->GetObject() );\r
-\r
-    if ( !aMeshShape->_is_nil() )\r
-      return aMeshShape._retn();\r
+      QMessageBox::information(SMESH::GetDesktop( mySMESHGUI ),\r
+                               tr("SMESH_ERROR"), aMess, QMessageBox::Ok);\r
+    }\r
+  } catch (const SALOME::SALOME_Exception& S_ex) {\r
+    SalomeApp_Tools::QtCatchCorbaException(S_ex);\r
   }\r
-  return GEOM::GEOM_Object::_nil();\r
+\r
+  return myIsLoaded;\r
 }\r
 \r
 //=======================================================================\r
-// name    : SMESHGUI_CreatePatternDlg::onSelectionDone\r
-// Purpose : SLOT called when selection changed\r
+// function : onSelectionDone()\r
+// purpose  : SLOT called when selection changed\r
 //=======================================================================\r
 void SMESHGUI_CreatePatternDlg::onSelectionDone()\r
 {\r
-  try\r
-  {\r
-    if ( mySelection->IObjectCount() != 1 )\r
+  try {\r
+    SALOME_ListIO aList;\r
+    mySelectionMgr->selectedObjects(aList, SVTK_Viewer::Type());\r
+    if (aList.Extent() != 1)\r
       return;\r
 \r
     // Get mesh or sub-mesh from selection\r
-    Handle(SALOME_InteractiveObject) anIO = mySelection->firstIObject();\r
-    SMESH::SMESH_Mesh_var aMesh = SMESH::IObjectToInterface<SMESH::SMESH_Mesh>( anIO );\r
-    SMESH::SMESH_subMesh_var aSubMesh = SMESH::IObjectToInterface<SMESH::SMESH_subMesh>( anIO );\r
-    if ( aMesh->_is_nil() && aSubMesh->_is_nil() )\r
+    Handle(SALOME_InteractiveObject) anIO = aList.First();\r
+    SMESH::SMESH_Mesh_var aMesh = SMESH::IObjectToInterface<SMESH::SMESH_Mesh>(anIO);\r
+    SMESH::SMESH_subMesh_var aSubMesh = SMESH::IObjectToInterface<SMESH::SMESH_subMesh>(anIO);\r
+    if (aMesh->_is_nil() && aSubMesh->_is_nil())\r
       return;\r
 \r
     // Get geom object corresponding to the mesh\r
-    SALOMEDS::SObject_var aSO;\r
-    if ( !aMesh->_is_nil() )\r
-      aSO = SMESH::FindSObject( aMesh.in() );\r
+    _PTR(SObject) aSO;\r
+    if (!aMesh->_is_nil())\r
+      aSO = SMESH::FindSObject(aMesh.in());\r
     else\r
-      aSO = SMESH::FindSObject( aSubMesh.in() );\r
-\r
+      aSO = SMESH::FindSObject(aSubMesh.in());\r
 \r
-    GEOM::GEOM_Object_var aGeomObj = getGeom( aSO );\r
-    if ( aGeomObj->_is_nil() )\r
+    GEOM::GEOM_Object_var aGeomObj = SMESH::GetGeom(aSO);\r
+    if (aGeomObj->_is_nil())\r
       return;\r
 \r
     myGeomObj = aGeomObj;\r
 \r
     // init class fields\r
-    if ( !aMesh->_is_nil() )\r
-    {\r
+    if (!aMesh->_is_nil()) {\r
       myMesh = aMesh;\r
       mySubMesh = SMESH::SMESH_subMesh::_nil();\r
-    }\r
-    else\r
-    {\r
+    } else {\r
       mySubMesh = aSubMesh;\r
       myMesh = SMESH::SMESH_Mesh::_nil();\r
     }\r
 \r
     QString aName;\r
-    SMESH::GetNameOfSelectedIObjects( mySelection, aName );\r
-    myMeshEdit->setText( aName );\r
+    SMESH::GetNameOfSelectedIObjects(mySelectionMgr, aName);\r
+    myMeshEdit->setText(aName);\r
 \r
-    if ( myType == Type_2d )\r
-    {\r
-      loadFromObject( true );\r
+    if (myType == Type_2d) {\r
+      loadFromObject(true);\r
       displayPreview();\r
     }\r
-  }\r
-  catch( ... )\r
-  {\r
+  } catch (...) {\r
     myMesh = SMESH::SMESH_Mesh::_nil();\r
     mySubMesh = SMESH::SMESH_subMesh::_nil();\r
     myGeomObj = GEOM::GEOM_Object::_nil();\r
@@ -610,40 +566,39 @@ void SMESHGUI_CreatePatternDlg::onSelectionDone()
 }\r
 \r
 //=======================================================================\r
-// name    : SMESHGUI_CreatePatternDlg::onDeactivate\r
-// Purpose : SLOT called when dialog must be deativated\r
+// function : onDeactivate()\r
+// purpose  : SLOT called when dialog must be deativated\r
 //=======================================================================\r
 void SMESHGUI_CreatePatternDlg::onDeactivate()\r
 {\r
-  disconnect( mySelection, 0, this, 0 );\r
-  setEnabled( false );\r
+  disconnect(mySelectionMgr, 0, this, 0);\r
+  setEnabled(false);\r
 }\r
 \r
 //=======================================================================\r
-// name    : SMESHGUI_CreatePatternDlg::enterEvent\r
-// Purpose : Event filter\r
+// function : enterEvent()\r
+// purpose  : Event filter\r
 //=======================================================================\r
-void SMESHGUI_CreatePatternDlg::enterEvent( QEvent* )\r
+void SMESHGUI_CreatePatternDlg::enterEvent (QEvent*)\r
 {\r
-  SMESHGUI::GetSMESHGUI()->EmitSignalDeactivateDialog();\r
-  setEnabled( true );\r
+  mySMESHGUI->EmitSignalDeactivateDialog();\r
+  setEnabled(true);\r
   activateSelection();\r
-  connect( mySelection, SIGNAL( currentSelectionChanged() ), SLOT( onSelectionDone() ) );\r
+  connect(mySelectionMgr, SIGNAL(currentSelectionChanged()), SLOT(onSelectionDone()));\r
 }\r
 \r
-\r
 //=================================================================================\r
 // function : closeEvent()\r
 // purpose  : Close dialog box\r
 //=================================================================================\r
-void SMESHGUI_CreatePatternDlg::closeEvent( QCloseEvent* e )\r
+void SMESHGUI_CreatePatternDlg::closeEvent (QCloseEvent*)\r
 {\r
-  onClose() ;\r
+  onClose();\r
 }\r
 \r
 //=======================================================================\r
-// name    : SMESHGUI_CreatePatternDlg::onSelBtnClicked\r
-// Purpose : SLOT. Called when -> button clicked.\r
+// function : onSelBtnClicked()\r
+// purpose  : SLOT. Called when -> button clicked.\r
 //=======================================================================\r
 void SMESHGUI_CreatePatternDlg::onSelBtnClicked()\r
 {\r
@@ -651,147 +606,115 @@ void SMESHGUI_CreatePatternDlg::onSelBtnClicked()
 }\r
 \r
 //================================================================\r
-// Function : SMESHGUI_CreatePatternDlg::autoExtension\r
-// Purpose  : Append extension to the file name\r
+// function : autoExtension()\r
+// purpose  : Append extension to the file name\r
 //================================================================\r
-QString SMESHGUI_CreatePatternDlg::autoExtension( const QString& theFileName ) const\r
+QString SMESHGUI_CreatePatternDlg::autoExtension (const QString& theFileName) const\r
 {\r
-  QString anExt = theFileName.section( '.', -1 );\r
+  QString anExt = theFileName.section('.', -1);\r
   return anExt != "smp" && anExt != "SMP" ? theFileName + ".smp" : theFileName;\r
 }\r
 \r
 //=======================================================================\r
-// name    : SMESHGUI_CreatePatternDlg::displayPreview\r
-// Purpose : Display preview\r
+// function : displayPreview()\r
+// purpose  : Display preview\r
 //=======================================================================\r
 void SMESHGUI_CreatePatternDlg::displayPreview()\r
 {\r
-\r
   // Redisplay preview in dialog\r
-\r
-  try\r
-  {\r
-    if ( !myIsLoaded )\r
+  try {\r
+    if (!myIsLoaded) {\r
       erasePreview();\r
-    else\r
-    {\r
+    } else {\r
       SMESH::point_array_var pnts = myPattern->GetPoints();\r
       SMESH::long_array_var keyPoints = myPattern->GetKeyPoints();\r
-      SMESH::array_of_long_array_var elemPoints = myPattern->GetElementPoints();\r
+      SMESH::array_of_long_array_var elemPoints = myPattern->GetElementPoints(false);\r
 \r
-      if ( pnts->length()       == 0 ||\r
-           keyPoints->length()  == 0 ||\r
-           elemPoints->length() == 0 )\r
-      {\r
+      if (pnts->length()       == 0 ||\r
+          keyPoints->length()  == 0 ||\r
+          elemPoints->length() == 0) {\r
         myIsLoaded = false;\r
         erasePreview();\r
         return;\r
       }\r
 \r
-      PointVector aPoints( pnts->length() );\r
-      QValueVector<int> aKeyPoints( keyPoints->length() );\r
-      ConnectivityVector anElemPoints( elemPoints->length() );\r
+      PointVector aPoints (pnts->length());\r
+      QValueVector<int> aKeyPoints (keyPoints->length());\r
+      ConnectivityVector anElemPoints (elemPoints->length());\r
 \r
-      for ( int i = 0, n = pnts->length(); i < n; i++ )\r
+      for (int i = 0, n = pnts->length(); i < n; i++)\r
         aPoints[ i ] = pnts[ i ];\r
 \r
-      for ( int i2 = 0, n2 = keyPoints->length(); i2 < n2; i2++ )\r
+      for (int i2 = 0, n2 = keyPoints->length(); i2 < n2; i2++)\r
         aKeyPoints[ i2 ] = keyPoints[ i2 ];\r
 \r
-      for ( int i3 = 0, n3 = elemPoints->length(); i3 < n3; i3++ )\r
-      {\r
-        QValueVector<int> aVec( elemPoints[ i3 ].length() );\r
-        for ( int i4 = 0, n4 = elemPoints[ i3 ].length(); i4 < n4; i4++ )\r
+      for (int i3 = 0, n3 = elemPoints->length(); i3 < n3; i3++) {\r
+        QValueVector<int> aVec (elemPoints[ i3 ].length());\r
+        for (int i4 = 0, n4 = elemPoints[ i3 ].length(); i4 < n4; i4++)\r
           aVec[ i4 ] = elemPoints[ i3 ][ i4 ];\r
 \r
         anElemPoints[ i3 ] = aVec;\r
       }\r
 \r
-      myPicture2d->SetPoints( aPoints, aKeyPoints, anElemPoints );\r
+      myPicture2d->SetPoints(aPoints, aKeyPoints, anElemPoints);\r
     }\r
 \r
     return;\r
-  }\r
-  catch( const SALOME::SALOME_Exception& S_ex )\r
-  {\r
-    QtCatchCorbaException( S_ex );\r
-  }\r
-  catch( ... )\r
-  {\r
+\r
+  } catch (const SALOME::SALOME_Exception& S_ex) {\r
+    SalomeApp_Tools::QtCatchCorbaException(S_ex);\r
+  } catch (...) {\r
   }\r
   erasePreview();\r
 }\r
 \r
 //=======================================================================\r
-// name    : SMESHGUI_CreatePatternDlg::erasePreview\r
-// Purpose : Erase preview\r
+// function : erasePreview()\r
+// purpose  : Erase preview\r
 //=======================================================================\r
 void SMESHGUI_CreatePatternDlg::erasePreview()\r
-\r
 {\r
   // Erase preview in 2D viewer\r
-  myPicture2d->SetPoints( PointVector(), QValueVector<int>(), ConnectivityVector() );\r
+  myPicture2d->SetPoints(PointVector(), QValueVector<int>(), ConnectivityVector());\r
 }\r
 \r
 //=======================================================================\r
-// name    : SMESHGUI_CreatePatternDlg::activateSelection\r
-// Purpose : Activate selection in accordance with current pattern type\r
+// function : activateSelection()\r
+// purpose  : Activate selection in accordance with current pattern type\r
 //=======================================================================\r
 void SMESHGUI_CreatePatternDlg::activateSelection()\r
 {\r
-  mySelection->ClearFilters();\r
-  QAD_Application::getDesktop()->SetSelectionMode( ActorSelection );\r
-  \r
-  if ( myType == Type_2d )\r
-  {\r
-    mySelection->AddFilter(\r
-      new SMESH_NumberFilter( "SMESH", TopAbs_SHAPE, -1, TopAbs_FACE ) );\r
-  }\r
-  else\r
-  {\r
+  mySelectionMgr->clearFilters();\r
+  //SUIT_Application::getDesktop()->setSelectionModes(ActorSelection);\r
+  if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))\r
+    aViewWindow->SetSelectionMode(ActorSelection);\r
+\r
+  if (myType == Type_2d) {\r
+    mySelectionMgr->installFilter(new SMESH_NumberFilter\r
+      ("SMESH", TopAbs_SHAPE, -1, TopAbs_FACE));\r
+  } else {\r
     TColStd_MapOfInteger aTypes;\r
-    aTypes.Add( TopAbs_SHELL );\r
-    aTypes.Add( TopAbs_SOLID );\r
-    mySelection->AddFilter( new SMESH_NumberFilter(\r
-      "SMESH", TopAbs_FACE, 6, aTypes, GEOM::GEOM_Object::_nil(), true ) );\r
+    aTypes.Add(TopAbs_SHELL);\r
+    aTypes.Add(TopAbs_SOLID);\r
+    mySelectionMgr->installFilter(new SMESH_NumberFilter\r
+      ("SMESH", TopAbs_FACE, 6, aTypes, GEOM::GEOM_Object::_nil(), true));\r
   }\r
 }\r
 \r
 //=======================================================================\r
-// name    : SMESHGUI_CreatePatternDlg::onTypeChanged\r
-// Purpose : SLOT. Called when pattern type changed.\r
-//           Change dialog's look and feel\r
+// function : onTypeChanged()\r
+// purpose  : SLOT. Called when pattern type changed.\r
+//            Change dialog's look and feel\r
 //=======================================================================\r
-void SMESHGUI_CreatePatternDlg::onTypeChanged( int theType )\r
+void SMESHGUI_CreatePatternDlg::onTypeChanged (int theType)\r
 {\r
-  if ( myType == theType )\r
+  if (myType == theType)\r
     return;\r
 \r
   myType = theType;\r
 \r
-  if ( theType == Type_2d )\r
+  if (theType == Type_2d)\r
     myPicture2d->show();\r
   else\r
     myPicture2d->hide();\r
 }\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r
-\r