X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=xboard.c;h=377113004e91edcb2d94f0575624869fb7d3480a;hb=8a03ebeed96f122200d439a856083f09e393a2fe;hp=d930c6b2ff5843ec0d775b0c8c45c4753811fa02;hpb=8bd006fe9af8f3d1469357d5efa7ff46a78773e0;p=xboard.git diff --git a/xboard.c b/xboard.c index d930c6b..3771130 100644 --- a/xboard.c +++ b/xboard.c @@ -346,6 +346,8 @@ void AnalyzeFileProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); void TwoMachinesProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void MatchProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void MatchOptionsProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); void IcsClientProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); void EditGameProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); @@ -450,21 +452,21 @@ void ShuffleMenuProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)) void EngineMenuProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); void UciMenuProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); void TimeControlProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void OptionsProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); void NewVariantProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void IcsTextProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); void FirstSettingsProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); void SecondSettingsProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); void GameListOptionsPopUp P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); -void BoardOptionsProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); void IcsOptionsProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void SoundOptionsProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); +void BoardOptionsProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); void LoadOptionsProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); void SaveOptionsProc P((Widget w, XEvent *event, String *prms, Cardinal *nprms)); void GameListOptionsPopDown P(()); void ShufflePopDown P(()); -void EnginePopDown P(()); -void UciPopDown P(()); void TimeControlPopDown P(()); -void NewVariantPopDown P(()); -void SettingsPopDown P(()); +void GenericPopDown P(()); void update_ics_width P(()); int get_term_width P(()); int CopyMemoProc P(()); @@ -518,7 +520,7 @@ int squareSize, smallLayout = 0, tinyLayout = 0, fromX = -1, fromY = -1, toX, toY, commentUp = False, analysisUp = False, ICSInputBoxUp = False, askQuestionUp = False, filenameUp = False, promotionUp = False, pmFromX = -1, pmFromY = -1, - editUp = False, errorUp = False, errorExitStatus = -1, lineGap; + editUp = False, errorUp = False, errorExitStatus = -1, lineGap, defaultLineGap; Pixel timerForegroundPixel, timerBackgroundPixel; Pixel buttonForegroundPixel, buttonBackgroundPixel; char *chessDir, *programName, *programVersion, @@ -645,6 +647,7 @@ MenuItem viewMenu[] = { {N_("Move History Alt+Shift+H"), "Show Move History", HistoryShowProc}, // [HGM] hist: activate 4.2.7 code {N_("Evaluation Graph Alt+Shift+E"), "Show Evaluation Graph", EvalGraphProc}, {N_("Game List Alt+Shift+G"), "Show Game List", ShowGameListProc}, + {N_("ICS text menu"), "ICStex", IcsTextProc}, {"----", NULL, NothingProc}, {N_("Tags"), "Show Tags", EditTagsProc}, {N_("Comments"), "Show Comments", EditCommentProc}, @@ -666,6 +669,7 @@ MenuItem modeMenu[] = { {N_("Training"), "Training", TrainingProc}, {N_("ICS Client"), "ICS Client", IcsClientProc}, {"----", NULL, NothingProc}, + {N_("Machine Match"), "Machine Match", MatchProc}, {N_("Pause Pause"), "Pause", PauseProc}, {NULL, NULL, NULL} }; @@ -704,15 +708,22 @@ MenuItem engineMenu[] = { }; MenuItem optionsMenu[] = { +#define OPTIONSDIALOG +#ifdef OPTIONSDIALOG + {N_("General ..."), "General", OptionsProc}, +#endif {N_("Time Control ... Alt+Shift+T"), "Time Control", TimeControlProc}, {N_("Common Engine ... Alt+Shift+U"), "Common Engine", UciMenuProc}, {N_("Adjudications ... Alt+Shift+J"), "Adjudications", EngineMenuProc}, {N_("ICS ..."), "ICS", IcsOptionsProc}, + {N_("Match ..."), "Match", MatchOptionsProc}, {N_("Load Game ..."), "Load Game", LoadOptionsProc}, {N_("Save Game ..."), "Save Game", SaveOptionsProc}, // {N_(" ..."), "", OptionsProc}, {N_("Game List ..."), "Game List", GameListOptionsPopUp}, + {N_("Sounds ..."), "Sounds", SoundOptionsProc}, {"----", NULL, NothingProc}, +#ifndef OPTIONSDIALOG {N_("Always Queen Ctrl+Shift+Q"), "Always Queen", AlwaysQueenProc}, {N_("Animate Dragging"), "Animate Dragging", AnimateDraggingProc}, {N_("Animate Moving Ctrl+Shift+A"), "Animate Moving", AnimateMovingProc}, @@ -737,6 +748,7 @@ MenuItem optionsMenu[] = { {N_("Hide Thinking Ctrl+Shift+H"), "Hide Thinking", HideThinkingProc}, {N_("Test Legality Ctrl+Shift+L"), "Test Legality", TestLegalityProc}, {"----", NULL, NothingProc}, +#endif {N_("Save Settings Now"), "Save Settings Now", SaveSettingsProc}, {N_("Save Settings on Exit"), "Save Settings on Exit", SaveOnExitProc}, {NULL, NULL, NULL} @@ -955,6 +967,9 @@ XtActionsRec boardActions[] = { { "EngineMenuProc", (XtActionProc) EngineMenuProc }, { "UciMenuProc", (XtActionProc) UciMenuProc }, { "TimeControlProc", (XtActionProc) TimeControlProc }, + { "FlipViewProc", FlipViewProc }, + { "PonderNextMoveProc", PonderNextMoveProc }, +#ifndef OPTIONSDIALOG { "AlwaysQueenProc", AlwaysQueenProc }, { "AnimateDraggingProc", AnimateDraggingProc }, { "AnimateMovingProc", AnimateMovingProc }, @@ -962,7 +977,6 @@ XtActionsRec boardActions[] = { { "AutoflipProc", AutoflipProc }, { "BlindfoldProc", BlindfoldProc }, { "FlashMovesProc", FlashMovesProc }, - { "FlipViewProc", FlipViewProc }, #if HIGHDRAG { "HighlightDraggingProc", HighlightDraggingProc }, #endif @@ -970,7 +984,6 @@ XtActionsRec boardActions[] = { // { "IcsAlarmProc", IcsAlarmProc }, { "MoveSoundProc", MoveSoundProc }, { "PeriodicUpdatesProc", PeriodicUpdatesProc }, - { "PonderNextMoveProc", PonderNextMoveProc }, { "PopupExitMessageProc", PopupExitMessageProc }, { "PopupMoveErrorsProc", PopupMoveErrorsProc }, // { "PremoveProc", PremoveProc }, @@ -978,6 +991,7 @@ XtActionsRec boardActions[] = { { "ShowThinkingProc", ShowThinkingProc }, { "HideThinkingProc", HideThinkingProc }, { "TestLegalityProc", TestLegalityProc }, +#endif { "SaveSettingsProc", SaveSettingsProc }, { "SaveOnExitProc", SaveOnExitProc }, { "InfoProc", InfoProc }, @@ -1003,11 +1017,8 @@ XtActionsRec boardActions[] = { { "EngineOutputPopDown", (XtActionProc) EngineOutputPopDown }, { "EvalGraphPopDown", (XtActionProc) EvalGraphPopDown }, { "ShufflePopDown", (XtActionProc) ShufflePopDown }, - { "EnginePopDown", (XtActionProc) EnginePopDown }, - { "UciPopDown", (XtActionProc) UciPopDown }, { "TimeControlPopDown", (XtActionProc) TimeControlPopDown }, - { "NewVariantPopDown", (XtActionProc) NewVariantPopDown }, - { "SettingsPopDown", (XtActionProc) SettingsPopDown }, + { "GenericPopDown", (XtActionProc) GenericPopDown }, { "CopyMemoProc", (XtActionProc) CopyMemoProc }, }; @@ -1061,12 +1072,16 @@ char globalTranslations[] = :MetaJ: EngineMenuProc() \n \ :MetaU: UciMenuProc() \n \ :MetaT: TimeControlProc() \n \ + :CtrlP: PonderNextMoveProc() \n " +#ifndef OPTIONSDIALOG + "\ :CtrlQ: AlwaysQueenProc() \n \ :CtrlF: AutoflagProc() \n \ :CtrlA: AnimateMovingProc() \n \ - :CtrlP: PonderNextMoveProc() \n \ :CtrlL: TestLegalityProc() \n \ - :CtrlH: HideThinkingProc() \n \ + :CtrlH: HideThinkingProc() \n " +#endif + "\ :-: Iconify() \n \ :F1: ManProc() \n \ :F2: FlipViewProc() \n \ @@ -2071,6 +2086,7 @@ XBoard square size (hint): %d\n\ fprintf(stderr, _("Closest %s size: %d\n"), IMAGE_EXT, squareSize); } } + defaultLineGap = lineGap; if(appData.overrideLineGap >= 0) lineGap = appData.overrideLineGap; /* [HR] height treated separately (hacked) */ @@ -2401,6 +2417,7 @@ XBoard square size (hint): %d\n\ ReadBitmap(&xMarkPixmap, "checkmark.bm", checkmark_bits, checkmark_width, checkmark_height); XtSetArg(args[0], XtNleftBitmap, xMarkPixmap); +#ifndef OPTIONSDIALOG if (appData.alwaysPromoteToQueen) { XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Always Queen"), args, 1); @@ -2492,6 +2509,7 @@ XBoard square size (hint): %d\n\ XtSetValues(XtNameToWidget(menuBarWidget,"menuOptions.Test Legality"), args, 1); } +#endif if (saveSettingsOnExit) { XtSetValues(XtNameToWidget(menuBarWidget,"menuOptions.Save Settings on Exit"), args, 1); @@ -2751,13 +2769,16 @@ Enables icsEnables[] = { { "menuMode.Analysis Mode", False }, { "menuMode.Analyze File", False }, { "menuMode.Two Machines", False }, + { "menuMode.Machine Match", False }, #ifndef ZIPPY { "menuEngine.Hint", False }, { "menuEngine.Book", False }, { "menuEngine.Move Now", False }, +#ifndef OPTIONSDIALOG { "menuOptions.Periodic Updates", False }, { "menuOptions.Hide Thinking", False }, { "menuOptions.Ponder Next Move", False }, +#endif { "menuEngine.Engine #1 Settings", False }, #endif { "menuEngine.Engine #2 Settings", False }, @@ -2773,7 +2794,9 @@ Enables ncpEnables[] = { { "menuMode.Analysis Mode", False }, { "menuMode.Analyze File", False }, { "menuMode.Two Machines", False }, + { "menuMode.Machine Match", False }, { "menuMode.ICS Client", False }, + { "menuView.ICStex", False }, { "menuView.ICS Input Box", False }, { "Action", False }, { "menuEdit.Revert", False }, @@ -2782,14 +2805,16 @@ Enables ncpEnables[] = { { "menuEngine.Engine #2 Settings", False }, { "menuEngine.Move Now", False }, { "menuEngine.Retract Move", False }, + { "menuOptions.ICS", False }, +#ifndef OPTIONSDIALOG { "menuOptions.Auto Flag", False }, { "menuOptions.Auto Flip View", False }, - { "menuOptions.ICS", False }, // { "menuOptions.ICS Alarm", False }, { "menuOptions.Move Sound", False }, { "menuOptions.Hide Thinking", False }, { "menuOptions.Periodic Updates", False }, { "menuOptions.Ponder Next Move", False }, +#endif { "menuEngine.Hint", False }, { "menuEngine.Book", False }, { NULL, False } @@ -2797,6 +2822,7 @@ Enables ncpEnables[] = { Enables gnuEnables[] = { { "menuMode.ICS Client", False }, + { "menuView.ICStex", False }, { "menuView.ICS Input Box", False }, { "menuAction.Accept", False }, { "menuAction.Decline", False }, @@ -2869,6 +2895,7 @@ Enables machineThinkingEnables[] = { { "menuMode.Machine White", False }, { "menuMode.Machine Black", False }, { "menuMode.Two Machines", False }, + { "menuMode.Machine Match", False }, { "menuEngine.Retract Move", False }, { NULL, False } }; @@ -2887,6 +2914,7 @@ Enables userThinkingEnables[] = { { "menuMode.Machine White", True }, { "menuMode.Machine Black", True }, { "menuMode.Two Machines", True }, + { "menuMode.Machine Match", True }, { "menuEngine.Retract Move", True }, { NULL, False } }; @@ -3116,6 +3144,7 @@ void DeleteGCs() XtReleaseGC(shellWidget, highlineGC); XtReleaseGC(shellWidget, lightSquareGC); XtReleaseGC(shellWidget, darkSquareGC); + XtReleaseGC(shellWidget, lineGC); if (appData.monoMode) { if (DefaultDepth(xDisplay, xScreen) == 1) { XtReleaseGC(shellWidget, wbPieceGC); @@ -3150,10 +3179,6 @@ void CreateGCs(int redo) DeleteGCs(); // called a second time; clean up old GCs first } else { // [HGM] grid and font GCs created on first call only gc_values.foreground = XBlackPixel(xDisplay, xScreen); - gc_values.background = XBlackPixel(xDisplay, xScreen); - lineGC = XtGetGC(shellWidget, value_mask, &gc_values); - - gc_values.foreground = XBlackPixel(xDisplay, xScreen); gc_values.background = XWhitePixel(xDisplay, xScreen); coordGC = XtGetGC(shellWidget, value_mask, &gc_values); XSetFont(xDisplay, coordGC, coordFontID); @@ -3164,6 +3189,10 @@ void CreateGCs(int redo) countGC = XtGetGC(shellWidget, value_mask, &gc_values); XSetFont(xDisplay, countGC, countFontID); } + gc_values.foreground = XBlackPixel(xDisplay, xScreen); + gc_values.background = XBlackPixel(xDisplay, xScreen); + lineGC = XtGetGC(shellWidget, value_mask, &gc_values); + if (appData.monoMode) { gc_values.foreground = XWhitePixel(xDisplay, xScreen); gc_values.background = XWhitePixel(xDisplay, xScreen); @@ -3412,6 +3441,8 @@ void CreateXIMPieces() XSynchronize(xDisplay, False); /* Work-around for xlib/xt buffering bug */ } +static VariantClass oldVariant = (VariantClass) -1; // [HGM] pieces: redo every time variant changes + #if HAVE_LIBXPM void CreateXPMBoard(char *s, int kind) { @@ -3570,6 +3601,7 @@ void CreateXPMPieces() xpmJailSquare = xpmLightSquare; fprintf(stderr, _("Done.\n")); } + oldVariant = -1; // kludge to force re-makig of animation masks XSynchronize(xDisplay, False); /* Work-around for xlib/xt buffering bug */ } @@ -4394,9 +4426,9 @@ void DrawSquare(row, column, piece, do_flash) BlankSquare(x, y, square_color, piece, xBoardWindow, 1); } else { drawfunc = ChooseDrawFunc(); + if (do_flash && appData.flashCount > 0) { for (i=0; i