Salome HOME
lot 12 GUI p.1
[modules/hydro.git] / src / HYDROGUI / HYDROGUI_Operations.cxx
index dfa569fad0fe543f8b61531e4dc3547869605d74..f4cec87b19e80ccce1cb00de53bd487b1315f4de 100644 (file)
@@ -45,6 +45,7 @@
 #include "HYDROGUI_UpdateObjectOp.h"
 #include "HYDROGUI_VisualStateOp.h"
 #include "HYDROGUI_ImmersibleZoneOp.h"
+#include "HYDROGUI_MeasurementToolOp.h"
 #include "HYDROGUI_ImportGeomObjectOp.h"
 #include "HYDROGUI_ImportObstacleFromFileOp.h"
 #include "HYDROGUI_TranslateObstacleOp.h"
@@ -59,6 +60,7 @@
 #include "HYDROGUI_RiverBottomOp.h"
 #include "HYDROGUI_ProfileInterpolateOp.h"
 #include "HYDROGUI_RecognizeContoursOp.h"
+#include <HYDROGUI_ImportBCPolygonOp.h>
 #include "HYDROGUI_SubmersibleOp.h"
 #include "HYDROGUI_StricklerTableOp.h"
 #include "HYDROGUI_DuplicateOp.h"
@@ -75,6 +77,8 @@
 #include "HYDROGUI_RegenerateRegionColorsOp.h"
 #include "HYDROGUI_PolylineStyleOp.h"
 #include "HYDROGUI_ZoneSetColorOp.h"
+#include <HYDROGUI_ShowAttrPolyOp.h>
+#include <HYDROGUI_SetBoundaryTypePolygonOp.h>
 #include <HYDROData_Document.h>
 #include <HYDROData_Obstacle.h>
 #include <HYDROData_SplitToZonesTool.h>
@@ -144,6 +148,10 @@ void HYDROGUI_Module::createActions()
   createAction( ExportSinusXId, "EXPORT_SINUSX", "EXPORT_SINUSX_ICO" );
   createAction( ImportLandCoverMapId, "IMPORT_LANDCOVER_MAP", "IMPORT_LANDCOVER_MAP_ICO" );
 
+  createAction( MeasurementToolId, "MEASUREMENT_TOOL", "MEASUREMENT_TOOL_ICO" );
+
+  createAction( ImportBCPolygonId, "IMPORT_BC_POLYGON", "IMPORT_BC_POLYGON_ICO" );
+
   createAction( CreatePolylineId, "CREATE_POLYLINE", "CREATE_POLYLINE_ICO" );
   createAction( EditPolylineId, "EDIT_POLYLINE", "EDIT_POLYLINE_ICO" ); 
 
@@ -206,6 +214,8 @@ void HYDROGUI_Module::createActions()
   createAction( EditCalculationId, "EDIT_CALCULATION", "EDIT_CALCULATION_ICO" );
   createAction( ExportCalculationId, "EXPORT_CALCULATION", "EXPORT_CALCULATION_ICO" );
 
+  createAction( CompleteCalculationId, "COMPLETE_CALCULATION", "COMPLETE_CALCULATION_ICO" );
+
   createAction( FuseImagesId, "FUSE_IMAGES", "FUSE_IMAGES_ICO" );
   createAction( EditFusedImageId, "EDIT_FUSED_IMAGE", "EDIT_FUSED_IMAGE_ICO" );
 
@@ -245,12 +255,15 @@ void HYDROGUI_Module::createActions()
   createAction( SplitPolylinesId, "SPLIT_POLYLINES", "SPLIT_POLYLINES_ICO" );
   createAction( MergePolylinesId, "MERGE_POLYLINES", "MERGE_POLYLINES_ICO" );
 
+  createAction( ShowAttrPolylinesId, "SHOWATTR_POLYLINES");
+
   createAction( LandCoverScalarMapModeOnId, "LC_SCALARMAP_COLORING_ON" );
   createAction( LandCoverScalarMapModeOffId, "LC_SCALARMAP_COLORING_OFF" );
 
   createAction( RegenerateRegionColorsId, "REGENERATE_REGION_COLORS" );
   createAction( ZoneSetColorId, "ZONE_SET_COLOR" );
   createAction( ShowHideArrows, "SHOW_HIDE_ARROWS" );
+  createAction( SetBoundaryTypePolygonId, "SET_BOUNDARY_TYPE_POLYGON" );
 }
 
 void HYDROGUI_Module::createMenus()
@@ -274,11 +287,14 @@ void HYDROGUI_Module::createMenus()
   
   createMenu( ImportBathymetryId, aHydroId, -1, -1 );
   createMenu( ImportStricklerTableFromFileId, aHydroId, -1, -1 );
+  createMenu( ImportBCPolygonId, aHydroId, -1, -1 );
   createMenu( CreatePolyline3DId, aHydroId, -1, -1 );
   createMenu( CreateImmersibleZoneId, aHydroId, -1, -1 );
   createMenu( CreateChannelId, aHydroId, -1, -1 );
   createMenu( CreateDigueId, aHydroId, -1, -1 );
 
+  createMenu( MeasurementToolId, aHydroId, -1, -1 );
+
   int aNewImageId = createMenu( tr( "MEN_DESK_IMAGE" ), aHydroId, -1 );
   createMenu( ImportImageId, aNewImageId, -1, -1 );
   createMenu( separator(), aNewImageId );
@@ -345,6 +361,9 @@ void HYDROGUI_Module::createToolbars()
   createTool( ExportSinusXId, aToolBar );
   createTool( ImportLandCoverMapId, aToolBar );
 
+  createTool( ImportBCPolygonId, aToolBar );
+  createTool( MeasurementToolId, aToolBar );
+
   createTool( ImportBathymetryId, aToolBar );
   createTool( CreatePolylineId, aToolBar );
   createTool( CreatePolyline3DId, aToolBar );
@@ -455,36 +474,40 @@ void HYDROGUI_Module::enableLCMActions()
   if ( anAction ) anAction->setEnabled( anEnableTools );
 }
 
-void HYDROGUI_Module::onOperation()
+void HYDROGUI_Module::resetViewState()
 {
-  const QAction* anAction = dynamic_cast<const QAction*>( sender() );
-  int anId = actionId( anAction );
-  if( anId >= 0 )
+  OCCViewer_ViewManager* mgr = dynamic_cast<OCCViewer_ViewManager*>(getApp()->viewManager( OCCViewer_Viewer::Type()));
+  if( mgr )
   {
-    OCCViewer_ViewManager* mgr = dynamic_cast<OCCViewer_ViewManager*>( 
-      getApp()->viewManager( OCCViewer_Viewer::Type() ) );
-    if( mgr )
+    foreach( SUIT_ViewWindow* wnd, mgr->getViews() )
     {
-      foreach( SUIT_ViewWindow* wnd, mgr->getViews() )
+      OCCViewer_ViewFrame* vf = dynamic_cast<OCCViewer_ViewFrame*>( wnd );
+      if( vf )
       {
-        OCCViewer_ViewFrame* vf = dynamic_cast<OCCViewer_ViewFrame*>( wnd );
-        if( vf )
-        {
-          for( int i=OCCViewer_ViewFrame::MAIN_VIEW; i<=OCCViewer_ViewFrame::TOP_RIGHT; i++ )
-          {
-            OCCViewer_ViewWindow* iwnd = vf->getView(i);
-            if( iwnd )
-              iwnd->resetState();
-          }
-        }
-        else
+        for( int i=OCCViewer_ViewFrame::MAIN_VIEW; i<=OCCViewer_ViewFrame::TOP_RIGHT; i++ )
         {
-          OCCViewer_ViewWindow* ownd = dynamic_cast<OCCViewer_ViewWindow*>( wnd );
-          if( ownd )
-            ownd->resetState();
+          OCCViewer_ViewWindow* iwnd = vf->getView(i);
+          if( iwnd )
+            iwnd->resetState();
         }
       }
+      else
+      {
+        OCCViewer_ViewWindow* ownd = dynamic_cast<OCCViewer_ViewWindow*>( wnd );
+        if( ownd )
+          ownd->resetState();
+      }
     }
+  }
+}
+
+void HYDROGUI_Module::onOperation()
+{
+  const QAction* anAction = dynamic_cast<const QAction*>( sender() );
+  int anId = actionId( anAction );
+  if( anId >= 0 )
+  {
+    resetViewState();
     startOperation( anId );
   }
 
@@ -614,6 +637,12 @@ LightApp_Operation* HYDROGUI_Module::createOperation( const int theId ) const
   case ExportSinusXId:
     anOp = new HYDROGUI_ExportSinusXOp( aModule );
     break;
+  case ImportBCPolygonId:
+    anOp = new HYDROGUI_ImportBCPolygonOp( aModule );
+    break;
+  case MeasurementToolId:
+    anOp = new HYDROGUI_MeasurementToolOp( aModule );
+    break;
   case ObserveImageId:
     anOp = new HYDROGUI_ObserveImageOp( aModule );
     break;
@@ -709,8 +738,13 @@ LightApp_Operation* HYDROGUI_Module::createOperation( const int theId ) const
     break;
   case CreateCalculationId:
   case EditCalculationId:
-    anOp = new HYDROGUI_CalculationOp( aModule, theId == EditCalculationId );
+    anOp = new HYDROGUI_CalculationOp( aModule, theId == EditCalculationId, false );
+    break;
+
+  case CompleteCalculationId:
+    anOp = new HYDROGUI_CalculationOp( aModule, true, true);
     break;
+
   case ExportCalculationId:
     anOp = new HYDROGUI_ExportCalculationOp( aModule );
     break;
@@ -793,6 +827,12 @@ LightApp_Operation* HYDROGUI_Module::createOperation( const int theId ) const
   case MergePolylinesId:
     anOp = new HYDROGUI_MergePolylinesOp( aModule );
     break;
+  case ShowAttrPolylinesId:
+    anOp = new HYDROGUI_ShowAttrPolyOp( aModule );
+    break;
+  case SetBoundaryTypePolygonId:
+    anOp = new HYDROGUI_SetBoundaryTypePolygonOp( aModule );
+    break;
   case LandCoverScalarMapModeOnId:
   case LandCoverScalarMapModeOffId:
     anOp = new HYDROGUI_LandCoverColoringOp( aModule, theId );
@@ -909,6 +949,6 @@ void HYDROGUI_Module::onBathymetryText()
   {
     HYDROGUI_BathymetryOp* op = dynamic_cast<HYDROGUI_BathymetryOp*>( operation( BathymetryTextId ) );
     if( op )
-      op->activate( false );
+      op->commit();
   }
 }