Mercurial > hg > easyhg
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(); }