#
#
# 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);