]> git.lyx.org Git - lyx.git/blobdiff - src/frontends/qt4/GuiCompareHistory.cpp
rename buffer parameter math_number_before to math_numbering_side
[lyx.git] / src / frontends / qt4 / GuiCompareHistory.cpp
index 35cff62151d49e9d3b6ee717da9c69a37360db2b..d176a387c41c0eda881975cc02a6a9dcfe979289 100644 (file)
@@ -9,6 +9,8 @@
  */
 
 #include <config.h>
+#include <support/debug.h>
+#include <limits>
 
 #include "GuiCompareHistory.h"
 
@@ -42,18 +44,35 @@ GuiCompareHistory::GuiCompareHistory(GuiView & lv)
 
        connect(revbackRB, SIGNAL(clicked()), this, SLOT(selectRevback()));
        connect(betweenrevRB, SIGNAL(clicked()), this, SLOT(selectBetweenrev()));
+}
 
-       string revstring = lv.currentBufferView()->buffer().lyxvc().revisionInfo(LyXVC::File);
+bool GuiCompareHistory::initialiseParams(std::string const &)
+{
+       string revstring = lyxview().currentBufferView()->buffer().lyxvc().revisionInfo(LyXVC::File);
        int rev=0;
-       if (prefixIs(revstring, "r"))
-               revstring = ltrim(revstring,"r");
-       if (isStrInt(revstring))
-               rev = convert<int>(revstring);
+
+       string tmp;
+       bool enableBetween = true;
+       // GIT case, hash is long
+       if (revstring.length() > 20) {
+               enableBetween = false;
+               rev = numeric_limits<int>::max();
+       } else {
+               // RCS case
+               if (!isStrInt(revstring))
+                       revstring = rsplit(revstring, tmp , '.' );
+               // both SVN & RCS cases
+               if (isStrInt(revstring))
+                       rev = convert<int>(revstring);
+       }
+
+       // later we can provide comparison between two hashes
+       betweenrevRB->setEnabled(enableBetween);
 
        okPB->setEnabled(rev);
        rev1SB->setMaximum(rev);
        rev2SB->setMaximum(rev);
-       revbackSB->setMaximum(rev);
+       revbackSB->setMaximum(rev-1);
        rev2SB->setValue(rev);
        rev1SB->setValue(rev-1);
 
@@ -61,6 +80,7 @@ GuiCompareHistory::GuiCompareHistory(GuiView & lv)
        //bc().setOK(okPB);
        //bc().setCancel(cancelPB);
        enableControls();
+       return true;
 }
 
 
@@ -87,8 +107,11 @@ void GuiCompareHistory::selectBetweenrev()
 void GuiCompareHistory::enableControls()
 {
        bool rb = revbackRB->isChecked();
+       oldL->setEnabled(!rb);
+       newL->setEnabled(!rb);
        rev1SB->setEnabled(!rb);
        rev2SB->setEnabled(!rb);
+       rev2SB->setEnabled(!rb);
        betweenrevRB->setChecked(!rb);
        revbackSB->setEnabled(rb);
 }