X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROGUI%2FHYDROGUI_Tool.cxx;h=6fa0a831763a9d609337a80d3af710112010d522;hb=5cae7e874afd2fc1b6f61023e8ebd33a933db3c7;hp=27d50dcb8b481af27295cdfb3449fb4026457744;hpb=41f291766eb87fc4ed3871fc89d3371581b8014d;p=modules%2Fhydro.git diff --git a/src/HYDROGUI/HYDROGUI_Tool.cxx b/src/HYDROGUI/HYDROGUI_Tool.cxx index 27d50dcb..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,12 +138,52 @@ Handle(TCollection_HExtendedString) HYDROGUI_Tool::ToHExtString( const QString& return new TCollection_HExtendedString( ToExtString( src ) ); } -bool HYDROGUI_Tool::IsEqual( const Handle(HYDROData_Object)& theObj1, - const Handle(HYDROData_Object)& theObj2 ) +int HYDROGUI_Tool::GetActiveStudyId() +{ + if( SUIT_Session* aSession = SUIT_Session::session() ) + if( SUIT_Application* anApp = aSession->activeApplication() ) + if( SUIT_Study* aStudy = anApp->activeStudy() ) + return aStudy->id(); + return 0; +} + +QString HYDROGUI_Tool::GetTempDir( const bool theToCreate ) { - if( !theObj1.IsNull() && !theObj2.IsNull() ) - return theObj1->Label() == theObj2->Label(); //ouv: check that the names can be used here - return false; + QString aRes; + + 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; + + return aRes; } void HYDROGUI_Tool::SetActiveViewManager( HYDROGUI_Module* theModule, @@ -162,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 ); } @@ -170,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() ) @@ -194,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; } @@ -231,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(); @@ -246,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() ) @@ -280,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, @@ -415,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(); @@ -435,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 ) { @@ -485,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; @@ -493,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();