#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"
#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_ProfileInterpolateOp.h"
#include "HYDROGUI_RecognizeContoursOp.h"
+#include <HYDROGUI_ImportBCPolygonOp.h>
#include "HYDROGUI_SubmersibleOp.h"
#include "HYDROGUI_StricklerTableOp.h"
#include "HYDROGUI_DuplicateOp.h"
#include "HYDROGUI_MergePolylinesOp.h"
#include "HYDROGUI_SplitPolylinesOp.h"
#include "HYDROGUI_LandCoverColoringOp.h"
-
+#include "HYDROGUI_SetTransparencyOp.h"
#include "HYDROGUI_ImportLandCoverMapOp.h"
-
+#include "HYDROGUI_BathymetrySelectionOp.h"
+#include "HYDROGUI_BathymetryOp.h"
+#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>
+#include <HYDROData_Iterator.h>
#include <GeometryGUI.h>
#include <GeometryGUI_Operations.h>
#include <LightApp_Application.h>
-#include <CAM_Application.h>
+#include <OCCViewer_ViewModel.h>
+#include <OCCViewer_ViewManager.h>
+#include <OCCViewer_ViewWindow.h>
+#include <OCCViewer_ViewFrame.h>
#include <QtxListAction.h>
#include <QtxActionToolMgr.h>
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" );
createAction( ImportBathymetryId, "IMPORT_BATHYMETRY", "IMPORT_BATHYMETRY_ICO", Qt::CTRL + Qt::Key_B );
createAction( EditImportedBathymetryId, "EDIT_IMPORTED_BATHYMETRY", "EDIT_IMPORTED_BATHYMETRY_ICO" );
createAction( BathymetryBoundsId, "BATHYMETRY_BOUNDS", "BATHYMETRY_BOUNDS_ICO" );
+ createAction( BathymetrySelectionId, "BATHYMETRY_SELECTION", "BATHYMETRY_SELECTION_ICO",
+ 0, true, SLOT( onBathymetrySelection() ) );
+
+ createAction( BathymetryTextId, "BATHYMETRY_TEXT", "BATHYMETRY_TEXT_ICO",
+ 0, true, SLOT( onBathymetryText() ) );
+
+ createAction( BathymetryRescaleSelectionId, "BATHYMETRY_RESCALE_SELECTION", "BATHYMETRY_RESCALE_SELECTION_ICO" );
+ createAction( BathymetryRescaleVisibleId, "BATHYMETRY_RESCALE_VISIBLE", "BATHYMETRY_RESCALE_VISIBLE_ICO" );
+ createAction( BathymetryRescaleUserId, "BATHYMETRY_RESCALE_USER", "BATHYMETRY_RESCALE_USER_ICO" );
+ createAction( BathymetryRescaleDefaultId, "BATHYMETRY_RESCALE_DEFAULT", "BATHYMETRY_RESCALE_DEFAULT_ICO" );
createAction( CreateImmersibleZoneId, "CREATE_IMMERSIBLE_ZONE", "CREATE_IMMERSIBLE_ZONE_ICO" );
createAction( EditImmersibleZoneId, "EDIT_IMMERSIBLE_ZONE", "EDIT_IMMERSIBLE_ZONE_ICO" );
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" );
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" );
SLOT( onDelete() ) );
createAction( SetColorId, "COLOR" );
+ createAction( SetTransparencyId, "TRANSPARENCY" );
createAction( SetZLevelId, "ZLEVEL" );
createAction( EditLocalCSId, "EDIT_LOCAL_CS" );
createAction( ProfileInterpolateId, "PROFILE_INTERPOLATE", "PROFILE_INTERPOLATE_ICO" );
createAction( SubmersibleId, "SUBMERSIBLE", "SUBMERSIBLE_ICO" );
+ createAction( UnSubmersibleId, "UNSUBMERSIBLE", "HYDRO_UNSUBMERSIBLE16_ICO" );
createAction( ExportToShapeFileID, "EXPORT_TO_SHAPE_FILE", "EXPORT_TO_SHAPE_FILE_ICO" );
createAction( PolylineExtractionId, "POLYLINE_EXTRACTION" );
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()
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 );
createTool( ExportSinusXId, aToolBar );
createTool( ImportLandCoverMapId, aToolBar );
+ createTool( ImportBCPolygonId, aToolBar );
+ createTool( MeasurementToolId, aToolBar );
+
createTool( ImportBathymetryId, aToolBar );
createTool( CreatePolylineId, aToolBar );
createTool( CreatePolyline3DId, aToolBar );
createTool( SplitLandCoverId, aToolBar );
createTool( MergeLandCoverId, aToolBar );
createTool( ChangeLandCoverTypeId, aToolBar );
+ enableLCMActions();
createTool( separator(), aToolBar );
createTool( CreateCalculationId, aToolBar );
createTool( FuseImagesId, aToolBar );
createTool( CutImagesId, aToolBar );
createTool( SplitImageId, aToolBar );
+
+ createTool( separator(), aToolBar );
+ createTool( BathymetrySelectionId, aToolBar );
+ createTool( BathymetryTextId, aToolBar );
+ createTool( BathymetryRescaleSelectionId, aToolBar );
+ createTool( BathymetryRescaleVisibleId, aToolBar );
+ createTool( BathymetryRescaleUserId, aToolBar );
+ createTool( BathymetryRescaleDefaultId, aToolBar );
}
void HYDROGUI_Module::createUndoRedoActions()
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::resetViewState()
+{
+ OCCViewer_ViewManager* mgr = dynamic_cast<OCCViewer_ViewManager*>(getApp()->viewManager( OCCViewer_Viewer::Type()));
+ if( mgr )
+ {
+ foreach( SUIT_ViewWindow* wnd, mgr->getViews() )
+ {
+ 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
+ {
+ 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 );
+ }
+
+ if( anId==ShowHideArrows )
+ {
+ setArrowsVisible( !arrowsVisible() );
+ }
+}
+
+bool HYDROGUI_Module::arrowsVisible() const
+{
+ int aType;
+ SUIT_ResourceMgr* resMgr = application()->resourceMgr();
+ if( resMgr )
+ {
+ resMgr->value( "polyline", "arrow_type", aType );
+ return aType>0;
+ }
+ else
+ return false;
+}
+
+void HYDROGUI_Module::setArrowsVisible( bool isVisible )
+{
+ SUIT_ResourceMgr* resMgr = application()->resourceMgr();
+
+ int aType=-1;
+ if( !resMgr )
+ return;
+
+ if( isVisible )
+ {
+ if( resMgr->hasValue( "polyline", "prev_arrow_type" ) )
+ resMgr->value( "polyline", "prev_arrow_type", aType );
+
+ if( aType<=0 )
+ aType = 1;
+ resMgr->setValue( "polyline", "arrow_type", aType );
+ }
+ else
+ {
+ resMgr->value( "polyline", "arrow_type", aType );
+ resMgr->setValue( "polyline", "prev_arrow_type", aType );
+ resMgr->setValue( "polyline", "arrow_type", 0 );
+ }
+ preferencesChanged( "polyline", "arrow_type" );
}
void HYDROGUI_Module::onDelete()
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;
case BathymetryBoundsId:
anOp = new HYDROGUI_BathymetryBoundsOp( aModule );
break;
+ case BathymetrySelectionId:
+ anOp = new HYDROGUI_BathymetrySelectionOp( aModule );
+ break;
+ case BathymetryTextId:
+ case BathymetryRescaleSelectionId:
+ case BathymetryRescaleVisibleId:
+ case BathymetryRescaleUserId:
+ case BathymetryRescaleDefaultId:
+ anOp = new HYDROGUI_BathymetryOp( aModule, theId );
+ break;
+
case CreateImmersibleZoneId:
case EditImmersibleZoneId:
anOp = new HYDROGUI_ImmersibleZoneOp( aModule, theId == EditImmersibleZoneId );
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;
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 );
case SetColorId:
anOp = new HYDROGUI_SetColorOp( aModule );
break;
+ case SetTransparencyId:
+ anOp = new HYDROGUI_SetTransparencyOp( aModule );
+ break;
case SetZLevelId:
anOp = new HYDROGUI_ZLevelsOp( aModule );
break;
anOp = new HYDROGUI_ShowHideOp( aModule, theId );
break;
case SubmersibleId:
- anOp = new HYDROGUI_SubmersibleOp( aModule );
+ anOp = new HYDROGUI_SubmersibleOp( aModule, true );
+ break;
+ case UnSubmersibleId:
+ anOp = new HYDROGUI_SubmersibleOp( aModule, false );
break;
case PolylineExtractionId:
anOp = new HYDROGUI_PolylineExtractionOp( aModule );
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 );
break;
+ case RegenerateRegionColorsId:
+ anOp = new HYDROGUI_RegenerateRegionColorsOp( aModule );
+ break;
+ case ZoneSetColorId:
+ anOp = new HYDROGUI_ZoneSetColorOp( aModule );
+ break;
}
if( !anOp )
}
return aRes;
}
+
+void HYDROGUI_Module::onBathymetrySelection()
+{
+ QAction* a = qobject_cast<QAction*>( sender() );
+ if( !a )
+ return;
+
+ bool isChecked = a->isChecked();
+ if( isChecked )
+ startOperation( BathymetrySelectionId );
+ else
+ {
+ LightApp_Operation* op = operation( BathymetryTextId );
+ if( op )
+ op->abort();
+
+ op = operation( BathymetrySelectionId );
+ if( op )
+ op->abort();
+ }
+}
+
+void HYDROGUI_Module::onBathymetryText()
+{
+ QAction* a = qobject_cast<QAction*>( sender() );
+ if( !a )
+ return;
+
+ bool isChecked = a->isChecked();
+ if( isChecked )
+ startOperation( BathymetryTextId );
+ else
+ {
+ HYDROGUI_BathymetryOp* op = dynamic_cast<HYDROGUI_BathymetryOp*>( operation( BathymetryTextId ) );
+ if( op )
+ op->commit();
+ }
+}