HYDROGUI_StricklerTypeComboBox.h
HYDROGUI_SubmersibleOp.h
HYDROGUI_Tool.h
+ HYDROGUI_Tool2.h
HYDROGUI_TwoImagesDlg.h
HYDROGUI_TwoImagesOp.h
HYDROGUI_UpdateFlags.h
HYDROGUI_SplitPolylinesOp.cxx
HYDROGUI_SubmersibleOp.cxx
HYDROGUI_Tool.cxx
+ HYDROGUI_Tool2.cxx
HYDROGUI_TwoImagesDlg.cxx
HYDROGUI_TwoImagesOp.cxx
HYDROGUI_UpdateObjectOp.cxx
#include "HYDROGUI_DataModel.h"
#include "HYDROGUI_Module.h"
-#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include <SUIT_ViewManager.h>
#include <SUIT_ViewModel.h>
//
#include <HYDROGUI_BathymetryBoundsOp.h>
-#include <HYDROGUI_Tool.h>
+#include <HYDROGUI_Tool2.h>
#include <HYDROGUI_UpdateFlags.h>
#include <HYDROGUI_Module.h>
#include <HYDROGUI_DataObject.h>
#include "HYDROGUI_CalculationDlg.h"
#include "HYDROGUI_ObjSelector.h"
-#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include "HYDROGUI_DataBrowser.h"
#include "HYDROGUI_DataModel.h"
#include "HYDROGUI_ListSelector.h"
#include "HYDROGUI_DataModel.h"
#include "HYDROGUI_CalculationDlg.h"
#include "HYDROGUI_Module.h"
-#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include "HYDROGUI_UpdateFlags.h"
#include "HYDROGUI_Zone.h"
#include "HYDROGUI_Region.h"
#include "HYDROGUI_Module.h"
#include "HYDROGUI_Shape.h"
#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include "HYDROGUI_UpdateFlags.h"
#include <HYDROData_Iterator.h>
#include "HYDROGUI_DataObject.h"
#include "HYDROGUI_Module.h"
#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include "HYDROGUI_Zone.h"
#include "HYDROGUI_Region.h"
#include "HYDROGUI_DeleteDlg.h"
#include "HYDROGUI_Module.h"
#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include "HYDROGUI_UpdateFlags.h"
#include <HYDROData_Object.h>
// check the back-references
QMap<QString,HYDROData_SequenceOfObjects> aBackObjects =
- HYDROGUI_Tool::GetObjectsBackReferences( module(), anObjNames );
+ HYDROGUI_Tool::GetObjectsBackReferences( doc(), anObjNames );
QMap<QString,HYDROData_SequenceOfObjects>::const_iterator anIt = aBackObjects.begin(),
aLast = aBackObjects.end();
#include "HYDROGUI_DigueOp.h"
#include "HYDROGUI_DigueDlg.h"
-#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include "HYDROGUI_Shape.h"
#include <HYDROData_Document.h>
#include "HYDROGUI_PrsImageDriver.h"
#include "HYDROGUI_PrsPolylineDriver.h"
#include "HYDROGUI_PrsZoneDriver.h"
-#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include <CurveCreator_Utils.hxx>
#include "HYDROGUI_DataModel.h"
#include "HYDROGUI_Module.h"
-#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include <HYDROData_CalculationCase.h>
#include "HYDROGUI_DataModel.h"
#include "HYDROGUI_Module.h"
#include "HYDROGUI_UpdateFlags.h"
-#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include "HYDROGUI_ExportLandCoverMapDlg.h"
#include <HYDROData_PolylineXY.h>
#include <HYDROData_Polyline3D.h>
#include "HYDROGUI_ExportImageOp.h"
#include "HYDROGUI_Module.h"
-#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include <HYDROData_Image.h>
#include "HYDROGUI_DataObject.h"
#include "HYDROGUI_Module.h"
#include "HYDROGUI_Prs.h"
-#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include <GraphicsView_Object.h>
#include <GraphicsView_Selector.h>
#include "HYDROGUI_GeomObjectDlg.h"
-#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include <SUIT_FileDlg.h>
#include <SUIT_ResourceMgr.h>
#include "HYDROGUI_GeoreferencementDlg.h"
#include "HYDROGUI_DataModel.h"
#include "HYDROGUI_Module.h"
-#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include "HYDROGUI_UpdateFlags.h"
#include <HYDROData_Profile.h>
#include "HYDROGUI_Module.h"
#include "HYDROGUI_Shape.h"
#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include "HYDROGUI_UpdateFlags.h"
#include "HYDROGUI_DataObject.h"
#include "HYDROGUI_ImportBathymetryDlg.h"
#include "HYDROGUI_Module.h"
#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include "HYDROGUI_UpdateFlags.h"
#include <HYDROData_Bathymetry.h>
#include "HYDROGUI_DataModel.h"
#include "HYDROGUI_Module.h"
#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include "HYDROGUI_UpdateFlags.h"
#include <HYDROData_Obstacle.h>
#include "HYDROGUI_ImportImageDlg.h"
#include "HYDROGUI_Module.h"
#include "HYDROGUI_PrsImage.h"
-#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include "HYDROGUI_UpdateFlags.h"
#include <HYDROData_Iterator.h>
#include "HYDROGUI_DataModel.h"
#include "HYDROGUI_Module.h"
#include "HYDROGUI_UpdateFlags.h"
-#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include "HYDROGUI_ImportLandCoverMapDlg.h"
#include "HYDROGUI_Shape.h"
#include <HYDROGUI_ZLayers.h>
#include "HYDROGUI_DataModel.h"
#include "HYDROGUI_Module.h"
#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include "HYDROGUI_UpdateFlags.h"
#include <HYDROData_Obstacle.h>
#include "HYDROGUI_DataModel.h"
#include "HYDROGUI_Module.h"
#include "HYDROGUI_UpdateFlags.h"
-#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include <HYDROData_PolylineXY.h>
#include <HYDROData_Polyline3D.h>
#include <HYDROGUI_DataObject.h>
#include "HYDROGUI_DataModel.h"
#include "HYDROGUI_Module.h"
#include "HYDROGUI_UpdateFlags.h"
-#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include <HYDROData_PolylineXY.h>
#include <HYDROData_Polyline3D.h>
#include <HYDROGUI_DataObject.h>
#include "HYDROGUI_Module.h"
#include "HYDROGUI_OCCDisplayer.h"
#include "HYDROGUI_Operations.h"
-#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include "HYDROGUI_UpdateFlags.h"
#include <HYDROData_Iterator.h>
#include "HYDROGUI_OCCDisplayer.h"
#include "HYDROGUI_Operations.h"
#include "HYDROGUI_LandCoverMapDlg.h"
-#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include "HYDROGUI_UpdateFlags.h"
#include "HYDROGUI_DataObject.h"
#include "HYDROGUI_ShapeLandCoverMap.h"
#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"
//
#include "HYDROGUI_NameValidator.h"
-#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include "HYDROGUI_Module.h"
HYDROGUI_NameValidator::HYDROGUI_NameValidator( HYDROGUI_Module* theModule, QObject* parent )
#include "HYDROGUI_DataModel.h"
#include "HYDROGUI_Module.h"
-#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include <HYDROGUI_ShapeImage.h>
#include <HYDROGUI_ShapeBathymetry.h>
#include <HYDROGUI_ShapeLandCoverMap.h>
#include "HYDROGUI_ZLayers.h"
#include <HYDROData_Bathymetry.h>
+#include <HYDROData_Image.h>
#include <HYDROData_LandCoverMap.h>
#include <HYDROData_StricklerTable.h>
#include "HYDROGUI_ObjComboBox.h"
-#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include "HYDROGUI_Module.h"
#include <LightApp_Application.h>
#include <HYDROGUI_ObjListBox.h>
#include <HYDROGUI_ObjComboBox.h>
-#include <HYDROGUI_Tool.h>
+#include <HYDROGUI_Tool2.h>
#include <QGridLayout>
#include <QListWidget>
#include <QLabel>
#include "HYDROGUI_DataModel.h"
#include "HYDROGUI_Module.h"
-#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include <HYDROData_PolylineXY.h>
#include "HYDROGUI_Module.h"
#include "HYDROGUI_PrsImage.h"
-#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include "HYDROGUI_UpdateFlags.h"
#include <HYDROData_Image.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_Module.h"
#include <HYDROGUI_DataObject.h>
-#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include "HYDROGUI_Poly3DDlg.h"
#include "HYDROGUI_UpdateFlags.h"
#include <HYDROGUI_PolylineExtractionOp.h>
#include <HYDROGUI_Module.h>
-#include <HYDROGUI_Tool.h>
+#include <HYDROGUI_Tool2.h>
#include <HYDROGUI_UpdateFlags.h>
#include <HYDROData_Document.h>
#include <HYDROData_PolylineOperator.h>
#include "HYDROGUI_DataObject.h"
#include "HYDROGUI_PolylineDlg.h"
#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include "HYDROGUI_UpdateFlags.h"
#include <HYDROData_Document.h>
#include "HYDROGUI_ProfileInterpolateDlg.h"
-#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include "HYDROGUI_Module.h"
#include "HYDROGUI_ObjComboBox.h"
#include "HYDROGUI_OCCSelector.h"
#include <HYDROGUI_ProfileInterpolateOp.h>
#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include "HYDROGUI_Module.h"
#include "HYDROGUI_DataObject.h"
#include "HYDROGUI_UpdateFlags.h"
#include <HYDROGUI_Module.h>
#include <HYDROGUI_ProfileOp.h>
#include <HYDROGUI_ProfileDlg.h>
-#include <HYDROGUI_Tool.h>
+#include <HYDROGUI_Tool2.h>
#include <HYDROGUI_UpdateFlags.h>
#include <HYDROGUI_DataObject.h>
#include <HYDROData_Document.h>
#include "HYDROGUI_RecognizeContoursDlg.h"
#include "HYDROGUI_Module.h"
#include "HYDROGUI_Shape.h"
-#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include "HYDROGUI_UpdateFlags.h"
#include "HYDROGUI_OCCSelector.h"
#include "HYDROGUI_ZLayers.h"
#include "HYDROGUI_RemoveImageRefsOp.h"
#include "HYDROGUI_Module.h"
-#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include "HYDROGUI_UpdateFlags.h"
#include <HYDROData_Document.h>
#include "HYDROGUI_DataObject.h"
#include "HYDROGUI_Module.h"
#include "HYDROGUI_Shape.h"
-#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include "HYDROGUI_UpdateFlags.h"
#include <HYDROData_River.h>
#include "HYDROGUI_ColorDlg.h"
#include "HYDROGUI_DataModel.h"
#include "HYDROGUI_Module.h"
-#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include "HYDROGUI_UpdateFlags.h"
#include <HYDROData_Object.h>
#include "HYDROGUI_TransparencyDlg.h"
#include "HYDROGUI_Module.h"
-#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include "HYDROGUI_UpdateFlags.h"
#include <LightApp_Application.h>
#include "HYDROGUI_Module.h"
#include "HYDROGUI_OCCDisplayer.h"
#include "HYDROGUI_Operations.h"
-#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include "HYDROGUI_UpdateFlags.h"
#include <HYDROData_Iterator.h>
#include <HYDROGUI_SplitPolylinesDlg.h>
#include <HYDROGUI_ObjComboBox.h>
#include <HYDROGUI_ObjListBox.h>
-#include <HYDROGUI_Tool.h>
+#include <HYDROGUI_Tool2.h>
#include <OCCViewer_ViewManager.h>
#include <OCCViewer_ViewWindow.h>
#include <OCCViewer_ViewPort3d.h>
#include "HYDROGUI_ListSelector.h"
#include "HYDROGUI_Module.h"
#include "HYDROGUI_OrderedListWidget.h"
-#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include <HYDROData_Profile.h>
#include "HYDROGUI_Shape.h"
#include "HYDROGUI_StreamDlg.h"
#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include "HYDROGUI_UpdateFlags.h"
#include <HYDROData_Document.h>
#include "HYDROGUI_Module.h"
#include "HYDROGUI_OCCDisplayer.h"
#include "HYDROGUI_Operations.h"
-#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include "HYDROGUI_UpdateFlags.h"
#include <HYDROData_Document.h>
//
#include <HYDROGUI_SubmersibleOp.h>
-#include <HYDROGUI_Tool.h>
+#include <HYDROGUI_Tool2.h>
#include <HYDROGUI_Module.h>
HYDROGUI_SubmersibleOp::HYDROGUI_SubmersibleOp( HYDROGUI_Module* theModule )
--- /dev/null
+// Copyright (C) 2014-2015 EDF-R&D
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#include <HYDROGUI_Tool2.h>
+#include <HYDROGUI_DataModel.h>
+#include <HYDROGUI_DataObject.h>
+#include <HYDROGUI_Module.h>
+#include <HYDROGUI_Prs.h>
+#include <HYDROData_Document.h>
+#include <HYDROData_ImmersibleZone.h>
+#include <HYDROData_Iterator.h>
+#include <HYDROData_Tool.h>
+
+#include <GeometryGUI.h>
+#include <GEOMBase.h>
+
+#include <SalomeApp_Study.h>
+#include <LightApp_Application.h>
+#include <LightApp_DataOwner.h>
+#include <LightApp_SelectionMgr.h>
+#include <OCCViewer_ViewModel.h>
+#include <OCCViewer_ViewFrame.h>
+#include <SVTK_ViewModel.h>
+#include <GraphicsView_Viewer.h>
+#include <GraphicsView_ViewPort.h>
+#include <STD_TabDesktop.h>
+#include <SUIT_Session.h>
+#include <SUIT_ViewManager.h>
+#include <SUIT_ViewWindow.h>
+#include <QtxActionToolMgr.h>
+#include <QtxWorkstack.h>
+
+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;
+}
+
+
+
+void HYDROGUI_Tool::SetActiveViewManager( HYDROGUI_Module* theModule,
+ SUIT_ViewManager* theViewManager )
+{
+ if( theViewManager )
+ if( SUIT_ViewWindow* aViewWindow = theViewManager->getActiveView() )
+ if( STD_TabDesktop* aTabDesktop = dynamic_cast<STD_TabDesktop*>( theModule->getApp()->desktop() ) )
+ if( QtxWorkstack* aWorkstack = aTabDesktop->workstack() )
+ aWorkstack->setActiveWindow( aViewWindow );
+}
+
+
+bool HYDROGUI_Tool::IsObjectHasPresentation( const Handle(HYDROData_Entity)& theObject,
+ const QString& theViewerType )
+{
+ if ( theObject.IsNull() )
+ return false;
+
+ ObjectKind anObjectKind = theObject->GetKind();
+ if ( theViewerType.isEmpty() || theViewerType == OCCViewer_Viewer::Type() )
+ {
+ if ( anObjectKind == KIND_IMAGE ||
+ anObjectKind == KIND_POLYLINEXY ||
+ anObjectKind == KIND_POLYLINE ||
+ anObjectKind == KIND_IMMERSIBLE_ZONE ||
+ anObjectKind == KIND_REGION ||
+ anObjectKind == KIND_ZONE ||
+ anObjectKind == KIND_OBSTACLE ||
+ anObjectKind == KIND_PROFILE ||
+ anObjectKind == KIND_STREAM ||
+ anObjectKind == KIND_CHANNEL ||
+ anObjectKind == KIND_DIGUE ||
+ anObjectKind == KIND_DUMMY_3D ||
+ anObjectKind == KIND_BATHYMETRY ||
+ anObjectKind == KIND_LAND_COVER_MAP
+#ifdef DEB_GROUPS
+ || anObjectKind == KIND_SHAPES_GROUP ||
+ anObjectKind == KIND_SPLITTED_GROUP
+#endif
+ )
+ {
+ return true;
+ }
+ }
+
+ if ( theViewerType.isEmpty() || theViewerType == SVTK_Viewer::Type() )
+ {
+ if ( anObjectKind == KIND_BATHYMETRY )
+ return true;
+ }
+
+ if ( theViewerType.isEmpty() || theViewerType == GraphicsView_Viewer::Type() )
+ {
+ if ( anObjectKind == KIND_IMAGE ||
+ anObjectKind == KIND_POLYLINEXY )
+ return true;
+ }
+
+ return false;
+}
+
+void HYDROGUI_Tool::GetPrsSubObjects( HYDROGUI_Module* theModule,
+ HYDROData_SequenceOfObjects& theSeq )
+{
+ Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( theModule->getStudyId() );
+ if( !aDocument.IsNull() )
+ {
+ HYDROData_Iterator anIterator( aDocument );
+ for( ; anIterator.More(); anIterator.Next() )
+ {
+ Handle(HYDROData_Entity) anObject = anIterator.Current();
+ if ( !IsObjectHasPresentation( anObject ) )
+ continue;
+
+ theSeq.Append( anObject );
+ }
+ }
+}
+
+HYDROGUI_Prs* HYDROGUI_Tool::GetPresentation( const Handle(HYDROData_Entity)& theObj,
+ const GraphicsView_ObjectList& theObjects )
+{
+ if( !theObj.IsNull() )
+ {
+ GraphicsView_ObjectListIterator anIter( theObjects );
+ while( anIter.hasNext() )
+ {
+ if( HYDROGUI_Prs* aPrs = dynamic_cast<HYDROGUI_Prs*>( anIter.next() ) )
+ {
+ Handle(HYDROData_Entity) anObj = aPrs->getObject();
+ if( IsEqual( anObj, theObj ) )
+ return aPrs;
+ }
+ }
+ }
+ return NULL;
+}
+
+GraphicsView_ObjectList HYDROGUI_Tool::GetPrsList( GraphicsView_ViewPort* theViewPort )
+{
+ GraphicsView_ObjectList aList;
+ if( theViewPort )
+ {
+ GraphicsView_ObjectListIterator anIter( theViewPort->getObjects() );
+ while( anIter.hasNext() )
+ if( HYDROGUI_Prs* aPrs = dynamic_cast<HYDROGUI_Prs*>( anIter.next() ) )
+ aList.append( aPrs );
+ }
+ return aList;
+}
+
+
+
+HYDROData_SequenceOfObjects HYDROGUI_Tool::GetSelectedObjects( HYDROGUI_Module* theModule )
+{
+ HYDROData_SequenceOfObjects aSeq;
+
+ HYDROGUI_DataModel* aModel = theModule->getDataModel();
+
+ SUIT_SelectionMgr* aSelectionMgr = theModule->getApp()->selectionMgr();
+ SUIT_DataOwnerPtrList anOwners;
+ aSelectionMgr->selected( anOwners );
+
+ QStringList aCollectedNameList; // to avoid duplication
+ foreach( SUIT_DataOwner* aSUITOwner, anOwners )
+ {
+ if( LightApp_DataOwner* anOwner = dynamic_cast<LightApp_DataOwner*>( aSUITOwner ) )
+ {
+ Handle(HYDROData_Entity) anObject = aModel->objectByEntry( anOwner->entry() );
+ if( !anObject.IsNull() )
+ {
+ QString aName = anObject->GetName();
+ if( !aCollectedNameList.contains( aName ) )
+ {
+ aSeq.Append( anObject );
+ aCollectedNameList.append( aName );
+ }
+ }
+ }
+ }
+ return aSeq;
+}
+
+Handle(HYDROData_Entity) HYDROGUI_Tool::GetSelectedObject( HYDROGUI_Module* theModule )
+{
+ HYDROData_SequenceOfObjects aSeq = GetSelectedObjects( theModule );
+ if( !aSeq.IsEmpty() )
+ return aSeq.First();
+ return NULL;
+}
+
+HYDROData_SequenceOfObjects HYDROGUI_Tool::GetGeometryObjects( HYDROGUI_Module* theModule )
+{
+ Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( theModule->getStudyId() );
+
+ HYDROData_SequenceOfObjects aResSeq;
+
+ HYDROData_Iterator anIter( aDocument );
+ for ( ; anIter.More(); anIter.Next() )
+ {
+ Handle(HYDROData_Entity) anObj = anIter.Current();
+ if ( !HYDROData_Tool::IsGeometryObject( anObj ) )
+ continue;
+
+ aResSeq.Append( anObj );
+ }
+
+ return aResSeq;
+}
+
+ObjectKind HYDROGUI_Tool::GetSelectedPartition( HYDROGUI_Module* theModule )
+{
+ HYDROGUI_DataModel* aModel = theModule->getDataModel();
+
+ SUIT_SelectionMgr* aSelectionMgr = theModule->getApp()->selectionMgr();
+ SUIT_DataOwnerPtrList anOwners;
+ aSelectionMgr->selected( anOwners );
+
+ if( anOwners.size() != 1 )
+ return KIND_UNKNOWN;
+
+ if( LightApp_DataOwner* anOwner = dynamic_cast<LightApp_DataOwner*>( anOwners.first().operator->() ) )
+ {
+ QString anEntry = anOwner->entry();
+ QString aPrefix = HYDROGUI_DataObject::entryPrefix();
+ if( anEntry.left( aPrefix.length() ) == aPrefix )
+ {
+ anEntry.remove( aPrefix );
+ for( ObjectKind anObjectKind = KIND_UNKNOWN + 1; anObjectKind <= KIND_LAST; anObjectKind++ )
+ if( HYDROGUI_DataModel::tr( HYDROGUI_DataModel::partitionName( anObjectKind ).toAscii() ) == anEntry )
+ return anObjectKind;
+ }
+ }
+ return KIND_UNKNOWN;
+}
+
+
+
+
+QStringList HYDROGUI_Tool::GetSelectedGeomObjects( HYDROGUI_Module* theModule,
+ QList<GEOM::shape_type> theTypes )
+{
+ 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() &&
+ theTypes.contains( aGeomObj->GetShapeType() ) ) {
+ anEntryList << anEntry;
+ }
+ }
+ }
+ }
+ }
+
+ return anEntryList;
+}
+
+Handle(HYDROData_Entity) HYDROGUI_Tool::FindObjectByName( HYDROGUI_Module* theModule,
+ const QString& theName,
+ const ObjectKind theObjectKind )
+{
+ Handle(HYDROData_Entity) aResObj;
+
+ Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( theModule->getStudyId() );
+ if ( !aDocument.IsNull() )
+ aResObj = aDocument->FindObjectByName( theName, theObjectKind );
+
+ return aResObj;
+}
+
+HYDROData_SequenceOfObjects HYDROGUI_Tool::FindObjectsByNames( HYDROGUI_Module* theModule,
+ const QStringList& theNames,
+ const ObjectKind theObjectKind )
+{
+ HYDROData_SequenceOfObjects aResSeq;
+
+ Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( theModule->getStudyId() );
+ if ( !aDocument.IsNull() )
+ aResSeq = aDocument->FindObjectsByNames( theNames, theObjectKind );
+
+ return aResSeq;
+}
+
+QString HYDROGUI_Tool::GenerateObjectName( HYDROGUI_Module* theModule,
+ const QString& thePrefix,
+ const QStringList& theUsedNames,
+ const bool theIsTryToUsePurePrefix)
+{
+ Handle(HYDROData_Document) aDocument = HYDROData_Document::Document( theModule->getStudyId() );
+ return HYDROData_Tool::GenerateObjectName( aDocument, thePrefix, theUsedNames, theIsTryToUsePurePrefix );
+}
+
+size_t HYDROGUI_Tool::GetActiveViewId( HYDROGUI_Module* theModule,
+ const QString& theViewId )
+{
+ size_t aViewId = 0;
+ SUIT_ViewManager* aViewMgr = theModule->getApp()->activeViewManager();
+ if( !aViewMgr || ( !theViewId.isEmpty() && aViewMgr->getType() != theViewId ) )
+ return aViewId;
+
+ if( SUIT_ViewModel* aViewer = aViewMgr->getViewModel() )
+ aViewId = (size_t)aViewer;
+ return aViewId;
+}
+
+size_t HYDROGUI_Tool::GetActiveGraphicsViewId( HYDROGUI_Module* theModule )
+{
+ return GetActiveViewId( theModule, GraphicsView_Viewer::Type() );
+}
+
+size_t HYDROGUI_Tool::GetActiveOCCViewId( HYDROGUI_Module* theModule )
+{
+ return GetActiveViewId( theModule, OCCViewer_Viewer::Type() );
+}
+
+QList<size_t> getViewIdList( HYDROGUI_Module* theModule,
+ const QString& theViewId )
+{
+ QList<size_t> aList;
+ ViewManagerList aViewMgrs;
+ theModule->getApp()->viewManagers( theViewId, aViewMgrs );
+ QListIterator<SUIT_ViewManager*> anIter( aViewMgrs );
+ while( anIter.hasNext() )
+ {
+ if( SUIT_ViewManager* aViewMgr = anIter.next() )
+ {
+ if( SUIT_ViewModel* aViewer = aViewMgr->getViewModel() )
+ aList.append( (size_t)aViewer );
+ }
+ }
+ return aList;
+}
+
+QList<size_t> HYDROGUI_Tool::GetGraphicsViewIdList( HYDROGUI_Module* theModule )
+{
+ return getViewIdList( theModule, GraphicsView_Viewer::Type() );
+}
+
+QList<size_t> HYDROGUI_Tool::GetOCCViewIdList( HYDROGUI_Module* theModule )
+{
+ return getViewIdList( theModule, OCCViewer_Viewer::Type() );
+}
+
+void HYDROGUI_Tool::setOCCActionShown( OCCViewer_ViewFrame* theViewFrame,
+ const int theActionId,
+ const bool isShown )
+{
+ if ( !theViewFrame )
+ return;
+
+ OCCViewer_ViewWindow* aView = theViewFrame->getView( OCCViewer_ViewFrame::MAIN_VIEW );
+ if ( aView ) {
+ aView->toolMgr()->setShown( theActionId, isShown );
+ if ( theActionId == OCCViewer_ViewWindow::MaximizedId )
+ theViewFrame->onMaximizedView( aView, true );
+ }
+}
+
+void HYDROGUI_Tool::setOCCActionShown( HYDROGUI_Module* theModule,
+ const int theActionId,
+ const bool isShown )
+{
+ QList<size_t> aList;
+ ViewManagerList aViewMgrs;
+ theModule->getApp()->viewManagers( OCCViewer_Viewer::Type(), aViewMgrs );
+ QListIterator<SUIT_ViewManager*> anIter( aViewMgrs );
+ while( anIter.hasNext() )
+ {
+ if( SUIT_ViewManager* aViewMgr = anIter.next() )
+ {
+ OCCViewer_ViewFrame* aViewFrame = dynamic_cast<OCCViewer_ViewFrame*>
+ ( aViewMgr->getActiveView() );
+ if ( aViewFrame )
+ setOCCActionShown( aViewFrame, theActionId, isShown );
+ }
+ }
+}
+
+
+
+QColor HYDROGUI_Tool::GenerateFillingColor( HYDROGUI_Module* theModule,
+ const QStringList& theZoneNames )
+{
+ 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( Qt::darkBlue );
+
+ int aCounter = 0;
+ int aR = 0, aG = 0, aB = 0;
+ QStringListIterator aZoneNameIter( theZoneNames );
+ while( aZoneNameIter.hasNext() )
+ {
+ const QString& aZoneName = aZoneNameIter.next();
+ Handle(HYDROData_ImmersibleZone) aRefZone =
+ Handle(HYDROData_ImmersibleZone)::DownCast( theDoc->FindObjectByName( aZoneName, KIND_IMMERSIBLE_ZONE ) );
+ if( !aRefZone.IsNull() )
+ {
+ QColor aRefColor = aRefZone->GetFillingColor();
+ aR += aRefColor.red();
+ aG += aRefColor.green();
+ aB += aRefColor.blue();
+ aCounter++;
+ }
+ }
+
+ if( aCounter > 0 )
+ {
+ aFillingColor = QColor( aR / aCounter, aG / aCounter, aB / aCounter );
+ }
+
+ return aFillingColor;
+}
+
+
+
+void HYDROGUI_Tool::DeleteGeomObjects( HYDROGUI_Module* theModule, const QStringList& theEntries )
+{
+ 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;
+ }
+
+ // Get GEOM engine
+ GEOM::GEOM_Gen_var aGeomEngine = GeometryGUI::GetGeomGen();
+ if ( aGeomEngine->_is_nil() ) {
+ return;
+ }
+
+ // Delete GEOM objects
+ _PTR(StudyBuilder) aStudyBuilder( aStudy->studyDS()->NewBuilder() );
+ foreach ( const QString anEntry, theEntries ) {
+ _PTR(SObject) aSObject( aStudy->studyDS()->FindObjectID( qPrintable(anEntry) ) );
+ if ( aSObject ) {
+ GEOM::GEOM_Object_var aGeomObj =
+ GEOMBase::GetObjectFromIOR( aSObject->GetIOR().c_str() );
+
+ if ( !aGeomObj->_is_nil() ) {
+ aGeomEngine->RemoveObject( aGeomObj );
+ }
+
+ aStudyBuilder->RemoveObject( aSObject );
+ }
+ }
+}
--- /dev/null
+// Copyright (C) 2014-2015 EDF-R&D
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#ifndef HYDROGUI_TOOL2_H
+#define HYDROGUI_TOOL2_H
+
+#include <HYDROData_Entity.h>
+#include <GraphicsView_Defs.h>
+#include <QStringList>
+
+// IDL includes
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(GEOM_Gen)
+#endif
+
+class HYDROGUI_Module;
+class HYDROGUI_Prs;
+class SUIT_ViewManager;
+class GraphicsView_ViewPort;
+class OCCViewer_ViewFrame;
+class Handle_HYDROData_Document;
+
+namespace HYDROGUI_Tool
+{
+ int GetActiveStudyId();
+
+ void SetActiveViewManager( HYDROGUI_Module* theModule,
+ SUIT_ViewManager* theViewManager );
+
+ void GetPrsSubObjects( HYDROGUI_Module* theModule,
+ HYDROData_SequenceOfObjects& theSeq );
+
+ HYDROGUI_Prs* GetPresentation( const Handle(HYDROData_Entity)& theObj,
+ const GraphicsView_ObjectList& theObjects );
+
+ GraphicsView_ObjectList GetPrsList( GraphicsView_ViewPort* theViewPort );
+
+ HYDROData_SequenceOfObjects GetSelectedObjects( HYDROGUI_Module* theModule );
+
+ bool IsObjectHasPresentation( const Handle_HYDROData_Entity& theObject,
+ const QString& theViewerType = "" );
+
+ Handle(HYDROData_Entity) GetSelectedObject( HYDROGUI_Module* theModule );
+
+ HYDROData_SequenceOfObjects GetGeometryObjects( HYDROGUI_Module* theModule );
+
+ ObjectKind GetSelectedPartition( HYDROGUI_Module* theModule );
+
+ Handle(HYDROData_Entity) FindObjectByName( HYDROGUI_Module* theModule,
+ const QString& theName,
+ const ObjectKind theObjectKind = KIND_UNKNOWN );
+
+ HYDROData_SequenceOfObjects FindObjectsByNames( HYDROGUI_Module* theModule,
+ const QStringList& theNames,
+ const ObjectKind theObjectKind = KIND_UNKNOWN );
+
+ QString GenerateObjectName( HYDROGUI_Module* theModule,
+ const QString& thePrefix,
+ const QStringList& theUsedNames = QStringList(),
+ const bool theIsTryToUsePurePrefix = false );
+
+ size_t GetActiveViewId( HYDROGUI_Module* theModule,
+ const QString& theViewId = QString() );
+
+ size_t GetActiveGraphicsViewId( HYDROGUI_Module* theModule );
+
+ size_t GetActiveOCCViewId( HYDROGUI_Module* theModule );
+
+ QList<size_t> GetGraphicsViewIdList( HYDROGUI_Module* theModule );
+
+ QList<size_t> GetOCCViewIdList( HYDROGUI_Module* theModule );
+
+ void setOCCActionShown( OCCViewer_ViewFrame* theViewFrame,
+ const int theActionId,
+ const bool isShown );
+
+ void setOCCActionShown( HYDROGUI_Module* theModule,
+ const int theActionId,
+ const bool isShown );
+
+ QColor GenerateFillingColor( HYDROGUI_Module* theModule, const QStringList& theZoneNames );
+
+ QColor GenerateFillingColor( const Handle_HYDROData_Document& theDoc,
+ const QStringList& theZoneNames );
+
+ QStringList GetSelectedGeomObjects( HYDROGUI_Module* theModule,
+ QList<GEOM::shape_type> theTypes );
+
+ void DeleteGeomObjects( HYDROGUI_Module* theModule, const QStringList& theEntries );
+};
#include "HYDROGUI_TranslateObstacleDlg.h"
#include "HYDROGUI_Module.h"
#include "HYDROGUI_Shape.h"
-#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include "HYDROGUI_UpdateFlags.h"
#include <HYDROData_ShapesTool.h>
#include "HYDROGUI_TwoImagesOp.h"
#include "HYDROGUI_Module.h"
-#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include "HYDROGUI_TwoImagesDlg.h"
#include "HYDROGUI_UpdateFlags.h"
#include <HYDROGUI_DataObject.h>
#include "HYDROGUI_UpdateObjectOp.h"
#include "HYDROGUI_Module.h"
-#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include "HYDROGUI_UpdateFlags.h"
#include <HYDROData_Document.h>
#include "HYDROGUI_VisualStateOp.h"
#include "HYDROGUI_Module.h"
-#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include "HYDROGUI_UpdateFlags.h"
#include <HYDROData_Document.h>
#include "HYDROGUI_ZLevelsDlg.h"
#include "HYDROGUI_DataModel.h"
#include "HYDROGUI_Module.h"
-#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
#include "HYDROGUI_UpdateFlags.h"
#include "HYDROGUI_ListSelector.h"