From 5304865fc4a9fc05d9d3982f816f7d6fe5f09eb5 Mon Sep 17 00:00:00 2001 From: thunder2 Date: Sun, 27 Oct 2013 23:07:47 +0000 Subject: [PATCH] Added freeze option in NetworkView (Modified patch from K. Eisentraut) git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@6879 b45a01b8-16f6-495d-af2f-9b41ad6348cc --- retroshare-gui/src/gui/NetworkView.cpp | 10 ++++++++++ retroshare-gui/src/gui/NetworkView.h | 2 ++ retroshare-gui/src/gui/NetworkView.ui | 7 +++++++ retroshare-gui/src/gui/elastic/graphwidget.cpp | 18 +++++++++++++++++- retroshare-gui/src/gui/elastic/graphwidget.h | 5 +++++ 5 files changed, 41 insertions(+), 1 deletion(-) diff --git a/retroshare-gui/src/gui/NetworkView.cpp b/retroshare-gui/src/gui/NetworkView.cpp index ba2708978..d6426a807 100644 --- a/retroshare-gui/src/gui/NetworkView.cpp +++ b/retroshare-gui/src/gui/NetworkView.cpp @@ -57,6 +57,7 @@ NetworkView::NetworkView(QWidget *parent) /* Hide Settings frame */ connect( ui.maxFriendLevelSB, SIGNAL(valueChanged(int)), this, SLOT(setMaxFriendLevel(int))); connect( ui.edgeLengthSB, SIGNAL(valueChanged(int)), this, SLOT(setEdgeLength(int))); + connect( ui.freezeCheckBox, SIGNAL(toggled(bool)), this, SLOT(setFreezeState(bool))); _should_update = true ; } @@ -96,6 +97,15 @@ void NetworkView::clear() update() ; } +void NetworkView::setFreezeState(bool freeze) +{ +#ifdef DEBUG_NETWORKVIEW + std::cerr << " NetworkView::setFreezeState(" << freeze << ")" << std::endl; +#endif + + ui.graphicsView->setFreeze(freeze); +} + class NodeInfo { public: diff --git a/retroshare-gui/src/gui/NetworkView.h b/retroshare-gui/src/gui/NetworkView.h index b2c8c4f73..7493a1469 100644 --- a/retroshare-gui/src/gui/NetworkView.h +++ b/retroshare-gui/src/gui/NetworkView.h @@ -49,6 +49,8 @@ class NetworkView : public RsAutoUpdatePage void changedFoFCheckBox( ); void redraw(); + void setFreezeState(bool); + private: void clear(); diff --git a/retroshare-gui/src/gui/NetworkView.ui b/retroshare-gui/src/gui/NetworkView.ui index 3a079c69d..8805ddc44 100644 --- a/retroshare-gui/src/gui/NetworkView.ui +++ b/retroshare-gui/src/gui/NetworkView.ui @@ -91,6 +91,13 @@ + + + + Freeze + + + diff --git a/retroshare-gui/src/gui/elastic/graphwidget.cpp b/retroshare-gui/src/gui/elastic/graphwidget.cpp index eff0684ff..227172c63 100644 --- a/retroshare-gui/src/gui/elastic/graphwidget.cpp +++ b/retroshare-gui/src/gui/elastic/graphwidget.cpp @@ -121,7 +121,7 @@ void fourn(double data[],unsigned long nn[],unsigned long ndim,int isign) #undef SWAP GraphWidget::GraphWidget(QWidget *) - : timerId(0) + : timerId(0), mIsFrozen(false) { // QGraphicsScene *scene = new QGraphicsScene(QRectF(0,0,500,500),this); // scene->setItemIndexMethod(QGraphicsScene::NoIndex); @@ -305,6 +305,12 @@ void GraphWidget::timerEvent(QTimerEvent *event) if(!isVisible()) return ; + if (mIsFrozen) + { + update(); + return; + } + static const int S = 256 ; static double *forceMap = new double[2*S*S] ; @@ -437,3 +443,13 @@ void GraphWidget::scaleView(qreal scaleFactor) scale(scaleFactor, scaleFactor); } + +void GraphWidget::setFreeze(bool freeze) +{ + mIsFrozen = freeze; +} + +bool GraphWidget::isFrozen() const +{ + return mIsFrozen; +} diff --git a/retroshare-gui/src/gui/elastic/graphwidget.h b/retroshare-gui/src/gui/elastic/graphwidget.h index 9fa9bb483..e56f5b02f 100644 --- a/retroshare-gui/src/gui/elastic/graphwidget.h +++ b/retroshare-gui/src/gui/elastic/graphwidget.h @@ -78,6 +78,10 @@ public: void snapshotNodesPositions() ; void clearNodesPositions() ; void clearGraph() ; + + void setFreeze(bool freeze); + bool isFrozen() const; + virtual void itemMoved(); void setEdgeLength(uint32_t l) ; @@ -96,6 +100,7 @@ private: int timerId; //Node *centerNode; bool mDeterminedBB ; + bool mIsFrozen; std::vector _nodes ; std::map,Edge *> _edges ;