-// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2014-2016 CEA/DEN, EDF R&D, OPEN CASCADE
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
#include <SalomeApp_Study.h>
#include <QtxActionToolMgr.h>
#include <LightApp_SelectionMgr.h>
-#include <SALOME_ListIteratorOfListIO.hxx>
+#include <SALOME_ListIO.hxx>
// GEOM includes
#include <GEOMBase.h>
updateModel( true, false );
}
+//=================================================================================
+// function : resizeEvent()
+// purpose : reimplemented from QGraphicsView::resizeEvent()
+//=================================================================================
+void DependencyTree_View::resizeEvent(QResizeEvent *event)
+{
+ QPointF aCenter = mapToScene( event->oldSize().width()/2,
+ event->oldSize().height()/2 );
+ QGraphicsView::resizeEvent( event );
+ centerOn( aCenter.x(),aCenter.y() );
+}
+
//=================================================================================
// function : onUpdateModel()
// purpose : slot for updating tree model for main objects in viewer
std::string objectEntry = i->first;
addNode( objectEntry );
parseTreeWard( i->second.first );
- if( i->second.first.size() > myMaxUpwardLevelsNumber )
+ if((int) i->second.first.size() > myMaxUpwardLevelsNumber )
myMaxUpwardLevelsNumber = i->second.first.size();
parseTreeWard( i->second.second );
- if( i->second.second.size() > myMaxDownwardLevelsNumber )
+ if((int) i->second.second.size() > myMaxDownwardLevelsNumber )
myMaxDownwardLevelsNumber = i->second.second.size();
}
GEOMUtils::LevelInfo::const_iterator node;
for( node = Levelup.begin(); node != Levelup.end(); node++ ) {
DependencyTree_Object* object = myTreeMap[ node->first ];
- addArrow( Main_object, object );
+ addArrow( object, Main_object );
}
}
parseTreeWardArrow( i->second.first );
//=================================================================================
void DependencyTree_View::parseTreeWardArrow( const GEOMUtils::LevelsList& theWard)
{
- for( int j = 0; j < theWard.size(); j++ ) {
+ for( size_t j = 0; j < theWard.size(); j++ ) {
GEOMUtils::LevelInfo Level = theWard.at(j);
GEOMUtils::LevelInfo::const_iterator node;
for( node = Level.begin(); node != Level.end(); node++ ) {
DependencyTree_Object* object = myTreeMap[ node->first ];
std::vector<std::string> Links = node->second;
- for( int link = 0; link < Links.size(); link++ ) {
+ for( size_t link = 0; link < Links.size(); link++ ) {
DependencyTree_Object* LinkObject = myTreeMap[ Links[ link ] ];
if( object && LinkObject )
- addArrow( object, LinkObject );
+ addArrow( LinkObject, object );
}
}
}
std::map< int, std::vector< std::string > >::const_iterator level;
for( level = levelObjects.begin(); level != levelObjects.end(); level++ ) {
int step = -horDistance * ( int(level->second.size()) - 1 ) / 2;
- for( int objIter = 0; objIter < level->second.size(); objIter++ ) {
+ for( size_t objIter = 0; objIter < level->second.size(); objIter++ ) {
DependencyTree_Object* anObject = myTreeMap[ level->second.at( objIter ) ];
anObject->setPos( step, verDistance * level->first );
step += horDistance;
for( node = Levelup.begin(); node != Levelup.end(); node++ ) {
DependencyTree_Object* object = myTreeMap[ node->first ];
DependencyTree_Arrow* arrow =
- myArrows[ std::pair<DependencyTree_Object*,DependencyTree_Object*>( Main_object, object )];
+ myArrows[ std::pair<DependencyTree_Object*,DependencyTree_Object*>( object, Main_object )];
if( arrow && !isItemAdded( arrow ) )
addItem( arrow );
}
std::map< int, std::vector< std::string > >& theLevelObjects,
int theCurrentLevel, const int theLevelStep )
{
- for( int level = 0; level < theWard.size(); level++ ) {
+ for( int level = 0, size = theWard.size(); level < size; level++ ) {
if( level >= myLevelsNumber )
return;
theCurrentLevel += theLevelStep;
//=================================================================================
void DependencyTree_View::drawWardArrows( const GEOMUtils::LevelsList& theWard )
{
- for( int j = 0; j < theWard.size(); j++ ) {
+ for( int j = 0, size = theWard.size(); j < size; j++ ) {
if( j >= myLevelsNumber )
break;
GEOMUtils::LevelInfo Level = theWard.at(j);
for( node = Level.begin(); node != Level.end(); node++ ) {
DependencyTree_Object* object = myTreeMap[ node->first ];
GEOMUtils::NodeLinks Links = node->second;
- for( int link = 0; link < Links.size(); link++ ) {
+ for( size_t link = 0; link < Links.size(); link++ ) {
DependencyTree_Object* LinkObject = myTreeMap[ Links[ link ] ];
if( isItemAdded( object ) && isItemAdded( LinkObject ) ) {
- DependencyTree_Arrow* arrow = myArrows[ std::pair<DependencyTree_Object*,DependencyTree_Object*>( object, LinkObject ) ];
+ DependencyTree_Arrow* arrow = myArrows[ std::pair<DependencyTree_Object*,DependencyTree_Object*>( LinkObject, object ) ];
if( arrow && !isItemAdded( arrow ) )
addItem( arrow );
}
return;
drawTree();
- fitAll();
+ fitWindow();
}
//=================================================================================
}
}
+//=================================================================================
+// function : fitWindow()
+// purpose : scale the window considering a size of scene
+//=================================================================================
+void DependencyTree_View::fitWindow()
+{
+ int sizeFactor = 4;
+ if( objectsBoundingRect(true).width() > sizeFactor*size().width() ||
+ objectsBoundingRect(true).height() > sizeFactor*size().width() ) {
+ QRectF aRect = QRectF( -sizeFactor*size().width()/2, -sizeFactor*size().height()/2,
+ sizeFactor*size().width(), sizeFactor*size().height() );
+ fitInView( aRect, Qt::KeepAspectRatio );
+ }
+ else
+ fitAll();
+}
+
//=================================================================================
// function : getNewTreeModel()
// purpose : get dependency tree model from engine
return myMaxUpwardLevelsNumber;
else if( myDisplayDescendants->isChecked() )
return myMaxDownwardLevelsNumber;
+ return 0;
}