Salome HOME
Merge branch 'BR_v14_rc' of ssh://git.salome-platform.org/modules/hydro into BR_v14_rc
[modules/hydro.git] / src / HYDROGUI / HYDROGUI_ImportLandCoverOp.cxx
index d492a66823ff830d3c4ebbac903cb06306d97494..bc49f7efc7b6bc6ea51b08689e841f0494c7af17 100644 (file)
@@ -215,67 +215,71 @@ void HYDROGUI_ImportLandCoverOp::onFileSelected()
     TopTools_SequenceOfShape aFaces;
     HYDROData_ShapeFile anImporter;
 
-    if (!anImporter.ImportLandCovers(aFileName, aPolygonsList, aFaces))
-    {
-      SUIT_MessageBox::warning( module()->getApp()->desktop(), tr( "IMPORT_LANDCOVER" ), "Cannot import land cover;\nThe shape type is not polygon" );
-      abort();
-    }
-
-    aPanel->setPolygonNames(aPolygonsList);
-
     SalomeApp_Study* aStudy = dynamic_cast<SalomeApp_Study*>( module()->getApp()->activeStudy() );
-    if ( !aStudy ) {
+    if ( !aStudy )
       return;
-    }
 
     erasePreview();
 
     Handle(AIS_InteractiveContext) aCtx = NULL;
 
-    LightApp_Application* anApp = module()->getApp();
-    if ( !getPreviewManager() )
-      setPreviewManager( ::qobject_cast<OCCViewer_ViewManager*>( anApp->getViewManager( OCCViewer_Viewer::Type(), true ) ) );
-    OCCViewer_ViewManager* aViewManager = getPreviewManager();
-
-    if ( aViewManager )
+    if (anImporter.ImportLandCovers(aFileName, aPolygonsList, aFaces))
     {
-      if ( OCCViewer_Viewer* aViewer = aViewManager->getOCCViewer() )
-      {
-        aCtx = aViewer->getAISContext();
-        connect( aViewer, SIGNAL( selectionChanged() ), this, SLOT( onViewerSelectionChanged() ) );
-      }
-    }
-
+      aPanel->setPolygonNames(aPolygonsList);
 
-    QApplication::restoreOverrideCursor();
+      LightApp_Application* anApp = module()->getApp();
+      if ( !getPreviewManager() )
+        setPreviewManager( ::qobject_cast<OCCViewer_ViewManager*>( anApp->getViewManager( OCCViewer_Viewer::Type(), true ) ) );
+      OCCViewer_ViewManager* aViewManager = getPreviewManager();
 
-    Handle(HYDROData_LandCover) aLC = Handle(HYDROData_LandCover)::DownCast( doc()->CreateObject( KIND_LAND_COVER ) );
-    for ( int i = 1; i <= aFaces.Length(); i++ ) 
-    {
-      TopoDS_Face aFace = TopoDS::Face(aFaces.Value( i ));
+      if ( aViewManager )
+      {
+        if ( OCCViewer_Viewer* aViewer = aViewManager->getOCCViewer() )
+        {
+          aCtx = aViewer->getAISContext();
+          connect( aViewer, SIGNAL( selectionChanged() ), this, SLOT( onViewerSelectionChanged() ) );
+        }
+      }
 
-      aLC->setShape( aFace );      
-      
-      if ( aViewManager && !aCtx.IsNull() )
+      Handle(HYDROData_LandCover) aLC = Handle(HYDROData_LandCover)::DownCast( doc()->CreateObject( KIND_LAND_COVER ) );
+      for ( int i = 1; i <= aFaces.Length(); i++ ) 
       {
-        HYDROGUI_Shape* aShape = new HYDROGUI_Shape( aCtx, NULL, getPreviewZLayer() );
+        TopoDS_Face aFace = TopoDS::Face(aFaces.Value( i ));
+
+        aLC->setShape( aFace );      
+        
+        if ( aViewManager && !aCtx.IsNull() )
+        {
+          HYDROGUI_Shape* aShape = new HYDROGUI_Shape( aCtx, NULL, getPreviewZLayer() );
+
+          aShape->setFillingColor( HYDROData_LandCover::DefaultFillingColor(), false, false );
+          aShape->setBorderColor( HYDROData_LandCover::DefaultBorderColor(), false, false );
+          if( !aFace.IsNull() )
+            aShape->setShape( aLC->GetShape() );
+          myPolygonName2PrsShape.insert( "polygon_" + QString::number(i), aShape);
+        }
+      }
+      aLC->Remove();
 
-        aShape->setFillingColor( HYDROData_LandCover::DefaultFillingColor(), false, false );
-        aShape->setBorderColor( HYDROData_LandCover::DefaultBorderColor(), false, false );
-        if( !aFace.IsNull() )
-          aShape->setShape( aLC->GetShape() );
-        myPolygonName2PrsShape.insert( "polygon_" + QString::number(i), aShape);
+      if ( !aCtx.IsNull() ) 
+      {
+        UpdateZLayersOfHilightPresentationsOfDisplayedObjects( aCtx, Graphic3d_ZLayerId_TopOSD );
+        aCtx->UpdateCurrentViewer();
       }
+      
+      QApplication::restoreOverrideCursor();
+      commitDocOperation();
     }
-    aLC->Remove();
-
-    if ( !aCtx.IsNull() ) {
-      UpdateZLayersOfHilightPresentationsOfDisplayedObjects( aCtx, Graphic3d_ZLayerId_TopOSD );
-      aCtx->UpdateCurrentViewer();
+    else
+    {
+      erasePreview();
+      aPanel->setPolygonNames(QStringList());
+      aPanel->setObjectName("");
+      QApplication::restoreOverrideCursor();
+      SUIT_MessageBox::warning( module()->getApp()->desktop(), tr( "IMPORT_LANDCOVER" ), "Cannot import land cover;\nThe shape type is not polygon" );
+      commitDocOperation();
+      //abort();
     }
-
-    commitDocOperation();
-
     anImporter.Free();
 
   }