]> SALOME platform Git repositories - modules/hydro.git/commitdiff
Salome HOME
Import/Export // API revision. p4
authorisn <isn@opencascade.com>
Mon, 29 Jun 2015 09:37:10 +0000 (12:37 +0300)
committerisn <isn@opencascade.com>
Mon, 29 Jun 2015 09:37:10 +0000 (12:37 +0300)
src/HYDROData/HYDROData_ShapeFile.cxx
src/HYDROData/HYDROData_ShapeFile.h
src/HYDROGUI/HYDROGUI_ImportLandCoverOp.cxx

index c65c2c2b09140818d43d658cf3477d7d4392491d..fa4fe090a7db8c79c6ac289cc8d80b00c8d1dbc5 100644 (file)
@@ -261,7 +261,7 @@ void HYDROData_ShapeFile::ProcessFace(TopoDS_Face theFace, SHPHandle theShpHandl
     return;
 }
 
-void HYDROData_ShapeFile::Parse(SHPHandle theHandle, ShapeType theType)
+bool HYDROData_ShapeFile::Parse(SHPHandle theHandle, ShapeType theType)
 {
   int aShapeType;
   mySHPObjects.clear();
@@ -272,7 +272,10 @@ void HYDROData_ShapeFile::Parse(SHPHandle theHandle, ShapeType theType)
   {
     for (int i = 0; i < theHandle->nRecords; i++) 
       mySHPObjects.push_back(SHPReadObject(theHandle, i));
+    return true;
   }
+  else
+    return false;
 }
 
 void HYDROData_ShapeFile::ReadSHPPolygon(SHPObject* anObj, int i, TopoDS_Face& F)
@@ -328,7 +331,8 @@ bool HYDROData_ShapeFile::ImportLandCovers(const QString theFileName, QStringLis
 {
   Free();
   myHSHP = SHPOpen( theFileName.toAscii().data(), "rb" );
-  Parse(myHSHP, HYDROData_ShapeFile::ShapeType_Polygon);
+  if (!Parse(myHSHP, HYDROData_ShapeFile::ShapeType_Polygon))
+    return false;
   for (size_t i = 0; i < mySHPObjects.size(); i++)
     thePolygonsList.append("polygon_" + QString::number(i + 1));
    
@@ -493,7 +497,8 @@ bool HYDROData_ShapeFile::ImportPolylines(Handle(HYDROData_Document) theDocument
   QFileInfo aFileInfo(theFileName);
   QString aBaseFileName = aFileInfo.baseName();
 
-  Parse(aHSHP, HYDROData_ShapeFile::ShapeType_Polyline);
+  if (!Parse(aHSHP, HYDROData_ShapeFile::ShapeType_Polyline))
+    return false;
   bool aStat = false;
   if (aHSHP->nShapeType == 3 || aHSHP->nShapeType == 23)
   {
index c0c823c23d3c0d29c2a29311399e35e942d2b9ff..30b1167ac7864af03b3c85bc1a04d4914aea087b 100644 (file)
@@ -64,7 +64,7 @@ public:
   int WriteObjectPoly3D(SHPHandle theShpHandle, Handle_HYDROData_Polyline3D thePoly );
   int WriteObjectLC(SHPHandle theShpHandle, Handle_HYDROData_LandCover theLC );
   //Import
-  void Parse(SHPHandle theHandle, ShapeType theType);
+  bool Parse(SHPHandle theHandle, ShapeType theType);
   //Import Landcover
   void ReadSHPPolygon(SHPObject* anObj, int i, TopoDS_Face& F);
   HYDRODATA_EXPORT bool ImportLandCovers(const QString theFileName, QStringList& thePolygonsList, TopTools_SequenceOfShape& theFaces);
index d492a66823ff830d3c4ebbac903cb06306d97494..ef7756b15720b2be003a86871067a96a3eca9395 100644 (file)
@@ -215,67 +215,69 @@ void HYDROGUI_ImportLandCoverOp::onFileSelected()
     TopTools_SequenceOfShape aFaces;
     HYDROData_ShapeFile anImporter;
 
-    if (!anImporter.ImportLandCovers(aFileName, aPolygonsList, aFaces))
+    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);
 
-    aPanel->setPolygonNames(aPolygonsList);
-
-    SalomeApp_Study* aStudy = dynamic_cast<SalomeApp_Study*>( module()->getApp()->activeStudy() );
-    if ( !aStudy ) {
-      return;
-    }
+      SalomeApp_Study* aStudy = dynamic_cast<SalomeApp_Study*>( module()->getApp()->activeStudy() );
+      if ( !aStudy ) {
+        return;
+      }
 
-    erasePreview();
+      erasePreview();
 
-    Handle(AIS_InteractiveContext) aCtx = NULL;
+      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();
+      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 ( OCCViewer_Viewer* aViewer = aViewManager->getOCCViewer() )
+      if ( aViewManager )
       {
-        aCtx = aViewer->getAISContext();
-        connect( aViewer, SIGNAL( selectionChanged() ), this, SLOT( onViewerSelectionChanged() ) );
+        if ( OCCViewer_Viewer* aViewer = aViewManager->getOCCViewer() )
+        {
+          aCtx = aViewer->getAISContext();
+          connect( aViewer, SIGNAL( selectionChanged() ), this, SLOT( onViewerSelectionChanged() ) );
+        }
       }
-    }
-
-
-    QApplication::restoreOverrideCursor();
-
-    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 ));
 
-      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
+    {
+      SUIT_MessageBox::warning( module()->getApp()->desktop(), tr( "IMPORT_LANDCOVER" ), "Cannot import land cover;\nThe shape type is not polygon" );
+        
+      QApplication::restoreOverrideCursor();
+      abort();
     }
-
-    commitDocOperation();
-
     anImporter.Free();
 
   }