# # # patch "NEWS" # from [e02fec23874d7d9fe898b023517903d97506e8c1] # to [bf4ab47c417fb530ddfac381d9321884fd5ce344] # # patch "res/forms/commit_revision.ui" # from [869cc6762e7b033d8186dc527e9d96ab5e77ff49] # to [dabc12f4e7480671991e65797beb5bb131749e8a] # # patch "src/view/InventoryView.cpp" # from [cfb5a587e2de5102d66c54d272772d8c5588b14b] # to [264358ef757142675513404c60332d0a881718fb] # # patch "src/view/InventoryView.h" # from [ba606e7bfbdd1fdeacd6a0e8d6d5a57828c40027] # to [43f47c2dd61433f5d526edc045cec2c8f7c26d67] # # patch "src/view/dialogs/CommitRevision.cpp" # from [489a71f2d951d413ae11e62f8c62d9c754c1aa6d] # to [4972994d53c31cbd7276f5bb9f3eea56497dbcec] # # patch "src/view/dialogs/CommitRevision.h" # from [c740442a658574064b5895315a08a42af5cc36dc] # to [c4debe06e5d659af57f0f7af563c0a3562b433d1] # # patch "src/view/dialogs/WorkspaceDialogManager.cpp" # from [b374e93b4c8357cf23e4741a0aa7e05212dc0dd7] # to [da51a342c8e7879688262634ef982846c1f81bde] # ============================================================ --- NEWS e02fec23874d7d9fe898b023517903d97506e8c1 +++ NEWS bf4ab47c417fb530ddfac381d9321884fd5ce344 @@ -1,9 +1,11 @@ ????-??-?? (0.8) - starting from this version (0.8) guitone is distributed under the terms of the GNU General Public License Version 3 - new: its now possible to restrict commits to certain files and / or directories - just right-click one or more entries in your workspace and hit "commit" + - new: its possible to double-click on patched entries in the commit dialog + and open the diff dialog for these files - improved: startup dialog slightly changed - now contains the possibility to edit the preferences, open recent databases and workspaces. Removed this functionality from the initialization phase of the application which was ============================================================ --- res/forms/commit_revision.ui 869cc6762e7b033d8186dc527e9d96ab5e77ff49 +++ res/forms/commit_revision.ui dabc12f4e7480671991e65797beb5bb131749e8a @@ -13,48 +13,93 @@ Commit revision - + + 6 + + 9 - - 6 + + 9 + + 9 + + + 9 + - + + 6 + + 0 - - 6 + + 0 + + 0 + + + 0 + Changes to commit - + + 6 + + 9 - - 6 + + 9 + + 9 + + + 9 + - + + 6 + + 0 - - 6 + + 0 + + 0 + + + 0 + - + + 6 + + 0 - - 6 + + 0 + + 0 + + + 0 + @@ -73,7 +118,7 @@ true - QAbstractItemView::NoSelection + QAbstractItemView::SingleSelection false @@ -84,13 +129,29 @@ + + + Double-click on a patch to open the diff dialog. + + + + - + + 6 + + 0 - - 6 + + 0 + + 0 + + + 0 + @@ -104,31 +165,58 @@ Changelog entry - + + 6 + + 9 - - 6 + + 9 + + 9 + + + 9 + - - 0 - 6 + + 0 + + + 0 + + + 0 + + + 0 + - + + 6 + + 0 - - 6 + + 0 + + 0 + + + 0 + @@ -148,12 +236,21 @@ - + + 6 + + 0 - - 6 + + 0 + + 0 + + + 0 + @@ -180,9 +277,7 @@ false - - 7 - 0 + 0 0 @@ -199,12 +294,21 @@ - + + 6 + + 0 - - 6 + + 0 + + 0 + + + 0 + @@ -231,9 +335,7 @@ false - - 7 - 0 + 0 0 @@ -294,12 +396,12 @@ setEnabled(bool) - 98 - 484 + 109 + 481 456 - 485 + 484 ============================================================ --- src/view/InventoryView.cpp cfb5a587e2de5102d66c54d272772d8c5588b14b +++ src/view/InventoryView.cpp 264358ef757142675513404c60332d0a881718fb @@ -519,10 +519,10 @@ void InventoryView::slotOpen() void InventoryView::slotOpen() { - QList items = getSelectedItems(); + QSet items = getSelectedItems(); if (items.size() == 0) return; - InventoryItem * invitem = dynamic_cast(items.at(0)); + InventoryItem * invitem = dynamic_cast(*items.begin()); if (!invitem) return; @@ -542,7 +542,7 @@ void InventoryView::slotCommit() void InventoryView::slotCommit() { - QList items = getSelectedItems(); + QSet items = getSelectedItems(); if (items.size() == 0) return; QStringList paths; @@ -608,10 +608,10 @@ void InventoryView::slotFileDiff() void InventoryView::slotFileDiff() { - QList items = getSelectedItems(); + QSet items = getSelectedItems(); if (items.size() == 0) return; - InventoryItem * invitem = dynamic_cast(items.at(0)); + InventoryItem * invitem = dynamic_cast(*items.begin()); if (!invitem) return; @@ -627,10 +627,10 @@ void InventoryView::slotFileHistory() void InventoryView::slotFileHistory() { - QList items = getSelectedItems(); + QSet items = getSelectedItems(); if (items.size() == 0) return; - InventoryItem * invitem = dynamic_cast(items.at(0)); + InventoryItem * invitem = dynamic_cast(*items.begin()); if (!invitem) return; @@ -652,10 +652,10 @@ void InventoryView::slotRevisionDiff() void InventoryView::slotRevisionDiff() { - QList items = getSelectedItems(); + QSet items = getSelectedItems(); if (items.size() == 0) return; - InventoryItem * invitem = dynamic_cast(items.at(0)); + InventoryItem * invitem = dynamic_cast(*items.begin()); if (!invitem) return; @@ -663,12 +663,12 @@ void InventoryView::slotRevisionDiff() emit diffRevision(invitem->getPath(), QString(), QString()); } -QList InventoryView::getSelectedItems() const +QSet InventoryView::getSelectedItems() const { QItemSelectionModel * selectionModel = this->selectionModel(); QList list(selectionModel->selectedIndexes()); - QList items; + QSet items; if (list.size() == 0) { @@ -684,7 +684,7 @@ QList InventoryView::getSel { index = proxyModel->mapToSource(index); } - items.push_back(static_cast(index.internalPointer())); + items.insert(static_cast(index.internalPointer())); } return items; } ============================================================ --- src/view/InventoryView.h ba606e7bfbdd1fdeacd6a0e8d6d5a57828c40027 +++ src/view/InventoryView.h 43f47c2dd61433f5d526edc045cec2c8f7c26d67 @@ -53,7 +53,7 @@ private: enum DefaultAction { None, Chdir, Open, FileDiff, Commit }; void setModel(QAbstractItemModel *); - QList getSelectedItems() const; + QSet getSelectedItems() const; DefaultAction getDefaultAction(const QModelIndex &) const; void createAndConnectContextActions(); void closeEvent(); ============================================================ --- src/view/dialogs/CommitRevision.cpp 489a71f2d951d413ae11e62f8c62d9c754c1aa6d +++ src/view/dialogs/CommitRevision.cpp 4972994d53c31cbd7276f5bb9f3eea56497dbcec @@ -54,6 +54,11 @@ CommitRevision::CommitRevision(QWidget * changesAgainstParent, SIGNAL(currentIndexChanged(const QString &)), revModel, SLOT(showChangesAgainstParent(const QString &)) ); + + connect( + changeView, SIGNAL(doubleClicked(const QModelIndex &)), + this, SLOT(changeViewDoubleClicked(const QModelIndex &)) + ); } CommitRevision::~CommitRevision() @@ -90,6 +95,9 @@ void CommitRevision::accept() void CommitRevision::accept() { + // prevent further actions until everything run through + buttonBox->setEnabled(false); + Settings::addItemToList("ChangelogEntries", changelogEntry->toPlainText(), 10); QString branch = MonotoneUtil::getBranchName(workspacePath, QString()); @@ -103,6 +111,7 @@ void CommitRevision::accept() QMessageBox::Ok ); checkAltBranch->setChecked(true); + buttonBox->setEnabled(true); return; } @@ -117,6 +126,7 @@ void CommitRevision::accept() tr("Please enter the name of an alternative branch."), QMessageBox::Ok ); + buttonBox->setEnabled(true); return; } branch = altBranchStr; @@ -135,6 +145,7 @@ void CommitRevision::accept() tr("Please enter the name of an alternative author."), QMessageBox::Ok ); + buttonBox->setEnabled(true); return; } author = altAuthorStr; @@ -152,6 +163,7 @@ void CommitRevision::accept() "new private key first."), QMessageBox::Ok ); + buttonBox->setEnabled(true); return; } @@ -172,6 +184,8 @@ void CommitRevision::accept() selectedKey = key; } + + WorkspaceCommitter committer(workspacePath, revModel); if (!committer.run(selectedKey, branch, author, changelogEntry->toPlainText())) @@ -184,10 +198,12 @@ void CommitRevision::accept() "logs and optionally send in a bug report."), QMessageBox::Ok ); + buttonBox->setEnabled(true); done(0); return; } + buttonBox->setEnabled(true); emit revisionCommitted(committer.getRevisionId()); done(1); } @@ -209,3 +225,29 @@ void CommitRevision::readFailed(const QS reject(); } +void CommitRevision::changeViewDoubleClicked(const QModelIndex & index) +{ + if (!index.isValid()) return; + + QModelIndex label, path; + if (index.column() == 0) + { + label = index; + path = index.sibling(index.row(), 1); + } + else + if (index.column() == 1) + { + label = index.sibling(index.row(), 0); + path = index; + } + else + I(false); + + // not a patched file + if (label.data().toString() != QObject::tr("Patched")) + return; + + emit diffFile(path.data().toString()); +} + ============================================================ --- src/view/dialogs/CommitRevision.h c740442a658574064b5895315a08a42af5cc36dc +++ src/view/dialogs/CommitRevision.h c4debe06e5d659af57f0f7af563c0a3562b433d1 @@ -36,6 +36,7 @@ signals: signals: void revisionCommitted(const QString &); + void diffFile(const QString &); private: GetRevision * revModel; @@ -46,6 +47,7 @@ private slots: void revisionRead(); void readFailed(const QString &); void accept(); + void changeViewDoubleClicked(const QModelIndex &); }; #endif ============================================================ --- src/view/dialogs/WorkspaceDialogManager.cpp b374e93b4c8357cf23e4741a0aa7e05212dc0dd7 +++ src/view/dialogs/WorkspaceDialogManager.cpp da51a342c8e7879688262634ef982846c1f81bde @@ -68,6 +68,11 @@ void WorkspaceDialogManager::showCommitR commitRevision, SIGNAL(revisionCommitted(const QString &)), this, SIGNAL(revisionCommitted(const QString &)) ); + + connect( + commitRevision, SIGNAL(diffFile(const QString &)), + this, SLOT(showFileDiff(const QString &)) + ); } commitRevision->readWorkspaceRevision(paths);