comparison 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
comparison
equal deleted inserted replaced
119:005a54380502 120:c92f5859c707
50 { 50 {
51 foreach (Changeset *cs, m_changesets) delete cs; 51 foreach (Changeset *cs, m_changesets) delete cs;
52 m_changesets.clear(); 52 m_changesets.clear();
53 } 53 }
54 54
55 void HistoryWidget::parseLog(QString log) 55 void HistoryWidget::parseNewLog(QString log)
56 {
57 DEBUG << "HistoryWidget::parseNewLog: log has " << log.length() << " chars" << endl;
58 Changesets csets = parseChangeSets(log);
59 DEBUG << "HistoryWidget::parseNewLog: log has " << csets.size() << " changesets" << endl;
60 clearChangesets();
61 m_changesets = csets;
62 layoutAll();
63 }
64
65 void HistoryWidget::parseIncrementalLog(QString log)
66 {
67 DEBUG << "HistoryWidget::parseIncrementalLog: log has " << log.length() << " chars" << endl;
68 Changesets csets = parseChangeSets(log);
69 DEBUG << "HistoryWidget::parseIncrementalLog: log has " << csets.size() << " changesets" << endl;
70 if (!csets.empty()) {
71 m_changesets << csets;
72 layoutAll();
73 }
74 }
75
76 void HistoryWidget::layoutAll()
56 { 77 {
57 ChangesetScene *scene = new ChangesetScene(); 78 ChangesetScene *scene = new ChangesetScene();
58 Changesets csets = parseChangeSets(log);
59 ChangesetItem *tipItem = 0; 79 ChangesetItem *tipItem = 0;
60 80
61 if (!csets.empty()) { 81 if (!m_changesets.empty()) {
62 Grapher g(scene); 82 Grapher g(scene);
63 try { 83 try {
64 g.layout(csets); 84 g.layout(m_changesets);
65 } catch (std::string s) { 85 } catch (std::string s) {
66 std::cerr << "Internal error: Layout failed: " << s << std::endl; 86 std::cerr << "Internal error: Layout failed: " << s << std::endl;
67 } 87 }
68 tipItem = g.getItemFor(csets[0]); 88 tipItem = g.getItemFor(m_changesets[0]);
89 DEBUG << "tipItem is " << tipItem << " for tip changeset "
90 << m_changesets[0]->id() << endl;
69 } 91 }
70 92
71 QGraphicsScene *oldScene = m_panned->scene(); 93 QGraphicsScene *oldScene = m_panned->scene();
72 m_panned->setScene(scene); 94 m_panned->setScene(scene);
73 m_panner->setScene(scene); 95 m_panner->setScene(scene);
74 96
75 if (oldScene) delete oldScene; 97 if (oldScene) delete oldScene;
76 clearChangesets();
77
78 m_changesets = csets;
79
80 if (tipItem) tipItem->ensureVisible(); 98 if (tipItem) tipItem->ensureVisible();
81 } 99 }
82 100
83 Changesets HistoryWidget::parseChangeSets(QString changeSetsStr) 101 Changesets HistoryWidget::parseChangeSets(QString changeSetsStr)
84 { 102 {