# HG changeset patch
# User Chris Cannam
# Date 1298288278 0
# Node ID ca6edd303c9d9dffa40d880137346fb2a6a5813a
# Parent 769ab0fa125d836452020a848ef46d3141aec03b
Add "Summarise changes" options to changeset item right-button menu (already existed for uncommitted item)
diff -r 769ab0fa125d -r ca6edd303c9d changesetitem.cpp
--- a/changesetitem.cpp Mon Feb 21 09:13:22 2011 +0000
+++ b/changesetitem.cpp Mon Feb 21 11:37:58 2011 +0000
@@ -108,6 +108,7 @@
ChangesetItem::activateMenu()
{
m_parentDiffActions.clear();
+ m_summaryActions.clear();
QMenu *menu = new QMenu;
QLabel *label = new QLabel(tr(" Revision: %1")
@@ -120,16 +121,13 @@
QAction *copyId = menu->addAction(tr("Copy identifier to clipboard"));
connect(copyId, SIGNAL(triggered()), this, SLOT(copyIdActivated()));
- menu->addSeparator();
-
QStringList parents = m_changeset->parents();
+ QString leftId, rightId;
+ bool havePositions = false;
+
if (parents.size() > 1) {
-
- QString leftId, rightId;
ChangesetScene *cs = dynamic_cast(scene());
- bool havePositions = false;
-
if (cs && parents.size() == 2) {
ChangesetItem *i0 = cs->getItemById(parents[0]);
ChangesetItem *i1 = cs->getItemById(parents[1]);
@@ -144,37 +142,59 @@
havePositions = true;
}
}
+ }
+ if (parents.size() > 1) {
+ if (havePositions) {
+ QAction *stat = menu->addAction(tr("Summarise changes from left parent"));
+ connect(stat, SIGNAL(triggered()), this, SLOT(showSummaryToParentActivated()));
+ m_summaryActions[stat] = leftId;
+
+ stat = menu->addAction(tr("Summarise changes from right parent"));
+ connect(stat, SIGNAL(triggered()), this, SLOT(showSummaryToParentActivated()));
+ m_summaryActions[stat] = rightId;
+ } else {
+
+ foreach (QString parentId, parents) {
+ QString text = tr("Summarise changes from parent %1").arg(Changeset::hashOf(parentId));
+ QAction *stat = menu->addAction(text);
+ connect(stat, SIGNAL(triggered()), this, SLOT(showSummaryToParentActivated()));
+ m_summaryActions[stat] = parentId;
+ }
+
+ }
+ } else {
+ QAction *stat = menu->addAction(tr("Summarise changes"));
+ connect(stat, SIGNAL(triggered()), this, SLOT(showSummaryToParentActivated()));
+ }
+
+ menu->addSeparator();
+
+ if (parents.size() > 1) {
if (havePositions) {
- QAction *diffParent = menu->addAction(tr("Diff to left parent"));
- connect(diffParent, SIGNAL(triggered()),
- this, SLOT(diffToParentActivated()));
- m_parentDiffActions[diffParent] = leftId;
+ QAction *diff = menu->addAction(tr("Diff to left parent"));
+ connect(diff, SIGNAL(triggered()), this, SLOT(diffToParentActivated()));
+ m_parentDiffActions[diff] = leftId;
- diffParent = menu->addAction(tr("Diff to right parent"));
- connect(diffParent, SIGNAL(triggered()),
- this, SLOT(diffToParentActivated()));
- m_parentDiffActions[diffParent] = rightId;
+ diff = menu->addAction(tr("Diff to right parent"));
+ connect(diff, SIGNAL(triggered()), this, SLOT(diffToParentActivated()));
+ m_parentDiffActions[diff] = rightId;
} else {
foreach (QString parentId, parents) {
- QString text = tr("Diff to parent %1")
- .arg(Changeset::hashOf(parentId));
- QAction *diffParent = menu->addAction(text);
- connect(diffParent, SIGNAL(triggered()),
- this, SLOT(diffToParentActivated()));
- m_parentDiffActions[diffParent] = parentId;
+ QString text = tr("Diff to parent %1").arg(Changeset::hashOf(parentId));
+ QAction *diff = menu->addAction(text);
+ connect(diff, SIGNAL(triggered()), this, SLOT(diffToParentActivated()));
+ m_parentDiffActions[diff] = parentId;
}
}
} else {
- QAction *diffParent =
- menu->addAction(tr("Diff to parent"));
- connect(diffParent, SIGNAL(triggered()),
- this, SLOT(diffToParentActivated()));
+ QAction *diff = menu->addAction(tr("Diff to parent"));
+ connect(diff, SIGNAL(triggered()), this, SLOT(diffToParentActivated()));
}
QAction *diffCurrent = menu->addAction(tr("Diff to current working folder"));
@@ -223,14 +243,31 @@
emit diffToParent(getId(), parentId);
}
+void ChangesetItem::showSummaryToParentActivated()
+{
+ QAction *a = qobject_cast(sender());
+ QString parentId;
+ if (m_summaryActions.contains(a)) {
+ parentId = m_summaryActions[a];
+ DEBUG << "ChangesetItem::showSummaryToParentActivated: specific parent "
+ << parentId << " selected" << endl;
+ } else {
+ parentId = m_changeset->parents()[0];
+ DEBUG << "ChangesetItem::showSummaryToParentActivated: "
+ << "no specific parent selected, using first parent "
+ << parentId << endl;
+ }
+
+ emit showSummaryToParent(getId(), parentId);
+}
+
void ChangesetItem::updateActivated() { emit updateTo(getId()); }
void ChangesetItem::diffToCurrentActivated() { emit diffToCurrent(getId()); }
void ChangesetItem::mergeActivated() { emit mergeFrom(getId()); }
void ChangesetItem::tagActivated() { emit tag(getId()); }
void
-ChangesetItem::paint(QPainter *paint, const QStyleOptionGraphicsItem *option,
- QWidget *w)
+ChangesetItem::paint(QPainter *paint, const QStyleOptionGraphicsItem *, QWidget *)
{
paint->save();
diff -r 769ab0fa125d -r ca6edd303c9d changesetitem.h
--- a/changesetitem.h Mon Feb 21 09:13:22 2011 +0000
+++ b/changesetitem.h Mon Feb 21 11:37:58 2011 +0000
@@ -63,6 +63,7 @@
void updateTo(QString);
void diffToCurrent(QString);
void diffToParent(QString child, QString parent);
+ void showSummaryToParent(QString child, QString parent);
void mergeFrom(QString);
void tag(QString);
@@ -74,6 +75,7 @@
void copyIdActivated();
void updateActivated();
void diffToParentActivated();
+ void showSummaryToParentActivated();
void diffToCurrentActivated();
void mergeActivated();
void tagActivated();
@@ -95,6 +97,7 @@
bool m_new;
QMap m_parentDiffActions;
+ QMap m_summaryActions;
};
#endif // CHANGESETITEM_H
diff -r 769ab0fa125d -r ca6edd303c9d changesetscene.cpp
--- a/changesetscene.cpp Mon Feb 21 09:13:22 2011 +0000
+++ b/changesetscene.cpp Mon Feb 21 11:37:58 2011 +0000
@@ -45,6 +45,9 @@
connect(item, SIGNAL(diffToParent(QString, QString)),
this, SIGNAL(diffToParent(QString, QString)));
+ connect(item, SIGNAL(showSummaryToParent(QString, QString)),
+ this, SIGNAL(showSummaryToParent(QString, QString)));
+
connect(item, SIGNAL(mergeFrom(QString)),
this, SIGNAL(mergeFrom(QString)));
@@ -115,6 +118,7 @@
ChangesetItem *csit = dynamic_cast(it);
if (csit && csit->getId() == id) return csit;
}
+ return 0;
}
diff -r 769ab0fa125d -r ca6edd303c9d changesetscene.h
--- a/changesetscene.h Mon Feb 21 09:13:22 2011 +0000
+++ b/changesetscene.h Mon Feb 21 11:37:58 2011 +0000
@@ -46,6 +46,7 @@
void updateTo(QString id);
void diffToParent(QString id, QString parent);
+ void showSummaryToParent(QString id, QString parent);
void diffToCurrent(QString id);
void mergeFrom(QString id);
void tag(QString id);
diff -r 769ab0fa125d -r ca6edd303c9d hgaction.h
--- a/hgaction.h Mon Feb 21 09:13:22 2011 +0000
+++ b/hgaction.h Mon Feb 21 11:37:58 2011 +0000
@@ -43,6 +43,7 @@
ACT_INIT,
ACT_COMMIT,
ACT_ANNOTATE,
+ ACT_UNCOMMITTED_SUMMARY,
ACT_DIFF_SUMMARY,
ACT_FOLDERDIFF,
ACT_CHGSETDIFF,
diff -r 769ab0fa125d -r ca6edd303c9d hgtabwidget.cpp
--- a/hgtabwidget.cpp Mon Feb 21 09:13:22 2011 +0000
+++ b/hgtabwidget.cpp Mon Feb 21 11:37:58 2011 +0000
@@ -69,6 +69,9 @@
connect(m_historyWidget, SIGNAL(diffToParent(QString, QString)),
this, SIGNAL(diffToParent(QString, QString)));
+ connect(m_historyWidget, SIGNAL(showSummaryToParent(QString, QString)),
+ this, SIGNAL(showSummaryToParent(QString, QString)));
+
connect(m_historyWidget, SIGNAL(mergeFrom(QString)),
this, SIGNAL(mergeFrom(QString)));
diff -r 769ab0fa125d -r ca6edd303c9d hgtabwidget.h
--- a/hgtabwidget.h Mon Feb 21 09:13:22 2011 +0000
+++ b/hgtabwidget.h Mon Feb 21 11:37:58 2011 +0000
@@ -91,6 +91,7 @@
void updateTo(QString id);
void diffToParent(QString id, QString parent);
+ void showSummaryToParent(QString id, QString parent);
void diffToCurrent(QString id);
void mergeFrom(QString id);
void tag(QString id);
diff -r 769ab0fa125d -r ca6edd303c9d historywidget.cpp
--- a/historywidget.cpp Mon Feb 21 09:13:22 2011 +0000
+++ b/historywidget.cpp Mon Feb 21 11:37:58 2011 +0000
@@ -277,6 +277,9 @@
connect(scene, SIGNAL(diffToParent(QString, QString)),
this, SIGNAL(diffToParent(QString, QString)));
+ connect(scene, SIGNAL(showSummaryToParent(QString, QString)),
+ this, SIGNAL(showSummaryToParent(QString, QString)));
+
connect(scene, SIGNAL(mergeFrom(QString)),
this, SIGNAL(mergeFrom(QString)));
diff -r 769ab0fa125d -r ca6edd303c9d historywidget.h
--- a/historywidget.h Mon Feb 21 09:13:22 2011 +0000
+++ b/historywidget.h Mon Feb 21 11:37:58 2011 +0000
@@ -54,6 +54,7 @@
void updateTo(QString id);
void diffToParent(QString id, QString parent);
+ void showSummaryToParent(QString id, QString parent);
void diffToCurrent(QString id);
void mergeFrom(QString id);
void tag(QString id);
diff -r 769ab0fa125d -r ca6edd303c9d mainwindow.cpp
--- a/mainwindow.cpp Mon Feb 21 09:13:22 2011 +0000
+++ b/mainwindow.cpp Mon Feb 21 11:37:58 2011 +0000
@@ -545,7 +545,7 @@
params << "diff" << "--stat";
- m_runner->requestAction(HgAction(ACT_DIFF_SUMMARY, m_workFolderPath, params));
+ m_runner->requestAction(HgAction(ACT_UNCOMMITTED_SUMMARY, m_workFolderPath, params));
}
void MainWindow::hgFolderDiff()
@@ -601,6 +601,18 @@
}
+void MainWindow::hgShowSummaryToParent(QString child, QString parent)
+{
+ QStringList params;
+
+ params << "diff" << "--stat"
+ << "--rev" << Changeset::hashOf(parent)
+ << "--rev" << Changeset::hashOf(child);
+
+ m_runner->requestAction(HgAction(ACT_DIFF_SUMMARY, m_workFolderPath, params));
+}
+
+
void MainWindow::hgUpdate()
{
QStringList params;
@@ -1897,13 +1909,28 @@
m_shouldHgStat = true;
break;
- case ACT_DIFF_SUMMARY:
+ case ACT_UNCOMMITTED_SUMMARY:
QMessageBox::information(this, tr("Change summary"),
format3(tr("Summary of uncommitted changes"),
"",
output));
break;
+ case ACT_DIFF_SUMMARY:
+ if (output == "") {
+ // Can happen, for a merge commit
+ QMessageBox::information(this, tr("Change summary"),
+ format3(tr("Summary of changes"),
+ tr("No changes"),
+ output));
+ } else {
+ QMessageBox::information(this, tr("Change summary"),
+ format3(tr("Summary of changes"),
+ "",
+ output));
+ }
+ break;
+
case ACT_FOLDERDIFF:
case ACT_CHGSETDIFF:
case ACT_SERVE:
@@ -2079,6 +2106,9 @@
connect(m_hgTabs, SIGNAL(diffToParent(QString, QString)),
this, SLOT(hgDiffToParent(QString, QString)));
+ connect(m_hgTabs, SIGNAL(showSummaryToParent(QString, QString)),
+ this, SLOT(hgShowSummaryToParent(QString, QString)));
+
connect(m_hgTabs, SIGNAL(mergeFrom(QString)),
this, SLOT(hgMergeFrom(QString)));
diff -r 769ab0fa125d -r ca6edd303c9d mainwindow.h
--- a/mainwindow.h Mon Feb 21 09:13:22 2011 +0000
+++ b/mainwindow.h Mon Feb 21 11:37:58 2011 +0000
@@ -69,6 +69,7 @@
void hgAdd();
void hgCommit();
void hgShowSummary();
+ void hgShowSummaryToParent(QString, QString);
void hgFolderDiff();
void hgDiffToCurrent(QString);
void hgDiffToParent(QString, QString);