[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