[kgraphviewer-devel] [kgraphviewer/libkgraphviz] src/kgraphviz: Introduce DotGraph::scheduleUpdate
Kevin Funk
krf at electrostorm.net
Thu Jan 27 15:10:44 CET 2011
Git commit c371a03a6f5511b80935a064790f77a0184cff49 by Kevin Funk.
Pushed by kfunk into branch 'libkgraphviz'.
Introduce DotGraph::scheduleUpdate
M +17 -1 src/kgraphviz/dotgraph.cpp
M +3 -0 src/kgraphviz/dotgraph.h
M +5 -0 src/kgraphviz/dotgraph_p.h
http://commits.kde.org/9c7b74a4/c371a03a6f5511b80935a064790f77a0184cff49
diff --git a/src/kgraphviz/dotgraph.cpp b/src/kgraphviz/dotgraph.cpp
index b7051d2..36fbe29 100644
--- a/src/kgraphviz/dotgraph.cpp
+++ b/src/kgraphviz/dotgraph.cpp
@@ -76,6 +76,10 @@ DotGraphPrivate::DotGraphPrivate(DotGraph* parent) :
Q_Q(DotGraph);
q->connect(&m_graphIO, SIGNAL(finished()), SLOT(graphIOFinished()));
q->connect(&m_graphIO, SIGNAL(error(QString)), SLOT(graphIOError(QString)));
+
+ q->connect(&m_updateTimer, SIGNAL(timeout()), SLOT(doUpdate()));
+ m_updateTimer.setInterval(0);
+ m_updateTimer.setSingleShot(true);
}
DotGraphPrivate::~DotGraphPrivate()
@@ -97,6 +101,12 @@ void DotGraphPrivate::graphIOError(const QString& error)
kDebug() << "Error message from graph IO:" << error;
}
+void DotGraphPrivate::doUpdate()
+{
+ Q_Q(DotGraph);
+ q->update();
+}
+
DotGraph::DotGraph() :
d_ptr(new DotGraphPrivate(this))
{
@@ -295,6 +305,12 @@ bool DotGraph::parseDot(const QString& fileName)
return true;
}
+void DotGraph::scheduleUpdate()
+{
+ Q_D(DotGraph);
+ d->m_updateTimer.start();
+}
+
bool DotGraph::update()
{
Q_D(DotGraph);
@@ -316,8 +332,8 @@ bool DotGraph::update()
updateWithGraph(graph);
gvFreeLayout(gvc, graph);
- agclose(graph);
bool result = (gvFreeContext(gvc) == 0);
+ agclose(graph);
return result;
}
}
diff --git a/src/kgraphviz/dotgraph.h b/src/kgraphviz/dotgraph.h
index 562ad40..0494b27 100644
--- a/src/kgraphviz/dotgraph.h
+++ b/src/kgraphviz/dotgraph.h
@@ -89,6 +89,7 @@ public:
QString dotFileName() const;
bool update();
+ void scheduleUpdate();
virtual void storeOriginalAttributes();
@@ -136,6 +137,8 @@ private:
Q_PRIVATE_SLOT(d_func(), void graphIOFinished());
Q_PRIVATE_SLOT(d_func(), void graphIOError(QString));
+
+ Q_PRIVATE_SLOT(d_func(), void doUpdate());
};
KGRAPHVIZ_EXPORT QTextStream& operator<<(QTextStream& s, const DotGraph& n);
diff --git a/src/kgraphviz/dotgraph_p.h b/src/kgraphviz/dotgraph_p.h
index 41f76b8..cbbbf63 100644
--- a/src/kgraphviz/dotgraph_p.h
+++ b/src/kgraphviz/dotgraph_p.h
@@ -23,6 +23,7 @@
#include "graphio.h"
#include <QVector>
+#include <QTimer>
namespace KGraphViz
{
@@ -39,6 +40,8 @@ public:
Q_DECLARE_PUBLIC(DotGraph);
DotGraph* q_ptr;
+ QTimer m_updateTimer;
+
GraphIO m_graphIO;
QString m_fileName;
@@ -65,6 +68,8 @@ public:
private:
void graphIOFinished();
void graphIOError(const QString& error);
+
+ void doUpdate();
};
}
More information about the kgraphviewer-devel
mailing list