diff historywidget.cpp @ 120:c92f5859c707

* Add incremental log (though not incremental relayout)
author Chris Cannam
date Mon, 29 Nov 2010 11:01:19 +0000
parents 005a54380502
children c3e8342d2de9
line wrap: on
line diff
--- a/historywidget.cpp	Sun Nov 28 21:52:00 2010 +0000
+++ b/historywidget.cpp	Mon Nov 29 11:01:19 2010 +0000
@@ -52,20 +52,42 @@
     m_changesets.clear();
 }
     
-void HistoryWidget::parseLog(QString log)
+void HistoryWidget::parseNewLog(QString log)
+{
+    DEBUG << "HistoryWidget::parseNewLog: log has " << log.length() << " chars" << endl;
+    Changesets csets = parseChangeSets(log);
+    DEBUG << "HistoryWidget::parseNewLog: log has " << csets.size() << " changesets" << endl;
+    clearChangesets();
+    m_changesets = csets;
+    layoutAll();
+}
+    
+void HistoryWidget::parseIncrementalLog(QString log)
+{
+    DEBUG << "HistoryWidget::parseIncrementalLog: log has " << log.length() << " chars" << endl;
+    Changesets csets = parseChangeSets(log);
+    DEBUG << "HistoryWidget::parseIncrementalLog: log has " << csets.size() << " changesets" << endl;
+    if (!csets.empty()) {
+        m_changesets << csets;
+        layoutAll();
+    }
+}
+
+void HistoryWidget::layoutAll()
 {
     ChangesetScene *scene = new ChangesetScene();
-    Changesets csets = parseChangeSets(log);
     ChangesetItem *tipItem = 0;
 
-    if (!csets.empty()) {
+    if (!m_changesets.empty()) {
 	Grapher g(scene);
 	try {
-	    g.layout(csets);
+	    g.layout(m_changesets);
 	} catch (std::string s) {
 	    std::cerr << "Internal error: Layout failed: " << s << std::endl;
 	}
-	tipItem = g.getItemFor(csets[0]);
+	tipItem = g.getItemFor(m_changesets[0]);
+        DEBUG << "tipItem is " << tipItem << " for tip changeset " 
+              << m_changesets[0]->id() << endl;
     }
 
     QGraphicsScene *oldScene = m_panned->scene();
@@ -73,10 +95,6 @@
     m_panner->setScene(scene);
 
     if (oldScene) delete oldScene;
-    clearChangesets();
-
-    m_changesets = csets;
-
     if (tipItem) tipItem->ensureVisible();
 }