Mercurial > hg > easyhg
diff hgexpwidget.cpp @ 45:4286836bb3c9
* Some more work on graph layout; ensure LANG is set for parseable UTF8 output when running Hg
author | Chris Cannam <cannam@all-day-breakfast.com> |
---|---|
date | Wed, 10 Nov 2010 12:44:11 +0000 |
parents | bed7ab59f62e |
children | c76782c14371 |
line wrap: on
line diff
--- a/hgexpwidget.cpp Tue Nov 09 17:51:12 2010 +0000 +++ b/hgexpwidget.cpp Wed Nov 10 12:44:11 2010 +0000 @@ -12,6 +12,8 @@ #include "changeset.h" #include "changesetitem.h" #include "grapher.h" +#include "panner.h" +#include "panned.h" #include <iostream> @@ -91,7 +93,17 @@ addTab(workPageWidget, tr("Work")); // History graph page - historyGraphPageWidget = new QGraphicsView; + historyGraphPageWidget = new QWidget; + Panned *panned = new Panned; + Panner *panner = new Panner; + historyGraphWidget = panned; + historyGraphPanner = panner; + QGridLayout *layout = new QGridLayout; + layout->addWidget(historyGraphWidget, 0, 0); + layout->addWidget(historyGraphPanner, 0, 1); + panner->setMaximumWidth(80); + panner->connectToPanned(panned); + historyGraphPageWidget->setLayout(layout); addTab(historyGraphPageWidget, tr("History (graph)")); @@ -244,56 +256,20 @@ localRepoHgLogList -> addItems(splitChangeSets(hgLogList)); //!!! - QGraphicsView *gv = static_cast<QGraphicsView *>(historyGraphPageWidget); - gv->scene()->deleteLater(); + Panned *panned = static_cast<Panned *>(historyGraphWidget); + Panner *panner = static_cast<Panner *>(historyGraphPanner); QGraphicsScene *scene = new QGraphicsScene(); Changesets csets = parseChangeSets(hgLogList); if (csets.empty()) return; - ChangesetItemMap csetItemMap; - foreach (Changeset *cs, csets) { - ChangesetItem *item = new ChangesetItem(cs); - item->setX(0); - item->setY(0); - csetItemMap[cs] = item; - scene->addItem(item); - } try { - Grapher().layout(csets, csetItemMap); + Grapher(scene).layout(csets); } catch (std::string s) { std::cerr << "Internal error: Layout failed: " << s << std::endl; } -/* - QMap<QString, Changeset *> idCsetMap; - foreach (Changeset *cs, csets) { - if (cs->id() == "") { - throw std::string("Changeset has no ID"); - } - if (idCsetMap.contains(cs->id())) { - throw std::string("Changeset ID is already in map"); - } - idCsetMap[cs->id()] = cs; - } - typedef QSet<int> ColumnSet; - typedef QMap<int, ColumnSet> GridAlloc; - typedef QMap<Changeset *, ChangesetItem *> ChangesetItemMap; - ChangesetItemMap csetItemMap; - foreach (Changeset *cs, csets) { - ChangesetItem *item = new ChangesetItem(cs); - item->setX(0); - item->setY(-cs->number() * 100); - csetItemMap[cs] = item; - scene->addItem(item); - } - QSet<Changeset *> handled; - for (int i = csets.size() - 1; i >= 0; --i) { - Changeset *cs = csets[i]; - if (handled.contains(cs)) continue; - - - handled.insert(cs); - } -*/ - gv->setScene(scene); + panned->scene()->deleteLater(); + panned->setScene(scene); + panner->scene()->deleteLater(); + panner->setScene(scene); }