X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROGUI%2FHYDROGUI_Tool.cxx;h=6fa0a831763a9d609337a80d3af710112010d522;hb=5cae7e874afd2fc1b6f61023e8ebd33a933db3c7;hp=ac76bb18ebcd670e219e17700373a5f7b4c0f7f3;hpb=0c405019de08dccfacd64f71f18211cbe912cc1d;p=modules%2Fhydro.git diff --git a/src/HYDROGUI/HYDROGUI_Tool.cxx b/src/HYDROGUI/HYDROGUI_Tool.cxx index ac76bb18..6fa0a831 100644 --- a/src/HYDROGUI/HYDROGUI_Tool.cxx +++ b/src/HYDROGUI/HYDROGUI_Tool.cxx @@ -29,7 +29,8 @@ #include #include -#include +#include +#include #include @@ -43,12 +44,15 @@ #include +#include #include #include #include -#include +#include +#include #include +#include // Definition of this id allows to use 'latin1' (Qt alias for 'ISO-8859-1') // encoding instead of default 'System' @@ -134,35 +138,52 @@ Handle(TCollection_HExtendedString) HYDROGUI_Tool::ToHExtString( const QString& return new TCollection_HExtendedString( ToExtString( src ) ); } -void HYDROGUI_Tool::LambertToDouble( const int theDegrees, - const int theMinutes, - const double theSeconds, - double& theCoord ) +int HYDROGUI_Tool::GetActiveStudyId() { - // ouv: check the case of negative degrees - theCoord = theDegrees * 3600 + theMinutes * 60 + theSeconds; + if( SUIT_Session* aSession = SUIT_Session::session() ) + if( SUIT_Application* anApp = aSession->activeApplication() ) + if( SUIT_Study* aStudy = anApp->activeStudy() ) + return aStudy->id(); + return 0; } -void HYDROGUI_Tool::DoubleToLambert( const double theCoord, - int& theDegrees, - int& theMinutes, - double& theSeconds ) +QString HYDROGUI_Tool::GetTempDir( const bool theToCreate ) { - // ouv: check the case of negative degrees - theDegrees = int( theCoord / 3600 ); - - double aRemainder = theCoord - theDegrees * 3600; - theMinutes = int( aRemainder / 60 ); + QString aRes; - theSeconds = aRemainder - theMinutes * 60; -} + char* tmpdir = getenv ( "HYDRO_TMP_DIR" ); + if ( tmpdir ) + { + // try to create folder if it does not exist + QFileInfo fi( tmpdir ); + if ( !fi.exists() && theToCreate ) + { + if ( QDir().mkdir( tmpdir ) ) + QFile::setPermissions( tmpdir, (QFile::Permissions)0x4FFFF ); + QFileInfo fi( tmpdir ); + if ( !fi.exists() || !fi.isWritable() ) + tmpdir = 0; + } + } + if ( !tmpdir ) + tmpdir = getenv ( "TEMP" ); + if ( !tmpdir ) + tmpdir = getenv ( "TMP" ); + if ( !tmpdir ) + { +#ifdef WNT + tmpdir = "C:\\"; +#else + tmpdir = "/tmp"; +#endif + } + aRes = tmpdir; + + QFileInfo fi( aRes ); + if ( !fi.exists() || !fi.isWritable() ) + aRes = QString::null; -bool HYDROGUI_Tool::IsEqual( const Handle(HYDROData_Object)& theObj1, - const Handle(HYDROData_Object)& theObj2 ) -{ - if( !theObj1.IsNull() && !theObj2.IsNull() ) - return theObj1->Label() == theObj2->Label(); //ouv: check that the names can be used here - return false; + return aRes; } void HYDROGUI_Tool::SetActiveViewManager( HYDROGUI_Module* theModule, @@ -185,7 +206,7 @@ void HYDROGUI_Tool::GetPrsSubObjects( HYDROGUI_Module* theModule, HYDROData_Iterator anIterator( aDocument, KIND_IMAGE ); for( ; anIterator.More(); anIterator.Next() ) { - Handle(HYDROData_Object) anObject = anIterator.Current(); + Handle(HYDROData_Entity) anObject = anIterator.Current(); if( !anObject.IsNull() ) theSeq.Append( anObject ); } @@ -193,21 +214,21 @@ void HYDROGUI_Tool::GetPrsSubObjects( HYDROGUI_Module* theModule, anIterator = HYDROData_Iterator( aDocument, KIND_POLYLINE ); for( ; anIterator.More(); anIterator.Next() ) { - Handle(HYDROData_Object) anObject = anIterator.Current(); + Handle(HYDROData_Entity) anObject = anIterator.Current(); if( !anObject.IsNull() ) theSeq.Append( anObject ); } - anIterator = HYDROData_Iterator( aDocument, KIND_ZONE ); + anIterator = HYDROData_Iterator( aDocument, KIND_IMMERSIBLE_ZONE ); for( ; anIterator.More(); anIterator.Next() ) { - Handle(HYDROData_Object) anObject = anIterator.Current(); + Handle(HYDROData_Entity) anObject = anIterator.Current(); if( !anObject.IsNull() ) theSeq.Append( anObject ); } } -HYDROGUI_Prs* HYDROGUI_Tool::GetPresentation( const Handle(HYDROData_Object)& theObj, +HYDROGUI_Prs* HYDROGUI_Tool::GetPresentation( const Handle(HYDROData_Entity)& theObj, const GraphicsView_ObjectList& theObjects ) { if( !theObj.IsNull() ) @@ -217,7 +238,7 @@ HYDROGUI_Prs* HYDROGUI_Tool::GetPresentation( const Handle(HYDROData_Object)& th { if( HYDROGUI_Prs* aPrs = dynamic_cast( anIter.next() ) ) { - Handle(HYDROData_Object) anObj = aPrs->getObject(); + Handle(HYDROData_Entity) anObj = aPrs->getObject(); if( IsEqual( anObj, theObj ) ) return aPrs; } @@ -254,7 +275,7 @@ HYDROData_SequenceOfObjects HYDROGUI_Tool::GetSelectedObjects( HYDROGUI_Module* { if( LightApp_DataOwner* anOwner = dynamic_cast( aSUITOwner ) ) { - Handle(HYDROData_Object) anObject = aModel->objectByEntry( anOwner->entry() ); + Handle(HYDROData_Entity) anObject = aModel->objectByEntry( anOwner->entry() ); if( !anObject.IsNull() ) { QString aName = anObject->GetName(); @@ -269,7 +290,7 @@ HYDROData_SequenceOfObjects HYDROGUI_Tool::GetSelectedObjects( HYDROGUI_Module* return aSeq; } -Handle(HYDROData_Object) HYDROGUI_Tool::GetSelectedObject( HYDROGUI_Module* theModule ) +Handle(HYDROData_Entity) HYDROGUI_Tool::GetSelectedObject( HYDROGUI_Module* theModule ) { HYDROData_SequenceOfObjects aSeq = GetSelectedObjects( theModule ); if( !aSeq.IsEmpty() ) @@ -303,79 +324,28 @@ ObjectKind HYDROGUI_Tool::GetSelectedPartition( HYDROGUI_Module* theModule ) return KIND_UNKNOWN; } -Handle(HYDROData_Object) HYDROGUI_Tool::FindObjectByName( HYDROGUI_Module* theModule, +Handle(HYDROData_Entity) HYDROGUI_Tool::FindObjectByName( HYDROGUI_Module* theModule, const QString& theName, const ObjectKind theObjectKind ) { - Handle(HYDROData_Object) anObject; - if ( theName.isEmpty() ) - return anObject; - - QStringList aNamesList; - aNamesList << theName; - - HYDROData_SequenceOfObjects aSeqOfObjs = FindObjectsByNames( theModule, aNamesList, theObjectKind ); - if( aSeqOfObjs.IsEmpty() ) - return anObject; - - anObject = aSeqOfObjs.First(); - return anObject; + Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( theModule->getStudyId() ); + return HYDROData_Tool::FindObjectByName( aDocument, theName, theObjectKind ); } HYDROData_SequenceOfObjects HYDROGUI_Tool::FindObjectsByNames( HYDROGUI_Module* theModule, const QStringList& theNames, const ObjectKind theObjectKind ) { - HYDROData_SequenceOfObjects aResSeq; - if ( theNames.isEmpty() ) - return aResSeq; - Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( theModule->getStudyId() ); - if( aDocument.IsNull() ) - return aResSeq; - - QStringList aNamesList = theNames; - - HYDROData_Iterator anIter( aDocument, theObjectKind ); - for( ; anIter.More(); anIter.Next() ) - { - Handle(HYDROData_Object) anObjectRef = anIter.Current(); - if( anObjectRef.IsNull() ) - continue; - - QString anObjName = anObjectRef->GetName(); - if ( anObjName.isEmpty() || !aNamesList.contains( anObjName ) ) - continue; - - aResSeq.Append( anObjectRef ); - - aNamesList.removeAll( anObjName ); - if ( aNamesList.isEmpty() ) - break; - } - - return aResSeq; + return HYDROData_Tool::FindObjectsByNames( aDocument, theNames, theObjectKind ); } QString HYDROGUI_Tool::GenerateObjectName( HYDROGUI_Module* theModule, const QString& thePrefix, const QStringList& theUsedNames ) { - QString aName; - int anId = 1; - while( anId < 100 ) - { - aName = QString( "%1_%2" ).arg( thePrefix ).arg( QString::number( anId++ ) ); - - if ( theUsedNames.contains( aName ) ) - continue; - - // check that there are no other objects with the same name in the document - Handle(HYDROData_Object) anObject = FindObjectByName( theModule, aName, KIND_UNKNOWN ); - if( anObject.IsNull() ) - break; - } - return aName; + Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( theModule->getStudyId() ); + return HYDROData_Tool::GenerateObjectName( aDocument, thePrefix, theUsedNames ); } size_t HYDROGUI_Tool::GetActiveViewId( HYDROGUI_Module* theModule, @@ -438,7 +408,7 @@ void HYDROGUI_Tool::GetObjectReferences( const Handle(HYDROData_Image)& theImage for( int anIndex = 0, aNbRef = theImage->NbReferences(); anIndex < aNbRef; anIndex++ ) { - Handle(HYDROData_Object) aRefObj = theImage->Reference( anIndex ); + Handle(HYDROData_Entity) aRefObj = theImage->Reference( anIndex ); if( !aRefObj.IsNull() && !aRefObj->IsRemoved() ) { QString aName = aRefObj->GetName(); @@ -458,7 +428,7 @@ void HYDROGUI_Tool::GetObjectReferences( const Handle(HYDROData_Image)& theImage } void HYDROGUI_Tool::GetObjectBackReferences( HYDROGUI_Module* theModule, - const Handle(HYDROData_Object)& theObj, + const Handle(HYDROData_Entity)& theObj, HYDROData_SequenceOfObjects& theBackRefObjects, QStringList& theBackRefNames ) { @@ -508,7 +478,14 @@ QDockWidget* HYDROGUI_Tool::WindowDock( QWidget* wid ) QColor HYDROGUI_Tool::GenerateFillingColor( HYDROGUI_Module* theModule, const QStringList& theZoneNames ) { - QColor aFillingColor( HYDROData_Zone::DefaultFillingColor() ); + Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( theModule->getStudyId() ); + return GenerateFillingColor( aDocument, theZoneNames ); +} + +QColor HYDROGUI_Tool::GenerateFillingColor( const Handle(HYDROData_Document)& theDoc, + const QStringList& theZoneNames ) +{ + QColor aFillingColor( HYDROData_ImmersibleZone::DefaultFillingColor() ); int aCounter = 0; int aR = 0, aG = 0, aB = 0; @@ -516,8 +493,9 @@ QColor HYDROGUI_Tool::GenerateFillingColor( HYDROGUI_Module* theModule, while( aZoneNameIter.hasNext() ) { const QString& aZoneName = aZoneNameIter.next(); - Handle(HYDROData_Zone) aRefZone = Handle(HYDROData_Zone)::DownCast( - FindObjectByName( theModule, aZoneName, KIND_ZONE ) ); + Handle(HYDROData_ImmersibleZone) aRefZone = + Handle(HYDROData_ImmersibleZone)::DownCast( + HYDROData_Tool::FindObjectByName( theDoc, aZoneName, KIND_IMMERSIBLE_ZONE ) ); if( !aRefZone.IsNull() ) { QColor aRefColor = aRefZone->GetFillingColor();