[kgraphviewer-devel] [KGraphViewer/libkgraphviz] 387743a: Remove some redundant code, reduce debug spam

Kevin Funk krf at electrostorm.net
Thu Jan 13 17:30:00 CET 2011


commit 387743a53221671a1bec651c5f003252669834cb
branch libkgraphviz
Author: Kevin Funk <krf at electrostorm.net>
Date:   Thu Jan 13 15:59:19 2011 +0100

    Remove some redundant code, reduce debug spam
    
    Also fixes a bug when redrawing a relayouted graph.

diff --git a/src/kgraphviz/canvasedge.cpp b/src/kgraphviz/canvasedge.cpp
index 11bc539..df33099 100644
--- a/src/kgraphviz/canvasedge.cpp
+++ b/src/kgraphviz/canvasedge.cpp
@@ -450,7 +450,6 @@ void CanvasEdge::paint(QPainter* p, const QStyleOptionGraphicsItem* option,
 void CanvasEdge::computeBoundingRect()
 {
   Q_D(CanvasEdge);
-  kDebug();
   //invalidate bounding region cache
   d->m_boundingRegion = QPainterPath();
   if (edge()->renderOperations().isEmpty())
diff --git a/src/kgraphviz/dotgraph.cpp b/src/kgraphviz/dotgraph.cpp
index 64d05d2..9ea588b 100644
--- a/src/kgraphviz/dotgraph.cpp
+++ b/src/kgraphviz/dotgraph.cpp
@@ -428,28 +428,10 @@ void DotGraph::updateWithGraph(graph_t* newGraph)
 {
   Q_D(DotGraph);
   
-  kDebug();
-
-  // copy global graph render operations and attributes
-  renderOperations().clear();
-  if (agget(newGraph, (char*)"_draw_") != NULL)
-  {
-    parse_renderop(agget(newGraph, (char*)"_draw_"), renderOperations());
-    kDebug() << "_draw_: element renderOperations size is now " << renderOperations().size();
-  }
-  if (agget(newGraph, (char*)"_ldraw_") != NULL)
-  {
-    parse_renderop(agget(newGraph, (char*)"_ldraw_"), renderOperations());
-    kDebug() << "_ldraw_: element renderOperations size is now " << renderOperations().size();
-  }
-  
-  Agsym_t *attr = agfstattr(newGraph);
-  while(attr)
-  {
-    kDebug() << newGraph->name << ":" << attr->name << agxget(newGraph,attr->index);
-    m_attributes[attr->name] = agxget(newGraph,attr->index);
-    attr = agnxtattr(newGraph,attr);
-  }
+  kDebug() << newGraph;
+  QList<QString> drawingAttributes;
+  drawingAttributes << "_draw_" << "_ldraw_";
+  importFromGraphviz(newGraph, drawingAttributes);
   
   // copy subgraphs
   for (edge_t* e = agfstout(newGraph->meta_node->graph, newGraph->meta_node); e;
@@ -481,10 +463,7 @@ void DotGraph::updateWithGraph(graph_t* newGraph)
 
   // copy nodes
   node_t* ngn = agfstnode(newGraph);
-  kDebug() << "first node:" << (void*)ngn;
-  
   while (ngn != NULL)
-//   foreach (GraphNode* ngn, newGraph.nodes())
   {
     kDebug() << "node " << ngn->name;
     if (nodes().contains(ngn->name))
@@ -511,7 +490,7 @@ void DotGraph::updateWithGraph(graph_t* newGraph)
     edge_t* nge = agfstout(newGraph, ngn);
     while (nge != NULL)
     {
-      kDebug() << "edge" << nge->id << edges();
+      kDebug() << "edge" << nge->id;
       const QString edgeName = QString::number(nge->id);
       if (edges().contains(edgeName))
       {
@@ -591,7 +570,7 @@ void DotGraph::updateWithGraph(const DotGraph& newGraph)
   }
   foreach (GraphNode* ngn, newGraph.nodes())
   {
-    kDebug() << "node " << ngn->id();
+    kDebug() << "node" << ngn->id();
     if (nodes().contains(ngn->id()))
     {
       kDebug() << "known";
@@ -1035,7 +1014,6 @@ void DotGraph::renameNode(const QString& oldNodeName, const QString& newNodeName
 
 QString DotGraph::backColor() const
 {
-  kDebug();
   if (m_attributes.find("bgcolor") != m_attributes.end())
   {
     return m_attributes["bgcolor"];
diff --git a/src/kgraphviz/dotgraphview.cpp b/src/kgraphviz/dotgraphview.cpp
index 4412dfc..4a7b330 100644
--- a/src/kgraphviz/dotgraphview.cpp
+++ b/src/kgraphviz/dotgraphview.cpp
@@ -686,15 +686,12 @@ void DotGraphView::slotSelectionChanged()
 bool DotGraphView::displayGraph()
 {
   Q_D(DotGraphView);
-  kDebug() << d->m_graph->backColor();
-//   hide();
   viewport()->setUpdatesEnabled(false);
 
   if (d->m_graph->backColor().size() != 0)
   {
     setBackgroundColor(QColor(d->m_graph->backColor()));
   }
-  // TODO: Clear canvas
 
   if (d->m_graph->nodes().size() > KGV_MAX_PANNER_NODES)
   {
@@ -720,7 +717,7 @@ bool DotGraphView::displayGraph()
   
 //   kDebug() << "sceneRect is now " << scene()->sceneRect();
   
-  kDebug() << "Creating" << d->m_graph->subgraphs().size() << "CanvasSubgraphs from" << d->m_graph;
+  kDebug() << "Handling" << d->m_graph->subgraphs().size() << "CanvasSubgraphs from" << d->m_graph;
   int zvalue = -1;
   foreach (GraphSubgraph* gsubgraph, d->m_graph->subgraphs())
   {
@@ -729,7 +726,7 @@ bool DotGraphView::displayGraph()
       zvalue = newZvalue;
   }
 
-  kDebug() << "Creating" << d->m_graph->nodes().size() << "nodes from" << d->m_graph;
+  kDebug() << "Handling" << d->m_graph->nodes().size() << "nodes from" << d->m_graph;
   GraphNodeMap::const_iterator it = d->m_graph->nodes().constBegin();
   for (; it != d->m_graph->nodes().constEnd();it++)
   {
@@ -758,10 +755,10 @@ bool DotGraphView::displayGraph()
     element->computeBoundingRect();
   }
 
-  kDebug() << "Creating" << d->m_graph->edges().size() << "edges from" << d->m_graph;
+  kDebug() << "Handling" << d->m_graph->edges().size() << "edges from" << d->m_graph;
   foreach (GraphEdge* gedge, d->m_graph->edges())
   {
-    kDebug() << "One GraphEdge:" << gedge->id();
+    kDebug() << "GraphEdge:" << gedge->id();
     if (gedge->canvasElement() == 0
       && gedge->fromNode() != 0
       && gedge->toNode() != 0)
@@ -787,7 +784,7 @@ bool DotGraphView::displayGraph()
     element->computeBoundingRect();
   }
 
-  kDebug() << "Adding graph render operations: " << d->m_graph->renderOperations().size();
+//   kDebug() << "Adding graph render operations: " << d->m_graph->renderOperations().size();
   foreach (const DotRenderOp& dro, d->m_graph->renderOperations())
   {
     if ( dro.renderop == "T" )
diff --git a/src/kgraphviz/graphedge.cpp b/src/kgraphviz/graphedge.cpp
index bf850a8..f42462c 100644
--- a/src/kgraphviz/graphedge.cpp
+++ b/src/kgraphviz/graphedge.cpp
@@ -92,62 +92,20 @@ const QString GraphEdge::color(uint i)
 
 void GraphEdge::updateWithEdge(const GraphEdge& edge)
 {
-  kDebug() << id() << edge.id();
   m_arrowheads = edge.arrowheads();
   m_colors = edge.colors();
   m_dir = edge.dir();
   m_fromNode = edge.m_fromNode;
   m_toNode = edge.m_toNode;
+
   GraphElement::updateWithElement(edge);
-  if (canvasElement())
-  {
-    canvasElement()->computeBoundingRect();
-    canvasElement()->modelChanged();
-  }
 }
 
 void GraphEdge::updateWithEdge(edge_t* edge)
 {
-  kDebug();
-  renderOperations().clear();
-  if (agget(edge, (char*)"_draw_") != NULL)
-  {
-    parse_renderop(agget(edge, (char*)"_draw_"), renderOperations());
-    kDebug() << "element renderOperations size is now " << renderOperations().size();
-  }
-  if (agget(edge, (char*)"_ldraw_") != NULL)
-  {
-    parse_renderop(agget(edge, (char*)"_ldraw_"), renderOperations());
-    kDebug() << "element renderOperations size is now " << renderOperations().size();
-  }
-  if (agget(edge, (char*)"_hdraw_") != NULL)
-  {
-    parse_renderop(agget(edge, (char*)"_hdraw_"), renderOperations());
-    kDebug() << "element renderOperations size is now " << renderOperations().size();
-  }
-  if (agget(edge, (char*)"_tdraw_") != NULL)
-  {
-    parse_renderop(agget(edge, (char*)"_tdraw_"), renderOperations());
-    kDebug() << "element renderOperations size is now " << renderOperations().size();
-  }
-  if (agget(edge, (char*)"_hldraw_") != NULL)
-  {
-    parse_renderop(agget(edge, (char*)"_hldraw_"), renderOperations());
-    kDebug() << "element renderOperations size is now " << renderOperations().size();
-  }
-  if (agget(edge, (char*)"_tldraw_") != NULL)
-  {
-    parse_renderop(agget(edge, (char*)"_tldraw_"), renderOperations());
-    kDebug() << "element renderOperations size is now " << renderOperations().size();
-  }
-  Agsym_t *attr = agfstattr(edge);
-  while(attr)
-  {
-    kDebug() /*<< edge->name*/ << ":" << attr->name << agxget(edge,attr->index);
-    m_attributes[attr->name] = agxget(edge,attr->index);
-    attr = agnxtattr(edge,attr);
-  }
-  
+  QList<QString> drawingAttributes;
+  drawingAttributes << "_draw_" << "_ldraw_" << "_hdraw_" << "_tdraw_" << "_hldraw_" << "_tldraw_";
+  importFromGraphviz(edge, drawingAttributes);
 }
 
 QTextStream& operator<<(QTextStream& s, const GraphEdge& e)
diff --git a/src/kgraphviz/graphelement.cpp b/src/kgraphviz/graphelement.cpp
index 493c300..c311f0c 100644
--- a/src/kgraphviz/graphelement.cpp
+++ b/src/kgraphviz/graphelement.cpp
@@ -21,6 +21,7 @@
 
 #include "canvaselement.h"
 #include "support/dotdefaults.h"
+#include "support/dotgrammar.h"
 
 #include <math.h>
 
@@ -166,6 +167,11 @@ void GraphElement::updateWithElement(const GraphElement& element)
     kDebug() << "modified: emiting changed";*/
     emit changed();
   }
+
+  if (canvasElement())
+  {
+    canvasElement()->modelChanged();
+  }
   kDebug() << "done" << renderOperations().size();
 }
 
@@ -225,6 +231,24 @@ void GraphElement::exportToGraphviz(void* element) const
   }
 }
 
+void GraphElement::importFromGraphviz(void* element, QList<QString> drawingAttributes)
+{
+  if (!element) {
+    kWarning() << "Cannot import from null element";
+    return;
+  }
+  
+  renderOperations().clear();
+  foreach(const QString& attribute, drawingAttributes) {
+    const char* value = agget(element, const_cast<char*>(qPrintable(attribute)));
+    if (!value)
+      continue;
+
+    parse_renderop(value, renderOperations());
+    kDebug() << attribute << "element renderOperations size is now " << renderOperations().size();
+  }
+}
+
 QTextStream& operator<<(QTextStream& s, const GraphElement& n)
 {
   QMap<QString,QString>::const_iterator it, it_end;
diff --git a/src/kgraphviz/graphelement.h b/src/kgraphviz/graphelement.h
index b5a9dd9..e4d51d8 100644
--- a/src/kgraphviz/graphelement.h
+++ b/src/kgraphviz/graphelement.h
@@ -101,6 +101,7 @@ public:
   void setZ(double z);
 
   void exportToGraphviz(void* element)  const;
+  void importFromGraphviz(void* element, QList<QString> drawingAttributes);
 
 Q_SIGNALS:
   void changed();
diff --git a/src/kgraphviz/graphnode.cpp b/src/kgraphviz/graphnode.cpp
index 840aeaa..0619e14 100644
--- a/src/kgraphviz/graphnode.cpp
+++ b/src/kgraphviz/graphnode.cpp
@@ -73,14 +73,14 @@ GraphNode::~GraphNode()
 
 void GraphNode::updateWithNode(const GraphNode& node)
 {
-  kDebug() << id() << node.id();
   GraphElement::updateWithElement(node);
-  if (canvasElement())
-  {
-    canvasElement()->computeBoundingRect();
-    canvasElement()->modelChanged();
-  }
-//   kDebug() << "done";
+}
+
+double GraphNode::width() const
+{
+  bool ok = false;
+  double result = m_attributes.value("width").toDouble(&ok);
+  return (ok ? result : -1.0);
 }
 
 void GraphNode::updateWithNode(node_t* node)
@@ -89,25 +89,9 @@ void GraphNode::updateWithNode(node_t* node)
   m_attributes["id"] = node->name;
   m_attributes["label"] = ND_label(node)->text;
 
-  renderOperations().clear();
-  if (agget(node, (char*)"_draw_") != NULL)
-  {
-    parse_renderop(agget(node, (char*)"_draw_"), renderOperations());
-    kDebug() << "_draw_: element renderOperations size is now " << renderOperations().size();
-  }
-  if (agget(node, (char*)"_ldraw_") != NULL)
-  {
-    parse_renderop(agget(node, (char*)"_ldraw_"), renderOperations());
-    kDebug() << "_ldraw_: element renderOperations size is now " << renderOperations().size();
-  }
-
-  Agsym_t *attr = agfstattr(node);
-  while(attr)
-  {
-    kDebug() << node->name << ":" << attr->name << agxget(node,attr->index);
-    m_attributes[attr->name] = agxget(node,attr->index);
-    attr = agnxtattr(node,attr);
-  }
+  QList<QString> drawingAttributes;
+  drawingAttributes << "_draw_" << "_ldraw_";
+  importFromGraphviz(node, drawingAttributes);
 }
 
 QTextStream& operator<<(QTextStream& s, const GraphNode& n)
diff --git a/src/kgraphviz/graphnode.h b/src/kgraphviz/graphnode.h
index 9f8c740..f53651e 100644
--- a/src/kgraphviz/graphnode.h
+++ b/src/kgraphviz/graphnode.h
@@ -60,6 +60,8 @@ public:
 
   virtual void updateWithNode(const GraphNode& node);
   virtual void updateWithNode(Agnode_t* node);
+
+  double width() const;
 };
 
 /** A map associating the ids of a graph's nodes to these nodes */


More information about the kgraphviewer-devel mailing list