# # # patch "guitone/guitone.pro" # from [cc1f5ee6f8271627eb8f0a81c1451a454dc71c2b] # to [887d92b03fc61fa83d4611baf7f8af26cf0cce14] # # patch "guitone/res/dialogs/file_diff.ui" # from [43494905e8f1d6782ff30cf0bab80d3db1004fab] # to [cec958f624f1b2884161a18632baf0ce38ed04e5] # # patch "guitone/src/model/GetFile.cpp" # from [0ffd7d839d5e776eb81bed68eff1c68defa0f255] # to [b4db3123047433d5437936ddc9a60ac9c15fad2a] # # patch "guitone/src/model/GetFile.h" # from [bf0ecab6e9fe33f315fc9c1ae615761c6a6e931b] # to [fd041026b83b707590139a231e8caf1843fd38ff] # # patch "guitone/src/monotone/Monotone.cpp" # from [65fe8b35f52f9f0bc163b1ee611f774d1f62c091] # to [62f2c36eb1d9c833b6cb10932b2894c15fb9fec9] # # patch "guitone/src/view/dialogs/FileDiff.cpp" # from [2eb4fb38faeacbf4ea7150d3ddbcc0cafe364187] # to [87b557e1445814d58ace8a28e3ca8cf3b5dd605f] # # patch "guitone/src/view/dialogs/FileDiff.h" # from [99ff9d52eae341041edad007cd2f529658d1a122] # to [0a6a2befd7b13fa6c49ee439f1cd364bd3d3e7c8] # ============================================================ --- guitone/guitone.pro cc1f5ee6f8271627eb8f0a81c1451a454dc71c2b +++ guitone/guitone.pro 887d92b03fc61fa83d4611baf7f8af26cf0cce14 @@ -27,6 +27,7 @@ HEADERS += src/view/Guitone.h \ src/model/Graph.h \ src/model/ContentDiff.h \ src/model/GetFile.h \ + src/model/GetFileProxyModel.h \ src/util/IconProvider.h \ src/util/StanzaParser.h \ src/util/Settings.h \ @@ -54,6 +55,7 @@ SOURCES += src/view/Guitone.cpp \ src/model/Graph.cpp \ src/model/ContentDiff.cpp \ src/model/GetFile.cpp \ + src/model/GetFileProxyModel.cpp \ src/util/IconProvider.cpp \ src/util/StanzaParser.cpp \ src/util/Settings.cpp \ ============================================================ --- guitone/res/dialogs/file_diff.ui 43494905e8f1d6782ff30cf0bab80d3db1004fab +++ guitone/res/dialogs/file_diff.ui cec958f624f1b2884161a18632baf0ce38ed04e5 @@ -6,11 +6,11 @@ 0 0 553 - 420 + 436 - File differences + File differences of "%1" @@ -31,17 +31,75 @@ - - - Qt::LeftToRight + + + 0 - - Qt::Horizontal + + 6 - - QDialogButtonBox::Cancel|QDialogButtonBox::NoButton|QDialogButtonBox::Ok - - + + + + Show Version + + + + + + + 0 + + + 6 + + + + + Left + + + + + + + Right + + + + + + + Both + + + true + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Close + + + + @@ -57,36 +115,20 @@ - buttonBox - accepted() + closeButton + released() FileDiffDialog accept() - 248 - 254 + 490 + 408 - 157 - 274 + 276 + 217 - - buttonBox - rejected() - FileDiffDialog - reject() - - - 316 - 260 - - - 286 - 274 - - - ============================================================ --- guitone/src/model/GetFile.cpp 0ffd7d839d5e776eb81bed68eff1c68defa0f255 +++ guitone/src/model/GetFile.cpp b4db3123047433d5437936ddc9a60ac9c15fad2a @@ -104,11 +104,8 @@ void GetFile::parseOutput(AutomateComman emit fileRead(); } -void GetFile::applyDiff(Diff * diff, FileVersion version) +void GetFile::applyDiff(Diff * diff) { - // FIXME: we currently only support merged unified diffs - Q_ASSERT(version == Both); - int lineOffset = 0; for (int i=0, s=diff->hunks.size(); ireadAllStandardOutput()); - int retCode = 0; - // check if we already could parse the complete stdio output - if (!parseStdio(retCode)) + int dummy; + if (!parseStdio(dummy)) { qWarning("Monotone::executeCommand: Contents incomplete/invalid."); continue; ============================================================ --- guitone/src/view/dialogs/FileDiff.cpp 2eb4fb38faeacbf4ea7150d3ddbcc0cafe364187 +++ guitone/src/view/dialogs/FileDiff.cpp 87b557e1445814d58ace8a28e3ca8cf3b5dd605f @@ -39,10 +39,30 @@ void FileDiff::init(QString fileName) void FileDiff::init(QString fileName) { + connect( + showVersionLeft, SIGNAL(toggled(bool)), + this, SLOT(versionToggled(bool)) + ); + connect( + showVersionRight, SIGNAL(toggled(bool)), + this, SLOT(versionToggled(bool)) + ); + connect( + showVersionBoth, SIGNAL(toggled(bool)), + this, SLOT(versionToggled(bool)) + ); + + QString title = windowTitle(); + setWindowTitle(title.arg(fileName)); + fileModel = new GetFile(this); fileModel->readFileByName(fileName); + + fileProxyModel = new GetFileProxyModel(this); + fileProxyModel->setSourceModel(fileModel); - diffView->setModel(fileModel); + diffView->setModel(fileProxyModel); + // make the line number col a little smaller diffView->header()->resizeSection(0, 40); @@ -57,7 +77,7 @@ void FileDiff::init(QString fileName) if (diffWaiter.wait()) { - fileModel->applyDiff(diffModel->getDiff(fileName), GetFile::Both); + fileModel->applyDiff(diffModel->getDiff(fileName)); } else { @@ -72,3 +92,13 @@ FileDiff::~FileDiff() {} FileDiff::~FileDiff() {} +void FileDiff::versionToggled(bool dummy) +{ + if (showVersionLeft->isChecked()) + fileProxyModel->setFileVersion(GetFileProxyModel::Left); + if (showVersionRight->isChecked()) + fileProxyModel->setFileVersion(GetFileProxyModel::Right); + if (showVersionBoth->isChecked()) + fileProxyModel->setFileVersion(GetFileProxyModel::Both); +} + ============================================================ --- guitone/src/view/dialogs/FileDiff.h 99ff9d52eae341041edad007cd2f529658d1a122 +++ guitone/src/view/dialogs/FileDiff.h 0a6a2befd7b13fa6c49ee439f1cd364bd3d3e7c8 @@ -24,6 +24,7 @@ #include "ui_file_diff.h" #include "../../model/ContentDiff.h" #include "../../model/GetFile.h" +#include "../../model/GetFileProxyModel.h" class FileDiff : public QDialog, private Ui::FileDiffDialog { @@ -36,9 +37,13 @@ public: ~FileDiff(); +private slots: + void versionToggled(bool); + private: ContentDiff * diffModel; GetFile * fileModel; + GetFileProxyModel * fileProxyModel; }; #endif