Show moves in Edit Book window as SAN
authorH.G.Muller <hgm@hgm-xboard.(none)>
Mon, 7 Mar 2016 12:46:50 +0000 (13:46 +0100)
committerH.G.Muller <hgm@hgm-xboard.(none)>
Tue, 8 Mar 2016 18:29:58 +0000 (19:29 +0100)
The opening moves in the GUI book for the current position shown in the
Edit Book window are converted to SAN before showing them, when they have
the simple form fromSqr toSqr promoChar. (This excludes drop moves and
double moves.)

backend.h
book.c

index be1906e..69ce5fb 100644 (file)
--- a/backend.h
+++ b/backend.h
@@ -428,6 +428,7 @@ char *SupportedVariant P((char *list, VariantClass v, int w, int h, int s, int p
 char *CollectPieceDescriptors P((void));
 void RefreshSettingsDialog P((ChessProgramState *cps, int val));
 void StartChessProgram P((ChessProgramState *cps));
+int PosFlags P((int n));
 
 
 /* A point in time */
diff --git a/book.c b/book.c
index cfc25c8..a777edc 100644 (file)
--- a/book.c
+++ b/book.c
@@ -742,6 +742,9 @@ MovesToText(int count, entry_t *entries)
            move_to_string(algMove, entries[i].move);
            if(sscanf(algMove, "%c%d%*c%*d,%c%d%c%d", &c1, &i1, &c2, &i2, &c3, &i3) == 6)
                snprintf(algMove, 12, "%c%dx%c%d-%c%d", c1, i1, c2, i2, c3, i3); // cast double-moves in format SAN parser will understand
+           else if(sscanf(algMove, "%c%d%c%d%c", &c1, &i1, &c2, &i2, &c3) >= 4) {
+               CoordsToAlgebraic(boards[currentMove], PosFlags(currentMove), i1-ONE+'0', c1-AAA, i2-ONE+'0', c2-AAA, c3, algMove);
+           }
            buf[0] = NULLCHAR;
            if(entries[i].learnCount || entries[i].learnPoints)
                snprintf(buf, MSG_SIZ, " {%d/%d}", entries[i].learnPoints, entries[i].learnCount);