#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"
QStringList anEntryList;
HYDROData_SequenceOfObjects aSeq = HYDROGUI_Tool::GetGeometryObjects( module() );
getNamesAndEntries( aSeq, aList, anEntryList );
+
+ QStringList List1;
+ QStringList EList1;
+
+ //add intersection polylines
+ AddInterPolylinesToList(aList, anEntryList);
+
aPanel->setAllGeomObjects( aList, anEntryList );
// Get all polylines
{
aPolylineObj = Handle(HYDROData_PolylineXY)::DownCast( anIter.Current() );
- if ( !aPolylineObj.IsNull() && aPolylineObj->IsClosed() )
+ if ( !aPolylineObj.IsNull() && aPolylineObj->IsClosed(false) )
{
- // Check the polyline shape
- TopoDS_Shape aPolylineShape = aPolylineObj->GetShape();
- if ( !aPolylineShape.IsNull() && aPolylineShape.ShapeType() == TopAbs_WIRE ) {
+// // Check the polyline shape
+// TopoDS_Shape aPolylineShape = aPolylineObj->GetShape();
+// if ( !aPolylineShape.IsNull() && aPolylineShape.ShapeType() == TopAbs_WIRE ) {
aPolylineName = aPolylineObj->GetName();
if ( !aPolylineName.isEmpty() )
{
aList.append( aPolylineName );
anEntryList.append( HYDROGUI_DataObject::dataObjectEntry( aPolylineObj ) );
}
- }
+// }
}
}
aPanel->setPolylineNames( aList, anEntryList );
aPanel->setObjectName( anObjectName );
aPanel->setEditedObject( myEditedObject );
+ setGeomObjectsVisible( true );
+
createPreview( false );
}
+void HYDROGUI_CalculationOp::AddInterPolylinesToList(QStringList& theList, QStringList& theEntryList)
+{
+ HYDROData_Iterator anIter( doc(), KIND_POLYLINEXY );
+ Handle(HYDROData_PolylineXY) aPolylineObj;
+ QString aPolylineName;
+ for ( ; anIter.More(); anIter.Next() )
+ {
+ aPolylineObj = Handle(HYDROData_PolylineXY)::DownCast( anIter.Current() );
+ if ( !aPolylineObj.IsNull())
+ {
+ aPolylineName = aPolylineObj->GetName();
+ if ( !aPolylineName.isEmpty() && !theList.contains(aPolylineName) )
+ {
+ theList.append( aPolylineName );
+ theEntryList.append(HYDROGUI_DataObject::dataObjectEntry( aPolylineObj ));
+ }
+ }
+ }
+}
+
void HYDROGUI_CalculationOp::getNamesAndEntries( const HYDROData_SequenceOfObjects& theSeq,
QStringList& theNames, QStringList& theEntries ) const
{
connect( aPanel, SIGNAL( Back( const int ) ), SLOT( onHideZones( const int ) ) );
//connect( aPanel, SIGNAL( clicked( SUIT_DataObject* ) ), SLOT( onSelected( SUIT_DataObject* ) ) );
connect( aPanel, SIGNAL( setMergeType( int, QString& ) ), SLOT( onSetMergeType( int, QString& ) ) );
- connect( aPanel, SIGNAL( moveZones( SUIT_DataObject*, const QList<SUIT_DataObject*>&, bool ) ),
- SLOT( onMoveZones( SUIT_DataObject*, const QList<SUIT_DataObject*>&, bool ) ) );
+ connect( aPanel, SIGNAL( moveZones( SUIT_DataObject*, const QList<SUIT_DataObject*>& ) ),
+ SLOT( onMoveZones( SUIT_DataObject*, const QList<SUIT_DataObject*>& ) ) );
connect( aPanel, SIGNAL( createRegion( const QList<SUIT_DataObject*>& ) ),
SLOT( onCreateRegion( const QList<SUIT_DataObject*>& ) ) );
connect( aPanel, SIGNAL( clickedInZonesBrowser( SUIT_DataObject* ) ),
SLOT( onClickedInZonesBrowser( SUIT_DataObject* ) ) );
connect( aPanel, SIGNAL( objectsSelected() ),
SLOT( onObjectsSelected() ) );
- connect( aPanel, SIGNAL( landCoversSelected() ),
- SLOT( onLandCoversSelected() ) );
- connect( aPanel, SIGNAL( createLandCoverRegion( const QList<SUIT_DataObject*>& ) ),
- SLOT( onCreateLandCoverRegion( const QList<SUIT_DataObject*>& ) ) );
+ connect( aPanel, SIGNAL( landCoverMapSelected( const QString & ) ),
+ SLOT( onLandCoverMapSelected( const QString & ) ) );
connect( aPanel, SIGNAL( boundarySelected( const QString & ) ),
SLOT( onBoundarySelected( const QString & ) ) );
connect( aPanel, SIGNAL( StricklerTableSelected( const QString & ) ),
{
bool anIsToUpdateViewer = false;
- /* TODO
- // Remove old presentations of land covers from the operation viewer
- Handle(HYDROData_Entity) anEntity;
- Handle(HYDROData_LandCover) aLandCover;
- HYDROData_SequenceOfObjects aLandCovers;
- HYDROData_SequenceOfObjects aSeq = myEditedObject->GetLandCovers();
- HYDROData_SequenceOfObjects::Iterator anIter( aSeq );
- for ( ; anIter.More(); anIter.Next() )
+ // Remove old presentation of land cover map from the operation viewer
+ Handle(HYDROData_LandCoverMap) aLandCoverMap = myEditedObject->GetLandCoverMap();
+ if ( !aLandCoverMap.IsNull() )
{
- anEntity = anIter.Value();
- if ( !anEntity.IsNull() )
- {
- aLandCover = Handle(HYDROData_LandCover)::DownCast( anEntity );
- if ( !aLandCover.IsNull() )
- {
- aLandCovers.Append( aLandCover );
- setObjectVisibility( aLandCover, false );
- anIsToUpdateViewer = true;
- }
- }
+ setObjectVisibility( aLandCoverMap, false );
+ anIsToUpdateViewer = true;
}
// Set the selected Strickler table to the calculation case
Handle(AIS_InteractiveContext) aCtx = aViewer->getAISContext();
if ( !aCtx.IsNull() )
{
- HYDROData_SequenceOfObjects::Iterator anIter( aLandCovers );
- for ( ; anIter.More(); anIter.Next() )
+ if ( !aLandCoverMap.IsNull() )
{
- anEntity = anIter.Value();
- if ( !anEntity.IsNull() )
- {
- aLandCover = Handle(HYDROData_LandCover)::DownCast( anEntity );
- if ( !aLandCover.IsNull() )
- {
- setObjectVisibility( aLandCover, true );
- anIsToUpdateViewer = true;
- }
- }
+ setObjectVisibility( aLandCoverMap, true );
+ anIsToUpdateViewer = true;
}
}
}
module()->update( UF_OCCViewer );
}
}
- */
}
void HYDROGUI_CalculationOp::onObjectsSelected()
aLastShape->update( true, false );
}
-void HYDROGUI_CalculationOp::onLandCoverMapSelected()
+void HYDROGUI_CalculationOp::onLandCoverMapSelected( const QString & theObjName )
{
- HYDROGUI_CalculationDlg* aPanel =
- ::qobject_cast<HYDROGUI_CalculationDlg*>( inputPanel() );
-
- /* TODO: highlight the selected land cover map in the 3d viewer (synchronize slection in the dialog with a preview in the viewer)
- QStringList aSelectedObjs = aPanel->getSelectedLandCovers();
- QMap<QString, bool> aSelectedObjsMap;
- foreach( QString aName, aSelectedObjs )
- aSelectedObjsMap[aName] = true;
- */
-
-
- // Select the appropriate land cover shape in the viewer
- selectionMgr()->clearSelected();
-
- // Unhighlight all land covers except selected
- HYDROGUI_Shape* aShape = 0, *aLastShape = 0;
- Handle(HYDROData_Entity) anEntity;
- /* TODO: highlight the selected land cover map in the 3d viewer (synchronize slection in the dialog with a preview in the viewer)
- HYDROData_SequenceOfObjects aSeq = myEditedObject->GetLandCovers();
- HYDROData_SequenceOfObjects::Iterator anIter( aSeq );
- bool isSelected;
- QString aName;
- for ( ; anIter.More(); anIter.Next() )
+ bool anIsToUpdateViewer = false;
+
+ // Remove old presentation of land cover map from the operation viewer
+ Handle(HYDROData_LandCoverMap) aPrevLandCoverMap = myEditedObject->GetLandCoverMap();
+ if ( !aPrevLandCoverMap.IsNull() )
{
- anEntity = anIter.Value();
- if ( !anEntity.IsNull() )
- {
- aShape = module()->getObjectShape( HYDROGUI_Module::VMR_PreviewCaseZones, anEntity );
- if ( aShape )
- {
- aName = anEntity->GetName();
- isSelected = aSelectedObjsMap.contains( aName );
- aShape->highlight( isSelected, false );
- aShape->update( false, false );
- aLastShape = aShape;
- }
- }
+ setObjectVisibility( aPrevLandCoverMap, false );
+ anIsToUpdateViewer = true;
}
- */
- // TODO
- //createPreview( true );
+ // Select the appropriate land cover map shape in the viewer
+ selectionMgr()->clearSelected();
- if( aLastShape )
- aLastShape->update( true, false );
+ // Set the selected land cover map to the calculation case
+ Handle(HYDROData_LandCoverMap) aNewLandCoverMap = Handle(HYDROData_LandCoverMap)::DownCast(
+ HYDROGUI_Tool::FindObjectByName( module(), theObjName, KIND_LAND_COVER_MAP ) );
+ myEditedObject->SetLandCoverMap( aNewLandCoverMap );
+
+ createPreview( true );
}
void HYDROGUI_CalculationOp::onClickedInZonesBrowser( SUIT_DataObject* theItem )
anAddedList.append( anObject->GetName() );
}
+ for (int i = 0; i < aSelectedList.length(); i++)
+ {
+ Handle(HYDROData_PolylineXY) aPoly = Handle(HYDROData_PolylineXY)::DownCast(
+ HYDROGUI_Tool::FindObjectByName( module(), aSelectedList.at( i ) ) );
+ if ( aPoly.IsNull() )
+ continue;
+
+ if ( myEditedObject->AddInterPoly( aPoly ) )
+ anAddedList.append( aPoly->GetName() );
+ }
+
if ( !anAddedList.isEmpty() )
{
aPanel->includeGeomObjects( anAddedList );
myEditedObject->RemoveGeometryObject( anObject );
}
+ for (int i = 0; i < aSelectedList.length(); i++)
+ {
+ Handle(HYDROData_PolylineXY) aPoly = Handle(HYDROData_PolylineXY)::DownCast(
+ HYDROGUI_Tool::FindObjectByName( module(), aSelectedList.at(i) ) );
+ if ( aPoly.IsNull() )
+ continue;
+
+ setObjectVisibility( aPoly, false );
+ myEditedObject->RemoveInterPolyObject ( aPoly );
+ }
+
module()->update( UF_OCCViewer );
aPanel->excludeGeomObjects( aSelectedList );
}
QStringList aList;
QStringList anEntryList;
- HYDROData_SequenceOfObjects aSeq;
- /* TODO: get all land cover map objects to fill in combo-box
+ // Get all land cover map objects to fill in combo-box
+ Handle(HYDROData_LandCoverMap) aLandCoverMapObj;
+ QString aLandCoverMapName;
+
+ aList.clear();
+ anEntryList.clear();
+ HYDROData_Iterator anIter( doc(), KIND_LAND_COVER_MAP );
+ for ( ; anIter.More(); anIter.Next() )
+ {
+ aLandCoverMapObj = Handle(HYDROData_LandCoverMap)::DownCast( anIter.Current() );
+
+ if ( !aLandCoverMapObj.IsNull() )
+ {
+ aLandCoverMapName = aLandCoverMapObj->GetName();
+ if ( !aLandCoverMapName.isEmpty() )
+ {
+ aList.append( aLandCoverMapName );
+ anEntryList.append( HYDROGUI_DataObject::dataObjectEntry( aLandCoverMapObj ) );
+ }
+ }
+ }
+ aPanel->setLandCoverMapsNames( aList, anEntryList );
+ aLandCoverMapObj = myEditedObject->GetLandCoverMap();
+ if ( !aList.isEmpty() )
+ {
+ if ( aLandCoverMapObj.IsNull() )
+ aPanel->setLandCoverMap( aList.at( 0 ), false );
+ else if ( myIsEdit )
+ aPanel->setLandCoverMap( aList.at( 0 ), true );
+ else
+ aPanel->setLandCoverMap( aList.at( aList.indexOf( aLandCoverMapObj->GetName() ) ), true );
+ }
+
+ // Get all Strickler table objects to fill in combo-box
Handle(HYDROData_StricklerTable) aStricklerTableObj;
QString aStricklerTableName;
- // Get all Strickler table objects to fill in combo-box
aList.clear();
anEntryList.clear();
- HYDROData_Iterator anIter( doc(), KIND_STRICKLER_TABLE );
+ anIter = HYDROData_Iterator( doc(), KIND_STRICKLER_TABLE );
for ( ; anIter.More(); anIter.Next() )
{
aStricklerTableObj = Handle(HYDROData_StricklerTable)::DownCast( anIter.Current() );
aStricklerTableName = aStricklerTableObj->GetName();
aPanel->setStricklerTable( aStricklerTableName );
}
+
+ // Select the certain land cover map object in combo-box
+ if ( aLandCoverMapObj.IsNull() )
+ {
+ aPanel->setLandCoverMap( QString() );
+ }
+ else
+ {
+ aLandCoverMapName = aLandCoverMapObj->GetName();
+ aPanel->setLandCoverMap( aLandCoverMapName );
+ }
}
}
- */
closePreview( false );
createPreview( true );
else if ( !theLandCoverMap && myShowGeomObjects )
{
HYDROData_SequenceOfObjects aSeqGO = myEditedObject->GetGeometryObjects();
+ HYDROData_SequenceOfObjects aSeqP = myEditedObject->GetInterPolyObjects();
aSeq.Append( aSeqGO );
+ aSeq.Append( aSeqP );
}
Handle(HYDROData_Entity) anEntity;