Salome HOME
Fix for problem: Preferences-Mesh-General tab: Display modes ?Nodes? and ?Shrink...
[modules/smesh.git] / src / SMESHGUI / SMESHGUI_CreatePolyhedralVolumeDlg.cxx
index 6e7223ed498b92dcdc626a1a863cc3ddaea45abb..a58fd065ef1c0adc78cacda56ddb56cfba626bf6 100644 (file)
@@ -112,19 +112,15 @@ class TPolySimulation{
       myPreviewActor->VisibilityOff();
       myPreviewActor->SetMapper( myMapper );
 
-      vtkProperty* aProp = vtkProperty::New();
       float anRGB[3];
-      anRGB[0] = GetFloat("SMESH:SettingsFillColorRed", 0)/255.;
-      anRGB[1] = GetFloat("SMESH:SettingsFillColorGreen", 170)/255.;
-      anRGB[2] = GetFloat("SMESH:SettingsFillColorBlue", 255)/255.;
+      vtkProperty* aProp = vtkProperty::New();
+      GetColor( "SMESH", "fill_color", anRGB[0], anRGB[1], anRGB[2], QColor( 0, 170, 255 ) );
       aProp->SetColor(anRGB[0],anRGB[1],anRGB[2]);
       myPreviewActor->SetProperty( aProp );
       aProp->Delete();
 
       vtkProperty* aBackProp = vtkProperty::New();
-      anRGB[0] = GetFloat("SMESH:SettingsBackFaceColorRed", 0)/255.;
-      anRGB[1] = GetFloat("SMESH:SettingsBackFaceColorGreen", 0)/255.;
-      anRGB[2] = GetFloat("SMESH:SettingsBackFaceColorBlue", 255)/255.;
+      GetColor( "SMESH", "backface_color", anRGB[0], anRGB[1], anRGB[2], QColor( 0, 0, 255 ) );
       aBackProp->SetColor(anRGB[0],anRGB[1],anRGB[2]);
       myPreviewActor->SetBackfaceProperty( aBackProp );
       aBackProp->Delete();
@@ -195,9 +191,7 @@ SMESHGUI_CreatePolyhedralVolumeDlg::SMESHGUI_CreatePolyhedralVolumeDlg( SMESHGUI
                                                                        bool modal, WFlags fl )
   : QDialog( SMESH::GetDesktop( theModule ), name, modal, WStyle_Customize | WStyle_NormalBorder | WStyle_Title | WStyle_SysMenu | Qt::WDestructiveClose),
     mySMESHGUI( theModule ),
-    mySelectionMgr( SMESH::GetSelectionMgr( theModule ) ),
-    myViewWindow( SMESH::GetViewWindow( theModule ) ),
-    mySelector( myViewWindow->GetSelector() )
+    mySelectionMgr( SMESH::GetSelectionMgr( theModule ) )
 {
   QPixmap image0( SMESH::GetResourceMgr( mySMESHGUI )->loadPixmap( "SMESH",tr("ICON_SELECT")));
 
@@ -314,6 +308,8 @@ SMESHGUI_CreatePolyhedralVolumeDlg::SMESHGUI_CreatePolyhedralVolumeDlg( SMESHGUI
   Preview = new QCheckBox( GroupContent, "Preview" );
   Preview->setText( tr( "SMESH_POLYEDRE_PREVIEW"  ) );
   GroupContentLayout->addWidget( Preview , 5, 0 );
+
+  mySelector = (SMESH::GetViewWindow( mySMESHGUI ))->GetSelector();
   
   SMESHGUI_CreatePolyhedralVolumeDlgLayout->addWidget( GroupContent, 1, 0 );
   
@@ -407,7 +403,8 @@ void SMESHGUI_CreatePolyhedralVolumeDlg::ConstructorsClicked(int constructorId)
        }
         else
           SMESH::SetPointRepresentation(true);
-       myViewWindow->SetSelectionMode(NodeSelection);
+       if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
+         aViewWindow->SetSelectionMode(NodeSelection);
        
        AddButton->setEnabled(false);
        RemoveButton->setEnabled(false);
@@ -430,7 +427,8 @@ void SMESHGUI_CreatePolyhedralVolumeDlg::ConstructorsClicked(int constructorId)
        } else {
          SMESH::SetPointRepresentation(false);
        }
-       myViewWindow->SetSelectionMode(FaceSelection);
+       if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
+         aViewWindow->SetSelectionMode(FaceSelection);
        
        TextLabelIds->setText( tr( "SMESH_ID_FACES" ) );
        myFacesByNodesLabel->hide();
@@ -558,7 +556,8 @@ void SMESHGUI_CreatePolyhedralVolumeDlg::ClickOnCancel()
   mySelectionMgr->setSelectedObjects( aList );
   SMESH::SetPointRepresentation(false);
   mySimulation->SetVisibility(false);
-  myViewWindow->SetSelectionMode( ActorSelection );
+  if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
+    aViewWindow->SetSelectionMode( ActorSelection );
   disconnect( mySelectionMgr, 0, this, 0 );
   mySMESHGUI->ResetState() ;
   reject() ;
@@ -583,28 +582,22 @@ void SMESHGUI_CreatePolyhedralVolumeDlg::onTextChange(const QString& theNewText)
   if (GetConstructorId() == 0)
   {
     if ( aMesh ) {
-      SALOME_ListIO aList; aList.Append( myActor->getIO() );
-      mySelectionMgr->setSelectedObjects( aList );
-
-      TColStd_IndexedMapOfInteger selectedIndices;
       TColStd_MapOfInteger newIndices;
-      mySelector->GetIndex( myActor->getIO(), selectedIndices);
-
+      
       QStringList aListId = QStringList::split( " ", theNewText, false);
       for ( int i = 0; i < aListId.count(); i++ ) {
        const SMDS_MeshNode * n = aMesh->FindNode( aListId[ i ].toInt() );
        if ( n ) {
-         if (selectedIndices.Add(n->GetID()))
-           newIndices.Add(n->GetID());
+         newIndices.Add(n->GetID());
          myNbOkElements++;
         }
       }
       
-      if (newIndices.Extent() > 0){
-       mySelector->AddOrRemoveIndex( myActor->getIO(), newIndices, true );
-       myViewWindow->highlight( myActor->getIO(), true, true );
-      }
-
+      mySelector->AddOrRemoveIndex( myActor->getIO(), newIndices, false );
+      
+      if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
+       aViewWindow->highlight( myActor->getIO(), true, true );
+      
       if ( myNbOkElements>0 && aListId.count()>=3)
        AddButton->setEnabled(true);
       else
@@ -621,29 +614,22 @@ void SMESHGUI_CreatePolyhedralVolumeDlg::onTextChange(const QString& theNewText)
       // check entered ids of faces and hilight them
     QStringList aListId;
     if ( aMesh ) {
-      SALOME_ListIO aList; aList.Append( myActor->getIO() );
-      mySelectionMgr->setSelectedObjects( aList );
-
-      TColStd_IndexedMapOfInteger selectedIndices;
       TColStd_MapOfInteger newIndices;
-      mySelector->GetIndex( myActor->getIO(), selectedIndices);
-
+      
       aListId = QStringList::split( " ", theNewText, false);
 
       for ( int i = 0; i < aListId.count(); i++ ) {
        const SMDS_MeshElement * e = aMesh->FindElement( aListId[ i ].toInt() );
        if ( e ) {
-         if (selectedIndices.Add(e->GetID()))
-             newIndices.Add(e->GetID());
+         newIndices.Add(e->GetID());
          myNbOkElements++;  
        }
       }
 
-      if (newIndices.Extent() > 0){
-       mySelector->AddOrRemoveIndex( myActor->getIO(), newIndices, true );
-       myViewWindow->highlight( myActor->getIO(), true, true );
-      }
-
+      mySelector->AddOrRemoveIndex( myActor->getIO(), newIndices, false );
+      if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
+       aViewWindow->highlight( myActor->getIO(), true, true );
+      
       if ( myNbOkElements ) {
        if (aListId.count()>1){ 
          buttonOk->setEnabled( true );
@@ -873,7 +859,8 @@ void SMESHGUI_CreatePolyhedralVolumeDlg::ActivateThisDialog()
   
   mySMESHGUI->SetActiveDialogBox( (QDialog*)this ) ;
 
-  myViewWindow->SetSelectionMode( FaceSelection );
+  if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
+    aViewWindow->SetSelectionMode( FaceSelection );
   SelectionIntoArgument();
 }
 
@@ -1002,7 +989,8 @@ void SMESHGUI_CreatePolyhedralVolumeDlg::onListSelectionChanged()
   if(isSelected) RemoveButton->setEnabled(true);
   else RemoveButton->setEnabled(false);
   mySelector->AddOrRemoveIndex(myActor->getIO(), aIndexes, true );
-  myViewWindow->highlight( myActor->getIO(), true, true );
+  if ( SVTK_ViewWindow* aViewWindow = SMESH::GetViewWindow( mySMESHGUI ))
+    aViewWindow->highlight( myActor->getIO(), true, true );
   mySelectionMgr->clearFilters(); 
   aList.Append( myActor->getIO() );
   mySelectionMgr->setSelectedObjects( aList );