// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
//
-#include <GraphicsView_ViewPort.h>
-#include <GraphicsView_Scene.h>
-#include <GraphicsView_ViewFrame.h>
-
-
#include "DependencyTree_View.h"
#include "DependencyTree_Object.h"
#include "DependencyTree_Arrow.h"
-
-#include <QMenu>
-#include <QList>
-#include <QString>
-
-#include <QGraphicsView>
-#include <QSpinBox>
-
-#include <QWidgetAction>
-
-#include <QLabel>
-#include <QCheckBox>
-#include <QPushButton>
-#include <QGridLayout>
-#include <QCloseEvent>
-#include <QTimerEvent>
-
-#include <QtxActionToolMgr.h>
+#include <GEOM_InteractiveObject.hxx>
+#include <GeometryGUI.h>
+#include <GEOMBase.h>
// GUI includes
#include <SUIT_Session.h>
#include <SUIT_ResourceMgr.h>
-
-#include <iostream>
-
#include <SalomeApp_Application.h>
#include <SalomeApp_Study.h>
+#include <QtxActionToolMgr.h>
#include <LightApp_SelectionMgr.h>
#include <SALOME_ListIteratorOfListIO.hxx>
-#include <GEOM_InteractiveObject.hxx>
-#include <GeometryGUI.h>
-#include <GEOMBase.h>
-#include "GEOMUtils.hxx"
-
+// Qt includes
+#include <QCloseEvent>
+#include <QTimerEvent>
+#include <QGraphicsScene>
+#include <iostream>
int iter = 0;
DependencyTree_View::DependencyTree_View( QWidget* theParent )
if ( !app ) return;
SalomeApp_Study* study = dynamic_cast<SalomeApp_Study*>(app->activeStudy());
-
- _PTR(Study) aStudy = study->studyDS();
- if ( !aStudy )
- return;
-
- SALOMEDS::Study_var aStudyDS = GeometryGUI::ClientStudyToStudy(aStudy);
+ SALOMEDS::Study_var myStudy = GeometryGUI::ClientStudyToStudy( study->studyDS());
LightApp_SelectionMgr* aSelMgr = app->selectionMgr();
if ( !aSelMgr ) return;
-
+
SALOME_ListIO aSelList;
aSelMgr->selectedObjects(aSelList);
for ( SALOME_ListIteratorOfListIO It( aSelList ); It.More(); It.Next() ) {
Handle( SALOME_InteractiveObject ) io = It.Value();
-// if ( io->IsKind(STANDARD_TYPE(GEOM_InteractiveObject))) {
-// Handle(GEOM_InteractiveObject) objectGEOM = Handle(GEOM_InteractiveObject)::DownCast( io );
-// const char* ior = objectGEOM->getIOR();
-// objectGEOM.getEntry();
-// objectGEOM.getName();
-// std::cout << "\n\n\n !!!!! IOR = " << ior << std::endl;
-// }
GEOM::GEOM_Object_var myObject = GEOM::GEOM_Object::_nil();
myObject = GEOMBase::ConvertIOinGEOMObject( io );
- //QString ior = GEOMBase::GetIORFromObject(myObject);
QString ior = myObject->GetEntry();
ObjectIORs[aaa] = ior.toLatin1().constData();
aaa++;
std::cout << "\n\n IOR = " << ior.toStdString() << std::endl;
-// if ( !CORBA::is_nil( myObject ) )
-// myGrp->LineEdit1->setText( GEOMBase::GetName( myObject ) );
}
-//
-// SALOME_ListIO selected;
-// aSelMgr->selectedObjects( selected );
-// if ( selected.IsEmpty() ) return;
-//
-// GEOM::string_array ObjectIORs;
-// ObjectIORs.lenght( selected.Extent())
-// for ( SALOME_ListIteratorOfListIO It( selected ); It.More(); It.Next() ) {
-// Handle( SALOME_InteractiveObject ) io = It.Value();
-// const char* entry = io->getEntry();
-// ObjectIORs.push_back( entry );
-// //CORBA::String_var IOR = app->orb()->object_to_string( io );
-// //if ( strcmp(IOR.in(), "") != 0 )
-// //{
-//// QString objIOR = GEOMBase::GetIORFromObject( io );
-// //char* GetStringFromIOR(GEOM::GEOM_Object_ptr theObject)
-//
-// }
- // get dependencies tree as a stream
SALOMEDS::TMPFile_var SeqFile =
- GeometryGUI::GetGeomGen()->GetDependencyTree( aStudyDS, ObjectIORs );
- // convert stream into string
- char* treeStr;
- treeStr = (char*) &SeqFile[0];
+ GeometryGUI::GetGeomGen()->GetDependencyTree( myStudy, ObjectIORs );
+ char* buf;
+ buf = (char*) &SeqFile[0];
- std::cout << "\n TREE = " << treeStr << std::endl;
+ std::cout << "\n\n\n\n\n TREE = " << buf << std::endl;
+
+ GEOMUtils::ConvertStringToTree( buf, myTreeModel );
- // parse string to deal with 'TreeModel' object
- GEOMUtils::TreeModel tree;
- GEOMUtils::ConvertStringToTree( treeStr, tree );
}
DependencyTree_View::~DependencyTree_View()
void DependencyTree_View::drawArrows()
{
- QMap<QString,QPair<LevelsList,LevelsList> >::iterator i;
+ GEOMUtils::TreeModel::const_iterator i;
for (i = myTreeModel.begin(); i != myTreeModel.end(); i++ ) {
- DependencyTree_Object* Main_object = myTreeMap[i.key()];
- LevelInfo Levelup = i.value().first.at(0);
+ DependencyTree_Object* Main_object = myTreeMap[i->first];
+ GEOMUtils::LevelInfo Levelup = i->second.first.at(0);
if( myDisplayAscendants ->isChecked() ) {
- QMap<QString, NodeLinks>::iterator node;
+ GEOMUtils::LevelInfo::const_iterator node;
for (node = Levelup.begin(); node != Levelup.end(); node++ ) {
- DependencyTree_Object* object = myTreeMap[node.key()];
- addArrow(Main_object, object);
+ DependencyTree_Object* object = myTreeMap[node->first];
+ DependencyTree_Arrow* arrow = Arrows[std::pair<DependencyTree_Object*,DependencyTree_Object*>(Main_object, object)];
+ if( arrow && !isItemAdded( arrow) )
+ addItem( arrow );
}
}
if( myDisplayAscendants ->isChecked() )
- drawWardArrows( i.value().first );
+ drawWardArrows( i->second.first );
if( myDisplayDescendants->isChecked() )
- drawWardArrows( i.value().second );
+ drawWardArrows( i->second.second );
}
}
-void DependencyTree_View::drawWardArrows( LevelsList theWard )
+void DependencyTree_View::drawWardArrows( GEOMUtils::LevelsList theWard )
{
for(int j = 0; j < theWard.size(); j++ ) {
if( j >= myLevelsNumber )
break;
- LevelInfo Level = theWard.at(j);
- QMap<QString, NodeLinks>::iterator node;
+ GEOMUtils::LevelInfo Level = theWard.at(j);
+ GEOMUtils::LevelInfo::const_iterator node;
for (node = Level.begin(); node != Level.end(); node++ ) {
- DependencyTree_Object* object = myTreeMap[node.key()];
- QList<QString> Links = node.value();
+ DependencyTree_Object* object = myTreeMap[node->first];
+ GEOMUtils::NodeLinks Links = node->second;
for( int link = 0; link < Links.size(); link++ ) {
DependencyTree_Object* LinkObject = myTreeMap[Links[link]];
if( isItemAdded( object ) && isItemAdded( LinkObject ) ) {
- addArrow(object, LinkObject);
- }
+ DependencyTree_Arrow* arrow = Arrows[std::pair<DependencyTree_Object*,DependencyTree_Object*>(object, LinkObject)];
+ if( arrow && !isItemAdded( arrow) )
+ addItem( arrow );
+ }
}
}
}
}
-
-void DependencyTree_View::parseData( QString& theData )
+void DependencyTree_View::parseTree()
{
- int cursor = 0;
- while( theData.indexOf('-',cursor) != -1 ) //find next selected object
- {
- int objectIndex = theData.indexOf( '-', cursor );
- QString objectEntry = theData.mid( cursor, objectIndex - cursor );
- addNode( objectEntry );
- std::cout<<"\n\nMainObject = " << objectEntry.toStdString() <<std::endl;
- cursor = objectIndex;
+ GEOMUtils::TreeModel::const_iterator i;
+ for (i = myTreeModel.begin(); i != myTreeModel.end(); i++ ) {
+ std::string objectEntry = i->first;
+ addNode( objectEntry );
+ parseTreeWard( i->second.first );
+ if( i->second.first.size() > myMaxUpwardLevelsNumber )
+ myMaxUpwardLevelsNumber = i->second.first.size();
+ parseTreeWard( i->second.second );
+ if( i->second.second.size() > myMaxDownwardLevelsNumber )
+ myMaxDownwardLevelsNumber = i->second.second.size();
+ }
+
+ for (i = myTreeModel.begin(); i != myTreeModel.end(); i++ ) {
+ DependencyTree_Object* Main_object = myTreeMap[i->first];
+ GEOMUtils::LevelInfo Levelup = i->second.first.at(0);
+ GEOMUtils::LevelInfo::const_iterator node;
+ for (node = Levelup.begin(); node != Levelup.end(); node++ ) {
+ DependencyTree_Object* object = myTreeMap[node->first];
+ addArrow( Main_object, object );
+ }
+ parseTreeWardArrow( i->second.first );
+ parseTreeWardArrow( i->second.second );
+ }
- int upwardIndexBegin = theData.indexOf("{",cursor) + 1;
- int upwardIndexFinish = theData.indexOf("}",upwardIndexBegin);
- std::cout<<" Upward:" << std::endl;
- LevelsList upwardList = parseWard( theData, cursor );
- if( upwardList.size() > myMaxUpwardLevelsNumber )
- myMaxUpwardLevelsNumber = upwardList.size();
- std::cout<<" Downward:" << std::endl;
- LevelsList downwardList = parseWard( theData, cursor );
- if( downwardList.size() > myMaxDownwardLevelsNumber )
- myMaxDownwardLevelsNumber = downwardList.size();
- myTreeModel[objectEntry] = QPair<LevelsList,LevelsList>( upwardList, downwardList );
- }
}
+void DependencyTree_View::parseTreeWard(const GEOMUtils::LevelsList theWard)
+{
+ int levelsNumber = theWard.size();
+ for( int level = 0; level < levelsNumber; level++ ) {
+ GEOMUtils::LevelInfo levelInfo = theWard[ level ];
+ GEOMUtils::LevelInfo::const_iterator node;
+ for (node = levelInfo.begin(); node != levelInfo.end(); node++ ) {
+ addNode( node->first );
+ }
+ }
+}
+void DependencyTree_View::parseTreeWardArrow(const GEOMUtils::LevelsList theWard)
+{
+ for(int 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++ ) {
+ DependencyTree_Object* LinkObject = myTreeMap[Links[link]];
+ if( object && LinkObject )
+ addArrow( object, LinkObject );
+ }
+ }
+ }
+}
+//void DependencyTree_View::parseData( QString& theData )
+//{
+// int cursor = 0;
+//
+// while( theData.indexOf('-',cursor) != -1 ) //find next selected object
+// {
+// int objectIndex = theData.indexOf( '-', cursor );
+// QString objectEntry = theData.mid( cursor, objectIndex - cursor );
+// //addNode( objectEntry );
+// std::cout<<"\n\nMainObject = " << objectEntry.toStdString() <<std::endl;
+// cursor = objectIndex;
+//
+// int upwardIndexBegin = theData.indexOf("{",cursor) + 1;
+// int upwardIndexFinish = theData.indexOf("}",upwardIndexBegin);
+// std::cout<<" Upward:" << std::endl;
+// LevelsList upwardList = parseWard( theData, cursor );
+// if( upwardList.size() > myMaxUpwardLevelsNumber )
+// myMaxUpwardLevelsNumber = upwardList.size();
+// std::cout<<" Downward:" << std::endl;
+// LevelsList downwardList = parseWard( theData, cursor );
+// if( downwardList.size() > myMaxDownwardLevelsNumber )
+// myMaxDownwardLevelsNumber = downwardList.size();
+//
+// myTreeModel[objectEntry] = QPair<LevelsList,LevelsList>( upwardList, downwardList );
+// }
+//}
-void DependencyTree_View::addNode( const QString& theEntry )
+void DependencyTree_View::addNode( const std::string& theEntry )
{
if( !myTreeMap[theEntry] )
myTreeMap[theEntry] = new DependencyTree_Object( theEntry );
{
bool isFind = false;
- std::cout << " " << startItem->getEntry().toStdString() << " " << endItem->getEntry().toStdString() << std::endl;
- for( int i = 0; i < Arrows.size(); i++ ) {
- DependencyTree_Arrow* arrow = Arrows.at(i);
+ std::cout << " " << startItem->getEntry() << " " << endItem->getEntry() << std::endl;
+ std::map<std::pair<DependencyTree_Object*,DependencyTree_Object*>, DependencyTree_Arrow* >::const_iterator i;
+ for (i = Arrows.begin(); i != Arrows.end(); i++ ) {
+ DependencyTree_Arrow* arrow = i->second;
if( arrow->getStartItem() == startItem && arrow->getEndItem() == endItem ) {
isFind = true;
std::cout<<" theSame " << std::endl;
if( !isFind ) {
DependencyTree_Arrow *arrow = new DependencyTree_Arrow(startItem, endItem);
- Arrows.append( arrow );
- addItem(arrow);
+ //Arrows.append( arrow );
+ //addItem(arrow);
+ Arrows[std::pair<DependencyTree_Object*,DependencyTree_Object*>( startItem, endItem )] = arrow;
std::cout<<" addArrow " << std::endl;
}
}
-DependencyTree_View::LevelsList DependencyTree_View::parseWard( const QString& theData, int& theCursor )
-{
- int indexStart = theData.indexOf( "{", theCursor ) + 1;
- int indexEnd = theData.indexOf( "}", indexStart );
-
- QString ward = theData.mid( indexStart, indexEnd - indexStart );
- QStringList levelsListStr = ward.split( ';' );
- LevelsList levelsListData;
- for( int level = 0; level < levelsListStr.size(); level++ ) {
- std::cout<<" Level" << level + 1 << ":" << std::endl;
- QStringList namesListStr = levelsListStr[level].split( ',' );
- LevelInfo levelInfoData;
- for( int node = 0; node < namesListStr.size(); node++ ) {
- QStringList linksListStr = namesListStr[node].split( '_' );
- QString nodeItem = linksListStr[0];
- if( !nodeItem.isEmpty() ) {
- addNode( nodeItem );
- NodeLinks linksListData;
- std::cout<<" " << nodeItem.toStdString() << " - ";
- for( int link = 1; link < linksListStr.size(); link++ ) {
- QString linkItem = linksListStr[link];
- addNode( linkItem );
- linksListData.append( linkItem );
- std::cout << linkItem.toStdString() << ", ";
- }// Links
- levelInfoData[nodeItem] = linksListData;
- std::cout << std::endl;
- }
- }// Level's objects
- levelsListData.append(levelInfoData);
- }// Levels
-
- theCursor = indexEnd + 1;
-
- return levelsListData;
-}
+//DependencyTree_View::LevelsList DependencyTree_View::parseWard( const QString& theData, int& theCursor )
+//{
+// int indexStart = theData.indexOf( "{", theCursor ) + 1;
+// int indexEnd = theData.indexOf( "}", indexStart );
+//
+// QString ward = theData.mid( indexStart, indexEnd - indexStart );
+// QStringList levelsListStr = ward.split( ';' );
+// LevelsList levelsListData;
+// for( int level = 0; level < levelsListStr.size(); level++ ) {
+// std::cout<<" Level" << level + 1 << ":" << std::endl;
+// QStringList namesListStr = levelsListStr[level].split( ',' );
+// LevelInfo levelInfoData;
+// for( int node = 0; node < namesListStr.size(); node++ ) {
+// QStringList linksListStr = namesListStr[node].split( '_' );
+// QString nodeItem = linksListStr[0];
+// if( !nodeItem.isEmpty() ) {
+// //addNode( nodeItem );
+// NodeLinks linksListData;
+// std::cout<<" " << nodeItem.toStdString() << " - ";
+// for( int link = 1; link < linksListStr.size(); link++ ) {
+// QString linkItem = linksListStr[link];
+// //addNode( linkItem );
+// linksListData.append( linkItem );
+// std::cout << linkItem.toStdString() << ", ";
+// }// Links
+// levelInfoData[nodeItem] = linksListData;
+// std::cout << std::endl;
+// }
+// }// Level's objects
+// levelsListData.append(levelInfoData);
+// }// Levels
+//
+// theCursor = indexEnd + 1;
+//
+// return levelsListData;
+//}
void DependencyTree_View::drawTree()
{
- int horDistance, verDistance;
- myCurrentLevel = 0;
- std::cout<<"\n\n\n\n MY TREE MODEL SIZE = " << myTreeModel.size() << std::endl;
- std::cout<<"\n\n\n\n MY TREE MAP SIZE = " << myTreeMap.size() << std::endl;
- for( int j = 0; j < myTreeModel.keys().size(); j++ )
- std::cout<< " STRING = " << myTreeModel.keys().at(j).toStdString() << std::endl;
- QMap<QString,QPair<LevelsList,LevelsList> >::iterator i;
- for (i = myTreeModel.begin(); i != myTreeModel.end(); i++ ) {
- myCurrentLevel = 0;
- QString objectEntry = i.key();
- std::cout<< " NAME = " << objectEntry.toStdString() << std::endl;
- DependencyTree_Object* objectItem = myTreeMap[ objectEntry ];
- objectItem->setEnabled(true);
- if( objectItem->isEnabled() )
- std::cout<<"OK!!! "<< std::endl;
- horDistance = 100 + int( objectItem->boundingRect().width() );
- verDistance = 3 * int( objectItem->boundingRect().height() );
- if( isItemAdded( objectItem ) ) {
- myCurrentLevel = myLevelMap[ objectEntry ];
- }
- else {
- addItem( objectItem );
- std::cout<<"\nLevel = " << myCurrentLevel << " Object = " << objectEntry.toStdString() << std::endl;
- myLevelMap[ objectEntry ] = myCurrentLevel;
- myLevelsObject[ myCurrentLevel ].append( objectEntry );
- }
- objectItem->setIsMainObject( true );
-
- int levelposition = myCurrentLevel;
- if( myDisplayAscendants ->isChecked() ){
- drawWard( i.value().first, -1 );
- myCurrentLevel = levelposition;
- }
- if( myDisplayDescendants->isChecked() )
- drawWard( i.value().second, 1 );
-
- //centerOn( objectItem );
- }
-
- QMap< int, QList<QString> >::iterator j;
+ int horDistance, verDistance;
+ myCurrentLevel = 0;
+ GEOMUtils::TreeModel::const_iterator i;
+ for (i = myTreeModel.begin(); i != myTreeModel.end(); i++ ) {
+ myCurrentLevel = 0;
+ std::string objectEntry = i->first;
+ DependencyTree_Object* objectItem = myTreeMap[ objectEntry ];
+ horDistance = 100 + int( objectItem->boundingRect().width() );
+ verDistance = 3 * int( objectItem->boundingRect().height() );
+ if( isItemAdded( objectItem ) ) {
+ myCurrentLevel = myLevelMap[ objectEntry ];
+ }
+ else {
+ addItem( objectItem );
+ myLevelMap[ objectEntry ] = myCurrentLevel;
+ myLevelsObject[ myCurrentLevel ].push_back( objectEntry );
+ }
+ objectItem->setIsMainObject( true );
+
+ int levelposition = myCurrentLevel;
+ if( myDisplayAscendants ->isChecked() ){
+ drawWard( i->second.first, -1 );
+ myCurrentLevel = levelposition;
+ }
+ if( myDisplayDescendants->isChecked() )
+ drawWard( i->second.second, 1 );
+ }
+
+ std::map< int, std::vector<std::string> >::const_iterator j;
for (j = myLevelsObject.begin(); j != myLevelsObject.end(); j++ ) {
- int step = -horDistance*( j.value().size() - 1 )/2;
- std::cout<<"\n\n LEVEL = " << j.key() << std::endl;
- for( int object = 0; object < j.value().size(); object++ ) {
+ int step = -horDistance*( j->second.size() - 1 )/2;
+ std::cout<<"\n\n LEVEL = " << j->first << std::endl;
+ for( int object = 0; object < j->second.size(); object++ ) {
if( myIsCompute ) {
- std::cout << j.value().at( object ).toStdString() << ", ";
- DependencyTree_Object* anObject = myTreeMap[ j.value().at( object ) ];
- anObject->setPos( step, verDistance*j.key() );
+ std::cout << j->second.at( object ) << ", ";
+ DependencyTree_Object* anObject = myTreeMap[ j->second.at( object ) ];
+ anObject->setPos( step, verDistance*j->first );
step += horDistance;
//sleep(1);
}
}
}
+ centerOn( scene()->sceneRect().center() );
}
-void DependencyTree_View::drawWard( const DependencyTree_View::LevelsList theWard, const int theLevelStep )
+void DependencyTree_View::drawWard( const GEOMUtils::LevelsList theWard, const int theLevelStep )
{
+ std::cout << "\n\n myLevelsNumber2 = " << myLevelsNumber << std::endl;
int levelsNumber = theWard.size();
+ std::cout << "\n\n levelsNumber = " << levelsNumber << std::endl;
for( int level = 0; level < levelsNumber; level++ ) {
if( level >= myLevelsNumber )
return;
myCurrentLevel += theLevelStep;
- LevelInfo levelInfo = theWard.at( level );
- QMap<QString, NodeLinks>::iterator node;
+ GEOMUtils::LevelInfo levelInfo = theWard.at( level );
+ GEOMUtils::LevelInfo::const_iterator node;
for (node = levelInfo.begin(); node != levelInfo.end(); node++ ) {
- DependencyTree_Object* object = myTreeMap[ node.key() ];
+ DependencyTree_Object* object = myTreeMap[ node->first ];
if( !isItemAdded( object ) ) {
+ std::cout<< "\n\n\n addItem = " << object->getEntry() << std::endl;
addItem( object );
- myLevelMap[ node.key() ] = myCurrentLevel;
- myLevelsObject[ myCurrentLevel ].append( node.key() );
+ myLevelMap[ node->first ] = myCurrentLevel;
+ myLevelsObject[ myCurrentLevel ].push_back( node->first );
}
}
}
+
}
void DependencyTree_View::onUpdateTree()
myLevelsObject.clear();
- QMap<QString,DependencyTree_Object*>::iterator i;
+ std::map<std::string,DependencyTree_Object*>::const_iterator i;
for (i = myTreeMap.begin(); i != myTreeMap.end(); i++ ) {
- DependencyTree_Object* object = myTreeMap[ i.key() ];
+ DependencyTree_Object* object = myTreeMap[ i->first ];
if( isItemAdded( object ) && object )
removeItem( object );
}
-
- std::cout<<"\n\n\n\n ARROWS = " << Arrows.size() << std::endl;
-
- for(int j = 0; j<Arrows.size();j++)
- if( isItemAdded( Arrows[j]) )
- removeItem( Arrows[j] );
-
- Arrows.clear();
+ std::map<std::pair<DependencyTree_Object*,DependencyTree_Object*>, DependencyTree_Arrow* >::const_iterator j;
+ for (j = Arrows.begin(); j != Arrows.end(); j++ ) {
+ DependencyTree_Arrow* object = Arrows[ j->first ];
+ if( isItemAdded( object ) && object )
+ removeItem( object );
+ }
drawTree();
drawArrows();
void DependencyTree_View::init( GraphicsView_ViewFrame* theViewFrame )
{
SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
- QString Data = "MainObject1-upward{up11_up21_up22,up12_up23,up13_up24;up21_up11,up22_up21_up12,up23_up23,up24}"
+
+ std::string Data = "MainObject1-upward{up11_up21_up22,up12_up23,up13_up24;up21_up11,up22_up21_up12,up23_up23,up24}"
"downward{down11_MainObject1,down12_MainObject1;down21_down11,down22_down12,down23_down12,down24_down24_down11,down25_down12;down31_down11_down23,down32_down25}"
"down23-upward{down12_MainObject1;MainObject1_up11_up12_up13;up11_up21_up22,up12_up23,up13_up24;up21,up22_up21_up12,up23,up24}"
"downward{down31_down11_down23}"
- "MainObject2-upward{up21,newup11_newup31,newup12_newup21;newup21_newup31LongName;newup31LongName}downward{newdown11_MainObject2,newdown12_MainObject2,newdown13_MainObject2;newdown21_newdown13,down21;newdown31_newdown11}";
+ "MainObject2-upward{up21,newup11_newup31,newup12_newup21;newup21_newup31LongName;newup31LongName}downward{newdown11_MainObject2,newdown12_MainObject2,newdown13_MainObject2;newdown21_newdown13,down21;newdown31_newdown11}"
+ "MainObject3-upward{moUP1_moUP4,moUP2_moUP3;moUP4,moUP3_down23}downward{moDOWN1_MainObject3}";
+
+
+ //GEOMUtils::ConvertStringToTree( Data, myTreeModel );
- parseData( Data );
+
+
+// GEOMUtils::TreeModel::const_iterator i;
+// for ( i = aTreeModel.begin(); i != aTreeModel.end(); i++ ) {
+// std::string objectEntry = i->first;
+// std::cout << "\n\n Main object = " << objectEntry << std::endl;
+// }
+// parseData( Data );
+ parseTree();
myNodesMovable = new QCheckBox( tr( "MOVE_NODES" ) );
ShowChildrenAction->setDefaultWidget( myDisplayDescendants );
myLevelsNumber = checkMaxLevelsNumber();
+ std::cout << "\n\n myLevelsNumber1 = " << myLevelsNumber << std::endl;
myHierarchyDepth = new QSpinBox();
myHierarchyDepth->setRange( 0, checkMaxLevelsNumber() );
myHierarchyDepth->setValue( 0 );
void DependencyTree_View::onMoveNodes( bool theIsMoveNodes )
{
- QMap<QString,DependencyTree_Object*>::iterator i;
+ std::map<std::string,DependencyTree_Object*>::const_iterator i;
for (i = myTreeMap.begin(); i != myTreeMap.end(); i++ ) {
- DependencyTree_Object* object = myTreeMap[ i.key() ];
- object->setMovable( theIsMoveNodes );
+ DependencyTree_Object* object = myTreeMap[ i->first ];
+ if( object )
+ object->setMovable( theIsMoveNodes );
}
}
myLevelsObject.clear();
- QMap<QString,DependencyTree_Object*>::iterator i;
+ std::map<std::string,DependencyTree_Object*>::const_iterator i;
for (i = myTreeMap.begin(); i != myTreeMap.end(); i++ ) {
- DependencyTree_Object* object = myTreeMap[ i.key() ];
+ DependencyTree_Object* object = myTreeMap[ i->first ];
if( isItemAdded( object ) && object )
removeItem( object );
}
- std::cout<<"\n\n\n\n ARROWS = " << Arrows.size() << std::endl;
-
- for(int j = 0; j<Arrows.size();j++)
- if( isItemAdded( Arrows[j]) )
- removeItem( Arrows[j] );
-
- Arrows.clear();
+ std::map<std::pair<DependencyTree_Object*,DependencyTree_Object*>, DependencyTree_Arrow* >::const_iterator j;
+ for (j = Arrows.begin(); j != Arrows.end(); j++ ) {
+ DependencyTree_Arrow* object = Arrows[ j->first ];
+ if( isItemAdded( object ) && object )
+ removeItem( object );
+ }
void DependencyTree_View::setNodeColor( const QColor& theColor )
{
- QMap<QString,DependencyTree_Object*>::iterator i;
+ std::map<std::string,DependencyTree_Object*>::const_iterator i;
for (i = myTreeMap.begin(); i != myTreeMap.end(); i++ ) {
- DependencyTree_Object* object = myTreeMap[ i.key() ];
+ DependencyTree_Object* object = myTreeMap[ i->first ];
object->setColor( theColor );
}
}
void DependencyTree_View::setMainNodeColor( const QColor& theColor )
{
- QMap<QString,DependencyTree_Object*>::iterator i;
+ std::map<std::string,DependencyTree_Object*>::const_iterator i;
for (i = myTreeMap.begin(); i != myTreeMap.end(); i++ ) {
- DependencyTree_Object* object = myTreeMap[ i.key() ];
+ DependencyTree_Object* object = myTreeMap[ i->first ];
object->setMainObjectColor( theColor );
}
}
void DependencyTree_View::setSelectNodeColor( const QColor& theColor )
{
- QMap<QString,DependencyTree_Object*>::iterator i;
+ std::map<std::string,DependencyTree_Object*>::const_iterator i;
for (i = myTreeMap.begin(); i != myTreeMap.end(); i++ ) {
- DependencyTree_Object* object = myTreeMap[ i.key() ];
+ DependencyTree_Object* object = myTreeMap[ i->first ];
object->setSelectColor( theColor );
}
}
void DependencyTree_View::setArrowColor( const QColor& theColor )
{
- for( int i = 0; i < Arrows.size(); i++ ) {
- DependencyTree_Arrow* arrow = Arrows[i];
+ std::map<std::pair<DependencyTree_Object*,DependencyTree_Object*>, DependencyTree_Arrow* >::const_iterator j;
+ for (j = Arrows.begin(); j != Arrows.end(); j++ ) {
+ DependencyTree_Arrow* arrow = Arrows[ j->first ];
arrow->setColor( theColor );
}
}
void DependencyTree_View::setHighlightArrowColor( const QColor& theColor )
{
- for( int i = 0; i < Arrows.size(); i++ ) {
- DependencyTree_Arrow* arrow = Arrows[i];
+ std::map<std::pair<DependencyTree_Object*,DependencyTree_Object*>, DependencyTree_Arrow* >::const_iterator j;
+ for (j = Arrows.begin(); j != Arrows.end(); j++ ) {
+ DependencyTree_Arrow* arrow = Arrows[ j->first ];
arrow->setHighlightColor( theColor );
}
}
void DependencyTree_View::setSelectArrowColor( const QColor& theColor )
{
- for( int i = 0; i < Arrows.size(); i++ ) {
- DependencyTree_Arrow* arrow = Arrows[i];
+ std::map<std::pair<DependencyTree_Object*,DependencyTree_Object*>, DependencyTree_Arrow* >::const_iterator j;
+ for (j = Arrows.begin(); j != Arrows.end(); j++ ) {
+ DependencyTree_Arrow* arrow = Arrows[ j->first ];
arrow->setSelectColor( theColor );
}
}