-// Copyright (C) 2014 CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2014-2022 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
SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() );
if ( !app ) return;
- SalomeApp_Study* study = dynamic_cast<SalomeApp_Study*>( app->activeStudy() );
- myStudy = GeometryGUI::ClientStudyToStudy( study->studyDS());
-
mySelectionMgr = app->selectionMgr();
if ( !mySelectionMgr ) return;
return tr( "DEPENDENCY_TREE" );
}
-//=================================================================================
-// function : getStudyId()
-// purpose : return Id of current study
-//=================================================================================
-int DependencyTree_View::getStudyId() const
-{
- return myStudy->StudyId();
-}
-
//=================================================================================
// function : getObjectByEntry()
// purpose : return DependencyTree_Object by entry
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
GEOM::GEOM_Object_var geomObject = GEOM::GEOM_Object::_nil();
geomObject = GEOMBase::ConvertIOinGEOMObject( io );
QString entry = geomObject->GetEntry();
- objectsEntry[ iter ] = entry.toLatin1().constData();
+ objectsEntry[ iter ] = entry.toUtf8().constData();
}
}
else {
// get string which describes dependency tree structure
SALOMEDS::TMPFile_var SeqFile =
- GeometryGUI::GetGeomGen()->GetDependencyTree( myStudy, myMainEntries );
+ GeometryGUI::GetGeomGen()->GetDependencyTree( myMainEntries );
char* buf = (char*)&SeqFile[0];
clearView( true );
return myMaxUpwardLevelsNumber;
else if( myDisplayDescendants->isChecked() )
return myMaxDownwardLevelsNumber;
+ return 0;
}