Salome HOME
0021711: [CEA 579] Simplify Properties dialog accordingly to dimension of mesh
authorvsr <vsr@opencascade.com>
Wed, 3 Oct 2012 13:45:18 +0000 (13:45 +0000)
committervsr <vsr@opencascade.com>
Wed, 3 Oct 2012 13:45:18 +0000 (13:45 +0000)
src/SMESHGUI/Makefile.am
src/SMESHGUI/SMESHGUI.cxx
src/SMESHGUI/SMESHGUI_GroupDlg.cxx
src/SMESHGUI/SMESHGUI_Preferences_ColorDlg.cxx [deleted file]
src/SMESHGUI/SMESHGUI_Preferences_ColorDlg.h [deleted file]
src/SMESHGUI/SMESHGUI_PropertiesDlg.cxx [new file with mode: 0644]
src/SMESHGUI/SMESHGUI_PropertiesDlg.h [new file with mode: 0644]
src/SMESHGUI/SMESHGUI_VTKUtils.cxx
src/SMESHGUI/SMESH_msg_en.ts
src/SMESHGUI/SMESH_msg_fr.ts

index 15925385f603cb7ab08057838533111ce11b600e..9bfd599b3debf59f9556f503c8623d11082f3066 100644 (file)
@@ -49,7 +49,6 @@ salomeinclude_HEADERS = \
        SMESHGUI_RemoveElementsDlg.h \
        SMESHGUI_MeshInfo.h \
        SMESHGUI_Measurements.h \
-       SMESHGUI_Preferences_ColorDlg.h \
        SMESHGUI_Preferences_ScalarBarDlg.h \
        SMESHGUI_AddMeshElementDlg.h \
        SMESHGUI_XmlHandler.h \
@@ -97,6 +96,7 @@ salomeinclude_HEADERS = \
        SMESHGUI_CopyMeshDlg.h \
        SMESHGUI_PreviewDlg.h  \
        SMESHGUI_ReorientFacesDlg.h \
+       SMESHGUI_PropertiesDlg.h \
        SMESH_SMESHGUI.hxx
 
 # Libraries targets
@@ -115,7 +115,6 @@ dist_libSMESH_la_SOURCES = \
        SMESHGUI_RemoveElementsDlg.cxx \
        SMESHGUI_MeshInfo.cxx \
        SMESHGUI_Measurements.cxx \
-       SMESHGUI_Preferences_ColorDlg.cxx \
        SMESHGUI_Preferences_ScalarBarDlg.cxx \
        SMESHGUI_AddMeshElementDlg.cxx \
        SMESHGUI_XmlHandler.cxx \
@@ -173,7 +172,8 @@ dist_libSMESH_la_SOURCES = \
        SMESHGUI_CopyMeshDlg.cxx \
        SMESHGUI_FileValidator.cxx \
        SMESHGUI_PreviewDlg.cxx  \
-       SMESHGUI_ReorientFacesDlg.cxx
+       SMESHGUI_ReorientFacesDlg.cxx \
+       SMESHGUI_PropertiesDlg.cxx
 
 MOC_FILES = \
        SMESHGUI_moc.cxx \
@@ -189,7 +189,6 @@ MOC_FILES = \
        SMESHGUI_RemoveElementsDlg_moc.cxx \
        SMESHGUI_MeshInfo_moc.cxx \
        SMESHGUI_Measurements_moc.cxx \
-       SMESHGUI_Preferences_ColorDlg_moc.cxx \
        SMESHGUI_Preferences_ScalarBarDlg_moc.cxx \
        SMESHGUI_AddMeshElementDlg_moc.cxx \
        SMESHGUI_FilterDlg_moc.cxx \
@@ -233,7 +232,8 @@ MOC_FILES = \
        SMESHGUI_CopyMeshDlg_moc.cxx \
        SMESHGUI_MeshOrderOp_moc.cxx \
        SMESHGUI_PreviewDlg_moc.cxx \
-       SMESHGUI_ReorientFacesDlg_moc.cxx
+       SMESHGUI_ReorientFacesDlg_moc.cxx \
+       SMESHGUI_PropertiesDlg_moc.cxx
 
 nodist_libSMESH_la_SOURCES= \
        $(MOC_FILES)
index bbb3276a46b5e66e7ec9142160398672a43e3119..75678728fa6695864e90a0bbe50687d0815d72f4 100644 (file)
@@ -59,8 +59,8 @@
 #include "SMESHGUI_MeshPatternDlg.h"
 #include "SMESHGUI_MultiEditDlg.h"
 #include "SMESHGUI_NodesDlg.h"
-#include "SMESHGUI_Preferences_ColorDlg.h"
 #include "SMESHGUI_Preferences_ScalarBarDlg.h"
+#include "SMESHGUI_PropertiesDlg.h"
 #include "SMESHGUI_RemoveElementsDlg.h"
 #include "SMESHGUI_RemoveNodesDlg.h"
 #include "SMESHGUI_RenumberingDlg.h"
       SALOMEDS::Color aColor = aGroupObject->GetColor();
       _PTR(SObject) aGroupSObject = SMESH::FindSObject(aGroupObject);
       if (aGroupSObject) {
+       QColor c;
+       int delta;
         if(SMESH_Actor *anActor = SMESH::FindActorByEntry(aGroupSObject->GetID().c_str())) {
           switch ( aGroupObject->GetType ()) {
           case SMESH::NODE:
             anActor->Set0DColor( aColor.R, aColor.G, aColor.B ); break;
           case SMESH::BALL:
             anActor->SetBallColor( aColor.R, aColor.G, aColor.B ); break;
+          case SMESH::VOLUME:
+            SMESH::GetColor("SMESH", "volume_color", c, delta, "255,0,170|-100");
+            anActor->SetVolumeColor( aColor.R, aColor.G, aColor.B, delta ); break;
+          case SMESH::FACE:
           default:
-            QColor c;
-            int delta;
             SMESH::GetColor("SMESH", "fill_color", c, delta, "0,170,255|-100");
             anActor->SetSufaceColor( aColor.R, aColor.G, aColor.B, delta );
           }
         (new SMESHGUI_TransparencyDlg( SMESHGUI::GetSMESHGUI() ))->show();
         return;
       }
-      case 1132:{
-        QColor c, e, b, n, c0D, cBall, o, outl, selection, preselection;
-        int delta;
-        int size0D = 0, ballSize = 0;
-        int Edgewidth = 0;
-        vtkFloatingPointType Shrink = 0.0;
-        vtkFloatingPointType faces_orientation_scale = 0.0;
-        bool faces_orientation_3dvectors = false;
-
-        VTK::MarkerType aMarkerTypeCurrent = VTK::MT_NONE;
-        VTK::MarkerScale aMarkerScaleCurrent = VTK::MS_NONE;
-        int aMarkerTextureCurrent = 0;
+      case 1132: {
+       vtkFloatingPointType color[3];
+        QColor faceColor, edgeColor, nodeColor, elem0dColor, ballColor;
+       QColor orientationColor, outlineColor, volumeColor;
+        int deltaF = 0, deltaV = 0;
+        int elem0dSize   = 1;
+       int ballSize     = 1;
+        int edgeWidth    = 1;
+       int outlineWidth = 1;
+        vtkFloatingPointType shrinkCoef = 0.0;
+        vtkFloatingPointType orientationScale = 0.0;
+        bool orientation3d = false;
+        VTK::MarkerType markerType = VTK::MT_NONE;
+        VTK::MarkerScale markerScale = VTK::MS_NONE;
+        int markerId = 0;
+       bool hasNodes = false;
+       int presentEntities = 0;
+       bool firstTime  = true;
 
         SALOME_ListIteratorOfListIO It( selected );
-        for( ; It.More(); It.Next()){
+        for ( ; It.More(); It.Next() ) {
           Handle(SALOME_InteractiveObject) IObject = It.Value();
-          if(IObject->hasEntry()){
-            if(SMESH_Actor *anActor = SMESH::FindActorByEntry(IObject->getEntry())){
-              vtkFloatingPointType color[3];
-              anActor->GetSufaceColor(color[0], color[1], color[2],delta);
-              int c0 = int (color[0] * 255);
-              int c1 = int (color[1] * 255);
-              int c2 = int (color[2] * 255);
-              c.setRgb(c0, c1, c2);
-
-              vtkFloatingPointType edgecolor[3];
-              anActor->GetEdgeColor(edgecolor[0], edgecolor[1], edgecolor[2]);
-              c0 = int (edgecolor[0] * 255);
-              c1 = int (edgecolor[1] * 255);
-              c2 = int (edgecolor[2] * 255);
-              e.setRgb(c0, c1, c2);
-
-              vtkFloatingPointType nodecolor[3];
-              anActor->GetNodeColor(nodecolor[0], nodecolor[1], nodecolor[2]);
-              c0 = int (nodecolor[0] * 255);
-              c1 = int (nodecolor[1] * 255);
-              c2 = int (nodecolor[2] * 255);
-              n.setRgb(c0, c1, c2);
-
-              vtkFloatingPointType color0D[3];
-              anActor->Get0DColor(color0D[0], color0D[1], color0D[2]);
-              c0 = int (color0D[0] * 255);
-              c1 = int (color0D[1] * 255);
-              c2 = int (color0D[2] * 255);
-              c0D.setRgb(c0, c1, c2);
-
-              vtkFloatingPointType ballcolor[3];
-              anActor->GetBallColor(ballcolor[0], ballcolor[1], ballcolor[2]);
-              c0 = int (ballcolor[0] * 255);
-              c1 = int (ballcolor[1] * 255);
-              c2 = int (ballcolor[2] * 255);
-              cBall.setRgb(c0, c1, c2);
-
-              vtkFloatingPointType outlineColor[3];
-              anActor->GetOutlineColor(outlineColor[0], outlineColor[1], outlineColor[2]);
-              c0 = int (outlineColor[0] * 255);
-              c1 = int (outlineColor[1] * 255);
-              c2 = int (outlineColor[2] * 255);
-              outl.setRgb(c0, c1, c2);
-
-              vtkFloatingPointType hColor[3];
-              anActor->GetHighlightColor(hColor[0], hColor[1], hColor[2]);
-              c0 = int (hColor[0] * 255);
-              c1 = int (hColor[1] * 255);
-              c2 = int (hColor[2] * 255);
-              selection.setRgb(c0, c1, c2);
-
-              vtkFloatingPointType phColor[3];
-              anActor->GetPreHighlightColor(phColor[0], phColor[1], phColor[2]);
-              c0 = int (phColor[0] * 255);
-              c1 = int (phColor[1] * 255);
-              c2 = int (phColor[2] * 255);
-              preselection.setRgb(c0, c1, c2);
-
-              size0D = (int)anActor->Get0DSize();
-              if(size0D == 0)
-                size0D = 1;
-              ballSize = (int)anActor->GetBallSize();
-              if(ballSize == 0)
-                ballSize = 1;
-              Edgewidth = (int)anActor->GetLineWidth();
-              if(Edgewidth == 0)
-                Edgewidth = 1;
-              Shrink = anActor->GetShrinkFactor();
-
-              vtkFloatingPointType faces_orientation_color[3];
-              anActor->GetFacesOrientationColor(faces_orientation_color);
-              c0 = int (faces_orientation_color[0] * 255);
-              c1 = int (faces_orientation_color[1] * 255);
-              c2 = int (faces_orientation_color[2] * 255);
-              o.setRgb(c0, c1, c2);
-
-              faces_orientation_scale = anActor->GetFacesOrientationScale();
-              faces_orientation_3dvectors = anActor->GetFacesOrientation3DVectors();
-
-              aMarkerTypeCurrent = anActor->GetMarkerType();
-              aMarkerScaleCurrent = anActor->GetMarkerScale();
-              aMarkerTextureCurrent = anActor->GetMarkerTexture();
-
-              // even if there are multiple objects in the selection,
-              // we need only the first one to get values for the dialog
-              break;
-            }
-          }
-        }
-
-        SMESHGUI_Preferences_ColorDlg *aDlg =
-          new SMESHGUI_Preferences_ColorDlg( SMESHGUI::GetSMESHGUI() );
-        aDlg->SetBooleanValue(1, faces_orientation_3dvectors);
-        aDlg->SetColor(1, c);
-        aDlg->SetColor(2, e);
-        aDlg->SetColor(3, n);
-        aDlg->SetColor(4, outl);
-        aDlg->SetColor(5, c0D);
-        aDlg->SetColor(6, cBall);
-        aDlg->SetColor(7, o);
-        aDlg->SetColor(8, selection);
-        aDlg->SetColor(9, preselection);
-        aDlg->SetDeltaBrightness(delta);
-        aDlg->SetDoubleValue(1, faces_orientation_scale);
-        aDlg->SetIntValue(1, Edgewidth);
-        aDlg->SetIntValue(2, int(Shrink*100.));
-        aDlg->SetIntValue(3, size0D);
-        aDlg->SetIntValue(4, ballSize);
-        aDlg->setCustomMarkerMap( theMarkerMap[ aStudy->StudyId() ] );
-
-        if( aMarkerTypeCurrent != VTK::MT_USER )
-          aDlg->setStandardMarker( aMarkerTypeCurrent, aMarkerScaleCurrent );
+          if ( !IObject->hasEntry() ) continue;
+         SMESH_Actor* anActor = SMESH::FindActorByEntry( IObject->getEntry() );
+         if ( !anActor || !anActor->GetObject() ) continue;
+
+         if ( firstTime ) {
+           // nodes: color, marker
+           anActor->GetNodeColor( color[0], color[1], color[2] );
+           nodeColor.setRgbF( color[0], color[1], color[2] );
+           markerType  = anActor->GetMarkerType();
+           markerScale = anActor->GetMarkerScale();
+           markerId    = anActor->GetMarkerTexture();
+           // edges: color, width
+           anActor->GetEdgeColor( color[0], color[1], color[2] );
+           edgeColor.setRgbF( color[0], color[1], color[2] );
+           edgeWidth = qMax( (int)anActor->GetLineWidth(), 1 ); // minimum allowed width is 1
+           // faces: front color, back color (delta)
+           anActor->GetSufaceColor( color[0], color[1], color[2], deltaF );
+           faceColor.setRgbF( color[0], color[1], color[2] );
+           // faces: front color, back color (delta)
+           anActor->GetVolumeColor( color[0], color[1], color[2], deltaV );
+           volumeColor.setRgbF( color[0], color[1], color[2] );
+           // 0d elements: color, size
+           anActor->Get0DColor( color[0], color[1], color[2] );
+           elem0dColor.setRgbF( color[0], color[1], color[2] );
+           elem0dSize = qMax( (int)anActor->Get0DSize(), 1 ); // minimum allowed size is 1
+           // balls: color, size
+           anActor->GetBallColor( color[0], color[1], color[2] );
+           ballColor.setRgbF( color[0], color[1], color[2] );
+           ballSize = qMax( (int)anActor->GetBallSize(), 1 ); // minimum allowed size is 1
+           // outlines: color
+           anActor->GetOutlineColor( color[0], color[1], color[2] );
+           outlineColor.setRgbF( color[0], color[1], color[2] );
+           outlineWidth = qMax( (int)anActor->GetOutlineWidth(), 1 ); // minimum allowed width is 1
+           // orientation vectors: color, scale, 3d flag
+           anActor->GetFacesOrientationColor( color[0], color[1], color[2] );
+           orientationColor.setRgbF( color[0], color[1], color[2] );
+           orientationScale = anActor->GetFacesOrientationScale();
+           orientation3d = anActor->GetFacesOrientation3DVectors();
+           // shrink factor
+           shrinkCoef = anActor->GetShrinkFactor();
+         }
+
+         firstTime = false; // we only take properties from first object (for performance reasons)
+
+         if ( !hasNodes )
+           hasNodes = anActor->GetObject()->GetNbEntities( SMDSAbs_Node );
+         if ( !(presentEntities & SMESH_Actor::eEdges) && anActor->GetObject()->GetNbEntities( SMDSAbs_Edge ) )
+           presentEntities = presentEntities | SMESH_Actor::eEdges;
+         if ( !(presentEntities & SMESH_Actor::eFaces) && anActor->GetObject()->GetNbEntities( SMDSAbs_Face ) )
+           presentEntities = presentEntities | SMESH_Actor::eFaces;
+         if ( !(presentEntities & SMESH_Actor::eVolumes) && anActor->GetObject()->GetNbEntities( SMDSAbs_Volume ) )
+           presentEntities = presentEntities | SMESH_Actor::eVolumes;
+         if ( !(presentEntities & SMESH_Actor::e0DElements) && anActor->GetObject()->GetNbEntities( SMDSAbs_0DElement ) )
+           presentEntities = presentEntities | SMESH_Actor::e0DElements;
+         if ( !(presentEntities & SMESH_Actor::eBallElem) && anActor->GetObject()->GetNbEntities( SMDSAbs_Ball ) )
+           presentEntities = presentEntities | SMESH_Actor::eBallElem;
+         
+         // as we know that all types of elements are present, we can exit the loop
+         if ( presentEntities == SMESH_Actor::eAllEntity )
+           break;
+       }
+
+       SMESHGUI_PropertiesDlg dlg( theMarkerMap[ aStudy->StudyId() ], SMESHGUI::desktop() );
+       // nodes: color, marker
+       dlg.setNodeColor( nodeColor );
+        if( markerType != VTK::MT_USER )
+          dlg.setNodeMarker( markerType, markerScale );
         else
-          aDlg->setCustomMarker( aMarkerTextureCurrent );
-
-        if(aDlg->exec()){
-          QColor color                   = aDlg->GetColor(1);
-          QColor edgecolor               = aDlg->GetColor(2);
-          QColor nodecolor               = aDlg->GetColor(3);
-          QColor outlinecolor            = aDlg->GetColor(4);
-          QColor color0D                 = aDlg->GetColor(5);
-          QColor ballcolor               = aDlg->GetColor(6);
-          QColor faces_orientation_color = aDlg->GetColor(7);
-          QColor selectioncolor          = aDlg->GetColor(8);
-          QColor preSelectioncolor       = aDlg->GetColor(9);
-          int delta = aDlg->GetDeltaBrightness();
-
-          /* Point marker */
-          theMarkerMap[ aStudy->StudyId() ] = aDlg->getCustomMarkerMap();
-
+          dlg.setNodeCustomMarker( markerId );
+       // edges: color, line width
+       dlg.setEdgeColor( edgeColor );
+       dlg.setEdgeWidth( edgeWidth );
+       // faces: front color, back color
+       dlg.setFaceColor( faceColor, deltaF );
+       // volumes: normal color, reversed color
+       dlg.setVolumeColor( volumeColor, deltaV );
+       // outlines: color, line width
+       dlg.setOutlineColor( outlineColor );
+       dlg.setOutlineWidth( outlineWidth );
+       // 0d elements: color, size
+       dlg.setElem0dColor( elem0dColor );
+       dlg.setElem0dSize( elem0dSize );
+       // balls: color, size
+       dlg.setBallColor( ballColor );
+       dlg.setBallSize( ballSize );
+       // orientation: color, scale, 3d flag
+       dlg.setOrientationColor( orientationColor );
+       dlg.setOrientationSize( int( orientationScale * 100. ) );
+       dlg.setOrientation3d( orientation3d );
+       // shrink: scale factor
+       dlg.setShrinkCoef( int( shrinkCoef * 100. ) );
+       // hide unused controls
+       dlg.showControls( presentEntities, hasNodes );
+       
+       if ( dlg.exec() ) {
+          nodeColor        = dlg.nodeColor();
+         markerType       = dlg.nodeMarkerType();
+         markerScale      = dlg.nodeMarkerScale();
+         markerId         = dlg.nodeMarkerId();
+          edgeColor        = dlg.edgeColor();
+         edgeWidth        = dlg.edgeWidth();
+          faceColor        = dlg.faceColor();
+          deltaF           = dlg.faceColorDelta();
+         volumeColor      = dlg.volumeColor();
+         deltaV           = dlg.volumeColorDelta();
+          outlineColor     = dlg.outlineColor();
+         outlineWidth     = dlg.outlineWidth();
+          elem0dColor      = dlg.elem0dColor();
+         elem0dSize       = dlg.elem0dSize();
+          ballColor        = dlg.ballColor();
+         ballSize         = dlg.ballSize();
+          orientationColor = dlg.orientationColor();
+         orientationScale = dlg.orientationSize() / 100.;
+         orientation3d    = dlg.orientation3d();
+         shrinkCoef       = dlg.shrinkCoef() / 100.;
+
+          // store point markers map that might be changed by the user
+          theMarkerMap[ aStudy->StudyId() ] = dlg.customMarkers();
+
+         // set properties from dialog box to the presentations
           SALOME_ListIteratorOfListIO It( selected );
-          for( ; It.More(); It.Next()){
+          for ( ; It.More(); It.Next() ) {
             Handle(SALOME_InteractiveObject) IObject = It.Value();
-            if(IObject->hasEntry()){
-              if(SMESH_Actor *anActor = SMESH::FindActorByEntry(IObject->getEntry())){
-                /* actor color and backface color */
-                anActor->SetSufaceColor(vtkFloatingPointType (color.red()) / 255.,
-                                        vtkFloatingPointType (color.green()) / 255.,
-                                        vtkFloatingPointType (color.blue()) / 255.,
-                                        delta);
-                /* edge color */
-                anActor->SetEdgeColor(vtkFloatingPointType (edgecolor.red()) / 255.,
-                                      vtkFloatingPointType (edgecolor.green()) / 255.,
-                                      vtkFloatingPointType (edgecolor.blue()) / 255.);
-                /* edge outline */
-                anActor->SetOutlineColor(vtkFloatingPointType (outlinecolor.red()) / 255.,
-                                         vtkFloatingPointType (outlinecolor.green()) / 255.,
-                                         vtkFloatingPointType (outlinecolor.blue()) / 255.);
-
-                /* selection */
-                anActor->SetHighlightColor(vtkFloatingPointType (selectioncolor.red()) / 255.,
-                                           vtkFloatingPointType (selectioncolor.green()) / 255.,
-                                           vtkFloatingPointType (selectioncolor.blue()) / 255.);
-                /* pre-selection */
-                anActor->SetPreHighlightColor(vtkFloatingPointType (preSelectioncolor.red()) / 255.,
-                                              vtkFloatingPointType (preSelectioncolor.green()) / 255.,
-                                              vtkFloatingPointType (preSelectioncolor.blue()) / 255.);
-                
-
-                /* Shrink factor and size edges */
-                anActor->SetShrinkFactor(aDlg->GetIntValue(2) / 100.);
-                anActor->SetLineWidth(aDlg->GetIntValue(1));
-
-                /* Nodes color and size */
-                anActor->SetNodeColor(vtkFloatingPointType (nodecolor.red()) / 255.,
-                                      vtkFloatingPointType (nodecolor.green()) / 255.,
-                                      vtkFloatingPointType (nodecolor.blue()) / 255.);
-
-                /* 0D elements */
-                anActor->Set0DColor(vtkFloatingPointType (color0D.red()) / 255.,
-                                    vtkFloatingPointType (color0D.green()) / 255.,
-                                    vtkFloatingPointType (color0D.blue()) / 255.);
-                anActor->Set0DSize(aDlg->GetIntValue(3));
-
-                /* Ball elements */
-                anActor->SetBallColor(vtkFloatingPointType (ballcolor.red()) / 255.,
-                                      vtkFloatingPointType (ballcolor.green()) / 255.,
-                                      vtkFloatingPointType (ballcolor.blue()) / 255.);
-                anActor->SetBallSize(aDlg->GetIntValue(4));
-
-                /* Faces orientation */
-                vtkFloatingPointType c[3] = {vtkFloatingPointType(faces_orientation_color.redF()),
-                                             vtkFloatingPointType(faces_orientation_color.greenF()),
-                                             vtkFloatingPointType(faces_orientation_color.blueF())};
-                anActor->SetFacesOrientationColor(c);
-                anActor->SetFacesOrientationScale(aDlg->GetDoubleValue(1));
-                anActor->SetFacesOrientation3DVectors(aDlg->GetBooleanValue(1));
-
-                VTK::MarkerType aMarkerTypeNew = aDlg->getMarkerType();
-                VTK::MarkerScale aMarkerScaleNew = aDlg->getStandardMarkerScale();
-                int aMarkerTextureNew = aDlg->getCustomMarkerID();
-                if( aMarkerTypeNew != VTK::MT_USER )
-                  anActor->SetMarkerStd( aMarkerTypeNew, aMarkerScaleNew );
-                else {
-                  const VTK::MarkerMap& aMarkerMap = theMarkerMap[ aStudy->StudyId() ];
-                  VTK::MarkerMap::const_iterator anIter = aMarkerMap.find( aMarkerTextureNew );
-                  if( anIter != aMarkerMap.end() )
-                    anActor->SetMarkerTexture( aMarkerTextureNew, anIter->second.second );
-                }
-
-                SMESH::SMESH_GroupBase_var aGroupObject = SMESH::IObjectToInterface<SMESH::SMESH_GroupBase>(IObject);
-                if( !aGroupObject->_is_nil() )
-                {
-                  SMESH::ElementType anElementType = aGroupObject->GetType();
-                  QColor aColor;
-                  switch( anElementType )
-                  {
-                    case SMESH::NODE: aColor = nodecolor; break;
-                    case SMESH::EDGE: aColor = edgecolor; break;
-                    default: aColor = color; break;
-                  }
-
-                  SALOMEDS::Color aGroupColor;
-                  aGroupColor.R = (float)aColor.red() / 255.0;
-                  aGroupColor.G = (float)aColor.green() / 255.0;
-                  aGroupColor.B = (float)aColor.blue() / 255.0;
-                  aGroupObject->SetColor( aGroupColor );
-                }
-              }
-            }
-          }
-          SMESH::RepaintCurrentView();
-        }
-        delete aDlg;
+            if ( !IObject->hasEntry() ) continue;
+           SMESH_Actor* anActor = SMESH::FindActorByEntry( IObject->getEntry() );
+           if ( !anActor ) continue;
+           
+           // nodes: color, marker
+           anActor->SetNodeColor( nodeColor.redF(), nodeColor.greenF(), nodeColor.blueF() );
+           if ( markerType != VTK::MT_USER ) {
+             anActor->SetMarkerStd( markerType, markerScale );
+           }
+           else {
+             const VTK::MarkerMap& markerMap = theMarkerMap[ aStudy->StudyId() ];
+             VTK::MarkerMap::const_iterator iter = markerMap.find( markerId );
+             if ( iter != markerMap.end() )
+               anActor->SetMarkerTexture( markerId, iter->second.second );
+           }
+           // volumes: normal color, reversed color (delta)
+           anActor->SetVolumeColor( volumeColor.redF(), volumeColor.greenF(), volumeColor.blueF(), deltaV );
+           // faces: front color, back color (delta)
+           anActor->SetSufaceColor( faceColor.redF(), faceColor.greenF(), faceColor.blueF(), deltaF );
+           // edges: color, width
+           anActor->SetEdgeColor( edgeColor.redF(), edgeColor.greenF(), edgeColor.blueF() );
+           anActor->SetLineWidth( edgeWidth );
+           // outlines: color
+           anActor->SetOutlineColor( outlineColor.redF(), outlineColor.greenF(), outlineColor.blueF() );
+           anActor->SetOutlineWidth( outlineWidth );
+           // 0D elements: color, size
+           anActor->Set0DColor( elem0dColor.redF(), elem0dColor.greenF(), elem0dColor.blueF() );
+           anActor->Set0DSize( elem0dSize );
+           // balls: color, size
+           anActor->SetBallColor( ballColor.redF(), ballColor.greenF(), ballColor.blueF() );
+           anActor->SetBallSize( ballSize );
+           // orientation: color, scale, 3d flag
+           anActor->SetFacesOrientationColor( orientationColor.redF(), orientationColor.greenF(), orientationColor.blueF() );
+           anActor->SetFacesOrientationScale( orientationScale );
+           anActor->SetFacesOrientation3DVectors( orientation3d );
+           // shrink factor
+           anActor->SetShrinkFactor( shrinkCoef );
+
+           // for groups, set also proper color
+           SMESH::SMESH_GroupBase_var aGroupObject = SMESH::IObjectToInterface<SMESH::SMESH_GroupBase>(IObject);
+           if ( !aGroupObject->_is_nil() ) {
+             SMESH::ElementType anElementType = aGroupObject->GetType();
+             QColor aColor;
+             switch( anElementType ) {
+             case SMESH::NODE:
+               aColor = nodeColor; break;
+             case SMESH::EDGE:
+               aColor = edgeColor; break;
+             case SMESH::FACE: 
+               aColor = faceColor; break;
+             case SMESH::VOLUME:
+               aColor = volumeColor; break;
+             case SMESH::ELEM0D: 
+               aColor = elem0dColor; break;
+             case SMESH::BALL: 
+               aColor = ballColor; break;
+             default: break;
+             }
+             
+             if ( aColor.isValid() ) {
+               SALOMEDS::Color aGroupColor;
+               aGroupColor.R = aColor.redF();
+               aGroupColor.G = aColor.greenF();
+               aGroupColor.B = aColor.blueF();
+               aGroupObject->SetColor( aGroupColor );
+             }
+           } // if ( !aGroupObject->_is_nil() )
+         } // for ( ; It.More(); It.Next() )
+         SMESH::RepaintCurrentView();
+       } // if ( dlg.exec() )
         return;
-      }
-      }
+      } // case 1132:
+      } // switch(theCommandID)
       SALOME_ListIteratorOfListIO It( selected );
       for( ; It.More(); It.Next()){
         Handle(SALOME_InteractiveObject) IObject = It.Value();
@@ -4813,15 +4791,17 @@ void SMESHGUI::createPreferences()
   setPreferenceProperty( markerScale, "indexes", aMarkerScaleIndicesList );
 
   int elemGroup = addPreference( tr( "PREF_GROUP_ELEMENTS" ), meshTab );
-  setPreferenceProperty( elemGroup, "columns", 2 );
+  //setPreferenceProperty( elemGroup, "columns", 2 );
 
-  int ColorId = addPreference( tr( "PREF_FILL"     ), elemGroup, LightApp_Preferences::BiColor, "SMESH", "fill_color" );
+  int ColorId = addPreference( tr( "PREF_FILL" ), elemGroup, LightApp_Preferences::BiColor, "SMESH", "fill_color" );
+  setPreferenceProperty( ColorId, "text", tr("PREF_BACKFACE") );
+  ColorId = addPreference( tr( "PREF_VOLUME" ), elemGroup, LightApp_Preferences::BiColor, "SMESH", "volume_color" );
+  setPreferenceProperty( ColorId, "text", tr("PREF_REVERSEDVOLUME") );
   addPreference( tr( "PREF_COLOR_0D" ), elemGroup, LightApp_Preferences::Color, "SMESH", "elem0d_color" );
   addPreference( tr( "PREF_BALL_COLOR" ), elemGroup, LightApp_Preferences::Color, "SMESH", "ball_elem_color" );
   addPreference( tr( "PREF_OUTLINE"  ), elemGroup, LightApp_Preferences::Color, "SMESH", "outline_color" );
   addPreference( tr( "PREF_WIREFRAME"  ), elemGroup, LightApp_Preferences::Color, "SMESH", "wireframe_color" );
 
-  setPreferenceProperty( ColorId, "text", tr("PREF_BACKFACE") );
 
   int grpGroup = addPreference( tr( "PREF_GROUP_GROUPS" ), meshTab );
   setPreferenceProperty( grpGroup, "columns", 2 );
@@ -4835,6 +4815,8 @@ void SMESHGUI::createPreferences()
                              LightApp_Preferences::IntSpin, "SMESH", "ball_elem_size");
   int elemW  = addPreference(tr("PREF_WIDTH"), elemGroup,
                              LightApp_Preferences::IntSpin, "SMESH", "element_width");
+  int outW  = addPreference(tr("PREF_OUTLINE_WIDTH"), elemGroup,
+                             LightApp_Preferences::IntSpin, "SMESH", "outline_width");
   int shrink = addPreference(tr("PREF_SHRINK_COEFF"), elemGroup,
                              LightApp_Preferences::IntSpin, "SMESH", "shrink_coeff");
 
@@ -4847,6 +4829,9 @@ void SMESHGUI::createPreferences()
   setPreferenceProperty( elemW, "min", 1 );
   setPreferenceProperty( elemW, "max", 5 );
 
+  setPreferenceProperty( outW, "min", 1 );
+  setPreferenceProperty( outW, "max", 5 );
+
   setPreferenceProperty( shrink, "min", 0 );
   setPreferenceProperty( shrink, "max", 100 );
 
@@ -5222,9 +5207,9 @@ SALOMEDS::Color SMESHGUI::getUniqueColor( const QList<SALOMEDS::Color>& theReser
   aColor.setHsv( aHue, 255, 255 );
 
   SALOMEDS::Color aSColor;
-  aSColor.R = (double)aColor.red() / 255.0;
-  aSColor.G = (double)aColor.green() / 255.0;
-  aSColor.B = (double)aColor.blue() / 255.0;
+  aSColor.R = aColor.redF();
+  aSColor.G = aColor.greenF();
+  aSColor.B = aColor.blueF();
 
   return aSColor;
 }
index 129f67073b4a3aafdd1823cf4e682e1ea257ef9a..668681496edb16bd69f4842a2bd94fbadc20c4c1 100644 (file)
@@ -1126,17 +1126,21 @@ bool SMESHGUI_GroupDlg::onApply()
       if ( aMeshGroupSO )
         if(SMESH_Actor *anActor = SMESH::FindActorByEntry(aMeshGroupSO->GetID().c_str())) {
           anActor->setName(myName->text().toLatin1().data());
+         QColor c;
+         int delta;
           switch ( myTypeId ) {
           case grpNodeSelection:   anActor->SetNodeColor( aColor.R, aColor.G, aColor.B ); break;
           case grpBallSelection:   anActor->SetBallColor( aColor.R, aColor.G, aColor.B ); break;
           case grpEdgeSelection:   anActor->SetEdgeColor( aColor.R, aColor.G, aColor.B ); break;
-          case grpFaceSelection:   
           case grpVolumeSelection: 
+              SMESH::GetColor("SMESH", "volume_color", c , delta, "255,0,170|-100");
+              anActor->SetVolumeColor( aColor.R, aColor.G, aColor.B, delta ); break;          
+             break;
+          case grpFaceSelection:   
           default:
-              QColor c;
-              int delta;
               SMESH::GetColor("SMESH", "fill_color", c , delta, "0,170,255|-100");
               anActor->SetSufaceColor( aColor.R, aColor.G, aColor.B, delta ); break;          
+             break;
           }
         }
     }
diff --git a/src/SMESHGUI/SMESHGUI_Preferences_ColorDlg.cxx b/src/SMESHGUI/SMESHGUI_Preferences_ColorDlg.cxx
deleted file mode 100644 (file)
index efd681f..0000000
+++ /dev/null
@@ -1,574 +0,0 @@
-// Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
-// 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-// SMESH SMESHGUI : GUI for SMESH component
-// File   : SMESHGUI_Preferences_ColorDlg.cxx
-// Author : Nicolas REJNERI, Open CASCADE S.A.S.
-// SMESH includes
-//
-#include "SMESHGUI_Preferences_ColorDlg.h"
-
-#include "SMESHGUI.h"
-#include "SMESHGUI_SpinBox.h"
-#include "SMESHGUI_Utils.h"
-
-// SALOME GUI includes
-#include <SUIT_Desktop.h>
-#include <SUIT_MessageBox.h>
-#include <SUIT_ResourceMgr.h>
-#include <SUIT_Session.h>
-#include <QtxColorButton.h>
-#include <VTKViewer_MarkerWidget.h>
-#include <LightApp_Application.h>
-#include <SalomeApp_IntSpinBox.h>
-
-// Qt includes
-#include <QGroupBox>
-#include <QLabel>
-#include <QPushButton>
-#include <QVBoxLayout>
-#include <QHBoxLayout>
-#include <QGridLayout>
-#include <QCheckBox>
-#include <QKeyEvent>
-
-#define SPACING 6
-#define MARGIN  11
-
-//=================================================================================
-// function : SMESHGUI_Preferences_ColorDlg()
-// purpose  : Constructs a SMESHGUI_Preferences_ColorDlg which is a child
-//            of 'parent', with the name 'name' and widget flags set to 'f'
-//            The dialog will by default be modeless, unless you
-//            set'modal' to true to construct a modal dialog.
-//=================================================================================
-SMESHGUI_Preferences_ColorDlg::SMESHGUI_Preferences_ColorDlg( SMESHGUI* theModule )
-  : QDialog( SMESH::GetDesktop( theModule ) ),
-    mySMESHGUI( theModule )
-{
-  setModal( true );
-  setWindowTitle( tr( "DIALOG_TITLE" ) );
-  setSizeGripEnabled( true );
-
-  // -------------------------------
-  QVBoxLayout* topLayout = new QVBoxLayout( this );
-  topLayout->setSpacing( SPACING );
-  topLayout->setMargin( MARGIN );
-
-  // -------------------------------
-  QGroupBox* ButtonGroup1 = new QGroupBox( tr( "GRP_ELEMENTS" ), this );
-  QGridLayout* ButtonGroup1Layout = new QGridLayout( ButtonGroup1 );
-  ButtonGroup1Layout->setSpacing( SPACING );
-  ButtonGroup1Layout->setMargin( MARGIN );
-
-  QLabel* TextLabel_Fill = new QLabel( tr( "SURFACE_COLOR_LBL" ), ButtonGroup1 );
-
-  toolSurfColor = new QtxBiColorTool(ButtonGroup1);
-  toolSurfColor->setText( tr( "BACKSURFACE_COLOR_LBL" ));
-
-  QLabel* TextLabel_Outline = new QLabel( tr( "OUTLINE_COLOR_LBL" ), ButtonGroup1 );
-  btnOutlineColor = new QtxColorButton( ButtonGroup1 );
-
-  QLabel* TextLabel_Wireframe = new QLabel( tr( "WIREFRAME_COLOR_LBL" ), ButtonGroup1 );
-  btnWireframeColor = new QtxColorButton( ButtonGroup1 );
-
-  QLabel* TextLabel_0DElements_Color = new QLabel( tr( "0D_ELEMENTS_COLOR_LBL" ), ButtonGroup1 );
-  btn0DElementsColor = new QtxColorButton( ButtonGroup1 );
-
-  QLabel* TextLabel_0DElements_Size = new QLabel( tr( "0D_ELEMENTS_SIZE_LBL" ), ButtonGroup1 );
-  SpinBox_0DElements_Size = new SalomeApp_IntSpinBox( ButtonGroup1 );
-  SpinBox_0DElements_Size->setAcceptNames( false ); // No Notebook variables allowed
-  SpinBox_0DElements_Size->setRange( 1, 10 );
-  SpinBox_0DElements_Size->setSingleStep( 1 );
-  SpinBox_0DElements_Size->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
-  SpinBox_0DElements_Size->setButtonSymbols( QSpinBox::PlusMinus );
-
-  QLabel* TextLabel_BallElem_Color = new QLabel( tr( "BALL_ELEMENTS_COLOR_LBL" ), ButtonGroup1 );
-  btnBallElemColor = new QtxColorButton( ButtonGroup1 );
-
-  QLabel* TextLabel_BallElem_Size = new QLabel( tr( "BALL_ELEMENTS_SIZE_LBL" ), ButtonGroup1 );
-  SpinBox_BallElem_Size = new SalomeApp_IntSpinBox( ButtonGroup1 );
-  SpinBox_BallElem_Size->setAcceptNames( false ); // No Notebook variables allowed
-  SpinBox_BallElem_Size->setRange( 1, 10 );
-  SpinBox_BallElem_Size->setSingleStep( 1 );
-  SpinBox_BallElem_Size->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
-  SpinBox_BallElem_Size->setButtonSymbols( QSpinBox::PlusMinus );
-
-  QLabel* TextLabel_Width = new QLabel( tr( "LINE_WIDTH_LBL" ), ButtonGroup1 );
-  SpinBox_Width = new SalomeApp_IntSpinBox( ButtonGroup1 );
-  SpinBox_Width->setAcceptNames( false ); // No Notebook variables allowed
-  SpinBox_Width->setRange( 1, 5 );
-  SpinBox_Width->setSingleStep( 1 );
-  SpinBox_Width->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
-  SpinBox_Width->setButtonSymbols( QSpinBox::PlusMinus );
-
-  QLabel* TextLabel_ShrinkCoeff = new QLabel( tr( "SHRINK_COEF_LBL" ), ButtonGroup1 );
-  SpinBox_Shrink = new SalomeApp_IntSpinBox( ButtonGroup1 );
-  SpinBox_Shrink->setAcceptNames( false ); // No Notebook variables allowed
-  SpinBox_Shrink->setRange( 20, 100 );
-  SpinBox_Shrink->setSingleStep( 1 );
-  SpinBox_Shrink->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
-  SpinBox_Shrink->setButtonSymbols( QSpinBox::PlusMinus );
-
-  int row = 0;
-  ButtonGroup1Layout->addWidget( TextLabel_Fill,             row, 0 );
-  ButtonGroup1Layout->addWidget( toolSurfColor,              row++, 1, 1, 3 );
-
-  ButtonGroup1Layout->addWidget( TextLabel_Outline,          row, 0 );
-  ButtonGroup1Layout->addWidget( btnOutlineColor,            row, 1 );
-  ButtonGroup1Layout->addWidget( TextLabel_Wireframe,        row, 2 );
-  ButtonGroup1Layout->addWidget( btnWireframeColor,          row++, 3 );
-
-  ButtonGroup1Layout->addWidget( TextLabel_0DElements_Color, row, 0 );
-  ButtonGroup1Layout->addWidget( btn0DElementsColor,         row, 1 );
-
-  ButtonGroup1Layout->addWidget( TextLabel_0DElements_Size,  row, 2 );
-  ButtonGroup1Layout->addWidget( SpinBox_0DElements_Size,    row++, 3 );
-
-  ButtonGroup1Layout->addWidget( TextLabel_BallElem_Color,   row, 0 );
-  ButtonGroup1Layout->addWidget( btnBallElemColor,           row, 1 );
-
-  ButtonGroup1Layout->addWidget( TextLabel_BallElem_Size,    row, 2 );
-  ButtonGroup1Layout->addWidget( SpinBox_BallElem_Size,      row++, 3 );
-
-  ButtonGroup1Layout->addWidget( TextLabel_Width,            row, 0 );
-  ButtonGroup1Layout->addWidget( SpinBox_Width,              row, 1 );
-  ButtonGroup1Layout->addWidget( TextLabel_ShrinkCoeff,      row, 2 );
-  ButtonGroup1Layout->addWidget( SpinBox_Shrink,             row, 3 );
-
-  // -------------------------------
-  QGroupBox* ButtonGroup2 = new QGroupBox( tr( "GRP_NODES" ), this );
-  QGridLayout* ButtonGroup2Layout = new QGridLayout( ButtonGroup2 );
-  ButtonGroup2Layout->setSpacing( SPACING );
-  ButtonGroup2Layout->setMargin( MARGIN );
-
-  QLabel* TextLabel_Nodes_Color = new QLabel( tr( "NODES_COLOR_LBL" ), ButtonGroup2 );
-  btnNodeColor = new QtxColorButton( ButtonGroup2 );
-
-  QGroupBox* MarkerGroup = new QGroupBox( tr( "NODES_MARKER_LBL" ), ButtonGroup2 );
-  QVBoxLayout* MarkerGroupLayout = new QVBoxLayout( MarkerGroup );
-  MarkerGroupLayout->setSpacing( 0 );
-  MarkerGroupLayout->setMargin( 0 );
-
-  MarkerWidget = new VTKViewer_MarkerWidget( MarkerGroup );
-
-  MarkerGroupLayout->addWidget( MarkerWidget );
-
-  row = 0;
-  ButtonGroup2Layout->addWidget( TextLabel_Nodes_Color, row, 0 );
-  ButtonGroup2Layout->addWidget( btnNodeColor,          row++, 1 );
-  ButtonGroup2Layout->addWidget( MarkerGroup,           row++, 0, 1, 3 );
-  ButtonGroup2Layout->setColumnStretch( row, 1 );
-
-  // -------------------------------
-  QGroupBox* ButtonGroup3 = new QGroupBox( tr( "GRP_ORIENTATION" ), this );
-  QGridLayout* ButtonGroup3Layout = new QGridLayout( ButtonGroup3 );
-  ButtonGroup3Layout->setSpacing( SPACING );
-  ButtonGroup3Layout->setMargin( MARGIN );
-
-  QLabel* TextLabel_Orientation_Color = new QLabel( tr( "ORIENTATION_COLOR_LBL" ), ButtonGroup3 );
-  btnOrientationColor = new QtxColorButton( ButtonGroup3 );
-
-  QLabel* TextLabel_Orientation_Scale = new QLabel( tr( "ORIENTATION_SCALE_LBL" ), ButtonGroup3 );
-  SpinBox_Orientation_Scale = new SMESHGUI_SpinBox( ButtonGroup3 );
-  SpinBox_Orientation_Scale->setAcceptNames( false ); // No Notebook variables allowed
-  SpinBox_Orientation_Scale->RangeStepAndValidator( .05, .5, .05, "parametric_precision" );
-  SpinBox_Orientation_Scale->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
-  SpinBox_Orientation_Scale->setButtonSymbols( QSpinBox::PlusMinus );
-
-  CheckBox_Orientation_3DVectors = new QCheckBox( tr( "3D_VECTORS_LBL" ), ButtonGroup3 );
-
-  row = 0;
-  ButtonGroup3Layout->addWidget( TextLabel_Orientation_Color,    row, 0 );
-  ButtonGroup3Layout->addWidget( btnOrientationColor,            row, 1 );
-  ButtonGroup3Layout->addWidget( TextLabel_Orientation_Scale,    row, 2 );
-  ButtonGroup3Layout->addWidget( SpinBox_Orientation_Scale,      row++, 3 );
-  ButtonGroup3Layout->addWidget( CheckBox_Orientation_3DVectors, row, 0, 1, 4 );
-
-  // -------------------------------
-  QGroupBox* ButtonGroup4 = new QGroupBox( tr( "GRP_SELECTION" ), this );
-  QGridLayout* ButtonGroup4Layout = new QGridLayout( ButtonGroup4 );
-  ButtonGroup3Layout->setSpacing( SPACING );
-  ButtonGroup3Layout->setMargin( MARGIN );
-  
-  QLabel* TextLabel_Selection_Color = new QLabel( tr( "SELECTION_COLOR_LBL" ), ButtonGroup4 );
-  btnSelectionColor = new QtxColorButton( ButtonGroup4 );
-  
-  QLabel* TextLabel_Preselection_Color = new QLabel( tr( "PRESELECTION_COLOR_LBL" ), ButtonGroup4 );
-  btnPreselectionColor = new QtxColorButton( ButtonGroup4 );
-  
-  row = 0;
-  ButtonGroup4Layout->addWidget( TextLabel_Selection_Color,      row, 0 );
-  ButtonGroup4Layout->addWidget( btnSelectionColor,              row, 1 );
-  ButtonGroup4Layout->addWidget( TextLabel_Preselection_Color,   row, 2 );
-  ButtonGroup4Layout->addWidget( btnPreselectionColor,           row, 3 );
-
-  // -------------------------------
-  QGroupBox* GroupButtons = new QGroupBox( this );
-  QHBoxLayout* GroupButtonsLayout = new QHBoxLayout( GroupButtons );
-  GroupButtonsLayout->setSpacing( SPACING );
-  GroupButtonsLayout->setMargin( MARGIN );
-
-  QPushButton* buttonOk = new QPushButton( tr( "SMESH_BUT_OK" ), GroupButtons );
-  buttonOk->setAutoDefault( true );
-  buttonOk->setDefault( true );
-
-  QPushButton* buttonCancel = new QPushButton( tr( "SMESH_BUT_CANCEL" ), GroupButtons );
-  buttonCancel->setAutoDefault( true );
-
-  QPushButton* buttonHelp = new QPushButton( tr( "SMESH_BUT_HELP" ), GroupButtons );
-  buttonHelp->setAutoDefault( true );
-
-  GroupButtonsLayout->addWidget( buttonOk );
-  GroupButtonsLayout->addSpacing( 10 );
-  GroupButtonsLayout->addStretch();
-  GroupButtonsLayout->addWidget( buttonCancel );
-  GroupButtonsLayout->addWidget( buttonHelp );
-
-  // -------------------------------
-  topLayout->addWidget( ButtonGroup1 );
-  topLayout->addWidget( ButtonGroup2 );
-  topLayout->addWidget( ButtonGroup3 );
-  //  rnv: Selection and preselection colors are defined only in the Preferences 
-  //  topLayout->addWidget( ButtonGroup4 );
-  ButtonGroup4->hide();
-  topLayout->addWidget( GroupButtons );
-
-  // -------------------------------
-  mySMESHGUI->SetActiveDialogBox( this );
-
-  myHelpFileName = "colors_size_page.html";
-
-  /* signals and slots connections */
-  connect( buttonOk,     SIGNAL( clicked() ), this, SLOT( ClickOnOk() ) );
-  connect( buttonCancel, SIGNAL( clicked() ), this, SLOT( ClickOnCancel() ) );
-  connect( buttonHelp,   SIGNAL( clicked() ), this, SLOT( ClickOnHelp() ) );
-
-  connect( mySMESHGUI, SIGNAL ( SignalDeactivateActiveDialog() ),
-           this,       SLOT( DeactivateActiveDialog() ) );
-  /* to close dialog if study change */
-  connect( mySMESHGUI, SIGNAL ( SignalCloseAllDialogs() ),
-           this,       SLOT( ClickOnCancel() ) );
-}
-
-//=================================================================================
-// function : ~SMESHGUI_Preferences_ColorDlg()
-// purpose  : Destructor
-//=================================================================================
-SMESHGUI_Preferences_ColorDlg::~SMESHGUI_Preferences_ColorDlg()
-{
-}
-
-//=================================================================================
-// function : ClickOnOk()
-// purpose  :
-//=================================================================================
-void SMESHGUI_Preferences_ColorDlg::ClickOnOk()
-{
-  mySMESHGUI->ResetState();
-  accept();
-}
-
-//=================================================================================
-// function : ClickOnCancel()
-// purpose  :
-//=================================================================================
-void SMESHGUI_Preferences_ColorDlg::ClickOnCancel()
-{
-  mySMESHGUI->ResetState();
-  reject();
-}
-
-//=================================================================================
-// function : ClickOnHelp()
-// purpose  :
-//=================================================================================
-void SMESHGUI_Preferences_ColorDlg::ClickOnHelp()
-{
-  LightApp_Application* app = (LightApp_Application*)(SUIT_Session::session()->activeApplication());
-  if (app) 
-    app->onHelpContextModule(mySMESHGUI ? app->moduleName(mySMESHGUI->moduleName()) : QString(""), myHelpFileName);
-  else {
-    QString platform;
-#ifdef WIN32
-    platform = "winapplication";
-#else
-    platform = "application";
-#endif
-    SUIT_MessageBox::warning(this, tr("WRN_WARNING"),
-                             tr("EXTERNAL_BROWSER_CANNOT_SHOW_PAGE").
-                             arg(app->resourceMgr()->stringValue("ExternalBrowser", 
-                                                                 platform)).
-                             arg(myHelpFileName));
-  }
-}
-
-//=================================================================================
-// function : DeactivateActiveDialog()
-// purpose  :
-//=================================================================================
-void SMESHGUI_Preferences_ColorDlg::DeactivateActiveDialog()
-{
-}
-
-//=================================================================================
-// function : closeEvent()
-// purpose  :
-//=================================================================================
-void SMESHGUI_Preferences_ColorDlg::closeEvent( QCloseEvent* )
-{
-  ClickOnCancel(); /* same than click on cancel button */
-}
-
-//=================================================================================
-// function : ActivateThisDialog()
-// purpose  :
-//=================================================================================
-void SMESHGUI_Preferences_ColorDlg::ActivateThisDialog()
-{
-  /* Emit a signal to deactivate any active dialog */
-  mySMESHGUI->EmitSignalDeactivateDialog();
-}
-
-//=================================================================================
-// function : SetColor()
-// purpose  :
-//=================================================================================
-void SMESHGUI_Preferences_ColorDlg::SetColor( int type, const QColor& color )
-{
-  switch ( type ) {
-  case 1 : toolSurfColor->setMainColor( color );     break; // fill
-  case 2 : btnWireframeColor->setColor( color );     break; // wireframe
-  case 3 : btnNodeColor->setColor( color );          break; // node
-  case 4 : btnOutlineColor->setColor( color );       break; // outline
-  case 5 : btn0DElementsColor->setColor( color );    break; // 0d elements
-  case 6 : btnBallElemColor->setColor( color );      break; // ball elements
-  case 7 : btnOrientationColor->setColor( color );   break; // orientation of faces
-  case 8 : btnSelectionColor->setColor( color );     break; // selection color
-  case 9 : btnPreselectionColor->setColor( color );  break; // pre-selection color
-  default: break;
-  }
-}
-
-//=================================================================================
-// function : GetColor()
-// purpose  :
-//=================================================================================
-QColor SMESHGUI_Preferences_ColorDlg::GetColor( int type )
-{
-  QColor color;
-  switch ( type ) {
-  case 1 : color = toolSurfColor->mainColor();    break; // fill
-  case 2 : color = btnWireframeColor->color();    break; // outline
-  case 3 : color = btnNodeColor->color();         break; // node
-  case 4 : color = btnOutlineColor->color();      break; // node
-  case 5 : color = btn0DElementsColor->color();   break; // 0d elements
-  case 6 : color = btnBallElemColor->color();   break; // 0d elements
-  case 7 : color = btnOrientationColor->color();  break; // orientation of faces
-  case 8 : color = btnSelectionColor->color();    break; // selection color
-  case 9 : color = btnPreselectionColor->color(); break; // pre-selection color
-
-  default: break;
-  }
-  return color;
-}
-
-//=================================================================================
-// function : SetIntValue()
-// purpose  :
-//=================================================================================
-void SMESHGUI_Preferences_ColorDlg::SetIntValue( int type, int value )
-{
-  switch ( type ) {
-  case 1 : SpinBox_Width->setValue( value );           break; // width
-  case 2 : SpinBox_Shrink->setValue( value );          break; // shrink coeff
-  case 3 : SpinBox_0DElements_Size->setValue( value ); break; // 0d elements
-  case 4 : SpinBox_BallElem_Size->setValue( value ); break; // 0d elements
-  default: break;
-  }
-}
-
-//=================================================================================
-// function : GetIntValue()
-// purpose  :
-//=================================================================================
-int SMESHGUI_Preferences_ColorDlg::GetIntValue( int type )
-{
-  int res = 0;
-  switch ( type ) {
-  case 1 : res = SpinBox_Width->value();           break; // width
-  case 2 : res = SpinBox_Shrink->value();          break; // shrink coeff
-  case 3 : res = SpinBox_0DElements_Size->value(); break; // 0d elements
-  case 4 : res = SpinBox_BallElem_Size->value(); break; // 0d elements
-  default: break;
-  }
-  return res;
-}
-
-//=================================================================================
-// function : SetDoubleValue()
-// purpose  :
-//=================================================================================
-void SMESHGUI_Preferences_ColorDlg::SetDoubleValue( int type, double value )
-{
-  switch ( type ) {
-  case 1 : SpinBox_Orientation_Scale->setValue( value ); break; // orientation scale
-  default: break;
-  }
-}
-
-//=================================================================================
-// function : GetDoubleValue()
-// purpose  :
-//=================================================================================
-double SMESHGUI_Preferences_ColorDlg::GetDoubleValue( int type )
-{
-  double res = 0;
-  switch ( type ) {
-  case 1 : res = SpinBox_Orientation_Scale->value(); break; // orientation scale
-  default: break;
-  }
-  return res;
-}
-
-//=================================================================================
-// function : SetBooleanValue()
-// purpose  :
-//=================================================================================
-void SMESHGUI_Preferences_ColorDlg::SetBooleanValue( int type, bool value )
-{
-  switch ( type ) {
-  case 1 : CheckBox_Orientation_3DVectors->setChecked( value ); break; // 3D vectors
-  default: break;
-  }
-}
-
-//=================================================================================
-// function : GetBooleanValue()
-// purpose  :
-//=================================================================================
-bool SMESHGUI_Preferences_ColorDlg::GetBooleanValue( int type )
-{
-  bool res = false;
-  switch ( type ) {
-  case 1 : res = CheckBox_Orientation_3DVectors->isChecked(); break; // 3D vectors
-  default: break;
-  }
-  return res;
-}
-
-//=================================================================================
-// function : setCustomMarkerMap()
-// purpose  :
-//=================================================================================
-void SMESHGUI_Preferences_ColorDlg::setCustomMarkerMap( VTK::MarkerMap theMarkerMap )
-{
-  MarkerWidget->setCustomMarkerMap( theMarkerMap );
-}
-
-//=================================================================================
-// function : getCustomMarkerMap()
-// purpose  :
-//=================================================================================
-VTK::MarkerMap SMESHGUI_Preferences_ColorDlg::getCustomMarkerMap()
-{
-  return MarkerWidget->getCustomMarkerMap();
-}
-
-//=================================================================================
-// function : setStandardMarker()
-// purpose  :
-//=================================================================================
-void SMESHGUI_Preferences_ColorDlg::setStandardMarker( VTK::MarkerType theMarkerType,
-                                                       VTK::MarkerScale theMarkerScale )
-{
-  MarkerWidget->setStandardMarker( theMarkerType, theMarkerScale );
-}
-
-//=================================================================================
-// function : setCustomMarker()
-// purpose  :
-//=================================================================================
-void SMESHGUI_Preferences_ColorDlg::setCustomMarker( int theId )
-{
-  MarkerWidget->setCustomMarker( theId );
-}
-
-//=================================================================================
-// function : getMarkerType()
-// purpose  :
-//=================================================================================
-VTK::MarkerType SMESHGUI_Preferences_ColorDlg::getMarkerType() const
-{
-  return MarkerWidget->getMarkerType();
-}
-
-//=================================================================================
-// function : getStandardMarkerScale()
-// purpose  :
-//=================================================================================
-VTK::MarkerScale SMESHGUI_Preferences_ColorDlg::getStandardMarkerScale() const
-{
-  return MarkerWidget->getStandardMarkerScale();
-}
-
-//=================================================================================
-// function : getCustomMarkerID()
-// purpose  :
-//=================================================================================
-int SMESHGUI_Preferences_ColorDlg::getCustomMarkerID() const
-{
-  return MarkerWidget->getCustomMarkerID();
-}
-
-//=================================================================================
-// function : SetDeltaBrightness(int)
-// purpose  :
-//=================================================================================
-void SMESHGUI_Preferences_ColorDlg::SetDeltaBrightness(int delta) 
-{
-  toolSurfColor->setDelta(delta);
-}
-//=================================================================================
-// function : GetDeltaBrightness()
-// purpose  :
-//=================================================================================
-int SMESHGUI_Preferences_ColorDlg::GetDeltaBrightness() 
-{
-  return toolSurfColor->delta();
-}
-
-//=================================================================================
-// function : keyPressEvent()
-// purpose  :
-//=================================================================================
-void SMESHGUI_Preferences_ColorDlg::keyPressEvent( QKeyEvent* e )
-{
-  QDialog::keyPressEvent( e );
-  if ( e->isAccepted() )
-    return;
-
-  if ( e->key() == Qt::Key_F1 ) {
-    e->accept();
-    ClickOnHelp();
-  }
-}
diff --git a/src/SMESHGUI/SMESHGUI_Preferences_ColorDlg.h b/src/SMESHGUI/SMESHGUI_Preferences_ColorDlg.h
deleted file mode 100644 (file)
index 9533ca7..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-// Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
-// 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
-//
-
-// SMESH SMESHGUI : GUI for SMESH component
-// File   : SMESHGUI_Preferences_ColorDlg.h
-// Author : Nicolas REJNERI, Open CASCADE S.A.S.
-//
-#ifndef SMESHGUI_PREFERENCES_COLORDLG_H
-#define SMESHGUI_PREFERENCES_COLORDLG_H
-
-// SMESH includes
-#include "SMESH_SMESHGUI.hxx"
-
-// SALOME GUI includes
-#include <VTKViewer_MarkerDef.h>
-#include <QtxBiColorTool.h>
-
-// Qt includes
-#include <QDialog>
-
-class QCheckBox;
-class SMESHGUI;
-class SMESHGUI_SpinBox;
-class SalomeApp_IntSpinBox;
-class QtxColorButton;
-class VTKViewer_MarkerWidget;
-
-class SMESHGUI_EXPORT SMESHGUI_Preferences_ColorDlg : public QDialog
-{ 
-  Q_OBJECT
-    
-public:
-  SMESHGUI_Preferences_ColorDlg( SMESHGUI* );
-  ~SMESHGUI_Preferences_ColorDlg();
-
-  void                  SetColor( int, const QColor& );
-  QColor                GetColor( int );
-  void                  SetIntValue( int, int );
-  int                   GetIntValue( int );
-  void                  SetDoubleValue( int, double );
-  double                GetDoubleValue( int );
-  void                  SetBooleanValue( int, bool );
-  bool                  GetBooleanValue( int );
-
-  void                  setCustomMarkerMap( VTK::MarkerMap );
-  VTK::MarkerMap        getCustomMarkerMap();
-
-  void                  SetDeltaBrightness(int);
-  int                   GetDeltaBrightness();
-
-  void                  setStandardMarker( VTK::MarkerType, VTK::MarkerScale );
-  void                  setCustomMarker( int );
-  VTK::MarkerType       getMarkerType() const;
-  VTK::MarkerScale      getStandardMarkerScale() const;
-  int                   getCustomMarkerID() const;
-
-protected:
-  void                  closeEvent( QCloseEvent* );
-  void                  keyPressEvent( QKeyEvent* );
-
-private slots:
-  void                  ClickOnOk();
-  void                  ClickOnCancel();
-  void                  ClickOnHelp();
-  void                  DeactivateActiveDialog();
-  void                  ActivateThisDialog();
-  
-private:
-  SMESHGUI*             mySMESHGUI;            
-
-  QtxBiColorTool*       toolSurfColor; 
-  QtxColorButton*       btnWireframeColor;
-  QtxColorButton*       btnOutlineColor;
-  QtxColorButton*       btn0DElementsColor;
-  QtxColorButton*       btnBallElemColor;
-  SalomeApp_IntSpinBox* SpinBox_0DElements_Size;
-  SalomeApp_IntSpinBox* SpinBox_BallElem_Size;
-  SalomeApp_IntSpinBox* SpinBox_Width;
-  SalomeApp_IntSpinBox* SpinBox_Shrink;
-  QtxColorButton*       btnNodeColor;
-  VTKViewer_MarkerWidget* MarkerWidget;
-  QtxColorButton*       btnOrientationColor;
-  SMESHGUI_SpinBox*     SpinBox_Orientation_Scale;
-  QCheckBox*            CheckBox_Orientation_3DVectors;
-  QtxColorButton*       btnPreselectionColor;
-  QtxColorButton*       btnSelectionColor;
-
-  QString               myHelpFileName;
-};
-
-#endif // SMESHGUI_PREFERENCES_COLORDLG_H
diff --git a/src/SMESHGUI/SMESHGUI_PropertiesDlg.cxx b/src/SMESHGUI/SMESHGUI_PropertiesDlg.cxx
new file mode 100644 (file)
index 0000000..419169d
--- /dev/null
@@ -0,0 +1,636 @@
+// Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+//  File   : SMESHGUI_PropertiesDlg.cxx
+//  Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com)
+
+#include "SMESHGUI_PropertiesDlg.h"
+#include "SMESH_Actor.h"
+
+#include <QCheckBox>
+#include <QFrame>
+#include <QGroupBox>
+#include <QHBoxLayout>
+#include <QLabel>
+
+#include <QtxBiColorTool.h>
+#include <QtxColorButton.h>
+#include <QtxIntSpinBox.h>
+#include <VTKViewer_MarkerWidget.h>
+
+const int MARGIN  = 9;
+const int SPACING = 6;
+
+/*!
+  \class SMESHGUI_PropertiesDlg
+  \brief Dialog box to set-up mesh presentation properties: colors,
+  sizes of elements, width of lines etc
+*/
+
+/*
+  \brief Constructor
+  \param customMarkers custom node markers
+  \param parent parent widget
+*/
+SMESHGUI_PropertiesDlg::SMESHGUI_PropertiesDlg( const VTK::MarkerMap& customMarkers, QWidget* parent )
+  : SMESHGUI_Dialog( parent, true, true, Standard )
+{
+  // set title
+  setWindowTitle( tr( "TITLE" ) );
+  
+  // create widgets
+
+  QHBoxLayout* hl;
+  int widthLab1 = 0, widthLab2 = 0;
+
+  // -- node controls
+  myNodeGrp = new QGroupBox( tr( "NODES" ), mainFrame() );
+  QLabel* nodeColorLab = new QLabel( tr( "COLOR" ), myNodeGrp );
+  myNodeColor = new QtxColorButton( myNodeGrp );
+  myNodeMarker = new VTKViewer_MarkerWidget( myNodeGrp );
+  hl = new QHBoxLayout( myNodeGrp );
+  hl->setMargin( MARGIN );
+  hl->setSpacing( SPACING );
+  hl->addWidget( nodeColorLab );
+  hl->addWidget( myNodeColor );
+  hl->addWidget( myNodeMarker );
+  widthLab1 = qMax( widthLab1, nodeColorLab->minimumSizeHint().width() );
+  widthLab2 = qMax( widthLab2, myNodeMarker->typeLabel()->minimumSizeHint().width() );
+
+  // -- edge controls
+  myEdgeGrp = new QGroupBox( tr( "EDGES" ), mainFrame() );
+  QLabel* edgeColorLab = new QLabel( tr( "COLOR" ), myEdgeGrp );
+  myEdgeColor = new QtxColorButton( myEdgeGrp );
+  QLabel* edgeWidthLab = new QLabel( tr( "WIDTH" ), myEdgeGrp );
+  myEdgeWidth = new QtxIntSpinBox( myEdgeGrp );
+  hl = new QHBoxLayout( myEdgeGrp );
+  hl->setMargin( MARGIN );
+  hl->setSpacing( SPACING );
+  hl->addWidget( edgeColorLab );
+  hl->addWidget( myEdgeColor );
+  hl->addWidget( edgeWidthLab );
+  hl->addWidget( myEdgeWidth );
+  widthLab1 = qMax( widthLab1, edgeColorLab->minimumSizeHint().width() );
+  widthLab2 = qMax( widthLab2, edgeWidthLab->minimumSizeHint().width() );
+  
+  // -- face controls
+  myFaceGrp = new QGroupBox( tr( "FACES" ), mainFrame() );
+  QLabel* faceColorLab = new QLabel( tr( "FACE_FRONT" ), myFaceGrp );
+  myFaceColor = new QtxBiColorTool( myFaceGrp );
+  myFaceColor->label()->setText( tr( "FACE_BACK" ) );
+  hl = new QHBoxLayout( myFaceGrp );
+  hl->setMargin( MARGIN );
+  hl->setSpacing( SPACING );
+  hl->addWidget( faceColorLab );
+  hl->addWidget( myFaceColor );
+  widthLab1 = qMax( widthLab1, faceColorLab->minimumSizeHint().width() );
+  widthLab2 = qMax( widthLab2, myFaceColor->label()->minimumSizeHint().width() );
+  
+  // -- volumes
+  myVolumeGrp = new QGroupBox( tr( "VOLUMES" ), mainFrame() );
+  QLabel* volumeColorLab = new QLabel( tr( "VOLUME_NORMAL" ), myVolumeGrp );
+  myVolumeColor = new QtxBiColorTool( myVolumeGrp );
+  myVolumeColor->label()->setText( tr( "VOLUME_REVERSED" ) );
+  hl = new QHBoxLayout( myVolumeGrp );
+  hl->setMargin( MARGIN );
+  hl->setSpacing( SPACING );
+  hl->addWidget( volumeColorLab );
+  hl->addWidget( myVolumeColor );
+  widthLab1 = qMax( widthLab1, volumeColorLab->minimumSizeHint().width() );
+  widthLab2 = qMax( widthLab2, myVolumeColor->label()->minimumSizeHint().width() );
+
+  // -- outline controls
+  myOutlineGrp = new QGroupBox( tr( "OUTLINES" ), mainFrame() );
+  QLabel* outlineColorLab = new QLabel( tr( "COLOR" ), myOutlineGrp );
+  myOutlineColor = new QtxColorButton( myOutlineGrp );
+  QLabel* outlineWidthLab = new QLabel( tr( "WIDTH" ), myOutlineGrp );
+  myOutlineWidth = new QtxIntSpinBox( myOutlineGrp );
+  hl = new QHBoxLayout( myOutlineGrp );
+  hl->setMargin( MARGIN );
+  hl->setSpacing( SPACING );
+  hl->addWidget( outlineColorLab );
+  hl->addWidget( myOutlineColor );
+  hl->addWidget( outlineWidthLab );
+  hl->addWidget( myOutlineWidth );
+  widthLab1 = qMax( widthLab1, outlineColorLab->minimumSizeHint().width() );
+  widthLab2 = qMax( widthLab2, outlineWidthLab->minimumSizeHint().width() );
+
+  // -- 0d element controls
+  myElem0dGrp = new QGroupBox( tr( "0D_ELEMENTS" ), mainFrame() );
+  QLabel* elem0dColorLab = new QLabel( tr( "COLOR" ), myElem0dGrp );
+  myElem0dColor = new QtxColorButton( myElem0dGrp );
+  QLabel* elem0dSizeLab = new QLabel( tr( "SIZE" ), myElem0dGrp );
+  myElem0dSize = new QtxIntSpinBox( myElem0dGrp );
+  hl = new QHBoxLayout( myElem0dGrp );
+  hl->setMargin( MARGIN );
+  hl->setSpacing( SPACING );
+  hl->addWidget( elem0dColorLab );
+  hl->addWidget( myElem0dColor );
+  hl->addWidget( elem0dSizeLab );
+  hl->addWidget( myElem0dSize );
+  widthLab1 = qMax( widthLab1, elem0dColorLab->minimumSizeHint().width() );
+  widthLab2 = qMax( widthLab2, elem0dSizeLab->minimumSizeHint().width() );
+  
+  // -- ball controls
+  myBallGrp = new QGroupBox( tr( "BALLS" ), mainFrame() );
+  QLabel* ballColorLab = new QLabel( tr( "COLOR" ), myBallGrp );
+  myBallColor = new QtxColorButton( myBallGrp );
+  QLabel* ballSizeLab = new QLabel( tr( "SIZE" ), myBallGrp );
+  myBallSize = new QtxIntSpinBox( myBallGrp );
+  hl = new QHBoxLayout( myBallGrp );
+  hl->setMargin( MARGIN );
+  hl->setSpacing( SPACING );
+  hl->addWidget( ballColorLab );
+  hl->addWidget( myBallColor );
+  hl->addWidget( ballSizeLab );
+  hl->addWidget( myBallSize );
+  widthLab1 = qMax( widthLab1, ballColorLab->minimumSizeHint().width() );
+  widthLab2 = qMax( widthLab2, ballSizeLab->minimumSizeHint().width() );
+  
+  // -- orientation vector controls
+  myOrientationGrp = new QGroupBox( tr( "ORIENTATIONS" ), mainFrame() );
+  QLabel* orientationColorLab = new QLabel( tr( "COLOR" ), myOrientationGrp );
+  myOrientationColor = new QtxColorButton( myOrientationGrp );
+  QLabel* orientationScaleLab = new QLabel( tr( "ORIENTATION_SCALE" ), myOrientationGrp );
+  myOrientationSize = new QtxIntSpinBox( myOrientationGrp );
+  myOrientationSize->setSuffix( "% ");
+  myOrientation3d = new QCheckBox( tr("ORIENTATION_3D"), myOrientationGrp );
+  hl = new QHBoxLayout( myOrientationGrp );
+  hl->setMargin( MARGIN );
+  hl->setSpacing( SPACING );
+  hl->addWidget( orientationColorLab );
+  hl->addWidget( myOrientationColor );
+  hl->addWidget( orientationScaleLab );
+  hl->addWidget( myOrientationSize );
+  hl->addWidget( myOrientation3d );
+  widthLab1 = qMax( widthLab1, orientationColorLab->minimumSizeHint().width() );
+  widthLab2 = qMax( widthLab2, orientationScaleLab->minimumSizeHint().width() );
+
+  // -- other controls
+  myExtraGrp = new QFrame( mainFrame() );
+  QLabel* shrinkSizeLab = new QLabel( tr( "SHRINK" ), myExtraGrp );
+  myShrinkSize = new QtxIntSpinBox( myExtraGrp );
+  myShrinkSize->setSuffix( "% ");
+  hl = new QHBoxLayout( myExtraGrp );
+  hl->setMargin( MARGIN );
+  hl->setSpacing( SPACING );
+  hl->addWidget( shrinkSizeLab );
+  hl->addWidget( myShrinkSize );
+  hl->addStretch();
+  widthLab1 = qMax( widthLab1, shrinkSizeLab->minimumSizeHint().width() );
+
+  // layout widgets
+  QVBoxLayout* vl = new QVBoxLayout( mainFrame() );
+  vl->setMargin( 0 );
+  vl->setSpacing( SPACING );
+  vl->addWidget( myNodeGrp );
+  vl->addWidget( myEdgeGrp );
+  vl->addWidget( myFaceGrp );
+  vl->addWidget( myVolumeGrp );
+  vl->addWidget( myOutlineGrp );
+  vl->addWidget( myElem0dGrp );
+  vl->addWidget( myBallGrp );
+  vl->addWidget( myOrientationGrp );
+  vl->addWidget( myExtraGrp );
+  
+  nodeColorLab->setMinimumWidth( widthLab1 );
+  edgeColorLab->setMinimumWidth( widthLab1 );
+  faceColorLab->setMinimumWidth( widthLab1 );
+  volumeColorLab->setMinimumWidth( widthLab1 );
+  outlineColorLab->setMinimumWidth( widthLab1 );
+  elem0dColorLab->setMinimumWidth( widthLab1 );
+  ballColorLab->setMinimumWidth( widthLab1 );
+  orientationColorLab->setMinimumWidth( widthLab1 );
+  shrinkSizeLab->setMinimumWidth( widthLab1 );
+
+  myNodeMarker->typeLabel()->setMinimumWidth( widthLab2 );
+  edgeWidthLab->setMinimumWidth( widthLab2 );
+  myFaceColor->label()->setMinimumWidth( widthLab2 );
+  myVolumeColor->label()->setMinimumWidth( widthLab2 );
+  outlineWidthLab->setMinimumWidth( widthLab2 );
+  elem0dSizeLab->setMinimumWidth( widthLab2 );
+  ballSizeLab->setMinimumWidth( widthLab2 );
+  orientationScaleLab->setMinimumWidth( widthLab2 );
+
+  myEdgeWidth->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed );
+  myOutlineWidth->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed );
+  myElem0dSize->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed );
+  myBallSize->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed );
+  myOrientationSize->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed );
+  myShrinkSize->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed );
+
+  // initialize widgets
+  myNodeMarker->setCustomMarkers( customMarkers );
+  myElem0dSize->setRange( 1, 10 );
+  myBallSize->setRange( 1, 10 );
+  myEdgeWidth->setRange( 1, 5 );
+  myOutlineWidth->setRange( 1, 5 );
+  myShrinkSize->setRange( 20, 100 );
+  myOrientationSize->setRange( 5, 100 );
+
+  button( OK )->setText( tr( "SMESH_BUT_OK" ) );
+}
+
+/*
+  \brief Destructor: clean-up resources if necessary
+*/
+SMESHGUI_PropertiesDlg::~SMESHGUI_PropertiesDlg()
+{
+}
+
+/*!
+  \brief Set nodes color
+  \param color nodes color
+*/
+void SMESHGUI_PropertiesDlg::setNodeColor( const QColor& color )
+{
+  myNodeColor->setColor( color );
+}
+
+/*!
+  \brief Get nodes color
+  \return current nodes color
+*/
+QColor SMESHGUI_PropertiesDlg::nodeColor() const
+{
+  return myNodeColor->color();
+}
+
+/*!
+  \brief Set standard nodes marker
+  \param type standard nodes marker type
+  \param scale standard nodes marker scale
+*/
+void SMESHGUI_PropertiesDlg::setNodeMarker( VTK::MarkerType type, VTK::MarkerScale scale )
+{
+  myNodeMarker->setMarker( type, scale );
+}
+
+/*!
+  \brief Set custom nodes marker
+  \param id custom nodes marker id
+*/
+void SMESHGUI_PropertiesDlg::setNodeCustomMarker( int id )
+{
+  myNodeMarker->setCustomMarker( id );
+}
+
+/*!
+  \brief Get nodes marker type.
+  For custom marker, VTK::MT_USER is returned and markerId() function
+  then returns its identifier.
+  \return currently selected nodes marker type
+*/
+VTK::MarkerType SMESHGUI_PropertiesDlg::nodeMarkerType() const
+{
+  return myNodeMarker->markerType();
+}
+
+/*!
+  \brief Get nodes marker scale.
+  For custom marker return value is undefined.
+  \return currently selected nodes marker scale
+*/
+VTK::MarkerScale SMESHGUI_PropertiesDlg::nodeMarkerScale() const
+{
+  return myNodeMarker->markerScale();
+}
+
+/*!
+  \brief Get custom nodes marker.
+  For standard markers return value is VTK::MT_NONE.
+  \return custom nodes marker id
+*/
+int SMESHGUI_PropertiesDlg::nodeMarkerId() const
+{
+  return myNodeMarker->markerId();
+}
+
+/*!
+  \brief Set edges (wireframe) color
+  \param color edges color
+*/
+void SMESHGUI_PropertiesDlg::setEdgeColor( const QColor& color )
+{
+  myEdgeColor->setColor( color );
+}
+
+/*!
+  \brief Get edges (wireframe) color
+  \return current edges color
+*/
+QColor SMESHGUI_PropertiesDlg::edgeColor() const
+{
+  return myEdgeColor->color();
+}
+
+/*!
+  \brief Set edges width
+  \param width edges width
+*/
+void SMESHGUI_PropertiesDlg::setEdgeWidth( int width )
+{
+  myEdgeWidth->setValue( width );
+}
+
+/*!
+  \brief Get edges width
+  \return current edges width
+*/
+int SMESHGUI_PropertiesDlg::edgeWidth() const
+{
+  return myEdgeWidth->value();
+}
+
+/*!
+  \brief Set faces colors
+  \param color front faces color
+  \param delta back faces coloring delta
+*/
+void SMESHGUI_PropertiesDlg::setFaceColor( const QColor& color, int delta )
+{
+  myFaceColor->setMainColor( color );
+  myFaceColor->setDelta( delta );
+}
+
+/*!
+  \brief Get front faces color
+  \return current front faces color
+*/
+QColor SMESHGUI_PropertiesDlg::faceColor() const
+{
+  return myFaceColor->mainColor();
+}
+
+/*!
+  \brief Get back faces coloring delta
+  \return current back faces coloring delta
+*/
+int SMESHGUI_PropertiesDlg::faceColorDelta() const
+{
+  return myFaceColor->delta();
+}
+
+/*!
+  \brief Set volumes colors
+  \param color normal volumes color
+  \param delta reversed volumes coloring delta
+*/
+void SMESHGUI_PropertiesDlg::setVolumeColor( const QColor& color, int delta )
+{
+  myVolumeColor->setMainColor( color );
+  myVolumeColor->setDelta( delta );
+}
+
+/*!
+  \brief Get normal volumes color
+  \return current normal volumes color
+*/
+QColor SMESHGUI_PropertiesDlg::volumeColor() const
+{
+  return myVolumeColor->mainColor();
+}
+
+/*!
+  \brief Get reversed volumes coloring delta
+  \return current reversed volumes coloring delta
+*/
+int SMESHGUI_PropertiesDlg::volumeColorDelta() const
+{
+  return myVolumeColor->delta();
+}
+
+/*!
+  \brief Set outlines color
+  \param color outlines color
+*/
+void SMESHGUI_PropertiesDlg::setOutlineColor( const QColor& color )
+{
+  myOutlineColor->setColor( color );
+}
+
+/*!
+  \brief Get outlines color
+  \return current outlines color
+*/
+QColor SMESHGUI_PropertiesDlg::outlineColor() const
+{
+  return myOutlineColor->color();
+}
+
+/*!
+  \brief Set outlines width
+  \param width outlines width
+*/
+void SMESHGUI_PropertiesDlg::setOutlineWidth( int width )
+{
+  myOutlineWidth->setValue( width );
+}
+
+/*!
+  \brief Get outlines width
+  \return current outlines width
+*/
+int SMESHGUI_PropertiesDlg::outlineWidth() const
+{
+  return myOutlineWidth->value();
+}
+
+/*!
+  \brief Set 0D elements color
+  \param color 0D elements color
+*/
+void SMESHGUI_PropertiesDlg::setElem0dColor( const QColor& color )
+{
+  myElem0dColor->setColor( color );
+}
+
+/*!
+  \brief Get 0D elements color
+  \return current 0D elements color
+*/
+QColor SMESHGUI_PropertiesDlg::elem0dColor() const
+{
+  return myElem0dColor->color();
+}
+
+/*!
+  \brief Set 0D elements size
+  \param size 0D elements size
+*/
+void SMESHGUI_PropertiesDlg::setElem0dSize( int size )
+{
+  myElem0dSize->setValue( size );
+}
+
+/*!
+  \brief Get 0D elements size
+  \return current 0D elements size
+*/
+int SMESHGUI_PropertiesDlg::elem0dSize() const
+{
+  return myElem0dSize->value();
+}
+
+/*!
+  \brief Set discrete elements (balls) color
+  \param color discrete elements (balls) color
+*/
+void SMESHGUI_PropertiesDlg::setBallColor( const QColor& color )
+{
+  myBallColor->setColor( color );
+}
+
+/*!
+  \brief Get discrete elements (balls) color
+  \return current discrete elements (balls) color
+*/
+QColor SMESHGUI_PropertiesDlg::ballColor() const
+{
+  return myBallColor->color();
+}
+
+/*!
+  \brief Set discrete elements (balls) size
+  \param size discrete elements (balls) size
+*/
+void SMESHGUI_PropertiesDlg::setBallSize( int size )
+{
+  myBallSize->setValue( size );
+}
+
+/*!
+  \brief Get discrete elements (balls) size
+  \return current discrete elements (balls) size
+*/
+int SMESHGUI_PropertiesDlg::ballSize() const
+{
+  return myBallSize->value();
+}
+
+/*!
+  \brief Set orientation vectors color
+  \param color orientation vectors color
+*/
+void SMESHGUI_PropertiesDlg::setOrientationColor( const QColor& color )
+{
+  myOrientationColor->setColor( color );
+}
+
+/*!
+  \brief Get orientation vectors color
+  \return current orientation vectors color
+*/
+QColor SMESHGUI_PropertiesDlg::orientationColor() const
+{
+  return myOrientationColor->color();
+}
+
+/*!
+  \brief Set orientation vectors scale (percent)
+  \param scale orientation vectors scale
+*/
+void SMESHGUI_PropertiesDlg::setOrientationSize( int scale )
+{
+  myOrientationSize->setValue( scale );
+}
+
+/*!
+  \brief Get orientation vectors scale (percent)
+  \return current orientation vectors scale
+*/
+int SMESHGUI_PropertiesDlg::orientationSize() const
+{
+  return myOrientationSize->value();
+}
+
+/*!
+  \brief Set orientation vectors 3d flag
+  \param on orientation vectors 3d flag value
+*/
+void SMESHGUI_PropertiesDlg::setOrientation3d( bool on )
+{
+  myOrientation3d->setChecked( on );
+}
+
+/*!
+  \brief Get orientation vectors 3d flag
+  \return orientation vectors 3d flag value
+*/
+bool SMESHGUI_PropertiesDlg::orientation3d() const
+{
+  return myOrientation3d->isChecked();
+}
+
+/*!
+  \brief Set shrink coefficient (percent)
+  \param coef shrink coefficient
+*/
+void SMESHGUI_PropertiesDlg::setShrinkCoef( int coef )
+{
+  myShrinkSize->setValue( coef );
+}
+
+/*!
+  \brief Get shrink coefficient (percent)
+  \return current shrink coefficient
+*/
+int SMESHGUI_PropertiesDlg::shrinkCoef() const
+{
+  return myShrinkSize->value();
+}
+
+/*
+  \brief Get custom markers
+  \return custom markers map
+*/
+VTK::MarkerMap SMESHGUI_PropertiesDlg::customMarkers() const
+{
+  return myNodeMarker->customMarkers();
+}
+
+/*!
+  \brief Show / hide controls for specified entity type
+  \param elements mesh element types (an or-ed combination of flags)
+  \param nodes mesh nodes presence flag
+*/
+void SMESHGUI_PropertiesDlg::showControls( int elements, bool nodes )
+{
+  // node controls are supposed to be shown if at least any element type is present
+  // or if there are only nodes
+  myNodeGrp->setVisible( nodes || elements & SMESH_Actor::eAllEntity );
+  // edge controls are shown only if there are edges
+  myEdgeGrp->setVisible( elements & SMESH_Actor::eEdges );
+  // face controls are shown only if there are faces
+  myFaceGrp->setVisible( elements & SMESH_Actor::eFaces );
+  // volume controls are shown only if there are volumes
+  myVolumeGrp->setVisible( elements & SMESH_Actor::eVolumes );
+  // 0d elements controls are shown only if there are 0d elements
+  myElem0dGrp->setVisible( elements & SMESH_Actor::e0DElements );
+  // ball controls are shown only if there are balls
+  myBallGrp->setVisible( elements & SMESH_Actor::eBallElem );
+  // outline controls are needed for faces and volumes
+  myOutlineGrp->setVisible( elements & ( SMESH_Actor::eFaces | SMESH_Actor::eVolumes ) );
+  // orientation controls are needed for faces and volumes
+  myOrientationGrp->setVisible( elements & ( SMESH_Actor::eFaces | SMESH_Actor::eVolumes ) );
+  // shrink factor is shown if there are edges and/or faces and/or volumes
+  myExtraGrp->setVisible( elements & ( SMESH_Actor::eEdges | SMESH_Actor::eFaces | SMESH_Actor::eVolumes ) );
+}
diff --git a/src/SMESHGUI/SMESHGUI_PropertiesDlg.h b/src/SMESHGUI/SMESHGUI_PropertiesDlg.h
new file mode 100644 (file)
index 0000000..4ff5c2a
--- /dev/null
@@ -0,0 +1,140 @@
+// Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+//
+// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// 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.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+//  File   : SMESHGUI_PropertiesDlg.h
+//  Author : Vadim SANDLER, Open CASCADE S.A.S. (vadim.sandler@opencascade.com)
+
+#ifndef SMESHGUI_PROPERTIESDLG_H
+#define SMESHGUI_PROPERTIESDLG_H
+
+#include "SMESH_SMESHGUI.hxx"
+#include "SMESHGUI_Dialog.h"
+
+#include <VTKViewer_MarkerDef.h>
+#include <SALOMEconfig.h>
+#include CORBA_CLIENT_HEADER(SMESH_Mesh)
+
+class QCheckBox;
+class QFrame;
+class QGroupBox;
+class QtxColorButton;
+class QtxBiColorTool;
+class QtxIntSpinBox;
+class VTKViewer_MarkerWidget;
+
+class SMESHGUI_EXPORT SMESHGUI_PropertiesDlg : public SMESHGUI_Dialog
+{ 
+  Q_OBJECT
+    
+public:
+  SMESHGUI_PropertiesDlg( const VTK::MarkerMap&, QWidget* parent );
+  ~SMESHGUI_PropertiesDlg();
+
+  void              setNodeColor( const QColor& );
+  QColor            nodeColor() const;
+  void              setNodeMarker( VTK::MarkerType, VTK::MarkerScale );
+  void              setNodeCustomMarker( int );
+  VTK::MarkerType   nodeMarkerType() const;
+  VTK::MarkerScale  nodeMarkerScale() const;
+  int               nodeMarkerId() const;
+
+  void              setEdgeColor( const QColor& );
+  QColor            edgeColor() const;
+  void              setEdgeWidth( int );
+  int               edgeWidth() const;
+
+  void              setFaceColor( const QColor&, int );
+  QColor            faceColor() const;
+  int               faceColorDelta() const;
+
+  void              setVolumeColor( const QColor&, int );
+  QColor            volumeColor() const;
+  int               volumeColorDelta() const;
+
+  void              setOutlineColor( const QColor& );
+  QColor            outlineColor() const;
+  void              setOutlineWidth( int );
+  int               outlineWidth() const;
+
+  void              setElem0dColor( const QColor& );
+  QColor            elem0dColor() const;
+  void              setElem0dSize( int );
+  int               elem0dSize() const;
+
+  void              setBallColor( const QColor& );
+  QColor            ballColor() const;
+  void              setBallSize( int );
+  int               ballSize() const;
+
+  void              setOrientationColor( const QColor& );
+  QColor            orientationColor() const;
+  void              setOrientationSize( int );
+  int               orientationSize() const;
+  void              setOrientation3d( bool );
+  bool              orientation3d() const;
+
+  void              setShrinkCoef( int );
+  int               shrinkCoef() const;
+
+  VTK::MarkerMap    customMarkers() const;
+
+  void              showControls( int, bool );
+
+private:
+  // group boxes
+  QGroupBox*              myNodeGrp;
+  QGroupBox*              myEdgeGrp;
+  QGroupBox*              myFaceGrp;
+  QGroupBox*              myVolumeGrp;
+  QGroupBox*              myOutlineGrp;
+  QGroupBox*              myElem0dGrp;
+  QGroupBox*              myBallGrp;
+  QGroupBox*              myOrientationGrp;
+  QFrame*                 myExtraGrp;
+  // widgets
+  // - nodes
+  QtxColorButton*         myNodeColor;
+  VTKViewer_MarkerWidget* myNodeMarker;
+  // - edges
+  QtxColorButton*         myEdgeColor;
+  QtxIntSpinBox*          myEdgeWidth;
+  // - faces
+  QtxBiColorTool*         myFaceColor; 
+  // - volumes
+  QtxBiColorTool*         myVolumeColor; 
+  // - outlines
+  QtxColorButton*         myOutlineColor;
+  QtxIntSpinBox*          myOutlineWidth;
+  // - 0d elements
+  QtxColorButton*         myElem0dColor;
+  QtxIntSpinBox*          myElem0dSize;
+  // - balls
+  QtxColorButton*         myBallColor;
+  QtxIntSpinBox*          myBallSize;
+  // - orientation vectors
+  QtxColorButton*         myOrientationColor;
+  QtxIntSpinBox*          myOrientationSize;
+  QCheckBox*              myOrientation3d;
+  // - shrink coefficient
+  QtxIntSpinBox*          myShrinkSize;
+};
+
+#endif // SMESHGUI_PROPERTIESDLG_H
index baafa985c8de0f04391d5f0606fd94b9437eacae..0da8d3a3abeec00ecd36394ee9c7da32f0a9ec03 100644 (file)
@@ -610,14 +610,17 @@ namespace SMESH
         SMESH::SMESH_GroupBase_var aGroup = SMESH::SMESH_GroupBase::_narrow( SMESH::SObjectToObject( aSObj ));
         if(!CORBA::is_nil(aGroup) && anActor)
         {
-         QColor c;int delta;
-         SMESH::GetColor( "SMESH", "fill_color", c, delta, "0,170,255|-100"  );
+         QColor c;
+         int deltaF, deltaV;
+         SMESH::GetColor( "SMESH", "fill_color", c, deltaF, "0,170,255|-100"  );
+         SMESH::GetColor( "SMESH", "volume_color", c, deltaV, "255,0,170|-100"  );
+         SMESH::GetColor( "SMESH", "default_grp_color", c );
           SALOMEDS::Color aColor = aGroup->GetColor();
           if( !( aColor.R > 0 || aColor.G > 0 || aColor.B > 0 ))
           {
-           aColor.R = (float)c.red() / 255.0;
-           aColor.G = (float)c.green() / 255.0;
-            aColor.B = (float)c.blue() / 255.0;
+           aColor.R = c.redF();
+           aColor.G = c.greenF();
+            aColor.B = c.blueF();
             aGroup->SetColor( aColor );
           }
           if( aGroup->GetType() == SMESH::NODE )
@@ -628,8 +631,10 @@ namespace SMESH
             anActor->Set0DColor( aColor.R, aColor.G, aColor.B );
           else if( aGroup->GetType() == SMESH::BALL )
             anActor->SetBallColor( aColor.R, aColor.G, aColor.B );
+          else if( aGroup->GetType() == SMESH::VOLUME )
+            anActor->SetVolumeColor( aColor.R, aColor.G, aColor.B, deltaV );
           else
-            anActor->SetSufaceColor( aColor.R, aColor.G, aColor.B, delta );
+            anActor->SetSufaceColor( aColor.R, aColor.G, aColor.B, deltaF );
         }
       }
     }
@@ -1337,7 +1342,7 @@ namespace SMESH
 
     if( !anIsOk )
       return false;
-
+    
     DistanceToPosition( theBounds, theNormal, theDist, theOrigin );
     return true;
   }
index 584f9424fa0dab3b900fe9efa1b1422ee7d312ce..84f6c2ee10ae80eef8e8de225672eed141ba3ea8 100644 (file)
@@ -4063,6 +4063,14 @@ Please, create VTK viewer and try again</translation>
         <source>PREF_BACKFACE</source>
         <translation>Back surface color</translation>
     </message>
+    <message>
+        <source>PREF_VOLUME</source>
+        <translation>Volume color</translation>
+    </message>
+    <message>
+        <source>PREF_REVERSEDVOLUME</source>
+        <translation>Reversed volume color</translation>
+    </message>
     <message>
         <source>PREF_WIREFRAME</source>
         <translation>Wireframe color</translation>
@@ -4305,7 +4313,11 @@ Please, create VTK viewer and try again</translation>
     </message>
     <message>
         <source>PREF_WIDTH</source>
-        <translation>Width</translation>
+        <translation>Line width</translation>
+    </message>
+    <message>
+        <source>PREF_OUTLINE_WIDTH</source>
+        <translation>Outline width</translation>
     </message>
     <message>
         <source>PREF_PREVIEW_CHUNK_SIZE</source>
@@ -6860,152 +6872,140 @@ as they are of improper type:
     </message>
 </context>
 <context>
-    <name>SMESHGUI_Preferences_ColorDlg</name>
-    <message>
-        <source>DIALOG_TITLE</source>
-        <translation>Properties (color, line width, shrink size, ...)</translation>
-    </message>
-    <message>
-        <source>GRP_ELEMENTS</source>
-        <translation>Elements</translation>
-    </message>
-    <message>
-        <source>SURFACE_COLOR_LBL</source>
-        <translation>Surface color</translation>
-    </message>
+    <name>SMESHGUI_ReorientFacesDlg</name>
     <message>
-        <source>BACKSURFACE_COLOR_LBL</source>
-        <translation>Back surface color</translation>
+        <source>CAPTION</source>
+        <translation>Reorient faces by vector</translation>
     </message>
     <message>
-        <source>OUTLINE_COLOR_LBL</source>
-        <translation>Outline color</translation>
+        <source>REORIENT_FACES</source>
+        <translation>Reorient</translation>
     </message>
     <message>
-        <source>WIREFRAME_COLOR_LBL</source>
-        <translation>Wireframe color</translation>
+        <source>DIRECTION</source>
+        <translation>Direction</translation>
     </message>
     <message>
-        <source>0D_ELEMENTS_COLOR_LBL</source>
-        <translation>0D elements</translation>
+        <source>OBJECT</source>
+        <translation>Object</translation>
     </message>
     <message>
-        <source>0D_ELEMENTS_SIZE_LBL</source>
-        <translation>Size of 0D elements</translation>
+        <source>POINT</source>
+        <translation>Point</translation>
     </message>
     <message>
-        <source>BALL_ELEMENTS_COLOR_LBL</source>
-        <translation>Ball elements</translation>
+        <source>FACE</source>
+        <translation>Face</translation>
     </message>
     <message>
-        <source>BALL_ELEMENTS_SIZE_LBL</source>
-        <translation>Size of balls</translation>
+        <source>FACES</source>
+        <translation>Faces source</translation>
     </message>
     <message>
-        <source>LINE_WIDTH_LBL</source>
-        <translation>Line width</translation>
+        <source>ORIENTATION</source>
+        <translation>Orientation</translation>
     </message>
+</context>
+<context>
+    <name>SMESHGUI_ReorientFacesOp</name>
     <message>
-        <source>SHRINK_COEF_LBL</source>
-        <translation>Shrink coef.</translation>
+        <source>NO_OBJECT_SELECTED</source>
+        <translation>No object selected</translation>
     </message>
     <message>
-        <source>GRP_NODES</source>
-        <translation>Nodes</translation>
+        <source>NO_FACES</source>
+        <translation>Object includes no faces</translation>
     </message>
     <message>
-        <source>NODES_COLOR_LBL</source>
-        <translation>Color</translation>
+        <source>ZERO_SIZE_VECTOR</source>
+        <translation>Zero size vector</translation>
     </message>
     <message>
-        <source>NODES_MARKER_LBL</source>
-        <translation>Marker</translation>
+        <source>INVALID_FACE</source>
+        <translation>Not valid face</translation>
     </message>
     <message>
-        <source>GRP_ORIENTATION</source>
-        <translation>Orientation of faces</translation>
+        <source>NB_REORIENTED</source>
+        <translation>%1 faces reversed</translation>
     </message>
+</context>
+<context>
+    <name>SMESHGUI_PropertiesDlg</name>
     <message>
-        <source>ORIENTATION_COLOR_LBL</source>
-        <translation>Color</translation>
+        <source>TITLE</source>
+        <translation>Properties</translation>
     </message>
     <message>
-        <source>ORIENTATION_SCALE_LBL</source>
-        <translation>Scale</translation>
+        <source>NODES</source>
+        <translation>Nodes</translation>
     </message>
     <message>
-        <source>3D_VECTORS_LBL</source>
-        <translation>3D vectors</translation>
+        <source>EDGES</source>
+        <translation>Edges / wireframe</translation>
     </message>
     <message>
-        <source>GRP_SELECTION</source>
-        <translation>Selection</translation>
+        <source>FACES</source>
+        <translation>Faces</translation>
     </message>
     <message>
-        <source>SELECTION_COLOR_LBL</source>
-        <translation>Selection color</translation>
+        <source>VOLUMES</source>
+        <translation>Volumes</translation>
     </message>
     <message>
-        <source>PRESELECTION_COLOR_LBL</source>
-        <translation>Pre-selection color</translation>
+        <source>OUTLINES</source>
+        <translation>Outlines</translation>
     </message>
-</context>
-<context>
-    <name>SMESHGUI_ReorientFacesDlg</name>
     <message>
-        <source>CAPTION</source>
-        <translation>Reorient faces by vector</translation>
+        <source>0D_ELEMENTS</source>
+        <translation>0D elements</translation>
     </message>
     <message>
-        <source>REORIENT_FACES</source>
-        <translation>Reorient</translation>
+        <source>BALLS</source>
+        <translation>Balls</translation>
     </message>
     <message>
-        <source>DIRECTION</source>
-        <translation>Direction</translation>
+        <source>ORIENTATIONS</source>
+        <translation>Orientation vectors</translation>
     </message>
     <message>
-        <source>OBJECT</source>
-        <translation>Object</translation>
+        <source>COLOR</source>
+        <translation>Color:</translation>
     </message>
     <message>
-        <source>POINT</source>
-        <translation>Point</translation>
+        <source>WIDTH</source>
+        <translation>Width:</translation>
     </message>
     <message>
-        <source>FACE</source>
-        <translation>Face</translation>
+        <source>FACE_FRONT</source>
+        <translation>Front:</translation>
     </message>
     <message>
-        <source>FACES</source>
-        <translation>Faces source</translation>
+        <source>FACE_BACK</source>
+        <translation>Back:</translation>
     </message>
     <message>
-        <source>ORIENTATION</source>
-        <translation>Orientation</translation>
+        <source>VOLUME_NORMAL</source>
+        <translation>Normal:</translation>
     </message>
-</context>
-<context>
-    <name>SMESHGUI_ReorientFacesOp</name>
     <message>
-        <source>NO_OBJECT_SELECTED</source>
-        <translation>No object selected</translation>
+        <source>VOLUME_REVERSED</source>
+        <translation>Reversed:</translation>
     </message>
     <message>
-        <source>NO_FACES</source>
-        <translation>Object includes no faces</translation>
+        <source>SIZE</source>
+        <translation>Size:</translation>
     </message>
     <message>
-        <source>ZERO_SIZE_VECTOR</source>
-        <translation>Zero size vector</translation>
+        <source>ORIENTATION_SCALE</source>
+        <translation>Scale:</translation>
     </message>
     <message>
-        <source>INVALID_FACE</source>
-        <translation>Not valid face</translation>
+        <source>ORIENTATION_3D</source>
+        <translation>3D vectors</translation>
     </message>
     <message>
-        <source>NB_REORIENTED</source>
-        <translation>%1 faces reversed</translation>
+        <source>SHRINK</source>
+        <translation>Shrink coef:</translation>
     </message>
 </context>
 </TS>
index 8d5abcce0dcd55b41dfadf1805951225ec9b1f93..f4eb29eddc6b2eb1e375c2e5a732a42434840f58 100755 (executable)
@@ -4031,6 +4031,14 @@ Ouvrez une fenêtre VTK et essayez de nouveau</translation>
         <source>PREF_BACKFACE</source>
         <translation>Face arrière</translation>
     </message>
+    <message>
+        <source>PREF_VOLUME</source>
+        <translation type="unfinished">Volume color</translation>
+    </message>
+    <message>
+        <source>PREF_REVERSEDVOLUME</source>
+        <translation type="unfinished">Reversed volume color</translation>
+    </message>
     <message>
         <source>PREF_WIREFRAME</source>
         <translation>Couleur de contour</translation>
@@ -4273,7 +4281,11 @@ Ouvrez une fenêtre VTK et essayez de nouveau</translation>
     </message>
     <message>
         <source>PREF_WIDTH</source>
-        <translation>Epaisseur</translation>
+        <translation type="unfinished">Line width</translation>
+    </message>
+    <message>
+        <source>PREF_OUTLINE_WIDTH</source>
+        <translation type="unfinished">Outline width</translation>
     </message>
     <message>
         <source>PREF_PREVIEW_CHUNK_SIZE</source>
@@ -6821,152 +6833,140 @@ en raison de leurs types incompatibles:
     </message>
 </context>
 <context>
-    <name>SMESHGUI_Preferences_ColorDlg</name>
-    <message>
-        <source>DIALOG_TITLE</source>
-        <translation>Propriétés (couleur, épaisseur des traits, taille des éléments réduits, ...)</translation>
-    </message>
-    <message>
-        <source>GRP_ELEMENTS</source>
-        <translation>Eléments</translation>
-    </message>
-    <message>
-        <source>SURFACE_COLOR_LBL</source>
-        <translation>Couleur de surface</translation>
-    </message>
+    <name>SMESHGUI_ReorientFacesDlg</name>
     <message>
-        <source>BACKSURFACE_COLOR_LBL</source>
-        <translation>Couleur arrière</translation>
+        <source>CAPTION</source>
+        <translation>Réorienter des faces selon un vector</translation>
     </message>
     <message>
-        <source>OUTLINE_COLOR_LBL</source>
-        <translation>Couleur de contour</translation>
+        <source>REORIENT_FACES</source>
+        <translation>Réorienter</translation>
     </message>
     <message>
-        <source>WIREFRAME_COLOR_LBL</source>
-        <translation>Couleur en mode fil de fer</translation>
+        <source>DIRECTION</source>
+        <translation>Direction</translation>
     </message>
     <message>
-        <source>0D_ELEMENTS_COLOR_LBL</source>
-        <translation>Eléments 0D</translation>
+        <source>OBJECT</source>
+        <translation>Objet</translation>
     </message>
     <message>
-        <source>0D_ELEMENTS_SIZE_LBL</source>
-        <translation>Taille des éléments 0D</translation>
+        <source>POINT</source>
+        <translation>Point</translation>
     </message>
     <message>
-        <source>BALL_ELEMENTS_COLOR_LBL</source>
-        <translation>Eléments particulaires</translation>
+        <source>FACE</source>
+        <translation>Face</translation>
     </message>
     <message>
-        <source>BALL_ELEMENTS_SIZE_LBL</source>
-        <translation>Taille des éléments particulaires</translation>
+        <source>FACES</source>
+        <translation>Source des faces</translation>
     </message>
     <message>
-        <source>LINE_WIDTH_LBL</source>
-        <translation>Epaisseur des traits</translation>
+        <source>ORIENTATION</source>
+        <translation>Orientation</translation>
     </message>
+</context>
+<context>
+    <name>SMESHGUI_ReorientFacesOp</name>
     <message>
-        <source>SHRINK_COEF_LBL</source>
-        <translation>Coef. de contraction</translation>
+        <source>NO_OBJECT_SELECTED</source>
+        <translation>Aucun objet sélectionné</translation>
     </message>
     <message>
-        <source>GRP_NODES</source>
-        <translation>Nœuds</translation>
+        <source>NO_FACES</source>
+        <translation>L&apos;objet ne contient pas de faces</translation>
     </message>
     <message>
-        <source>NODES_COLOR_LBL</source>
-        <translation>Couleur</translation>
+        <source>ZERO_SIZE_VECTOR</source>
+        <translation>Vecteur de taille nulle</translation>
     </message>
     <message>
-        <source>NODES_MARKER_LBL</source>
-        <translation>Marqueur</translation>
+        <source>INVALID_FACE</source>
+        <translation>Face non valide</translation>
     </message>
     <message>
-        <source>GRP_ORIENTATION</source>
-        <translation>Orientation des faces</translation>
+        <source>NB_REORIENTED</source>
+        <translation>%1 face(s) inversée(s)</translation>
     </message>
+</context>
+<context>
+    <name>SMESHGUI_PropertiesDlg</name>
     <message>
-        <source>ORIENTATION_COLOR_LBL</source>
-        <translation>Couleur</translation>
+        <source>TITLE</source>
+        <translation type="unfinished">Properties</translation>
     </message>
     <message>
-        <source>ORIENTATION_SCALE_LBL</source>
-        <translation>Facteur d&apos;échelle</translation>
+        <source>NODES</source>
+        <translation type="unfinished">Nodes</translation>
     </message>
     <message>
-        <source>3D_VECTORS_LBL</source>
-        <translation>Vecteurs 3D</translation>
+        <source>EDGES</source>
+        <translation type="unfinished">Edges / wireframe</translation>
     </message>
     <message>
-        <source>GRP_SELECTION</source>
-        <translation>Sélection</translation>
+        <source>FACES</source>
+        <translation type="unfinished">Faces</translation>
     </message>
     <message>
-        <source>SELECTION_COLOR_LBL</source>
-        <translation>Couleur de sélection</translation>
+        <source>VOLUMES</source>
+        <translation type="unfinished">Volumes</translation>
     </message>
     <message>
-        <source>PRESELECTION_COLOR_LBL</source>
-        <translation>Couleur de pré-sélection</translation>
+        <source>OUTLINES</source>
+        <translation type="unfinished">Outlines</translation>
     </message>
-</context>
-<context>
-    <name>SMESHGUI_ReorientFacesDlg</name>
     <message>
-        <source>CAPTION</source>
-        <translation>Réorienter des faces selon un vector</translation>
+        <source>0D_ELEMENTS</source>
+        <translation type="unfinished">0D elements</translation>
     </message>
     <message>
-        <source>REORIENT_FACES</source>
-        <translation>Réorienter</translation>
+        <source>BALLS</source>
+        <translation type="unfinished">Balls</translation>
     </message>
     <message>
-        <source>DIRECTION</source>
-        <translation>Direction</translation>
+        <source>ORIENTATIONS</source>
+        <translation type="unfinished">Orientation vectors</translation>
     </message>
     <message>
-        <source>OBJECT</source>
-        <translation>Objet</translation>
+        <source>COLOR</source>
+        <translation type="unfinished">Color:</translation>
     </message>
     <message>
-        <source>POINT</source>
-        <translation>Point</translation>
+        <source>WIDTH</source>
+        <translation type="unfinished">Width:</translation>
     </message>
     <message>
-        <source>FACE</source>
-        <translation>Face</translation>
+        <source>FACE_FRONT</source>
+        <translation type="unfinished">Front:</translation>
     </message>
     <message>
-        <source>FACES</source>
-        <translation>Source des faces</translation>
+        <source>FACE_BACK</source>
+        <translation type="unfinished">Back:</translation>
     </message>
     <message>
-        <source>ORIENTATION</source>
-        <translation>Orientation</translation>
+        <source>VOLUME_NORMAL</source>
+        <translation type="unfinished">Normal:</translation>
     </message>
-</context>
-<context>
-    <name>SMESHGUI_ReorientFacesOp</name>
     <message>
-        <source>NO_OBJECT_SELECTED</source>
-        <translation>Aucun objet sélectionné</translation>
+        <source>VOLUME_REVERSED</source>
+        <translation type="unfinished">Reversed:</translation>
     </message>
     <message>
-        <source>NO_FACES</source>
-        <translation>L&apos;objet ne contient pas de faces</translation>
+        <source>SIZE</source>
+        <translation type="unfinished">Size:</translation>
     </message>
     <message>
-        <source>ZERO_SIZE_VECTOR</source>
-        <translation>Vecteur de taille nulle</translation>
+        <source>ORIENTATION_SCALE</source>
+        <translation type="unfinished">Scale:</translation>
     </message>
     <message>
-        <source>INVALID_FACE</source>
-        <translation>Face non valide</translation>
+        <source>ORIENTATION_3D</source>
+        <translation type="unfinished">3D vectors</translation>
     </message>
     <message>
-        <source>NB_REORIENTED</source>
-        <translation>%1 face(s) inversée(s)</translation>
+        <source>SHRINK</source>
+        <translation type="unfinished">Shrink coef:</translation>
     </message>
 </context>
 </TS>