X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=engineoutput.c;h=2b82948ae715723d6060056f2366b7dd4b5cf9ae;hb=c082824a507c0fb577beb908ed5615a161c6c6fa;hp=78117a7bfd07e885f9fa955b36bfdd90ba051f81;hpb=9bc5b6e6ca1e15a01cd9406322ad4fc93a45adc8;p=xboard.git diff --git a/engineoutput.c b/engineoutput.c index 78117a7..2b82948 100644 --- a/engineoutput.c +++ b/engineoutput.c @@ -5,6 +5,8 @@ * * Copyright 2005 Alessandro Scotti * + * Enhancements Copyright 1995, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. + * * ------------------------------------------------------------------------ * * GNU XBoard is free software: you can redistribute it and/or modify @@ -45,6 +47,21 @@ #include "backend.h" #include "moves.h" #include "engineoutput.h" +#include "gettext.h" + +#ifdef ENABLE_NLS +# define _(s) gettext (s) +# define N_(s) gettext_noop (s) +#else +# ifdef WIN32 +# define _(s) T_(s) +# undef ngettext +# define ngettext(s,p,n) T_(p) +# else +# define _(s) (s) +# endif +# define N_(s) s +#endif typedef struct { char * name; @@ -78,27 +95,35 @@ static int scores[MAX_VAR], textEnd[MAX_VAR], curDepth[2], nrVariations[2]; extern int initialRulePlies; -void MakeEngineOutputTitle() +void +MakeEngineOutputTitle () { static char buf[MSG_SIZ]; static char oldTitle[MSG_SIZ]; - char *title = "Engine Output"; + char title[MSG_SIZ]; int count, rule = 2*appData.ruleMoves; + + snprintf(title, MSG_SIZ, _("Engine Output") ); + + if(!EngineOutputIsUp()) return; // figure out value of 50-move counter count = currentMove; while( (signed char)boards[count][EP_STATUS] <= EP_NONE && count > backwardMostMove ) count--; if( count == backwardMostMove ) count -= initialRulePlies; count = currentMove - count; - snprintf(buf, MSG_SIZ, "%s (%d reversible plies)", title, count); if(!rule) rule = 100; - if(count >= rule - 40 && !appData.icsActive) title = buf; + if(count >= rule - 40 && (!appData.icsActive || gameMode == IcsObserving)) { + snprintf(buf, MSG_SIZ, ngettext("%s (%d reversible ply)", "%s (%d reversible plies)", count), title, count); + safeStrCpy(title, buf, MSG_SIZ); + } if(!strcmp(oldTitle, title)) return; safeStrCpy(oldTitle, title, MSG_SIZ); SetEngineOutputTitle(title); } // back end, due to front-end wrapper for SetWindowText, and new SetIcon arguments -void SetEngineState( int which, int state, char * state_data ) +void +SetEngineState (int which, int state, char * state_data) { int x_which = 1 - which; @@ -130,7 +155,8 @@ void SetEngineState( int which, int state, char * state_data ) } // back end, now the front-end wrapper ClearMemo is used, and ed no longer contains handles. -void SetProgramStats( FrontEndProgramStats * stats ) // now directly called by back-end +void +SetProgramStats (FrontEndProgramStats * stats) // now directly called by back-end { EngineOutputData ed; int clearMemo = FALSE; @@ -194,10 +220,13 @@ void SetProgramStats( FrontEndProgramStats * stats ) // now directly called by b if( clearMemo ) { DoClearMemo(which); nrVariations[which] = 0; header[0] = NULLCHAR; - if(gameMode == AnalyzeMode && (multi = MultiPV(&first)) >= 0) { + if(gameMode == AnalyzeMode) { + if((multi = MultiPV(&first)) >= 0) { snprintf(header, MSG_SIZ, "\t%s viewpoint\t\tfewer / Multi-PV setting = %d / more\n", appData.whitePOV || appData.scoreWhite ? "white" : "mover", first.option[multi].value); - InsertIntoMemo( which, header, 0); + } + snprintf(header+strlen(header), MSG_SIZ-strlen(header), exclusionHeader); + InsertIntoMemo( which, header, 0); } else if(appData.ponderNextMove && lastLine[which][0]) { InsertIntoMemo( which, lastLine[which], 0 ); @@ -217,7 +246,8 @@ void SetProgramStats( FrontEndProgramStats * stats ) // now directly called by b #define ENGINE_COLOR_UNKNOWN ' ' // pure back end -static char GetEngineColor( int which ) +static char +GetEngineColor (int which) { char result = ENGINE_COLOR_UNKNOWN; @@ -250,7 +280,8 @@ static char GetEngineColor( int which ) } // pure back end -static char GetActiveEngineColor() +static char +GetActiveEngineColor () { char result = ENGINE_COLOR_UNKNOWN; @@ -262,7 +293,8 @@ static char GetActiveEngineColor() } // pure back end -static int IsEnginePondering( int which ) +static int +IsEnginePondering (int which) { int result = FALSE; @@ -287,7 +319,8 @@ static int IsEnginePondering( int which ) } // back end -static void SetDisplayMode( int mode ) +static void +SetDisplayMode (int mode) { if( windowMode != mode ) { windowMode = mode; @@ -297,7 +330,8 @@ static void SetDisplayMode( int mode ) } // pure back end -static void VerifyDisplayMode() +static void +VerifyDisplayMode () { int mode; @@ -327,7 +361,8 @@ static void VerifyDisplayMode() } // back end. Determine what icon to set in the color-icon field, and print it -void SetEngineColorIcon( int which ) +void +SetEngineColorIcon (int which) { char color = GetEngineColor(which); int nicon = 0; @@ -346,7 +381,8 @@ void SetEngineColorIcon( int which ) // [HGM] multivar: sort Thinking Output within one depth on score -static int InsertionPoint( int len, EngineOutputData * ed ) +static int +InsertionPoint (int len, EngineOutputData *ed) { int i, offs = 0, newScore = ed->score, n = ed->which; @@ -378,7 +414,8 @@ static int InsertionPoint( int len, EngineOutputData * ed ) // pure back end, now SetWindowText is called via wrapper DoSetWindowText -static void UpdateControls( EngineOutputData * ed ) +static void +UpdateControls (EngineOutputData *ed) { // int isPondering = FALSE; @@ -519,7 +556,8 @@ static void UpdateControls( EngineOutputData * ed ) } // [HGM] kibitz: write kibitz line; split window for it if necessary -void OutputKibitz(int window, char *text) +void +OutputKibitz (int window, char *text) { static int currentLineEnd[2]; int where = 0;