Salome HOME
Fix for Bug IPAL9416 ( 3.0.0(current3106): "Numbering" and "Display entity" have...
[modules/smesh.git] / src / SMESHGUI / SMESHGUI.cxx
index 1c75c85e76b1ceeabec922667a97b23c805e61fb..04afcf817bb96d0741411c221cca89162d47bc39 100644 (file)
@@ -167,8 +167,6 @@ namespace{
 
   void Control( int theCommandID );
 
-  void SetDisplaySettings();
-
 
   // Definitions
   //=============================================================
@@ -524,53 +522,6 @@ namespace{
       SMESH::RepaintCurrentView();
     }
   }
-
-
-  void SetDisplaySettings()
-  {
-    SUIT_ResourceMgr* mgr = SMESHGUI::resourceMgr();
-    if( !mgr )
-      return;
-
-    SMESHGUI::GetSMESHGUI()->EmitSignalDeactivateDialog();
-    SMESHGUI_Preferences_ColorDlg *aDlg =
-      new SMESHGUI_Preferences_ColorDlg( SMESHGUI::GetSMESHGUI(), "" );
-
-    QColor color = mgr->colorValue( "SMESH", "fill_color", QColor(0, 170, 255) );
-    aDlg->SetColor(1, color);
-
-    color = mgr->colorValue( "SMESH", "outline_color", QColor(0, 170, 255) );
-    aDlg->SetColor(2, color);
-
-    color = mgr->colorValue( "SMESH", "node_color", Qt::red );
-    aDlg->SetColor(3, color);
-
-    color = mgr->colorValue( "SMESH", "backface_color", Qt::blue );
-    aDlg->SetColor(4, color);
-
-    int iVal = mgr->integerValue( "SMESH", "element_width", 1 );
-    aDlg->SetIntValue(1, iVal);
-
-    iVal = mgr->integerValue( "SMESH", "node_size", 3 );
-    aDlg->SetIntValue(2, iVal);
-
-    iVal = mgr->integerValue( "SMESH", "shrink_coeff", 75 );
-    aDlg->SetIntValue(3, iVal);
-
-    if (aDlg->exec()) {
-      mgr->setValue( "SMESH", "fill_color", aDlg->GetColor(1) );
-      mgr->setValue( "SMESH", "outline_color", aDlg->GetColor(2) );
-      mgr->setValue( "SMESH", "node_color", aDlg->GetColor(3) );
-      mgr->setValue( "SMESH", "backface_color", aDlg->GetColor(4) );
-
-      mgr->setValue( "SMESH", "element_width", aDlg->GetIntValue(1) );
-      mgr->setValue( "SMESH", "node_size", aDlg->GetIntValue(2) );
-      mgr->setValue( "SMESH", "shrink_coeff", aDlg->GetIntValue(3) );
-    }
-    
-    delete aDlg;
-  }
-
   
   void Control( int theCommandID )
   {
@@ -1776,120 +1727,6 @@ bool SMESHGUI::OnGUIEvent( int theCommandID )
       break;
     } 
     
-  case 1001:                                   // AUTOMATIC UPDATE PREFERENCES
-    {
-//       if (act->isOn()) {
-//     mgr->setValue( "SMESH", "AutomaticUpdate", true );
-//     myAutomaticUpdate = true;
-//       }
-//       else {
-//     mgr->setValue( "SMESH", "AutomaticUpdate", false );
-//     myAutomaticUpdate = false;
-//       }
-      break;
-    }
-
-  case 1003:                                   // MESH PREFERENCES
-    {
-      ::SetDisplaySettings();
-      break;
-    }
-
-  case 1005:
-    {
-      SMESHGUI_Preferences_ScalarBarDlg::ScalarBarPreferences( this );
-      break;
-    }
-
-  case 10070:
-    {
-      ( new SMESHGUI_PrecisionDlg( this ) )->exec();
-      break;
-    }
-
-  case 10071:
-    {
-      if (act->isOn()) {
-       mgr->setValue( "SMESH", "display_entity", true );
-      }
-      else {
-       mgr->setValue( "SMESH", "display_entity", false );
-      }
-      break;
-    }
-  case 1006:
-    {
-      SMESHGUI_Preferences_SelectionDlg* aDlg = 
-       new SMESHGUI_Preferences_SelectionDlg( this );
-
-      QColor aColor = mgr->colorValue( "SMESH", "highlight_color", Qt::cyan );
-      aDlg->SetColor(1, aColor);
-
-      aColor = mgr->colorValue( "SMESH", "selection_element_color", Qt::yellow );
-      aDlg->SetColor(2, aColor);
-
-      aColor = mgr->colorValue( "SMESH", "selection_object_color", Qt::white );
-      aDlg->SetColor(3, aColor);
-
-      aDlg->SetWidth(1, mgr->integerValue( "SMESH", "highlight_width", 5 ) );
-      aDlg->SetWidth(2, mgr->integerValue( "SMESH", "selection_width", 5 ) );
-      aDlg->SetPrecision(1, mgr->doubleValue( "SMESH", "selection_precision_node", 0.025 ) );
-      aDlg->SetPrecision(2, mgr->doubleValue( "SMESH", "selection_precision_element", 0.001 ) );
-
-      if (aDlg->exec()) {
-        QColor aPreColor = aDlg->GetColor(1),
-              aSelColor = aDlg->GetColor(2),
-              aHiColor = aDlg->GetColor(3);
-       int aPreWidth = aDlg->GetWidth(1),
-           aSelWidth = aDlg->GetWidth(2);
-       double aTolNodes = aDlg->GetPrecision(1),
-              aTolItems = aDlg->GetPrecision(2);
-
-       mgr->setValue( "SMESH", "highlight_color", aPreColor );
-       mgr->setValue( "SMESH", "selection_element_color", aSelColor );
-       mgr->setValue( "SMESH", "selection_object_color", aHiColor );
-
-       mgr->setValue( "SMESH", "highlight_width", aPreWidth );
-       mgr->setValue( "SMESH", "selection_width", aSelWidth );
-       mgr->setValue( "SMESH", "selection_precision_node", aTolNodes );
-       mgr->setValue( "SMESH", "selection_precision_element", aTolItems );
-
-       // update current study settings
-       SMESH::UpdateSelectionProp( this );
-
-       if( vtkwnd ) {
-         // update VTK viewer properties
-         SVTK_RenderWindowInteractor* anInteractor =
-           dynamic_cast<SVTK_RenderWindowInteractor*>( vtkwnd->getRWInteractor() );
-         if (anInteractor) {
-           anInteractor->SetSelectionProp(aSelColor.red()/255., aSelColor.green()/255.,
-                                          aSelColor.blue()/255., aSelWidth);
-           anInteractor->SetSelectionTolerance(aTolNodes, aTolItems);
-           SVTK_InteractorStyle* aStyle =
-             dynamic_cast<SVTK_InteractorStyle*>( anInteractor->GetInteractorStyle() );
-
-           if (aStyle)
-             aStyle->setPreselectionProp(aPreColor.red()/255., aPreColor.green()/255.,
-                                         aPreColor.blue()/255., aPreWidth);
-         }
-         // update actors
-         vtkRenderer* aRenderer = vtkwnd->getRenderer();
-         vtkActorCollection *aCollection = aRenderer->GetActors();
-         aCollection->InitTraversal();
-         while(vtkActor *anAct = aCollection->GetNextActor()){
-           if(SMESH_Actor *anActor = dynamic_cast<SMESH_Actor*>(anAct)){
-             anActor->SetHighlightColor(aHiColor.red()/255., aHiColor.green()/255.,
-                                        aHiColor.blue()/255.);
-             anActor->SetPreHighlightColor(aPreColor.red()/255., aPreColor.green()/255.,
-                                           aPreColor.blue()/255.);
-           }
-         }
-       }
-      }
-
-      break;
-    }
-
   case 1100:                                   // EDIT HYPOTHESIS
     {
       if(checkLock(aStudy)) break;
@@ -2271,42 +2108,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID )
       }
       break;
     }
-  case 10001:                          // DISPLAY MODE PREFERENCE
-    {
-      // Wireframe
-      act->setOn( true );
-      action( 10002 )->setOn( false );
-      action( 10004 )->setOn( false );
-      action( 10003 )->setOn( true );
-      mgr->setValue( "SMESH", "display_mode", "Wireframe");
-      break;
-    }
-  case 10002:
-    {
-      act->setOn( true );
-      action( 10001 )->setOn( false );
-      action( 10004 )->setOn( false );
-      action( 10003 )->setOn( true );
-      mgr->setValue( "SMESH", "display_mode", "Shading");
-      break;
-    }
-  case 10003:
-    {
-      mgr->setValue( "SMESH", "display_mode", "Shrink" );
-      break;
-    }
-  case 10004:
-    {
-      act->setOn( true );
-      action( 10001 )->setOn( false );
-      action( 10002 )->setOn( false );
-      action( 10003 )->setOn( false );
-      mgr->setValue( "SMESH", "display_mode", "Nodes" );
-      break;
-    }
-
   }
-
   //updateObjBrowser();
   return true;
 }
@@ -2341,81 +2143,6 @@ bool SMESHGUI::OnKeyPress( QKeyEvent * pe, SUIT_ViewWindow * wnd )
   return true;
 }
 
-//=============================================================================
-/*!
- *
- */
-//=============================================================================
-bool SMESHGUI::SetSettings(SUIT_Desktop* parent)
-{
-  SMESHGUI::GetSMESHGUI();
-  
-  SUIT_ResourceMgr* mgr = resourceMgr();
-  if( !mgr )
-    return false;
-
-  // Display mode
-  QString DisplayMode = "Shading";
-  if ( mgr->hasValue("SMESH","display_mode") )
-    DisplayMode = mgr->stringValue("SMESH","display_mode");
-  else
-    mgr->setValue("SMESH","display_mode", "Shading");
-
-  bool Shrink = false;
-  if ( mgr->hasValue("SMESH","display_mode") )
-    Shrink = mgr->stringValue("SMESH","display_mode") == "Shrink";
-
-  if (DisplayMode == "Wireframe") {
-    // wireframe
-    action( 10004 )->setOn( false );
-    action( 10002 )->setOn( false );
-    action( 10001 )->setOn( true );
-    action( 10003 )->setOn( true );
-  }
-  else if (DisplayMode == "Nodes") {
-    // poins
-    action( 10004 )->setOn( true );
-    action( 10002 )->setOn( false );
-    action( 10001 )->setOn( false );
-    action( 10003 )->setOn( false );
-  }
-  else {
-    // default is shading
-    action( 10004 )->setOn( false );
-    action( 10002 )->setOn( true );
-    action( 10001 )->setOn( false );
-    action( 10003 )->setOn( true );
-  }
-
-  action( 10003 )->setOn( Shrink );
-
-  // Automatic Update
-//   if ( mgr->booleanValue( "SMESH","AutomaticUpdate", false ) ) {
-//     action( 1001 )->setOn( true );
-//     myAutomaticUpdate = true;
-//   }
-//   else {
-//     action( 1001 )->setOn( false );
-//     myAutomaticUpdate = false;
-//   }
-
-  if ( mgr->booleanValue( "SMESH","display_entity", false ) )
-    action( 10071 )->setOn( true );
-  else
-    action( 10071 )->setOn( false );
-
-  // Selection
-  SMESH::UpdateSelectionProp( this );
-
-  // menus disable
-  action( 111 )->setEnabled( false );  // IMPORT DAT
-
-  //action( 112 )->setEnabled( false );
-  //parent->menuBar()->setItemEnabled(112, false);     // IMPORT UNV
-
-  return true;
-}
-
 //=============================================================================
 /*! Method:  BuildPresentation(const Handle(SALOME_InteractiveObject)& theIO)
  *  Purpose: ensures that the actor for the given <theIO> exists in the active VTK view
@@ -2572,16 +2299,6 @@ void SMESHGUI::initialize( CAM_Application* app )
   createSMESHAction(  414, "REVOLUTION",      "ICON_REVOLUTION" );
   createSMESHAction(  415, "MAP",             "ICON_MAP" );
   createSMESHAction(  416, "EXTRUSION_ALONG", "ICON_EXTRUSION_ALONG" );
-  createSMESHAction( 10001, "WIRE",           "ICON_WIRE",   0, true );
-  createSMESHAction( 10002, "SHADE",          "ICON_SHADE",  0, true );
-  createSMESHAction( 10003, "SHRINK",         "ICON_SHRINK", 0, true );
-  createSMESHAction( 10004, "NODES",          "ICON_POINTS", 0, true );
-  createSMESHAction( 1001, "AUTO_UPD", "", 0, true );
-  createSMESHAction( 1003, "COLORS" );
-  createSMESHAction( 1005, "SCALAR_BAR" );
-  createSMESHAction( 1006, "SELECTION" );
-  createSMESHAction( 10070, "PRECISION", "", 0, true );
-  createSMESHAction( 10071, "DISP_ENT", "", 0, true );
   createSMESHAction(  200, "RESET" );
   createSMESHAction(  201, "SCALAR_BAR_PROP" );
   createSMESHAction(  211, "WIRE",           "ICON_WIRE", 0, true );
@@ -2617,23 +2334,16 @@ void SMESHGUI::initialize( CAM_Application* app )
       meshId   = createMenu( tr( "MEN_MESH" ),   -1, 70, 10 ),
       ctrlId   = createMenu( tr( "MEN_CTRL" ),   -1, 60, 10 ),
       modifyId = createMenu( tr( "MEN_MODIFY" ), -1, 40, 10 ),
-      prefId   = createMenu( tr( "MEN_PREF" ),   -1,  4, 10 ),
       viewId   = createMenu( tr( "MEN_VIEW" ),   -1,  2 );
 
   createMenu( separator(), fileId );
 
   int importId = createMenu( tr( "MEN_IMPORT" ), fileId, 11, 10 ),
       exportId = createMenu( tr( "MEN_EXPORT" ), fileId, 12, 10 ),
-
       addId    = createMenu( tr( "MEN_ADD" ),    modifyId, 402 ),
       removeId = createMenu( tr( "MEN_REMOVE" ), modifyId, 403 ),
       renumId  = createMenu( tr( "MEN_RENUM" ),  modifyId, 404 ),
-      transfId = createMenu( tr( "MEN_TRANSF" ), modifyId, 405 ),
-
-      meshPrefId = createMenu( tr( "MEN_MESH" ), prefId, 100 ),
-
-      dispModeId = createMenu( tr( "MEN_DISPMODE" ), meshPrefId, 1000 ),
-      qualityId  = createMenu( tr( "MEN_QUALITY" ),  meshPrefId, 1007 );
+      transfId = createMenu( tr( "MEN_TRANSF" ), modifyId, 405 );
 
   createMenu( 111, importId, -1 );
   createMenu( 112, importId, -1 );
@@ -2722,25 +2432,6 @@ void SMESHGUI::initialize( CAM_Application* app )
   createMenu( 414, modifyId, -1 );
   createMenu( 415, modifyId, -1 );
 
-  createMenu( 10001, dispModeId, -1 );
-  createMenu( 10002, dispModeId, -1 );
-  createMenu( 10004, dispModeId, -1 );
-  createMenu( 10003, dispModeId, -1 );
-
-  createMenu( 1001, prefId, -1 );
-  createMenu( separator(), prefId, -1 );
-  createMenu( 1003, prefId, -1 );
-  createMenu( separator(), prefId, -1 );
-  createMenu( 1005, prefId, -1 );
-  createMenu( separator(), prefId, -1 );
-  createMenu( 1006, prefId, -1 );
-  createMenu( separator(), prefId, -1 );
-
-  createMenu( 10070, qualityId, -1 );
-  createMenu( 10071, qualityId, -1 );
-
-  createMenu( separator(), prefId, -1 );
-
   createMenu( 214, viewId, -1 );
 
   // ----- create toolbars --------------
@@ -2897,13 +2588,13 @@ void SMESHGUI::initialize( CAM_Application* app )
   // Numbering
   //-------------------------------------------------
   anId = popupMgr()->insert( tr( "MEN_NUM" ), -1, -1 );
-
+  
   popupMgr()->insert( action( 9010 ), anId, -1 );
-  popupMgr()->setRule( action( 9010 ), aMeshInVTK + "&&" + hasNodes, true );
+  popupMgr()->setRule( action( 9010 ), aMeshInVTK + "&& isVisible &&" + hasNodes, true );//@
   popupMgr()->setRule( action( 9010 ), "{'Point'} in labeledTypes", false );
 
   popupMgr()->insert( action( 9011 ), anId, -1 );
-  popupMgr()->setRule( action( 9011 ), aMeshInVTK + "&&" + hasElems, true );
+  popupMgr()->setRule( action( 9011 ), aMeshInVTK + "&& isVisible &&" + hasElems, true );
   popupMgr()->setRule( action( 9011 ), "{'Cell'} in labeledTypes", false );
 
   popupMgr()->insert( separator(), -1, -1 );
@@ -2939,21 +2630,21 @@ void SMESHGUI::initialize( CAM_Application* app )
   anId = popupMgr()->insert( tr( "MEN_DISP_ENT" ), -1, -1 );
 
   popupMgr()->insert( action( 217 ), anId, -1 ); // EDGES
-  popupMgr()->setRule( action( 217 ), aDiffElemsInVTK + "&&" + hasEdges, true );
+  popupMgr()->setRule( action( 217 ), aDiffElemsInVTK + "&& isVisible &&" + hasEdges, true );
   popupMgr()->setRule( action( 217 ), "{'Edge'} in entityMode", false );
 
   popupMgr()->insert( action( 218 ), anId, -1 ); // FACES
-  popupMgr()->setRule( action( 218 ), aDiffElemsInVTK + "&&" + hasFaces, true );
+  popupMgr()->setRule( action( 218 ), aDiffElemsInVTK + "&& isVisible &&" + hasFaces, true );
   popupMgr()->setRule( action( 218 ), "{'Face'} in entityMode", false );
 
   popupMgr()->insert( action( 219 ), anId, -1 ); // VOLUMES
-  popupMgr()->setRule( action( 219 ), aDiffElemsInVTK + "&&" + hasVolumes, true );
+  popupMgr()->setRule( action( 219 ), aDiffElemsInVTK + "&& isVisible &&" + hasVolumes, true );
   popupMgr()->setRule( action( 219 ), "{'Volume'} in entityMode", false );
 
   popupMgr()->insert( separator(), anId, -1 );
 
   popupMgr()->insert( action( 220 ), anId, -1 ); // ALL
-  popupMgr()->setRule( action( 220 ), aDiffElemsInVTK + "&& not( elemTypes in entityMode )", true );
+  popupMgr()->setRule( action( 220 ), aDiffElemsInVTK + "&& isVisible && not( elemTypes in entityMode )", true );
 
   //-------------------------------------------------
   // Color / Size
@@ -3080,7 +2771,6 @@ bool SMESHGUI::activateModule( SUIT_Study* study )
 
   setMenuShown( true );
   setToolShown( true );
-  SetSettings( desktop() );
 
   return res;
 }
@@ -3151,8 +2841,8 @@ void SMESHGUI::createPreferences()
   int genTab = addPreference( tr( "PREF_TAB_GENERAL" ) );
 
   int qaGroup = addPreference( tr( "PREF_GROUP_QUALITY" ), genTab );
-  addPreference( tr( "PREF_DISPLAY_ENTITY" ), qaGroup, SalomeApp_Preferences::Bool, "Mesh", "display_entity" );
-  addPreference( tr( "PREF_AUTO_UPDATE" ), qaGroup, SalomeApp_Preferences::Bool, "Mesh", "auto_update" );
+  addPreference( tr( "PREF_DISPLAY_ENTITY" ), qaGroup, SalomeApp_Preferences::Bool, "SMESH", "display_entity" );
+  addPreference( tr( "PREF_AUTO_UPDATE" ), qaGroup, SalomeApp_Preferences::Bool, "SMESH", "auto_update" );
 
   int precGroup = addPreference( tr( "PREF_GROUP_PRECISION" ), genTab );
   setPreferenceProperty( precGroup, "columns", 1 );
@@ -3163,6 +2853,15 @@ void SMESHGUI::createPreferences()
   setPreferenceProperty( prec, "min", 0 );
   setPreferenceProperty( prec, "max", 16 );
 
+  int dispgroup = addPreference( tr( "PREF_DISPLAY_MODE" ), genTab );
+  int dispmode = addPreference( tr( "PREF_DISPLAY_MODE" ), dispgroup, SalomeApp_Preferences::Selector, "SMESH", "display_mode" );
+  QStringList modes;
+  modes.append( "Wireframe" );
+  modes.append( "Shading" );
+  modes.append( "Shrink" );
+  modes.append( "Nodes" );
+  setPreferenceProperty( dispmode, "strings", modes );
+  
   int meshTab = addPreference( tr( "PREF_TAB_MESH" ) );
   int nodeGroup = addPreference( tr( "PREF_GROUP_NODES" ), meshTab );
 
@@ -3258,8 +2957,16 @@ void SMESHGUI::createPreferences()
   int wv = addPreference( tr( "SMESH_WIDTH" ), posVSizeGr, SalomeApp_Preferences::DblSpin, "SMESH", "scalar_bar_vertical_width" );
   int hv = addPreference( tr( "SMESH_HEIGHT" ), posVSizeGr, SalomeApp_Preferences::DblSpin, "SMESH", "scalar_bar_vertical_height" );
   setPreferenceProperty( xv, "step", 0.1 );
+  setPreferenceProperty( xv, "min", 0.0 );
+  setPreferenceProperty( xv, "max", 1.0 );
   setPreferenceProperty( yv, "step", 0.1 );
+  setPreferenceProperty( yv, "min", 0.0 );
+  setPreferenceProperty( yv, "max", 1.0 );
   setPreferenceProperty( wv, "step", 0.1 );
+  setPreferenceProperty( wv, "min", 0.0 );
+  setPreferenceProperty( wv, "max", 1.0 );
+  setPreferenceProperty( hv, "min", 0.0 );
+  setPreferenceProperty( hv, "max", 1.0 );
   setPreferenceProperty( hv, "step", 0.1 );    
 
   int posHSizeGr = addPreference( tr( "SMESH_POSITION_SIZE_SCALARBAR" ) + " " + tr( "SMESH_HORIZONTAL" ), sbarTab );
@@ -3267,12 +2974,23 @@ void SMESHGUI::createPreferences()
   int yh = addPreference( tr( "SMESH_Y_SCALARBAR" ), posHSizeGr, SalomeApp_Preferences::DblSpin, "SMESH", "scalar_bar_horizontal_y" );
   int wh = addPreference( tr( "SMESH_WIDTH" ), posHSizeGr, SalomeApp_Preferences::DblSpin, "SMESH", "scalar_bar_horizontal_width" );
   int hh = addPreference( tr( "SMESH_HEIGHT" ), posHSizeGr, SalomeApp_Preferences::DblSpin, "SMESH", "scalar_bar_horizontal_height" );
+  setPreferenceProperty( xv, "min", 0.0 );
+  setPreferenceProperty( xv, "max", 1.0 );
+  setPreferenceProperty( xv, "step", 0.1 );
+  setPreferenceProperty( xh, "min", 0.0 );
+  setPreferenceProperty( xh, "max", 1.0 );
   setPreferenceProperty( xh, "step", 0.1 );
+  setPreferenceProperty( yh, "min", 0.0 );
+  setPreferenceProperty( yh, "max", 1.0 );
   setPreferenceProperty( yh, "step", 0.1 );
+  setPreferenceProperty( wh, "min", 0.0 );
+  setPreferenceProperty( wh, "max", 1.0 );
   setPreferenceProperty( wh, "step", 0.1 );
+  setPreferenceProperty( hh, "min", 0.0 );
+  setPreferenceProperty( hh, "max", 1.0 );
   setPreferenceProperty( hh, "step", 0.1 );
 }
 
-void SMESHGUI::preferencesChanged( const QString&, const QString& )
+void SMESHGUI::preferencesChanged( const QString& sect, const QString& name )
 {
 }