Salome HOME
Merge branch 'master' of https://git.salome-platform.org/git/modules/hydro
[modules/hydro.git] / src / HYDROGUI / HYDROGUI_Operations.cxx
index 5641a2c4ff77ae5bd642b73bee912d789f5b7fb9..8371e64d1dbe85ea64a6e5e8dee481e4aaab7d7a 100644 (file)
@@ -53,7 +53,7 @@
 #include "HYDROGUI_GeoreferencementOp.h"
 #include "HYDROGUI_SetColorOp.h"
 #include "HYDROGUI_BathymetryBoundsOp.h"
-#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
 #include "HYDROGUI_ZLevelsOp.h"
 #include "HYDROGUI_LocalCSOp.h"
 #include "HYDROGUI_RiverBottomOp.h"
 #include "HYDROGUI_SubmersibleOp.h"
 #include "HYDROGUI_StricklerTableOp.h"
 #include "HYDROGUI_DuplicateOp.h"
-// TODO
-//#include "HYDROGUI_LandCoverMapOp.h"
+#include "HYDROGUI_LandCoverMapOp.h"
 #include "HYDROGUI_PolylineExtractionOp.h"
 #include "HYDROGUI_ExportSinusXOp.h"
 #include "HYDROGUI_MergePolylinesOp.h"
 #include "HYDROGUI_SplitPolylinesOp.h"
 #include "HYDROGUI_LandCoverColoringOp.h"
-// TODO
-//#include "HYDROGUI_ImportLandCoverMapOp.h"
+#include "HYDROGUI_SetTransparencyOp.h"
+
+#include "HYDROGUI_ImportLandCoverMapOp.h"
 
 #include <HYDROData_Document.h>
 #include <HYDROData_Obstacle.h>
 #include <HYDROData_SplitToZonesTool.h>
+#include <HYDROData_Iterator.h>
 
 #include <GeometryGUI.h>
 #include <GeometryGUI_Operations.h>
@@ -176,6 +177,7 @@ void HYDROGUI_Module::createActions()
   createAction( RemoveLandCoverId, "REMOVE_LAND_COVER", "REMOVE_LAND_COVER_ICO" );
   createAction( SplitLandCoverId, "SPLIT_LAND_COVER", "SPLIT_LAND_COVER_ICO" );
   createAction( MergeLandCoverId, "MERGE_LAND_COVER", "MERGE_LAND_COVER_ICO" );
+  createAction( ChangeLandCoverTypeId, "CHANGE_LAND_COVER_TYPE", "CHANGE_LAND_COVER_TYPE_ICO" );
 
   createAction( ImportObstacleFromFileId, "IMPORT_OBSTACLE_FROM_FILE", "IMPORT_OBSTACLE_FROM_FILE_ICO" );
   createAction( ImportGeomObjectAsObstacleId, "IMPORT_GEOM_OBJECT_AS_OBSTACLE", "IMPORT_GEOM_OBJECT_ICO" );
@@ -195,7 +197,7 @@ void HYDROGUI_Module::createActions()
   createAction( EditCutImageId, "EDIT_CUT_IMAGE", "EDIT_CUT_IMAGE_ICO" );
 
   createAction( SplitImageId, "SPLIT_IMAGE", "SPLIT_IMAGE_ICO" );
-  createAction( EditSplittedImageId, "EDIT_SPLITTED_IMAGE", "EDIT_SPLITTED_IMAGE_ICO" );
+  createAction( EditSplitImageId, "EDIT_SPLIT_IMAGE", "EDIT_SPLIT_IMAGE_ICO" );
 
   createAction( RecognizeContoursId, "RECOGNIZE_CONTOURS", "RECOGNIZE_CONTOURS_ICO" );
 
@@ -205,6 +207,7 @@ void HYDROGUI_Module::createActions()
                 SLOT( onDelete() ) );
 
   createAction( SetColorId, "COLOR" );
+  createAction( SetTransparencyId, "TRANSPARENCY" );
   createAction( SetZLevelId, "ZLEVEL" );
   createAction( EditLocalCSId, "EDIT_LOCAL_CS" );
 
@@ -246,19 +249,18 @@ void HYDROGUI_Module::createMenus()
   int aHydroMenu = 6; // Edit menu id == 5, View menu id == 10
   int aHydroId = createMenu( tr( "MEN_DESK_HYDRO" ), -1, -1, aHydroMenu );
   createMenu( ImportSinusXId, aHydroId, -1, -1 );
-  createMenu( ExportSinusXId, aHydroId, -1, -1 );
-  createMenu( ImportLandCoverMapId, aHydroId, -1, -1 );
+  createMenu( ExportSinusXId, aHydroId, -1, -1 );  
   
   createMenu( ImportBathymetryId, aHydroId, -1, -1 );
   createMenu( ImportStricklerTableFromFileId, aHydroId, -1, -1 );
   createMenu( CreatePolyline3DId, aHydroId, -1, -1 );
   createMenu( CreateImmersibleZoneId, aHydroId, -1, -1 );
   createMenu( CreateChannelId, aHydroId, -1, -1 );
-  createMenu( CreateDigueId, aHydroId, -1, -1 );  
-  createMenu( CreateLandCoverMapId, aHydroId, -1, -1 );  
+  createMenu( CreateDigueId, aHydroId, -1, -1 );
 
   int aNewImageId = createMenu( tr( "MEN_DESK_IMAGE" ), aHydroId, -1 );
   createMenu( ImportImageId, aNewImageId, -1, -1 );
+  createMenu( separator(), aNewImageId );
   createMenu( FuseImagesId, aNewImageId, -1, -1 );
   createMenu( CutImagesId, aNewImageId, -1, -1 );
   createMenu( SplitImageId, aNewImageId, -1, -1 );
@@ -266,24 +268,39 @@ void HYDROGUI_Module::createMenus()
   int aNewPolylineId = createMenu( tr( "MEN_DESK_POLYLINE" ), aHydroId, -1 );
   createMenu( ImportPolylineId, aNewPolylineId, -1, -1 );
   createMenu( CreatePolylineId, aNewPolylineId, -1, -1 );
+  createMenu( separator(), aNewPolylineId );
   createMenu( SplitPolylinesId, aNewPolylineId, -1, -1 );
   createMenu( MergePolylinesId, aNewPolylineId, -1, -1 );
 
   int aNewProfileId = createMenu( tr( "MEN_DESK_PROFILE" ), aHydroId, -1 );
   createMenu( CreateProfileId, aNewProfileId, -1, -1 );
   createMenu( ImportProfilesId, aNewProfileId, -1, -1 );
+  createMenu( separator(), aNewProfileId );
   createMenu( AllGeoreferencementId, aNewProfileId, -1, -1 );
 
   int aStreamMenuId = createMenu( tr( "MEN_DESK_STREAM" ), aHydroId, -1 );
   createMenu( CreateStreamId, aStreamMenuId, -1, -1 );
+  createMenu( separator(), aStreamMenuId );
   createMenu( RiverBottomId, aStreamMenuId, -1, -1 );
   createMenu( ProfileInterpolateId, aStreamMenuId, -1, -1 );
 
   int anObstacleMenuId = createMenu( tr( "MEN_DESK_OBSTACLE" ), aHydroId, -1 );
   createMenu( ImportObstacleFromFileId, anObstacleMenuId, -1, -1 );
+  createMenu( separator(), anObstacleMenuId );
   createMenu( CreateBoxId, anObstacleMenuId, -1, -1 );
   createMenu( CreateCylinderId, anObstacleMenuId, -1, -1 );
 
+  int aLandCoverMapMenuId = createMenu( tr( "MEN_DESK_LAND_COVER_MAP" ), aHydroId, -1 );
+  createMenu( ImportLandCoverMapId, aLandCoverMapMenuId, -1, -1 );
+  createMenu( CreateLandCoverMapId, aLandCoverMapMenuId, -1, -1 );
+  createMenu( separator(), aLandCoverMapMenuId );
+  createMenu( AddLandCoverId, aLandCoverMapMenuId, -1, -1 );
+  createMenu( RemoveLandCoverId, aLandCoverMapMenuId, -1, -1 );
+  createMenu( separator(), aLandCoverMapMenuId );
+  createMenu( SplitLandCoverId, aLandCoverMapMenuId, -1, -1 );
+  createMenu( MergeLandCoverId, aLandCoverMapMenuId, -1, -1 );
+  createMenu( ChangeLandCoverTypeId, aLandCoverMapMenuId, -1, -1 );
+  
   createMenu( CreateCalculationId, aHydroId, -1, -1 );
   createMenu( separator(), aHydroId );
   createMenu( EditLocalCSId, aHydroId, -1, -1 );
@@ -334,6 +351,12 @@ void HYDROGUI_Module::createToolbars()
 
   createTool( separator(), aToolBar );
   createTool( CreateLandCoverMapId, aToolBar );
+  createTool( AddLandCoverId, aToolBar );
+  createTool( RemoveLandCoverId, aToolBar );
+  createTool( SplitLandCoverId, aToolBar );
+  createTool( MergeLandCoverId, aToolBar );
+  createTool( ChangeLandCoverTypeId, aToolBar );
+  enableLCMActions();
 
   createTool( separator(), aToolBar );
   createTool( CreateCalculationId, aToolBar );
@@ -385,6 +408,24 @@ void HYDROGUI_Module::updateUndoRedoControls()
   aRedoAction->setEnabled( aCanRedo );
 }
 
+void HYDROGUI_Module::enableLCMActions()
+{
+  HYDROData_Iterator anIt( HYDROData_Document::Document( getStudyId() ), KIND_LAND_COVER_MAP );
+  bool anEnableTools = anIt.More();
+
+  QtxListAction* anAction;
+  anAction = (QtxListAction*)action( AddLandCoverId );
+  if ( anAction ) anAction->setEnabled( anEnableTools );
+  anAction = (QtxListAction*)action( RemoveLandCoverId );
+  if ( anAction ) anAction->setEnabled( anEnableTools );
+  anAction = (QtxListAction*)action( SplitLandCoverId );
+  if ( anAction ) anAction->setEnabled( anEnableTools );
+  anAction = (QtxListAction*)action( MergeLandCoverId );
+  if ( anAction ) anAction->setEnabled( anEnableTools );
+  anAction = (QtxListAction*)action( ChangeLandCoverTypeId );
+  if ( anAction ) anAction->setEnabled( anEnableTools );
+}
+
 void HYDROGUI_Module::onOperation()
 {
   const QAction* anAction = dynamic_cast<const QAction*>( sender() );
@@ -488,8 +529,7 @@ LightApp_Operation* HYDROGUI_Module::createOperation( const int theId ) const
     anOp = new HYDROGUI_ExportFileOp( aModule );
     break;
   case ImportLandCoverMapId:
-    // TODO
-    //anOp = new HYDROGUI_ImportLandCoverMapOp( aModule );
+    anOp = new HYDROGUI_ImportLandCoverMapOp( aModule );
     break;
   case RemoveImageRefsId:
     anOp = new HYDROGUI_RemoveImageRefsOp( aModule );
@@ -547,20 +587,12 @@ LightApp_Operation* HYDROGUI_Module::createOperation( const int theId ) const
     anOp = new HYDROGUI_StricklerTableOp( aModule, theId );
     break;
   case CreateLandCoverMapId:
-    // TODO
-    //anOp = new HYDROGUI_LandCoverMapOp( aModule, theId == EditLandCoverMapId );
-    break;
   case AddLandCoverId:
-    // TODO
-    break;
   case RemoveLandCoverId:
-    // TODO
-    break;
   case SplitLandCoverId:
-    // TODO
-    break;
   case MergeLandCoverId:
-    // TODO
+  case ChangeLandCoverTypeId:
+    anOp = new HYDROGUI_LandCoverMapOp( aModule, theId );
     break;
   case DuplicateStricklerTableId:
     anOp = new HYDROGUI_DuplicateOp( aModule );
@@ -581,8 +613,8 @@ LightApp_Operation* HYDROGUI_Module::createOperation( const int theId ) const
     anOp = new HYDROGUI_TwoImagesOp( aModule, HYDROGUI_TwoImagesOp::Cut, theId == EditCutImageId );
     break;
   case SplitImageId:
-  case EditSplittedImageId:
-    anOp = new HYDROGUI_TwoImagesOp( aModule, HYDROGUI_TwoImagesOp::Split, theId == EditSplittedImageId );
+  case EditSplitImageId:
+    anOp = new HYDROGUI_TwoImagesOp( aModule, HYDROGUI_TwoImagesOp::Split, theId == EditSplitImageId );
     break;
   case ImportObstacleFromFileId:
     anOp = new HYDROGUI_ImportObstacleFromFileOp( aModule );
@@ -613,6 +645,9 @@ LightApp_Operation* HYDROGUI_Module::createOperation( const int theId ) const
   case SetColorId:
     anOp = new HYDROGUI_SetColorOp( aModule );
     break;
+  case SetTransparencyId:
+    anOp = new HYDROGUI_SetTransparencyOp( aModule );
+    break;
   case SetZLevelId:
     anOp = new HYDROGUI_ZLevelsOp( aModule );
     break;