Salome HOME
Fix warning
[modules/smesh.git] / src / SMESHGUI / SMESHGUI.cxx
index 5d3cac68f37f2c56cc3a460fd5cf7126ad213baf..17c51c068309f19047c6a579c36e6c5b3295e4e3 100644 (file)
 
 #include <VTKViewer_Algorithm.h>
 
+#include <PyInterp_Interp.h>
+
 #include <SUIT_Desktop.h>
 #include <SUIT_FileDlg.h>
 #include <SUIT_MessageBox.h>
             {
               // UNV format
               aMeshes->length( 1 );
-              aMeshes[0] = theComponentMesh->CreateMeshesFromUNV( filename.toLatin1().constData() );
+              aMeshes[0] = theComponentMesh->CreateMeshesFromUNV( filename.toUtf8().constData() );
               if ( aMeshes[0]->_is_nil() )
                 errors.append( QString( "%1 :\n\t%2" ).arg( filename ).
                                arg( QObject::tr( "SMESH_ERR_UNKNOWN_IMPORT_ERROR" ) ) );
             {
               // MED format
               SMESH::DriverMED_ReadStatus res;
-              aMeshes = theComponentMesh->CreateMeshesFromMED( filename.toLatin1().constData(), res );
+              aMeshes = theComponentMesh->CreateMeshesFromMED( filename.toUtf8().constData(), res );
               if ( res != SMESH::DRS_OK ) {
                 errors.append( QString( "%1 :\n\t%2" ).arg( filename ).
                                arg( QObject::tr( QString( "SMESH_DRS_%1" ).arg( res ).toLatin1().data() ) ) );
             {
               // STL format
               aMeshes->length( 1 );
-              aMeshes[0] = theComponentMesh->CreateMeshesFromSTL( filename.toLatin1().constData() );
+              aMeshes[0] = theComponentMesh->CreateMeshesFromSTL( filename.toUtf8().constData() );
               if ( aMeshes[0]->_is_nil() ) {
                 errors.append( QString( "%1 :\n\t%2" ).arg( filename ).
                                arg( QObject::tr( "SMESH_ERR_UNKNOWN_IMPORT_ERROR" ) ) );
             {
               // CGNS format
               SMESH::DriverMED_ReadStatus res;
-              aMeshes = theComponentMesh->CreateMeshesFromCGNS( filename.toLatin1().constData(), res );
+              aMeshes = theComponentMesh->CreateMeshesFromCGNS( filename.toUtf8().constData(), res );
               if ( res != SMESH::DRS_OK ) {
                 errors.append( QString( "%1 :\n\t%2" ).arg( filename ).
                                arg( QObject::tr( QString( "SMESH_DRS_%1" ).arg( res ).toLatin1().data() ) ) );
             {
               // SAUV format
               SMESH::DriverMED_ReadStatus res;
-              aMeshes = theComponentMesh->CreateMeshesFromSAUV( filename.toLatin1().constData(), res );
+              aMeshes = theComponentMesh->CreateMeshesFromSAUV( filename.toUtf8().constData(), res );
               if ( res != SMESH::DRS_OK ) {
                 errors.append( QString( "%1 :\n\t%2" ).arg( filename ).
                                arg( QObject::tr( QString( "SMESH_DRS_%1" ).arg( res ).toLatin1().data() ) ) );
               // GMF format
               SMESH::ComputeError_var res;
               aMeshes->length( 1 );
-              aMeshes[0] = theComponentMesh->CreateMeshesFromGMF( filename.toLatin1().constData(),
+              aMeshes[0] = theComponentMesh->CreateMeshesFromGMF( filename.toUtf8().constData(),
                                                                   toCreateGroups,
                                                                   res.out() );
               if ( res->code != SMESH::DRS_OK ) {
           if( !toOverwrite ) {
             // can't append to an existing using other format
             SMESH::MED_VERSION aVersion = SMESH::MED_V2_1;
-            bool isVersionOk = SMESHGUI::GetSMESHGen()->GetMEDVersion( aFilename.toLatin1().constData(), aVersion );
+            bool isVersionOk = SMESHGUI::GetSMESHGen()->GetMEDVersion( aFilename.toUtf8().constData(), aVersion );
             if( !isVersionOk || aVersion != aFormat ) {
               int aRet = SUIT_MessageBox::warning(SMESHGUI::desktop(),
                                                   QObject::tr("SMESH_WRN_WARNING"),
             }
 
             QStringList aMeshNamesCollisionList;
-            SMESH::string_array_var aMeshNames = SMESHGUI::GetSMESHGen()->GetMeshNames( aFilename.toLatin1().constData() );
+            SMESH::string_array_var aMeshNames = SMESHGUI::GetSMESHGen()->GetMeshNames( aFilename.toUtf8().constData() );
             for( int i = 0, n = aMeshNames->length(); i < n; i++ ) {
               QString anExistingMeshName( aMeshNames[ i ] );
               for( aMeshIter = aMeshList.begin(); aMeshIter != aMeshList.end(); aMeshIter++ ) {
             SMESH::SMESH_IDSource_var aMeshOrGroup = (*aMeshIter).first;
             SMESH::SMESH_Mesh_var        aMeshItem = aMeshOrGroup->GetMesh();
             if ( aMeshOrGroup->_is_equivalent( aMeshItem ))
-              aMeshItem->ExportToMEDX( aFilename.toLatin1().data(), toCreateGroups,
+              aMeshItem->ExportToMEDX( aFilename.toUtf8().data(), toCreateGroups,
                                        aFormat, toOverwrite && aMeshIndex == 0, toFindOutDim );
             else
-              aMeshItem->ExportPartToMED( aMeshOrGroup, aFilename.toLatin1().data(), toCreateGroups,
+              aMeshItem->ExportPartToMED( aMeshOrGroup, aFilename.toUtf8().data(), toCreateGroups,
                                           aFormat, toOverwrite && aMeshIndex == 0, toFindOutDim );
           }
         }
           {
             SMESH::SMESH_Mesh_var aMeshItem = SMESH::SMESH_Mesh::_narrow( (*aMeshIter).first );
             if( !aMeshItem->_is_nil() )
-              aMeshItem->ExportSAUV( aFilename.toLatin1().data(), toCreateGroups );
+              aMeshItem->ExportSAUV( aFilename.toUtf8().data(), toCreateGroups );
           }
         }
         else if ( isDAT )
         {
           if ( aMeshOrGroup->_is_equivalent( aMesh ))
-            aMesh->ExportDAT( aFilename.toLatin1().data() );
+            aMesh->ExportDAT( aFilename.toUtf8().data() );
           else
-            aMesh->ExportPartToDAT( aMeshOrGroup, aFilename.toLatin1().data() );
+            aMesh->ExportPartToDAT( aMeshOrGroup, aFilename.toUtf8().data() );
         }
         else if ( isUNV )
         {
           if ( aMeshOrGroup->_is_equivalent( aMesh ))
-            aMesh->ExportUNV( aFilename.toLatin1().data() );
+            aMesh->ExportUNV( aFilename.toUtf8().data() );
           else
-            aMesh->ExportPartToUNV( aMeshOrGroup, aFilename.toLatin1().data() );
+            aMesh->ExportPartToUNV( aMeshOrGroup, aFilename.toUtf8().data() );
         }
         else if ( isSTL )
         {
           if ( aMeshOrGroup->_is_equivalent( aMesh ))
-            aMesh->ExportSTL( aFilename.toLatin1().data(), aIsASCII_STL );
+            aMesh->ExportSTL( aFilename.toUtf8().data(), aIsASCII_STL );
           else
-            aMesh->ExportPartToSTL( aMeshOrGroup, aFilename.toLatin1().data(), aIsASCII_STL );
+            aMesh->ExportPartToSTL( aMeshOrGroup, aFilename.toUtf8().data(), aIsASCII_STL );
         }
         else if ( isCGNS )
         {
             SMESH::SMESH_IDSource_var aMeshOrGroup = (*aMeshIter).first;
             SMESH::SMESH_Mesh_var        aMeshItem = aMeshOrGroup->GetMesh();
             aMeshItem->ExportCGNS( aMeshOrGroup,
-                                   aFilename.toLatin1().data(),
+                                   aFilename.toUtf8().data(),
                                    toOverwrite && aMeshIndex == 0 );
           }
         }
         else if ( isGMF )
         {
           toCreateGroups = true;
-          aMesh->ExportGMF( aMeshOrGroup, aFilename.toLatin1().data(), toCreateGroups );
+          aMesh->ExportGMF( aMeshOrGroup, aFilename.toUtf8().data(), toCreateGroups );
         }
       }
       catch (const SALOME::SALOME_Exception& S_ex){
@@ -2016,7 +2018,7 @@ bool SMESHGUI::automaticUpdate( SMESH::SMESH_Mesh_ptr theMesh,
     if ( nbOdElems > 0 ) {
       if ( total + nbOdElems > updateLimit ) {
         *entities = *entities & ~SMESH_Actor::e0DElements;
-       *hidden = *hidden | SMESH_Actor::e0DElements;
+        *hidden = *hidden | SMESH_Actor::e0DElements;
       }
       else
         exceeded = false;
@@ -2026,7 +2028,7 @@ bool SMESHGUI::automaticUpdate( SMESH::SMESH_Mesh_ptr theMesh,
     if ( nbEdges > 0 ) {
       if ( total + nbEdges > updateLimit ) {
         *entities = *entities & ~SMESH_Actor::eEdges;
-       *hidden = *hidden | SMESH_Actor::eEdges;
+        *hidden = *hidden | SMESH_Actor::eEdges;
       }
       else
         exceeded = false;
@@ -2036,7 +2038,7 @@ bool SMESHGUI::automaticUpdate( SMESH::SMESH_Mesh_ptr theMesh,
     if ( nbFaces > 0 ) {
       if ( total + nbFaces > updateLimit ) {
         *entities = *entities & ~SMESH_Actor::eFaces;
-       *hidden = *hidden | SMESH_Actor::eFaces;
+        *hidden = *hidden | SMESH_Actor::eFaces;
       }
       else
         exceeded = false;
@@ -2046,7 +2048,7 @@ bool SMESHGUI::automaticUpdate( SMESH::SMESH_Mesh_ptr theMesh,
     if ( nbVolumes > 0 ) {
       if ( total + nbVolumes > updateLimit ) {
         *entities = *entities & ~SMESH_Actor::eVolumes;
-       *hidden = *hidden | SMESH_Actor::eVolumes;
+        *hidden = *hidden | SMESH_Actor::eVolumes;
       }
       else
         exceeded = false;
@@ -2056,7 +2058,7 @@ bool SMESHGUI::automaticUpdate( SMESH::SMESH_Mesh_ptr theMesh,
     if ( nbBalls > 0 ) {
       if ( total + nbBalls > updateLimit ) {
         *entities = *entities & ~SMESH_Actor::eBallElem;
-       *hidden = *hidden | SMESH_Actor::eBallElem;
+        *hidden = *hidden | SMESH_Actor::eBallElem;
       }
       else
         exceeded = false;
@@ -3541,8 +3543,20 @@ bool SMESHGUI::OnGUIEvent( int theCommandID )
     }
   case 501:
   case 502:
+  case 503:
+  case 504:
+  case 505:
     {
-      int page = theCommandID == 501 ? SMESHGUI_MeasureDlg::MinDistance : SMESHGUI_MeasureDlg::BoundingBox;
+      int page = SMESHGUI_MeasureDlg::MinDistance;
+      if ( theCommandID == 502 )
+        page = SMESHGUI_MeasureDlg::BoundingBox;
+      else if ( theCommandID == 503 )
+        page = SMESHGUI_MeasureDlg::Length;
+      else if ( theCommandID == 504 )
+        page = SMESHGUI_MeasureDlg::Area;
+      else if ( theCommandID == 505 )
+        page = SMESHGUI_MeasureDlg::Volume;
+
       EmitSignalDeactivateDialog();
       SMESHGUI_MeasureDlg* dlg = new SMESHGUI_MeasureDlg( SMESHGUI::desktop(), page );
       dlg->show();
@@ -3844,6 +3858,9 @@ void SMESHGUI::initialize( CAM_Application* app )
 
   createSMESHAction( 501, "MEASURE_MIN_DIST", "ICON_MEASURE_MIN_DIST" );
   createSMESHAction( 502, "MEASURE_BND_BOX",  "ICON_MEASURE_BND_BOX" );
+  createSMESHAction( 503, "MEASURE_LENGTH",   "ICON_MEASURE_LENGTH" );
+  createSMESHAction( 504, "MEASURE_AREA",     "ICON_MEASURE_AREA" );
+  createSMESHAction( 505, "MEASURE_VOLUME",   "ICON_MEASURE_VOLUME" );
 
   createSMESHAction( 300, "HIDE" );
   createSMESHAction( 301, "SHOW" );
@@ -3872,7 +3889,8 @@ void SMESHGUI::initialize( CAM_Application* app )
       addId    = createMenu( tr( "MEN_ADD" ),    modifyId, 402 ),
       removeId = createMenu( tr( "MEN_REMOVE" ), modifyId, 403 ),
       renumId  = createMenu( tr( "MEN_RENUM" ),  modifyId, 404 ),
-      transfId = createMenu( tr( "MEN_TRANSF" ), modifyId, 405 );
+      transfId = createMenu( tr( "MEN_TRANSF" ), modifyId, 405 ),
+      basicPropId = createMenu( tr( "MEN_BASIC_PROPERTIES" ), measureId, -1, 10 );
 
   //createMenu( 111, importId, -1 );
   createMenu( 112, importId, -1 );
@@ -4020,6 +4038,9 @@ void SMESHGUI::initialize( CAM_Application* app )
 
   createMenu( 501, measureId, -1 );
   createMenu( 502, measureId, -1 );
+  createMenu( 503, basicPropId, -1 );
+  createMenu( 504, basicPropId, -1 );
+  createMenu( 505, basicPropId, -1 );
   createMenu( 214, viewId, -1 );
 
   // ----- create toolbars --------------
@@ -4584,18 +4605,17 @@ bool SMESHGUI::activateModule( SUIT_Study* study )
 
   // import Python module that manages SMESH plugins (need to be here because SalomePyQt API uses active module)
   PyGILState_STATE gstate = PyGILState_Ensure();
-  PyObject* pluginsmanager=PyImport_ImportModuleNoBlock((char*)"salome_pluginsmanager");
-  if(pluginsmanager==NULL)
+  PyObjWrapper pluginsmanager = PyImport_ImportModuleNoBlock((char*)"salome_pluginsmanager");
+  if ( !pluginsmanager ) {
     PyErr_Print();
-  else
-    {
-      PyObject* result=PyObject_CallMethod( pluginsmanager, (char*)"initialize", (char*)"isss",1,"smesh",tr("MEN_MESH").toStdString().c_str(),tr("SMESH_PLUGINS_OTHER").toStdString().c_str());
-      if(result==NULL)
-        PyErr_Print();
-      Py_XDECREF(result);
-    }
+  }
+  else {
+    PyObjWrapper result = PyObject_CallMethod( pluginsmanager, (char*)"initialize", (char*)"isss",1,"smesh",tr("MEN_MESH").toStdString().c_str(),tr("SMESH_PLUGINS_OTHER").toStdString().c_str());
+    if ( !result )
+      PyErr_Print();
+  }
   PyGILState_Release(gstate);
-  // end of GEOM plugins loading
+  // end of SMESH plugins loading
 
   // Reset actions accelerator keys
   //action(111)->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_B)); // Import DAT
@@ -4974,6 +4994,7 @@ void SMESHGUI::createPreferences()
   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" );
+  addPreference( tr( "PREF_PREVIEW_COLOR"  ), elemGroup, LightApp_Preferences::BiColor, "SMESH", "preview_color" );
 
 
   int grpGroup = addPreference( tr( "PREF_GROUP_GROUPS" ), meshTab );