# HG changeset patch # User Chris Cannam # Date 1297252995 0 # Node ID f7cdd5b31aedb5df01f6d75dd84152d1a04782c7 # Parent b6e4643d6c0506e02f122602b04199c373d042dc Add "Start new branch" function. I'm not quite satisfied with the location of this one diff -r b6e4643d6c05 -r f7cdd5b31aed changesetitem.cpp --- a/changesetitem.cpp Wed Feb 09 12:02:53 2011 +0000 +++ b/changesetitem.cpp Wed Feb 09 12:03:15 2011 +0000 @@ -153,6 +153,10 @@ menu->addSeparator(); + QAction *branch = menu->addAction(tr("Start new branch...")); + branch->setEnabled(m_current); + connect(branch, SIGNAL(triggered()), this, SLOT(newBranchActivated())); + QAction *tag = menu->addAction(tr("Add tag...")); connect(tag, SIGNAL(triggered()), this, SLOT(tagActivated())); @@ -190,6 +194,7 @@ void ChangesetItem::diffToCurrentActivated() { emit diffToCurrent(getId()); } void ChangesetItem::mergeActivated() { emit mergeFrom(getId()); } void ChangesetItem::tagActivated() { emit tag(getId()); } +void ChangesetItem::newBranchActivated() { emit newBranch(getId()); } void ChangesetItem::paint(QPainter *paint, const QStyleOptionGraphicsItem *option, diff -r b6e4643d6c05 -r f7cdd5b31aed changesetitem.h --- a/changesetitem.h Wed Feb 09 12:02:53 2011 +0000 +++ b/changesetitem.h Wed Feb 09 12:03:15 2011 +0000 @@ -64,6 +64,7 @@ void diffToCurrent(QString); void diffToParent(QString child, QString parent); void mergeFrom(QString); + void newBranch(QString); void tag(QString); public slots: @@ -77,6 +78,7 @@ void diffToCurrentActivated(); void mergeActivated(); void tagActivated(); + void newBranchActivated(); protected: virtual void mousePressEvent(QGraphicsSceneMouseEvent *); diff -r b6e4643d6c05 -r f7cdd5b31aed changesetscene.cpp --- a/changesetscene.cpp Wed Feb 09 12:02:53 2011 +0000 +++ b/changesetscene.cpp Wed Feb 09 12:03:15 2011 +0000 @@ -48,6 +48,9 @@ connect(item, SIGNAL(mergeFrom(QString)), this, SIGNAL(mergeFrom(QString))); + connect(item, SIGNAL(newBranch(QString)), + this, SIGNAL(newBranch(QString))); + connect(item, SIGNAL(tag(QString)), this, SIGNAL(tag(QString))); } diff -r b6e4643d6c05 -r f7cdd5b31aed changesetscene.h --- a/changesetscene.h Wed Feb 09 12:02:53 2011 +0000 +++ b/changesetscene.h Wed Feb 09 12:03:15 2011 +0000 @@ -46,6 +46,7 @@ void diffToParent(QString id, QString parent); void diffToCurrent(QString id); void mergeFrom(QString id); + void newBranch(QString id); void tag(QString id); private slots: diff -r b6e4643d6c05 -r f7cdd5b31aed hgaction.h --- a/hgaction.h Wed Feb 09 12:02:53 2011 +0000 +++ b/hgaction.h Wed Feb 09 12:03:15 2011 +0000 @@ -53,6 +53,7 @@ ACT_RESOLVE_MARK, ACT_RETRY_MERGE, ACT_TAG, + ACT_NEW_BRANCH, ACT_HG_IGNORE, }; diff -r b6e4643d6c05 -r f7cdd5b31aed hgtabwidget.cpp --- a/hgtabwidget.cpp Wed Feb 09 12:02:53 2011 +0000 +++ b/hgtabwidget.cpp Wed Feb 09 12:03:15 2011 +0000 @@ -72,6 +72,9 @@ connect(m_historyWidget, SIGNAL(mergeFrom(QString)), this, SIGNAL(mergeFrom(QString))); + connect(m_historyWidget, SIGNAL(newBranch(QString)), + this, SIGNAL(newBranch(QString))); + connect(m_historyWidget, SIGNAL(tag(QString)), this, SIGNAL(tag(QString))); } diff -r b6e4643d6c05 -r f7cdd5b31aed hgtabwidget.h --- a/hgtabwidget.h Wed Feb 09 12:02:53 2011 +0000 +++ b/hgtabwidget.h Wed Feb 09 12:03:15 2011 +0000 @@ -93,6 +93,7 @@ void diffToParent(QString id, QString parent); void diffToCurrent(QString id); void mergeFrom(QString id); + void newBranch(QString id); void tag(QString id); public slots: diff -r b6e4643d6c05 -r f7cdd5b31aed historywidget.cpp --- a/historywidget.cpp Wed Feb 09 12:02:53 2011 +0000 +++ b/historywidget.cpp Wed Feb 09 12:03:15 2011 +0000 @@ -280,6 +280,9 @@ connect(scene, SIGNAL(mergeFrom(QString)), this, SIGNAL(mergeFrom(QString))); + connect(scene, SIGNAL(newBranch(QString)), + this, SIGNAL(newBranch(QString))); + connect(scene, SIGNAL(tag(QString)), this, SIGNAL(tag(QString))); } diff -r b6e4643d6c05 -r f7cdd5b31aed historywidget.h --- a/historywidget.h Wed Feb 09 12:02:53 2011 +0000 +++ b/historywidget.h Wed Feb 09 12:03:15 2011 +0000 @@ -56,6 +56,7 @@ void diffToParent(QString id, QString parent); void diffToCurrent(QString id); void mergeFrom(QString id); + void newBranch(QString id); void tag(QString id); private: diff -r b6e4643d6c05 -r f7cdd5b31aed mainwindow.cpp --- a/mainwindow.cpp Wed Feb 09 12:02:53 2011 +0000 +++ b/mainwindow.cpp Wed Feb 09 12:03:15 2011 +0000 @@ -447,14 +447,11 @@ QString MainWindow::filterTag(QString tag) { - for(int i = 0; i < tag.size(); i++) - { - if (tag[i].isLower() || tag[i].isUpper() || tag[i].isDigit() || (tag[i] == QChar('.'))) - { + for(int i = 0; i < tag.size(); i++) { + if (tag[i].isLower() || tag[i].isUpper() || + tag[i].isDigit() || (tag[i] == QChar('.'))) { //ok - } - else - { + } else { tag[i] = QChar('_'); } } @@ -462,6 +459,26 @@ } +void MainWindow::hgNewBranch(QString id) +{ + QStringList params; + QString branch; + + if (ConfirmCommentDialog::confirmAndGetShortComment + (this, + tr("New Branch"), + tr("Enter new branch name:"), + branch, + tr("Start Branch"))) { + if (!branch.isEmpty()) {//!!! do something better if it is empty + + params << "branch" << filterTag(branch); + runner->requestAction(HgAction(ACT_NEW_BRANCH, workFolderPath, params)); + } + } +} + + void MainWindow::hgTag(QString id) { QStringList params; @@ -1695,6 +1712,9 @@ case ACT_INCOMING: // returns non-zero code and no output if the check was // successful but there are no changes pending + + //!!! -- won't do, there may legitimately be warnings, + //!!! -- e.g. certificate not verified if (output.trimmed() == "") { showIncoming(""); return; @@ -1897,6 +1917,11 @@ shouldHgStat = true; break; + case ACT_NEW_BRANCH: + shouldHgStat = true; + hgTabs->showWorkTab(); + break; + case ACT_DIFF_SUMMARY: QMessageBox::information(this, tr("Change summary"), format3(tr("Summary of uncommitted changes"), @@ -2082,6 +2107,9 @@ connect(hgTabs, SIGNAL(mergeFrom(QString)), this, SLOT(hgMergeFrom(QString))); + connect(hgTabs, SIGNAL(newBranch(QString)), + this, SLOT(hgNewBranch(QString))); + connect(hgTabs, SIGNAL(tag(QString)), this, SLOT(hgTag(QString))); } diff -r b6e4643d6c05 -r f7cdd5b31aed mainwindow.h --- a/mainwindow.h Wed Feb 09 12:02:53 2011 +0000 +++ b/mainwindow.h Wed Feb 09 12:03:15 2011 +0000 @@ -101,6 +101,7 @@ void hgAnnotate(); void hgResolveList(); void hgTag(QString); + void hgNewBranch(QString); void hgServe(); void hgIgnore();