[kgraphviewer-devel] [KGraphViewer/libkgraphviz] 198d906: Fix exporter not exporting subgraph nodes info
Kevin Funk
krf at electrostorm.net
Fri Jan 14 18:01:49 CET 2011
commit 198d90691475294c42d15a6f97ba10e9f8de247a
branch libkgraphviz
Author: Kevin Funk <krf at electrostorm.net>
Date: Fri Jan 14 14:53:38 2011 +0100
Fix exporter not exporting subgraph nodes info
diff --git a/src/kgraphviz/dotgraph.cpp b/src/kgraphviz/dotgraph.cpp
index 30bbdbf..afff64f 100644
--- a/src/kgraphviz/dotgraph.cpp
+++ b/src/kgraphviz/dotgraph.cpp
@@ -304,9 +304,8 @@ bool DotGraph::update()
}
else
{
- kDebug() << "using library";
- GraphExporter exporter;
- graph_t* graph = exporter.exportToGraphviz(this);
+ kDebug() << "using library, layout command:" << layoutCommand();
+ graph_t* graph = GraphExporter::exportToGraphviz(this);
GVC_t* gvc = gvContext();
gvLayout(gvc, graph, layoutCommand().toUtf8().data());
diff --git a/src/kgraphviz/dotgraphview_p.h b/src/kgraphviz/dotgraphview_p.h
index 3bf8af3..537225b 100644
--- a/src/kgraphviz/dotgraphview_p.h
+++ b/src/kgraphviz/dotgraphview_p.h
@@ -22,7 +22,6 @@
#include "dotgraphview.h"
-#include "graphexporter.h"
#include "support/loadagraphthread.h"
#include "support/layoutagraphthread.h"
@@ -70,8 +69,6 @@ public:
bool m_isMoving;
QPoint m_lastPos;
- GraphExporter m_exporter;
-
// widget options
DotGraphView::PannerPosition m_zoomPosition, m_lastAutoPosition;
diff --git a/src/kgraphviz/graphelement.cpp b/src/kgraphviz/graphelement.cpp
index 0266f7f..754812b 100644
--- a/src/kgraphviz/graphelement.cpp
+++ b/src/kgraphviz/graphelement.cpp
@@ -235,7 +235,7 @@ void GraphElement::importFromGraphviz(void* element, QList<QString> drawingAttri
kWarning() << "Cannot import from null element";
return;
}
-
+
renderOperations().clear();
foreach(const QString& attribute, drawingAttributes) {
const char* value = agget(element, const_cast<char*>(qPrintable(attribute)));
diff --git a/src/kgraphviz/graphexporter.cpp b/src/kgraphviz/graphexporter.cpp
index 8876ee0..641d813 100644
--- a/src/kgraphviz/graphexporter.cpp
+++ b/src/kgraphviz/graphexporter.cpp
@@ -59,13 +59,20 @@ graph_t* GraphExporter::exportToGraphviz(const DotGraph* graph)
graph->exportToGraphviz(agraph);
/// @TODO Subgraph are not represented as needed in DotGraph, so it is not
/// possible to save them back : to be changed !
- GraphSubgraphMap::const_iterator sit;
- for ( sit = graph->subgraphs().begin();
- sit != graph->subgraphs().end(); ++sit )
+ foreach(const GraphSubgraph* s, graph->subgraphs())
{
- const GraphSubgraph& s = **sit;
- graph_t* subgraph = agsubg(agraph, s.id().toUtf8().data());
- s.exportToGraphviz(subgraph);
+ graph_t* subgraph = agsubg(agraph, s->id().toUtf8().data());
+ s->exportToGraphviz(subgraph);
+
+ // TODO: Fix me, refactor this
+ foreach(const GraphElement* element, s->content()) {
+ const GraphNode* n = dynamic_cast<const GraphNode*>(element);
+ if (!n)
+ continue;
+
+ node_t* node = agnode(agraph, n->id().toUtf8().data());
+ n->exportToGraphviz(node);
+ }
}
GraphNodeMap::const_iterator nit;
diff --git a/src/kgraphviz/graphexporter.h b/src/kgraphviz/graphexporter.h
index 902763d..46a92ee 100644
--- a/src/kgraphviz/graphexporter.h
+++ b/src/kgraphviz/graphexporter.h
@@ -42,10 +42,11 @@ class DotGraph;
class GraphExporter
{
public:
+ static Agraph_t* exportToGraphviz(const DotGraph* graph);
+
+private:
GraphExporter();
virtual ~GraphExporter();
-
- Agraph_t* exportToGraphviz(const DotGraph* graph);
};
}
More information about the kgraphviewer-devel
mailing list