X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=xboard.c;h=af116f02bfaa5301eef28786dd546e2366d1c778;hb=a033b3e97d60c1d05ee5ec3a54f7c61d6225962a;hp=643be29943e53a6ded5b3eb53ed46a6cf5c9c154;hpb=f54f775f8c1d291c3de02704181182a50fa5b413;p=xboard.git diff --git a/xboard.c b/xboard.c index 643be29..af116f0 100644 --- a/xboard.c +++ b/xboard.c @@ -1147,6 +1147,10 @@ XtResource clientResources[] = { { "showButtonBar", "showButtonBar", XtRBoolean, sizeof(Boolean), XtOffset(AppDataPtr, showButtonBar), XtRImmediate, (XtPointer) True }, + /* icsEngineAnalyze */ + {"icsEngineAnalyze", "icsEngineAnalyze", XtRBoolean, + sizeof(Boolean), XtOffset(AppDataPtr, icsEngineAnalyze), + XtRImmediate, (XtPointer) False }, }; XrmOptionDescRec shellOptions[] = { @@ -2466,9 +2470,6 @@ XBoard square size (hint): %d\n\ args, 1); } - /* icsEngineAnalyze - Currently not yet implemented in XBoard */ - appData.icsEngineAnalyze = FALSE; - /* * Create an icon. */ @@ -2805,6 +2806,12 @@ Enables userThinkingEnables[] = { void SetICSMode() { SetMenuEnables(icsEnables); + + #ifdef ZIPPY + /* icsEngineAnalyze */ + if (appData.zippyPlay && !appData.noChessProgram) + XtSetSensitive(XtNameToWidget(menuBarWidget, "menuMode.Analysis Mode"), True); + #endif } void @@ -5022,6 +5029,8 @@ void AnalysisPopDown() XtPopdown(analysisShell); XSync(xDisplay, False); analysisUp = False; + /* icsEngineAnalyze */ + if (appData.icsEngineAnalyze) ExitAnalyzeMode(); } @@ -5475,7 +5484,6 @@ void ModeHighlight() gameMode == Training || gameMode == PlayFromGameFile); } - /* * Button/menu procedures */ @@ -5856,15 +5864,41 @@ void AnalyzeModeProc(w, event, prms, nprms) String *prms; Cardinal *nprms; { + char buf[MSG_SIZ]; + if (!first.analysisSupport) { - char buf[MSG_SIZ]; sprintf(buf, _("%s does not support analysis"), first.tidy); DisplayError(buf, 0); return; } + /* icsEngineAnalyze */ + if (appData.icsActive) { + if (gameMode != IcsObserving) { + sprintf(buf,_("You are not observing a game")); + DisplayError(buf, 0); + /* secure check */ + if (appData.icsEngineAnalyze) { + if (appData.debugMode) + fprintf(debugFP, _("Found unexpected active ICS engine analyze \n")); + ExitAnalyzeMode(); + ModeHighlight(); + return; + } + return; + } else { + /* if enable, use want disable icsEngineAnalyze */ + if (appData.icsEngineAnalyze) { + ExitAnalyzeMode(); + ModeHighlight(); + return; + } + appData.icsEngineAnalyze = TRUE; + if (appData.debugMode) + fprintf(debugFP, "ICS engine analyze starting... \n"); + } + } if (!appData.showThinking) ShowThinkingProc(w,event,prms,nprms); - AnalyzeModeEvent(); } @@ -7326,7 +7360,8 @@ AnalysisClockCallback(arg, id) XtPointer arg; XtIntervalId *id; { - if (gameMode == AnalyzeMode || gameMode == AnalyzeFile) { + if (gameMode == AnalyzeMode || gameMode == AnalyzeFile + || appData.icsEngineAnalyze) { AnalysisPeriodicEvent(0); StartAnalysisClock(); }