[kgraphviewer-devel] [KGraphViewer/libkgraphviz] 4f2de85: Reduce code duplication in dotgraphview

Kevin Funk krf at electrostorm.net
Tue Dec 14 18:13:29 CET 2010


commit 4f2de85445d73557715a06320fc83ccf854ae65c
branch libkgraphviz
Author: Kevin Funk <krf at electrostorm.net>
Date:   Tue Dec 14 13:26:41 2010 +0100

    Reduce code duplication in dotgraphview
    
    DotGraphView::loadLibrary() and loadDot() shared most of the code. Merge
    this into DotGraphViewPrivate::setupCanvas()

diff --git a/src/kgraphviz/dotgraphview.cpp b/src/kgraphviz/dotgraphview.cpp
index b6c9d4a..2124376 100644
--- a/src/kgraphviz/dotgraphview.cpp
+++ b/src/kgraphviz/dotgraphview.cpp
@@ -144,6 +144,7 @@ public:
 
   void updateSizes(QSizeF s = QSizeF(0,0));
   void updateBirdEyeView();
+  void setupCanvas();
   void setupPopup();
   void exportToImage();
   KActionCollection* actionCollection() {return m_actions;}
@@ -674,99 +675,56 @@ void DotGraphView::setBackgroundColor(const QColor& color)
   d->m_canvas->setBackgroundBrush(QBrush(d->m_backgroundColor));
 }
 
-bool DotGraphView::initEmpty()
+void DotGraphViewPrivate::setupCanvas()
 {
+  Q_Q(DotGraphView);
   kDebug();
-  Q_D(DotGraphView);
-  d->m_birdEyeView->hide();
-  d->m_birdEyeView->setScene(0);
+  m_birdEyeView->hide();
+  m_birdEyeView->setScene(0);
   
-  if (d->m_canvas) 
-  {
-    delete d->m_canvas;
-    d->m_canvas = 0;
+  if (m_canvas) {
+    delete m_canvas;
+    m_canvas = 0;
   }
 
-  if (d->m_graph != 0)
-    delete d->m_graph;
-  d->m_graph = new DotGraph();
-  connect(d->m_graph,SIGNAL(readyToDisplay()),this,SLOT(displayGraph()));
+  if (m_graph != 0)
+    delete m_graph;
+  m_graph = new DotGraph();
+  q->connect(m_graph,SIGNAL(readyToDisplay()),q,SLOT(displayGraph()));
 
-  if (d->m_readWrite)
-  {
-    d->m_graph->setReadWrite();
+  if (m_readWrite) {
+    m_graph->setReadWrite();
   }
   
 //   kDebug() << "Parsing " << m_graph->dotFileName() << " with " << m_graph->layoutCommand();
-  d->m_xMargin = 50;
-  d->m_yMargin = 50;
+  m_xMargin = 50;
+  m_yMargin = 50;
 
   QGraphicsScene* newCanvas = new QGraphicsScene();
   QGraphicsSimpleTextItem* item = newCanvas->addSimpleText(i18n("no graph loaded"));
 //   kDebug() << "Created canvas " << newCanvas;
   
-  d->m_birdEyeView->setScene(newCanvas);
+  m_birdEyeView->setScene(newCanvas);
 //   std::cerr << "After m_birdEyeView set canvas" << std::endl;
   
-  setScene(newCanvas);
-  d->m_canvas = newCanvas;
-  centerOn(item);
-
-  d->m_cvZoom = 0;
+  q->setScene(newCanvas);
+  m_canvas = newCanvas;
+  q->centerOn(item);
 
-  return true;
+  m_cvZoom = 0;
 }
 
 bool DotGraphView::loadDot(const QString& dotFileName)
 {
-  kDebug() << "'" << dotFileName << "'";
+  kDebug() << "Filename:" << dotFileName;
   Q_D(DotGraphView);
-  d->m_birdEyeView->setScene(0);
-
-  if (d->m_canvas)
-  {
-    d->m_canvas->deleteLater();
-    d->m_canvas = 0;
-  }
-
-  QString layoutCommand = (d->m_graph!=0?d->m_graph->layoutCommand():"");
-  if (d->m_graph != 0)
-    delete d->m_graph;
-  d->m_graph = new DotGraph(layoutCommand,dotFileName);
-  connect(d->m_graph,SIGNAL(readyToDisplay()),this,SLOT(displayGraph()));
-
-  if (d->m_readWrite)
-  {
-    d->m_graph->setReadWrite();
-  }
-  if (layoutCommand.isEmpty())
-  {
-    layoutCommand = d->m_graph->chooseLayoutProgramForFile(d->m_graph->dotFileName());
-  }
-  d->m_graph->layoutCommand(layoutCommand);
-
-//   kDebug() << "Parsing " << m_graph->dotFileName() << " with " << m_graph->layoutCommand();
-  d->m_xMargin = 50;
-  d->m_yMargin = 50;
-
-  QGraphicsScene* newCanvas = new QGraphicsScene();
-  kDebug() << "Created canvas " << newCanvas;
+  d->setupCanvas();
 
-  d->m_birdEyeView->setScene(newCanvas);
-//   std::cerr << "After m_birdEyeView set canvas" << std::endl;
-
-  setScene(newCanvas);
-  connect(newCanvas,SIGNAL(selectionChanged ()),this,SLOT(slotSelectionChanged()));
-  d->m_canvas = newCanvas;
-
-  QGraphicsSimpleTextItem* loadingLabel = newCanvas->addSimpleText(i18n("graph %1 is getting loaded...", dotFileName));
+  QGraphicsSimpleTextItem* loadingLabel = d->m_canvas->addSimpleText(i18n("graph %1 is getting loaded...", dotFileName));
   loadingLabel->setZValue(100);
   centerOn(loadingLabel);
 
-  d->m_cvZoom = 0;
-
-  if (!d->m_graph->parseDot(d->m_graph->dotFileName()))
-  {
+  if (!d->m_graph->parseDot(d->m_graph->dotFileName())) {
     kError() << "NOT successfully parsed!" << endl;
     loadingLabel->setText(i18n("error parsing file %1", dotFileName));
     return false;
@@ -795,43 +753,8 @@ bool DotGraphView::loadLibrary(graph_t* graph, const QString& layoutCommand)
   kDebug() << "Agraph_t:" << graph << "- Layout command:" << layoutCommand;
 
   Q_D(DotGraphView);
-  d->m_birdEyeView->setScene(0);
-  
-  if (d->m_canvas)
-  {
-    d->m_canvas->deleteLater();
-    d->m_canvas = 0;
-  }
-  
-  if (d->m_graph != 0)
-    delete d->m_graph;
-
-  kDebug() << "layoutCommand:" << layoutCommand;
-  d->m_graph = new DotGraph(layoutCommand,"");
-  d->m_graph->setUseLibrary(true);
-  
-  connect(d->m_graph,SIGNAL(readyToDisplay()),this,SLOT(displayGraph()));
-  
-  if (d->m_readWrite)
-  {
-    d->m_graph->setReadWrite();
-  }
-  
-  d->m_xMargin = 50;
-  d->m_yMargin = 50;
-  
-  QGraphicsScene* newCanvas = new QGraphicsScene();
-  kDebug() << "Created canvas " << newCanvas;
-  
-  d->m_birdEyeView->setScene(newCanvas);
-  setScene(newCanvas);
-  connect(newCanvas,SIGNAL(selectionChanged ()),this,SLOT(slotSelectionChanged()));
-  d->m_canvas = newCanvas;
-  
-  d->m_cvZoom = 0;
-                                 
+  d->setupCanvas();
   d->m_graph->updateWithGraph(graph);
-
   return true;
 }
 
@@ -1519,6 +1442,12 @@ bool DotGraphView::reload()
     return loadDot(fileName);
 }
 
+void DotGraphView::initEmpty()
+{
+  Q_D(DotGraphView);
+  d->setupCanvas();
+}
+
 void DotGraphView::dirty(const QString& dotFileName)
 {
   Q_D(DotGraphView);
diff --git a/src/kgraphviz/dotgraphview.h b/src/kgraphviz/dotgraphview.h
index 306e602..c09367d 100644
--- a/src/kgraphviz/dotgraphview.h
+++ b/src/kgraphviz/dotgraphview.h
@@ -193,10 +193,10 @@ public Q_SLOTS:
   void zoomOut();  
   void zoomRectMovedTo(QPointF newZoomPos);
   void zoomRectMoveFinished();
-  bool initEmpty();
   bool reload();
   void dirty(const QString& dotFileName);
   void pageSetup();
+  void initEmpty();
   void print();
   void printPreview();
   void viewBevActivated(int newPos);
diff --git a/src/part/kgraphviewer_part.cpp b/src/part/kgraphviewer_part.cpp
index aca7933..50a123f 100644
--- a/src/part/kgraphviewer_part.cpp
+++ b/src/part/kgraphviewer_part.cpp
@@ -178,7 +178,8 @@ void KGraphViewerPart::slotClose()
 
 bool KGraphViewerPart::closeUrl()
 {
-  return d->m_widget->initEmpty();
+  d->m_widget->initEmpty();
+  return true;
 }
 
 KGraphViewerPart::~KGraphViewerPart()


More information about the kgraphviewer-devel mailing list