*/
#include <config.h>
+#include <support/debug.h>
+#include <limits>
#include "GuiCompareHistory.h"
{
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);
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);
}