# # # patch "guitone/res/forms/revision_diff.ui" # from [ad0e31fbd4c9f994cdec9a694aad0c2de499ef59] # to [d4d25a844c0a4a141bc9ac01933d96371b7116c0] # # patch "guitone/res/forms/switch_workspace.ui" # from [5b6fe51ea63043d36ca1ef52190d834f3ad0c33a] # to [84d6a64e2f799a5cb951836b6293045bbb34c324] # # patch "guitone/res/i18n/guitone_de.ts" # from [2f4b9e55dd9664deafd756e7b42966c6dab8a1fd] # to [8a9f18c91d4da422143541bbe523025eb7a280d3] # # patch "guitone/src/monotone/Monotone.cpp" # from [2216c6cbd2f50518534321309c62e2b5d7576f09] # to [70ccad4aa0480ca1c0b18c00699c682b68244e4c] # # patch "guitone/src/view/dialogs/RevisionDiff.cpp" # from [fcc65ed14a1745d84da4a77033a9fb652e1391d2] # to [63eb939175650c01c82ce8e7252f88f69c84fc80] # # patch "guitone/src/view/dialogs/SwitchWorkspaceRevision.cpp" # from [c7048551cefd35c3eb3d7cce60197d311bc59bdd] # to [bb862eb7efcae41624d5af6a56493bf161600e46] # # patch "guitone/src/view/dialogs/SwitchWorkspaceRevision.h" # from [8e9ba9782eaafa5700552d409af2a6a7db0f9bb4] # to [a0b1232436cc001948b1a9d11de0e598305505b9] # ============================================================ --- guitone/res/forms/revision_diff.ui ad0e31fbd4c9f994cdec9a694aad0c2de499ef59 +++ guitone/res/forms/revision_diff.ui d4d25a844c0a4a141bc9ac01933d96371b7116c0 @@ -5,13 +5,10 @@ 0 0 - 484 - 432 + 528 + 431 - - Differences in %1 between %2 and %3 - :/icons/guitone.png ============================================================ --- guitone/res/forms/switch_workspace.ui 5b6fe51ea63043d36ca1ef52190d834f3ad0c33a +++ guitone/res/forms/switch_workspace.ui 84d6a64e2f799a5cb951836b6293045bbb34c324 @@ -5,8 +5,8 @@ 0 0 - 622 - 421 + 532 + 364 @@ -68,13 +68,78 @@ Qt::Vertical - - - false - - - false - + + + + 0 + + + 6 + + + + + false + + + false + + + + + + + 0 + + + 6 + + + + + false + + + Select first revision + + + + + + + false + + + Select second revision + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + false + + + Show differences + + + + + + @@ -140,7 +205,7 @@ Splitter QSplitter -
../Splitter.h
+
Splitter.h
TreeView @@ -152,8 +217,6 @@ selectorBox selectorValue searchRevsBtn - revisionList - certList okButton cancelButton @@ -168,8 +231,8 @@ accept() - 523 - 409 + 546 + 386 96 @@ -184,8 +247,8 @@ reject() - 610 - 409 + 632 + 386 179 ============================================================ --- guitone/res/i18n/guitone_de.ts 2f4b9e55dd9664deafd756e7b42966c6dab8a1fd +++ guitone/res/i18n/guitone_de.ts 8a9f18c91d4da422143541bbe523025eb7a280d3 @@ -9,11 +9,6 @@ - <br/><br/>Authors: <a href="mailto:address@hidden">Thomas Keller</a>, <a href="mailto:address@hidden">Ingo Maindorfer</a> and <a href="mailto:address@hidden">Jean-Louis Fuchs</a> and <br/><br/>This program is free software; you can redistribute it and/or modify<br/>it under the terms of the GNU General Public License as published by<br/>the Free Software Foundation; either version 2 of the License, or<br/>(at your option) any later version.<br/><br/>Bugs? Suggestions? Help? <a href="http://guitone.thomaskeller.biz">guitone Homepage</a><br/><br/>Many thanks go to the <a href="irc://irc.freenode.net/qt">#qt on Freenode channel</a> for their helpful<br/>comments during endless coding sessions - you guys rock! - <br/><br/>Autoren: <a href="mailto:address@hidden">Thomas Keller</a>, <a href="mailto:address@hidden">Ingo Maindorfer</a> und <a href="mailto:address@hidden">Jean-Louis Fuchs</a><br/><br/>Dieses Programm ist freie Software. Sie können es unter den<br/>Bedingungen der GNU General Public License, wie von der<br/>Free Software Foundation veröffentlicht, weitergeben und/oder<br/>modifizieren, entweder gemäß Version 2 der Lizenz oder <br/>(nach Ihrer Option) jeder späteren Version.<br/><br/>Fehler? Vorschläge? Hilfe? <a href="http://guitone.thomaskeller.biz">guitone Webseite</a><br/><br/>Vielen Dank an den <a href="irc://irc.freenode.net/qt">#qt on Freenode channel</a> für die Hilfe während der<br/>unendlich langen Programmierstunden - Ihr Jungs seid Spitze! - - - <br/><br/>Authors: <a href="mailto:address@hidden">Thomas Keller</a>, <a href="mailto:address@hidden">Ingo Maindorfer</a> and <a href="mailto:address@hidden">Jean-Louis Fuchs</a>.<br/><br/>This program is free software; you can redistribute it and/or modify<br/>it under the terms of the GNU General Public License as published by<br/>the Free Software Foundation; either version 2 of the License, or<br/>(at your option) any later version.<br/><br/>Bugs? Suggestions? Help? <a href="http://guitone.thomaskeller.biz">guitone Homepage</a><br/><br/>Many thanks go to the friendly guys at <a href="irc://irc.freenode.net/qt">#qt</a> for their helpful<br/>comments during endless coding sessions - you guys rock! <br/><br/>Autoren: <a href="mailto:address@hidden">Thomas Keller</a>, <a href="mailto:address@hidden">Ingo Maindorfer</a> und <a href="mailto:address@hidden">Jean-Louis Fuchs</a><br/><br/>Dieses Programm ist freie Software. Sie können es unter den<br/>Bedingungen der GNU General Public License, wie von der<br/>Free Software Foundation veröffentlicht, weitergeben und/oder<br/>modifizieren, entweder gemäß Version 2 der Lizenz oder <br/>(nach Ihrer Option) jeder späteren Version.<br/><br/>Fehler? Vorschläge? Hilfe? <a href="http://guitone.thomaskeller.biz">guitone Webseite</a><br/><br/>Vielen Dank an die freundlichen Seelen auf <a href="irc://irc.freenode.net/qt">#qt</a> für die Hilfe während der<br/>unendlich langen Programmierstunden - Ihr Jungs s eid Spitze! @@ -1056,25 +1051,30 @@ monotone gab zurück: RevisionDiff - + base revision Basis-Revision - + workspace revision Arbeitsbereich-Revision + + + Differences between %1 and %2 in %3 + Unterschiede zwischen %1 und %2 in %3 + + + + Differences between %1 and %2 + Unterschiede zwischen %1 und %2 + RevisionDiffDialog - - Differences in %1 between %2 and %3 - Unterschiede in %1 zwischen %2 und %3 - - - + Close Schließen @@ -1100,37 +1100,37 @@ monotone gab zurück: Finden - + OK OK - + Cancel Abbrechen - + Branch Zweig - + Tag Marke - + Author Autor - + Date Datum - + Custom Selbstdefiniert @@ -1140,35 +1140,60 @@ monotone gab zurück: beinhaltet - + Revision Revision - + Invalid selection Ungültige Auswahl - + The given selection could not be processed: %1 Die eingegebene Auswahl kann nicht ausgeführt werden: %1 - + Combined Kombiniert - + Unable to execute command Konnte Kommando nicht ausführen - + Unable to execute '%1' - maybe another command is still running? Konnte '%1' nicht ausführen - eventuell läuft noch ein anderes Kommando? + + + Select first revision + Erste Revision auswählen + + + + Select second revision + Zweite Revision auswählen + + + + Show differences + Änderungen anzeigen + + + + First: %1... + Erste: %1... + + + + Second: %1... + Zweite: %1... + Tags ============================================================ --- guitone/src/monotone/Monotone.cpp 2216c6cbd2f50518534321309c62e2b5d7576f09 +++ guitone/src/monotone/Monotone.cpp 70ccad4aa0480ca1c0b18c00699c682b68244e4c @@ -394,6 +394,12 @@ void Monotone::writeStdin(const QStringL for (int i=0, c=options.size(); i 0) { - left = leftRevision.left(8).append("..."); + left = leftRevision.left(12).append("..."); } if (rightRevision.size() > 0) { - right = rightRevision.left(8).append("..."); + right = rightRevision.left(12).append("..."); } - setWindowTitle(title.arg(path).arg(left).arg(right)); + QString title; + if (path.size() > 0 && path != ".") + { + title = tr("Differences between %1 and %2 in %3") + .arg(left).arg(right).arg(path); + } + else + { + title = tr("Differences between %1 and %2") + .arg(left).arg(right); + } + setWindowTitle(title); + diffModel = new ContentDiff(this); diffView->setModel(diffModel); ============================================================ --- guitone/src/view/dialogs/SwitchWorkspaceRevision.cpp c7048551cefd35c3eb3d7cce60197d311bc59bdd +++ guitone/src/view/dialogs/SwitchWorkspaceRevision.cpp bb862eb7efcae41624d5af6a56493bf161600e46 @@ -20,6 +20,7 @@ #include "SwitchWorkspaceRevision.h" #include "Settings.h" +#include "RevisionDiff.h" #include #include @@ -83,6 +84,11 @@ SwitchWorkspaceRevision::SwitchWorkspace certsModel, SLOT(readCerts(const QModelIndex &)) ); + connect( + revisionList, SIGNAL(clicked(const QModelIndex &)), + this, SLOT(enableDiffButtons(const QModelIndex &)) + ); + // handle selector errors connect( selectorModel, SIGNAL(invalidSelection(QString)), @@ -95,6 +101,21 @@ SwitchWorkspaceRevision::SwitchWorkspace this, SLOT(setCompleter(int)) ); + connect( + selectFirst, SIGNAL(clicked()), + this, SLOT(setFirstRevision()) + ); + + connect( + selectSecond, SIGNAL(clicked()), + this, SLOT(setSecondRevision()) + ); + + connect( + showDiff, SIGNAL(clicked()), + this, SLOT(showDiffDialog()) + ); + // disable the OK button unless we have a valid selected revision okButton->setEnabled(false); } @@ -103,6 +124,10 @@ void SwitchWorkspaceRevision::triggerRev void SwitchWorkspaceRevision::triggerRevisionSearch() { + selectFirst->setEnabled(false); + selectSecond->setEnabled(false); + showDiff->setEnabled(false); + QString selector = selectorBox->itemData(selectorBox->currentIndex()).toString(); if (selector == "i") @@ -261,3 +286,38 @@ void SwitchWorkspaceRevision::accept() done(0); } +void SwitchWorkspaceRevision::setFirstRevision() +{ + Q_ASSERT(currentRevision.size() > 0); + if (currentRevision == secondRevision) return; + firstRevision = currentRevision; + if (secondRevision.size() > 0) showDiff->setEnabled(true); + selectFirst->setText(tr("First: %1...").arg(firstRevision.left(12))); +} + +void SwitchWorkspaceRevision::setSecondRevision() +{ + Q_ASSERT(currentRevision.size() > 0); + if (currentRevision == firstRevision) return; + secondRevision = currentRevision; + if (firstRevision.size() > 0) showDiff->setEnabled(true); + selectSecond->setText(tr("Second: %1...").arg(secondRevision.left(12))); +} + +void SwitchWorkspaceRevision::enableDiffButtons(const QModelIndex & index) +{ + if (!index.isValid()) return; + currentRevision = index.data().toString(); + selectFirst->setEnabled(true); + selectSecond->setEnabled(true); +} + +void SwitchWorkspaceRevision::showDiffDialog() +{ + Q_ASSERT(firstRevision.size() > 0 && secondRevision.size() > 0); + + RevisionDiff dlg(this); + dlg.init(".", firstRevision, secondRevision); + dlg.exec(); +} + ============================================================ --- guitone/src/view/dialogs/SwitchWorkspaceRevision.h 8e9ba9782eaafa5700552d409af2a6a7db0f9bb4 +++ guitone/src/view/dialogs/SwitchWorkspaceRevision.h a0b1232436cc001948b1a9d11de0e598305505b9 @@ -37,7 +37,7 @@ public: Q_OBJECT public: - SwitchWorkspaceRevision(QWidget*); + SwitchWorkspaceRevision(QWidget *); ~SwitchWorkspaceRevision(); private: @@ -49,12 +49,20 @@ private: Keys * keysModel; QCompleter * selectorCompleter; + QString firstRevision; + QString secondRevision; + QString currentRevision; + private slots: void triggerRevisionSearch(); void handleInvalidSelection(QString); - void enableDisableOkButton(const QModelIndex&); + void enableDisableOkButton(const QModelIndex &); void setCompleter(int); void accept(); + void setFirstRevision(); + void setSecondRevision(); + void enableDiffButtons(const QModelIndex &); + void showDiffDialog(); }; #endif