X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROGUI%2FHYDROGUI_Module.cxx;h=38090fe5441884545f6a71db1a63a3e70a8c014c;hb=9082efb75ca2505f8b4c5096d37e8d87491cd5d9;hp=a4177f665ba69b50ddd94c16ac896f83eb28ff7c;hpb=1f704ee3d33e88261c7468bc970e9c5e920affd2;p=modules%2Fhydro.git diff --git a/src/HYDROGUI/HYDROGUI_Module.cxx b/src/HYDROGUI/HYDROGUI_Module.cxx index a4177f66..38090fe5 100644 --- a/src/HYDROGUI/HYDROGUI_Module.cxx +++ b/src/HYDROGUI/HYDROGUI_Module.cxx @@ -30,6 +30,7 @@ #include "HYDROGUI_Operations.h" #include "HYDROGUI_PrsImage.h" #include "HYDROGUI_Tool.h" +#include "HYDROGUI_Tool2.h" #include "HYDROGUI_UpdateFlags.h" #include "HYDROGUI_Shape.h" #include "HYDROGUI_VTKPrs.h" @@ -323,7 +324,7 @@ void HYDROGUI_Module::contextMenuPopup( const QString& theClient, bool anIsImageHasRefs = false; bool anIsFusedImage = false; bool anIsCutImage = false; - bool anIsSplittedImage = false; + bool anIsSplitImage = false; bool anIsMustObjectBeUpdated = false; bool anIsPolyline = false; bool anIsPolyline3D = false; @@ -338,7 +339,7 @@ void HYDROGUI_Module::contextMenuPopup( const QString& theClient, bool anIsZone = false; bool anIsObstacle = false; bool anIsStricklerTable = false; - bool anIsLandCover = false; + bool anIsLandCoverMap = false; bool anIsStream = false; bool anIsChannel = false; bool anIsDigue = false; @@ -399,7 +400,7 @@ void HYDROGUI_Module::contextMenuPopup( const QString& theClient, anIsVisibleInSelection |= aVisibility; anIsHiddenInSelection |= !aVisibility; - if ( anObject->CanBeUpdated() && anObject->IsMustBeUpdated() ) + if ( anObject->CanBeUpdated() && anObject->IsMustBeUpdated( HYDROData_Entity::Geom_All ) ) { anIsMustObjectBeUpdated = true; } @@ -423,7 +424,7 @@ void HYDROGUI_Module::contextMenuPopup( const QString& theClient, else if( anOperatorName == ImageComposer_CutOperator::Type() ) anIsCutImage = true; else if( anOperatorName == ImageComposer_CropOperator::Type() ) - anIsSplittedImage = true; + anIsSplitImage = true; } } } @@ -459,8 +460,8 @@ void HYDROGUI_Module::contextMenuPopup( const QString& theClient, anIsObstacle = true; else if( anObjectKind == KIND_STRICKLER_TABLE ) anIsStricklerTable = true; - else if( anObjectKind == KIND_LAND_COVER ) - anIsLandCover = true; + else if( anObjectKind == KIND_LAND_COVER_MAP ) + anIsLandCoverMap = true; else if( anObjectKind == KIND_STREAM ) { anIsStream = true; @@ -475,7 +476,7 @@ void HYDROGUI_Module::contextMenuPopup( const QString& theClient, anIsDigue = true; else if( anObjectKind == KIND_DUMMY_3D ) anIsDummyObject3D = true; - else if( anObjectKind == KIND_SHAPES_GROUP || anObjectKind == KIND_SPLITTED_GROUP ) + else if( anObjectKind == KIND_SHAPES_GROUP || anObjectKind == KIND_SPLIT_GROUP ) anIsGroup = true; } @@ -517,13 +518,15 @@ void HYDROGUI_Module::contextMenuPopup( const QString& theClient, case KIND_STRICKLER_TABLE: theMenu->addAction( action( ImportStricklerTableFromFileId ) ); break; - case KIND_LAND_COVER: - theMenu->addAction( action( CreateLandCoverId ) ); + case KIND_LAND_COVER_MAP: + theMenu->addAction( action( CreateLandCoverMapId ) ); + theMenu->addAction( action( ImportLandCoverMapId ) ); break; case KIND_CALCULATION: theMenu->addAction( action( CreateCalculationId ) ); break; case KIND_POLYLINEXY: + theMenu->addAction( action( ImportPolylineId ) ); theMenu->addAction( action( CreatePolylineId ) ); break; case KIND_POLYLINE: @@ -568,8 +571,8 @@ void HYDROGUI_Module::contextMenuPopup( const QString& theClient, theMenu->addAction( action( EditFusedImageId ) ); else if( anIsCutImage ) theMenu->addAction( action( EditCutImageId ) ); - else if( anIsSplittedImage ) - theMenu->addAction( action( EditSplittedImageId ) ); + else if( anIsSplitImage ) + theMenu->addAction( action( EditSplitImageId ) ); } //RKV: BUG#98: theMenu->addAction( action( ObserveImageId ) ); @@ -599,6 +602,9 @@ void HYDROGUI_Module::contextMenuPopup( const QString& theClient, { theMenu->addAction( action( EditPolylineId ) ); theMenu->addSeparator(); + theMenu->addAction( action( SplitPolylinesId ) ); + theMenu->addAction( action( MergePolylinesId ) ); + theMenu->addSeparator(); } else if( anIsPolyline3D ) { @@ -661,14 +667,22 @@ void HYDROGUI_Module::contextMenuPopup( const QString& theClient, HYDROGUI_DataObject::dataObjectEntry( getLandCoverColoringTable( anActiveViewId ) ); bool isUsed = aCurrentTable == HYDROGUI_DataObject::dataObjectEntry( aTable ); - if ( !isUsed && !getObjectShapes( anActiveViewId, KIND_LAND_COVER ).isEmpty() ) { + if ( !isUsed && !getObjectShapes( anActiveViewId, KIND_LAND_COVER_MAP ).isEmpty() ) { theMenu->addAction( action( LandCoverScalarMapModeOnId ) ); theMenu->addSeparator(); } } - else if( anIsLandCover ) + else if( anIsLandCoverMap ) { - theMenu->addAction( action( EditLandCoverId ) ); + theMenu->addAction( action( AddLandCoverId ) ); + theMenu->addAction( action( RemoveLandCoverId ) ); + theMenu->addSeparator(); + theMenu->addAction( action( SplitLandCoverId ) ); + theMenu->addAction( action( MergeLandCoverId ) ); + theMenu->addAction( action( ChangeLandCoverTypeId ) ); + theMenu->addSeparator(); + // + theMenu->addAction( action( ExportToShapeFileID ) ); theMenu->addSeparator(); } else if( anIsVisualState && anIsObjectBrowser ) @@ -678,19 +692,32 @@ void HYDROGUI_Module::contextMenuPopup( const QString& theClient, theMenu->addSeparator(); } + if ( anIsStream || anIsChannel || anIsDigue || anIsObstacle ) + { + theMenu->addAction( action( PolylineExtractionId ) ); + theMenu->addSeparator(); + } + // Add set color action for geometrical objects if ( anIsObjectCanBeColored ) { theMenu->addAction( action( SetColorId ) ); theMenu->addSeparator(); } + + // Add transparency action for land cover map objects + if ( anIsLandCoverMap ) + { + theMenu->addAction( action( SetTransparencyId ) ); + theMenu->addSeparator(); + } } else if ( anAllAreProfiles ) { theMenu->addAction( action( SelectedGeoreferencementId ) ); theMenu->addSeparator(); } bool anIsPoly = anIsPolyline || anIsPolyline3D; - if ((anIsPoly && !anIsLandCover) || (!anIsPoly && anIsLandCover)) + if (anIsPoly && !anIsLandCoverMap) theMenu->addAction( action( ExportToShapeFileID ) ); // Add copy action @@ -710,7 +737,7 @@ void HYDROGUI_Module::contextMenuPopup( const QString& theClient, anIsImmersibleZone || anIsZone || anIsRegion || anIsBathymetry || anIsObstacle || anIsStream || anIsChannel || anIsDigue || anIsDummyObject3D || - anIsValidProfile || anIsGroup || anIsLandCover ) + anIsValidProfile || anIsGroup || anIsLandCoverMap ) { if( anIsHiddenInSelection ) theMenu->addAction( action( ShowId ) ); @@ -806,6 +833,19 @@ void HYDROGUI_Module::createPreferences() setPreferenceProperty( defaultStricklerCoef, "step", 0.01 ); } +void HYDROGUI_Module::preferencesChanged( const QString& theSection, const QString& thePref ) +{ + if ( theSection == "preferences" && thePref == "default_strickler_coefficient" ) + { + SUIT_ResourceMgr* resMgr = application()->resourceMgr(); + Handle(HYDROData_Document) aDoc = HYDROData_Document::Document( application()->activeStudy()->id() ); + if ( resMgr && !aDoc.IsNull() ) + aDoc->SetDefaultStricklerCoefficient( resMgr->doubleValue( theSection, thePref, 0 ) ); + } + else + LightApp_Module::preferencesChanged( theSection, thePref ); +} + QCursor HYDROGUI_Module::getPrefEditCursor() const { int aCursorType = SUIT_Session::session()->resourceMgr()->integerValue("preferences", "type_of_cursor", (int)CT_CrossCursor ); @@ -1049,15 +1089,18 @@ void HYDROGUI_Module::setObjectVisible( const int theViewId, if ( hydroObject ) { SUIT_AbstractModel* treeModel = dynamic_cast( getApp()->objectBrowser()->model() ); - QString id = hydroObject->text( hydroObject->customData( Qtx::IdType ).toInt() ); - Qtx::VisibilityState visState = treeModel->visibilityState( id ); - if ( visState != Qtx::UnpresentableState ) + if ( treeModel ) + { + QString id = hydroObject->text( hydroObject->customData( Qtx::IdType ).toInt() ); + Qtx::VisibilityState visState = treeModel->visibilityState( id ); + if ( visState != Qtx::UnpresentableState ) treeModel->setVisibilityState( id, theState ? Qtx::ShownState : Qtx::HiddenState ); + } } if ( theObject->GetKind() == KIND_BATHYMETRY && theState ) { setLandCoversScalarMapModeOff( theViewId ); - } else if ( theObject->GetKind() == KIND_LAND_COVER && theState ) { + } else if ( theObject->GetKind() == KIND_LAND_COVER_MAP && theState ) { getOCCDisplayer()->SetToUpdateColorScale(); } } @@ -1342,6 +1385,11 @@ void HYDROGUI_Module::updateVTKZRange( const int theViewId, double theRange[] ) } /////////////////// END OF VTKPrs PROCESSING +void HYDROGUI_Module::clearCache() +{ + myObjectStateMap.clear(); +} + CAM_DataModel* HYDROGUI_Module::createDataModel() { return new HYDROGUI_DataModel( this ); @@ -1773,7 +1821,7 @@ void HYDROGUI_Module::onObjectClicked( SUIT_DataObject* theObject, int theColumn setObjectVisible( HYDROGUI_Tool::GetActiveViewId( this ), hydroObject->modelObject(), vis ); - update( UF_OCCViewer | ( visState == Qtx::ShownState ? UF_FitAll : 0 ) ); + update( UF_OCCViewer | UF_VTKViewer | ( visState == Qtx::ShownState ? UF_FitAll : 0 ) ); } Handle(HYDROData_StricklerTable) HYDROGUI_Module::getLandCoverColoringTable( const int theViewId ) const