#include <HYDROData_ImmersibleZone.h>
#include <HYDROData_Tool.h>
+#include <GEOMBase.h>
+
#include <GraphicsView_Viewer.h>
+#include <SalomeApp_Study.h>
+
#include <LightApp_Application.h>
#include <LightApp_DataOwner.h>
#include <LightApp_SelectionMgr.h>
#include <SUIT_ViewManager.h>
#include <SUIT_ViewWindow.h>
+#include <SALOMEDSClient.hxx>
+
#include <QDir>
#include <QFileInfo>
#include <QDockWidget>
HYDROData_SequenceOfObjects& theSeq )
{
Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( theModule->getStudyId() );
- if( aDocument.IsNull() )
- return;
-
- HYDROData_Iterator anIterator( aDocument, KIND_IMAGE );
- for( ; anIterator.More(); anIterator.Next() )
- {
- Handle(HYDROData_Entity) anObject = anIterator.Current();
- if( !anObject.IsNull() )
- theSeq.Append( anObject );
- }
-
- anIterator = HYDROData_Iterator( aDocument, KIND_POLYLINE );
- for( ; anIterator.More(); anIterator.Next() )
+ if( !aDocument.IsNull() )
{
- Handle(HYDROData_Entity) anObject = anIterator.Current();
- if( !anObject.IsNull() )
- theSeq.Append( anObject );
- }
-
- anIterator = HYDROData_Iterator( aDocument, KIND_IMMERSIBLE_ZONE );
- for( ; anIterator.More(); anIterator.Next() )
- {
- Handle(HYDROData_Entity) anObject = anIterator.Current();
- if( !anObject.IsNull() )
- theSeq.Append( anObject );
+ HYDROData_Iterator anIterator( aDocument );
+ for( ; anIterator.More(); anIterator.Next() )
+ {
+ Handle(HYDROData_Entity) anObject = anIterator.Current();
+ if( !anObject.IsNull() && (
+ ( anObject->GetKind() == KIND_IMAGE ) ||
+ ( anObject->GetKind() == KIND_POLYLINE ) ||
+ ( anObject->GetKind() == KIND_IMMERSIBLE_ZONE ) ||
+ ( anObject->GetKind() == KIND_REGION ) ||
+ ( anObject->GetKind() == KIND_BATHYMETRY ) ||
+ ( anObject->GetKind() == KIND_ZONE ) ||
+ ( anObject->GetKind() == KIND_OBSTACLE ) ) )
+ {
+ theSeq.Append( anObject );
+ }
+ }
}
}
{
anEntry.remove( aPrefix );
for( ObjectKind anObjectKind = KIND_UNKNOWN + 1; anObjectKind <= KIND_LAST; anObjectKind++ )
- if( HYDROGUI_DataModel::partitionName( anObjectKind ) == anEntry )
+ if( HYDROGUI_DataModel::tr( HYDROGUI_DataModel::partitionName( anObjectKind ).toAscii() ) == anEntry )
return anObjectKind;
}
}
return KIND_UNKNOWN;
}
+QStringList HYDROGUI_Tool::GetSelectedGeomObjects( HYDROGUI_Module* theModule )
+{
+ QStringList anEntryList;
+
+ // Get active SalomeApp_Study
+ SalomeApp_Study* aStudy = NULL;
+ if ( theModule && theModule->getApp() ) {
+ aStudy = dynamic_cast<SalomeApp_Study*>( theModule->getApp()->activeStudy() );
+ }
+ if ( !aStudy ) {
+ return anEntryList;
+ }
+
+ // Get selection
+ SUIT_SelectionMgr* aSelectionMgr = theModule->getApp()->selectionMgr();
+ SUIT_DataOwnerPtrList anOwners;
+ aSelectionMgr->selected( anOwners );
+
+ // Check if the selected objects belong to GEOM and have a shape
+ foreach( SUIT_DataOwner* aSUITOwner, anOwners )
+ {
+ if( LightApp_DataOwner* anOwner = dynamic_cast<LightApp_DataOwner*>( aSUITOwner ) )
+ {
+ QString anEntry = anOwner->entry();
+ _PTR(SObject) aSObject( aStudy->studyDS()->FindObjectID(qPrintable(anEntry)) );
+ if (aSObject) {
+ _PTR(SComponent) aSComponent = aSObject->GetFatherComponent();
+ if ( aSComponent && aSComponent->ComponentDataType() == "GEOM" ) {
+ GEOM::GEOM_Object_var aGeomObj =
+ GEOMBase::GetObjectFromIOR( aSObject->GetIOR().c_str() );
+
+ if ( !aGeomObj->_is_nil() && aGeomObj->IsShape() ) {
+ anEntryList << anEntry;
+ }
+ }
+ }
+ }
+ }
+
+ return anEntryList;
+}
+
Handle(HYDROData_Entity) HYDROGUI_Tool::FindObjectByName( HYDROGUI_Module* theModule,
const QString& theName,
const ObjectKind theObjectKind )
QString HYDROGUI_Tool::GenerateObjectName( HYDROGUI_Module* theModule,
const QString& thePrefix,
- const QStringList& theUsedNames )
+ const QStringList& theUsedNames,
+ const bool theIsTryToUsePurePrefix)
{
Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( theModule->getStudyId() );
- return HYDROData_Tool::GenerateObjectName( aDocument, thePrefix, theUsedNames );
+ return HYDROData_Tool::GenerateObjectName( aDocument, thePrefix, theUsedNames, theIsTryToUsePurePrefix );
}
size_t HYDROGUI_Tool::GetActiveViewId( HYDROGUI_Module* theModule,
return aFillingColor;
}
+QStringList HYDROGUI_Tool::FindExistingObjectsNames( const Handle(HYDROData_Document)& theDoc,
+ const ObjectKind theObjectKind )
+{
+ QStringList aNames;
+
+ HYDROData_Iterator anIter( theDoc, theObjectKind );
+ for ( ; anIter.More(); anIter.Next() ) {
+ Handle(HYDROData_Entity) anObject = anIter.Current();
+ if( !anObject.IsNull() ) {
+ aNames.append( anObject->GetName() );
+ }
+ }
+
+ return aNames;
+}