# HG changeset patch # User Chris Cannam # Date 1291237373 0 # Node ID 2fef6b0dfbe85a86912d63b85d17a8d05ad88dd3 # Parent 465c8d51c6d5728a4e4de55d57755a59c1071cc4 * Some implementation of right-button menu actions on changeset item diff -r 465c8d51c6d5 -r 2fef6b0dfbe8 changesetitem.cpp --- a/changesetitem.cpp Wed Dec 01 20:19:21 2010 +0000 +++ b/changesetitem.cpp Wed Dec 01 21:02:53 2010 +0000 @@ -128,13 +128,13 @@ QAction *tag = menu->addAction(tr("Tag this revision")); connect(tag, SIGNAL(triggered()), this, SLOT(tagActivated())); - QAction *a = menu->exec(QCursor::pos()); + menu->exec(QCursor::pos()); + ungrabMouse(); - if (a) a->trigger(); } void ChangesetItem::updateActivated() { emit updateTo(getId()); } -void ChangesetItem::diffToPreviousActivated() { emit diffToPrevious(getId()); } +void ChangesetItem::diffToPreviousActivated() { emit diffToParent(getId(), m_changeset->parents()[0]); } //!!! no, this is most likely to be useful when something has more than one parent! void ChangesetItem::diffToCurrentActivated() { emit diffToCurrent(getId()); } void ChangesetItem::mergeActivated() { emit mergeFrom(getId()); } void ChangesetItem::tagActivated() { emit tag(getId()); } diff -r 465c8d51c6d5 -r 2fef6b0dfbe8 changesetitem.h --- a/changesetitem.h Wed Dec 01 20:19:21 2010 +0000 +++ b/changesetitem.h Wed Dec 01 21:02:53 2010 +0000 @@ -60,8 +60,8 @@ void detailHidden(); void updateTo(QString); - void diffToPrevious(QString); void diffToCurrent(QString); + void diffToParent(QString child, QString parent); void mergeFrom(QString); void tag(QString); diff -r 465c8d51c6d5 -r 2fef6b0dfbe8 changesetscene.cpp --- a/changesetscene.cpp Wed Dec 01 20:19:21 2010 +0000 +++ b/changesetscene.cpp Wed Dec 01 21:02:53 2010 +0000 @@ -38,8 +38,8 @@ connect(item, SIGNAL(diffToCurrent(QString)), this, SIGNAL(diffToCurrent(QString))); - connect(item, SIGNAL(diffToPrevious(QString)), - this, SIGNAL(diffToPrevious(QString))); + connect(item, SIGNAL(diffToParent(QString, QString)), + this, SIGNAL(diffToParent(QString, QString))); connect(item, SIGNAL(mergeFrom(QString)), this, SIGNAL(mergeFrom(QString))); diff -r 465c8d51c6d5 -r 2fef6b0dfbe8 changesetscene.h --- a/changesetscene.h Wed Dec 01 20:19:21 2010 +0000 +++ b/changesetscene.h Wed Dec 01 21:02:53 2010 +0000 @@ -39,7 +39,7 @@ void diffWorkingFolder(); void updateTo(QString id); - void diffToPrevious(QString id); + void diffToParent(QString id, QString parent); void diffToCurrent(QString id); void mergeFrom(QString id); void tag(QString id); diff -r 465c8d51c6d5 -r 2fef6b0dfbe8 hgtabwidget.cpp --- a/hgtabwidget.cpp Wed Dec 01 20:19:21 2010 +0000 +++ b/hgtabwidget.cpp Wed Dec 01 21:02:53 2010 +0000 @@ -58,8 +58,8 @@ connect(m_historyWidget, SIGNAL(diffToCurrent(QString)), this, SIGNAL(diffToCurrent(QString))); - connect(m_historyWidget, SIGNAL(diffToPrevious(QString)), - this, SIGNAL(diffToPrevious(QString))); + connect(m_historyWidget, SIGNAL(diffToParent(QString, QString)), + this, SIGNAL(diffToParent(QString, QString))); connect(m_historyWidget, SIGNAL(mergeFrom(QString)), this, SIGNAL(mergeFrom(QString))); diff -r 465c8d51c6d5 -r 2fef6b0dfbe8 hgtabwidget.h --- a/hgtabwidget.h Wed Dec 01 20:19:21 2010 +0000 +++ b/hgtabwidget.h Wed Dec 01 21:02:53 2010 +0000 @@ -80,7 +80,7 @@ void diffWorkingFolder(); void updateTo(QString id); - void diffToPrevious(QString id); + void diffToParent(QString id, QString parent); void diffToCurrent(QString id); void mergeFrom(QString id); void tag(QString id); diff -r 465c8d51c6d5 -r 2fef6b0dfbe8 historywidget.cpp --- a/historywidget.cpp Wed Dec 01 20:19:21 2010 +0000 +++ b/historywidget.cpp Wed Dec 01 21:02:53 2010 +0000 @@ -250,8 +250,8 @@ connect(scene, SIGNAL(diffToCurrent(QString)), this, SIGNAL(diffToCurrent(QString))); - connect(scene, SIGNAL(diffToPrevious(QString)), - this, SIGNAL(diffToPrevious(QString))); + connect(scene, SIGNAL(diffToParent(QString, QString)), + this, SIGNAL(diffToParent(QString, QString))); connect(scene, SIGNAL(mergeFrom(QString)), this, SIGNAL(mergeFrom(QString))); diff -r 465c8d51c6d5 -r 2fef6b0dfbe8 historywidget.h --- a/historywidget.h Wed Dec 01 20:19:21 2010 +0000 +++ b/historywidget.h Wed Dec 01 21:02:53 2010 +0000 @@ -49,7 +49,7 @@ void diffWorkingFolder(); void updateTo(QString id); - void diffToPrevious(QString id); + void diffToParent(QString id, QString parent); void diffToCurrent(QString id); void mergeFrom(QString id); void tag(QString id); diff -r 465c8d51c6d5 -r 2fef6b0dfbe8 mainwindow.cpp --- a/mainwindow.cpp Wed Dec 01 20:19:21 2010 +0000 +++ b/mainwindow.cpp Wed Dec 01 21:02:53 2010 +0000 @@ -447,37 +447,40 @@ // Diff parent against working folder (folder diff) - params << "--config" << "extensions.extdiff=" << "extdiff" << "-p"; - params << diffBinaryName; + params << "--config" << "extensions.extdiff=" << "extdiff"; + params << "--program" << diffBinaryName; runner->requestAction(HgAction(ACT_FOLDERDIFF, workFolderPath, params)); } -void MainWindow::hgChgSetDiff() +void MainWindow::hgDiffToCurrent(QString id) { - QStringList params; + QStringList params; - //Diff 2 history log versions against each other - QString revA; - QString revB; -/*!!! - hgTabs -> getHistoryDiffRevisions(revA, revB); + // Diff given revision against working folder - if ((!revA.isEmpty()) && (!revB.isEmpty())) - { - params << "kdiff3" << "--rev" << revA << "--rev" << revB; - runner -> startHgCommand(workFolderPath, params); - runningAction = ACT_CHGSETDIFF; - } - else - { - QMessageBox::information(this, tr("Changeset diff"), tr("Please select two changesets from history list or heads list first.")); - } - */ + params << "--config" << "extensions.extdiff=" << "extdiff"; + params << "--program" << diffBinaryName; + params << "--rev" << id; + + runner->requestAction(HgAction(ACT_FOLDERDIFF, workFolderPath, params)); } +void MainWindow::hgDiffToParent(QString child, QString parent) +{ + QStringList params; + + // Diff given revision against working folder + + params << "--config" << "extensions.extdiff=" << "extdiff"; + params << "--program" << diffBinaryName; + params << "--rev" << parent << "--rev" << child; + + runner->requestAction(HgAction(ACT_CHGSETDIFF, workFolderPath, params)); +} + void MainWindow::hgUpdate() { @@ -489,23 +492,13 @@ } -void MainWindow::hgUpdateToRev() +void MainWindow::hgUpdateToRev(QString id) { - QStringList params; - QString rev; -/*!!! - hgTabs -> getUpdateToRevRevision(rev); + QStringList params; - hgTabs -> setCurrentIndex(WORKTAB); - enableDisableActions(); + params << "update" << "--rev" << id << "--check"; - params << "update" << "--rev" << rev << "--clean"; - - runner -> startHgCommand(workFolderPath, params); - - runningAction = ACT_UPDATE; - */ - + runner->requestAction(HgAction(ACT_UPDATE, workFolderPath, params)); } @@ -553,6 +546,17 @@ } +void MainWindow::hgMergeFrom(QString id) +{ + QStringList params; + + params << "merge"; + params << "--rev" << id; + + runner->requestAction(HgAction(ACT_MERGE, workFolderPath, params)); +} + + void MainWindow::hgCloneFromRemote() { QStringList params; @@ -1391,7 +1395,7 @@ // connect(hgTabs, SIGNAL(currentChanged(int)), this, SLOT(tabChanged(int))); - connect(hgUpdateToRevAct, SIGNAL(triggered()), this, SLOT(hgUpdateToRev())); +// connect(hgUpdateToRevAct, SIGNAL(triggered()), this, SLOT(hgUpdateToRev())); connect(hgAnnotateAct, SIGNAL(triggered()), this, SLOT(hgAnnotate())); connect(hgResolveListAct, SIGNAL(triggered()), this, SLOT(hgResolveList())); connect(hgResolveMarkAct, SIGNAL(triggered()), this, SLOT(hgResolveMark())); @@ -1409,21 +1413,21 @@ connect(hgTabs, SIGNAL(diffWorkingFolder()), this, SLOT(hgFolderDiff())); -/*!!!! + connect(hgTabs, SIGNAL(updateTo(QString)), - this, SIGNAL(updateTo(QString))); + this, SLOT(hgUpdateToRev(QString))); connect(hgTabs, SIGNAL(diffToCurrent(QString)), - this, SIGNAL(diffToCurrent(QString))); + this, SLOT(hgDiffToCurrent(QString))); - connect(hgTabs, SIGNAL(diffToPrevious(QString)), - this, SIGNAL(diffToPrevious(QString))); + connect(hgTabs, SIGNAL(diffToParent(QString, QString)), + this, SLOT(hgDiffToParent(QString, QString))); connect(hgTabs, SIGNAL(mergeFrom(QString)), - this, SIGNAL(mergeFrom(QString))); - + this, SLOT(hgMergeFrom(QString))); +/* connect(hgTabs, SIGNAL(tag(QString)), - this, SIGNAL(tag(QString))); + this, SLOT(hgTag(QString))); */ } @@ -1635,9 +1639,9 @@ hgMergeAct->setStatusTip(tr("Merge two local repository changesets to working folder")); //Advanced actions - hgUpdateToRevAct = new QAction(tr("Update to revision"), this); +/* hgUpdateToRevAct = new QAction(tr("Update to revision"), this); hgUpdateToRevAct -> setStatusTip(tr("Update working folder to version selected from history list")); - +*/ hgAnnotateAct = new QAction(tr("Annotate"), this); hgAnnotateAct -> setStatusTip(tr("Show line-by-line version information for selected file")); diff -r 465c8d51c6d5 -r 2fef6b0dfbe8 mainwindow.h --- a/mainwindow.h Wed Dec 01 20:19:21 2010 +0000 +++ b/mainwindow.h Wed Dec 01 21:02:53 2010 +0000 @@ -76,7 +76,8 @@ void hgCommit(); void hgFileDiff(); void hgFolderDiff(); - void hgChgSetDiff(); + void hgDiffToCurrent(QString); + void hgDiffToParent(QString, QString); void hgUpdate(); void hgRevert(); void hgMerge(); @@ -86,7 +87,8 @@ void hgIncoming(); void hgPush(); void hgPull(); - void hgUpdateToRev(); + void hgUpdateToRev(QString); + void hgMergeFrom(QString); void hgAnnotate(); void hgResolveList(); void hgResolveMark();