void DisplayMove P((int moveNumber));
void DisplayTitle P((char *title));
void ICSInitScript P((void));
-int LoadGamePopUp P((FILE *f, int gameNumber, char *title));
void ErrorPopUp P((char *title, char *text, int modal));
void ErrorPopDown P((void));
static char *ExpandPathName P((char *path));
-static void CreateAnimVars P((void));
static void DragPieceMove P((int x, int y));
static void DrawDragPiece P((void));
-char *ModeToWidgetName P((GameMode mode));
void SelectMove P((Widget w, XEvent * event, String * params, Cardinal * nParams));
void GameListOptionsPopDown P(());
void GenericPopDown P(());
Dimension textHeight;
Pixel timerForegroundPixel, timerBackgroundPixel;
Pixel buttonForegroundPixel, buttonBackgroundPixel;
-char *chessDir, *programName, *programVersion,
- *gameCopyFilename, *gamePasteFilename;
+char *chessDir, *programName, *programVersion;
Boolean alwaysOnTop = False;
-Boolean saveSettingsOnExit;
-char *settingsFileName;
char *icsTextMenuString;
char *icsNames;
char *firstChessProgramNames;
*/
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);
- }
- if (appData.animateDragging) {
- XtSetValues(XtNameToWidget(menuBarWidget,
- "menuOptions.Animate Dragging"),
- args, 1);
- }
- if (appData.animate) {
- XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Animate Moving"),
- args, 1);
- }
- if (appData.autoCallFlag) {
- XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Auto Flag"),
- args, 1);
- }
- if (appData.autoFlipView) {
- XtSetValues(XtNameToWidget(menuBarWidget,"menuOptions.Auto Flip View"),
- args, 1);
- }
- if (appData.blindfold) {
- XtSetValues(XtNameToWidget(menuBarWidget,
- "menuOptions.Blindfold"), args, 1);
- }
- if (appData.flashCount > 0) {
- XtSetValues(XtNameToWidget(menuBarWidget,
- "menuOptions.Flash Moves"),
- args, 1);
- }
-#if HIGHDRAG
- if (appData.highlightDragging) {
- XtSetValues(XtNameToWidget(menuBarWidget,
- "menuOptions.Highlight Dragging"),
- args, 1);
- }
-#endif
- if (appData.highlightLastMove) {
- XtSetValues(XtNameToWidget(menuBarWidget,
- "menuOptions.Highlight Last Move"),
- args, 1);
- }
- if (appData.highlightMoveWithArrow) {
- XtSetValues(XtNameToWidget(menuBarWidget,
- "menuOptions.Arrow"),
- args, 1);
- }
-// if (appData.icsAlarm) {
-// XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.ICS Alarm"),
-// args, 1);
-// }
- if (appData.ringBellAfterMoves) {
- XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Move Sound"),
- args, 1);
- }
- if (appData.oneClick) {
- XtSetValues(XtNameToWidget(menuBarWidget,
- "menuOptions.OneClick"), args, 1);
- }
- if (appData.periodicUpdates) {
- XtSetValues(XtNameToWidget(menuBarWidget,
- "menuOptions.Periodic Updates"), args, 1);
- }
- if (appData.ponderNextMove) {
- XtSetValues(XtNameToWidget(menuBarWidget,
- "menuOptions.Ponder Next Move"), args, 1);
- }
- if (appData.popupExitMessage) {
- XtSetValues(XtNameToWidget(menuBarWidget,
- "menuOptions.Popup Exit Message"), args, 1);
- }
- if (appData.popupMoveErrors) {
- XtSetValues(XtNameToWidget(menuBarWidget,
- "menuOptions.Popup Move Errors"), args, 1);
- }
-// if (appData.premove) {
-// XtSetValues(XtNameToWidget(menuBarWidget,
-// "menuOptions.Premove"), args, 1);
-// }
- if (appData.showCoords) {
- XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Show Coords"),
- args, 1);
- }
- if (appData.hideThinkingFromHuman) {
- XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Hide Thinking"),
- args, 1);
- }
- if (appData.testLegality) {
- XtSetValues(XtNameToWidget(menuBarWidget,"menuOptions.Test Legality"),
- args, 1);
- }
-#endif
- if (saveSettingsOnExit) {
- XtSetValues(XtNameToWidget(menuBarWidget,"menuOptions.Save Settings on Exit"),
- args, 1);
- }
+ InitMenuMarkers();
/*
* Create an icon.
signal(SIGUSR1, CmailSigHandler);
}
}
+
gameInfo.boardWidth = 0; // [HGM] pieces: kludge to ensure InitPosition() calls InitDrawingSizes()
InitPosition(TRUE);
// XtSetKeyboardFocus(shellWidget, formWidget);
return;
}
-typedef struct {
- char *name;
- Boolean value;
-} Enables;
-
-void
-GreyRevert (Boolean grey)
-{
- Widget w;
- if (!menuBarWidget) return;
- w = XtNameToWidget(menuBarWidget, "menuEdit.Revert");
- if (w == NULL) {
- DisplayError("menuEdit.Revert", 0);
- } else {
- XtSetSensitive(w, !grey);
- }
- w = XtNameToWidget(menuBarWidget, "menuEdit.Annotate");
- if (w == NULL) {
- DisplayError("menuEdit.Annotate", 0);
- } else {
- XtSetSensitive(w, !grey);
- }
-}
-
-void
-SetMenuEnables (Enables *enab)
-{
- Widget w;
- if (!menuBarWidget) return;
- while (enab->name != NULL) {
- w = XtNameToWidget(menuBarWidget, enab->name);
- if (w == NULL) {
- DisplayError(enab->name, 0);
- } else {
- XtSetSensitive(w, enab->value);
- }
- enab++;
- }
-}
-
-Enables icsEnables[] = {
- { "menuFile.Mail Move", False },
- { "menuFile.Reload CMail Message", False },
- { "menuMode.Machine Black", False },
- { "menuMode.Machine White", False },
- { "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
-#endif
- { "menuEngine.Engine #1 Settings", False },
- { "menuEngine.Engine #2 Settings", False },
- { "menuEngine.Load Engine", False },
- { "menuEdit.Annotate", False },
- { "menuOptions.Match", False },
- { NULL, False }
-};
-
-Enables ncpEnables[] = {
- { "menuFile.Mail Move", False },
- { "menuFile.Reload CMail Message", False },
- { "menuMode.Machine White", False },
- { "menuMode.Machine Black", False },
- { "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 },
- { "menuEdit.Annotate", False },
- { "menuEngine.Engine #1 Settings", False },
- { "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 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 }
-};
-
-Enables gnuEnables[] = {
- { "menuMode.ICS Client", False },
- { "menuView.ICStex", False },
- { "menuView.ICS Input Box", False },
- { "menuAction.Accept", False },
- { "menuAction.Decline", False },
- { "menuAction.Rematch", False },
- { "menuAction.Adjourn", False },
- { "menuAction.Stop Examining", False },
- { "menuAction.Stop Observing", False },
- { "menuAction.Upload to Examine", False },
- { "menuEdit.Revert", False },
- { "menuEdit.Annotate", False },
- { "menuOptions.ICS", False },
-
- /* The next two options rely on SetCmailMode being called *after* */
- /* SetGNUMode so that when GNU is being used to give hints these */
- /* menu options are still available */
-
- { "menuFile.Mail Move", False },
- { "menuFile.Reload CMail Message", False },
- // [HGM] The following have been added to make a switch from ncp to GNU mode possible
- { "menuMode.Machine White", True },
- { "menuMode.Machine Black", True },
- { "menuMode.Analysis Mode", True },
- { "menuMode.Analyze File", True },
- { "menuMode.Two Machines", True },
- { "menuMode.Machine Match", True },
- { "menuEngine.Engine #1 Settings", True },
- { "menuEngine.Engine #2 Settings", True },
- { "menuEngine.Hint", True },
- { "menuEngine.Book", True },
- { "menuEngine.Move Now", True },
- { "menuEngine.Retract Move", True },
- { "Action", True },
- { NULL, False }
-};
-
-Enables cmailEnables[] = {
- { "Action", True },
- { "menuAction.Call Flag", False },
- { "menuAction.Draw", True },
- { "menuAction.Adjourn", False },
- { "menuAction.Abort", False },
- { "menuAction.Stop Observing", False },
- { "menuAction.Stop Examining", False },
- { "menuFile.Mail Move", True },
- { "menuFile.Reload CMail Message", True },
- { NULL, False }
-};
-
-Enables trainingOnEnables[] = {
- { "menuMode.Edit Comment", False },
- { "menuMode.Pause", False },
- { "menuEdit.Forward", False },
- { "menuEdit.Backward", False },
- { "menuEdit.Forward to End", False },
- { "menuEdit.Back to Start", False },
- { "menuEngine.Move Now", False },
- { "menuEdit.Truncate Game", False },
- { NULL, False }
-};
-
-Enables trainingOffEnables[] = {
- { "menuMode.Edit Comment", True },
- { "menuMode.Pause", True },
- { "menuEdit.Forward", True },
- { "menuEdit.Backward", True },
- { "menuEdit.Forward to End", True },
- { "menuEdit.Back to Start", True },
- { "menuEngine.Move Now", True },
- { "menuEdit.Truncate Game", True },
- { NULL, False }
-};
-
-Enables machineThinkingEnables[] = {
- { "menuFile.Load Game", False },
-// { "menuFile.Load Next Game", False },
-// { "menuFile.Load Previous Game", False },
-// { "menuFile.Reload Same Game", False },
- { "menuEdit.Paste Game", False },
- { "menuFile.Load Position", False },
-// { "menuFile.Load Next Position", False },
-// { "menuFile.Load Previous Position", False },
-// { "menuFile.Reload Same Position", False },
- { "menuEdit.Paste Position", False },
- { "menuMode.Machine White", False },
- { "menuMode.Machine Black", False },
- { "menuMode.Two Machines", False },
-// { "menuMode.Machine Match", False },
- { "menuEngine.Retract Move", False },
- { NULL, False }
-};
-
-Enables userThinkingEnables[] = {
- { "menuFile.Load Game", True },
-// { "menuFile.Load Next Game", True },
-// { "menuFile.Load Previous Game", True },
-// { "menuFile.Reload Same Game", True },
- { "menuEdit.Paste Game", True },
- { "menuFile.Load Position", True },
-// { "menuFile.Load Next Position", True },
-// { "menuFile.Load Previous Position", True },
-// { "menuFile.Reload Same Position", True },
- { "menuEdit.Paste Position", True },
- { "menuMode.Machine White", True },
- { "menuMode.Machine Black", True },
- { "menuMode.Two Machines", True },
-// { "menuMode.Machine Match", True },
- { "menuEngine.Retract Move", True },
- { NULL, False }
-};
-
-void
-SetICSMode ()
-{
- SetMenuEnables(icsEnables);
-
-#if ZIPPY
- if (appData.zippyPlay && !appData.noChessProgram) { /* [DM] icsEngineAnalyze */
- XtSetSensitive(XtNameToWidget(menuBarWidget, "menuMode.Analysis Mode"), True);
- XtSetSensitive(XtNameToWidget(menuBarWidget, "menuEngine.Engine #1 Settings"), True);
- }
-#endif
-}
-
-void
-SetNCPMode ()
-{
- SetMenuEnables(ncpEnables);
-}
-
-void
-SetGNUMode ()
-{
- SetMenuEnables(gnuEnables);
-}
-
-void
-SetCmailMode ()
-{
- SetMenuEnables(cmailEnables);
-}
-
-void
-SetTrainingModeOn ()
-{
- SetMenuEnables(trainingOnEnables);
- if (appData.showButtonBar) {
- XtSetSensitive(buttonBarWidget, False);
- }
- CommentPopDown();
-}
-
-void
-SetTrainingModeOff ()
-{
- SetMenuEnables(trainingOffEnables);
- if (appData.showButtonBar) {
- XtSetSensitive(buttonBarWidget, True);
- }
-}
-
-void
-SetUserThinkingEnables ()
-{
- if (appData.noChessProgram) return;
- SetMenuEnables(userThinkingEnables);
-}
-
-void
-SetMachineThinkingEnables ()
-{
- if (appData.noChessProgram) return;
- SetMenuEnables(machineThinkingEnables);
- switch (gameMode) {
- case MachinePlaysBlack:
- case MachinePlaysWhite:
- case TwoMachinesPlay:
- XtSetSensitive(XtNameToWidget(menuBarWidget,
- ModeToWidgetName(gameMode)), True);
- break;
- default:
- break;
- }
-}
-
// [HGM] code borrowed from winboard.c (which should thus go to backend.c!)
#define HISTORY_SIZE 64
static char *history[HISTORY_SIZE];
}
int nrOfMenuItems = 7;
+Widget menuWidget[150];
MenuListItem menuItemList[150] = {
{ "LoadNextGameProc", LoadNextGameProc },
{ "LoadPrevGameProc", LoadPrevGameProc },
{NULL, NothingProc}
};
+void
+MarkMenuItem (char *menuRef, int state)
+{
+ int nr = MenuToNumber(menuRef);
+ if(nr >= 0) {
+ Arg args[2];
+ XtSetArg(args[0], XtNleftBitmap, state ? xMarkPixmap : None);
+ XtSetValues(menuWidget[nr], args, 1);
+ }
+}
+
+void
+EnableMenuItem (char *menuRef, int state)
+{
+ int nr = MenuToNumber(menuRef);
+ if(nr >= 0) XtSetSensitive(menuWidget[nr], state);
+}
+
+void
+EnableButtonBar (int state)
+{
+ XtSetSensitive(buttonBarWidget, state);
+}
+
+
+void
+SetMenuEnables (Enables *enab)
+{
+ while (enab->name != NULL) {
+ EnableMenuItem(enab->name, enab->value);
+ enab++;
+ }
+}
+
int
Equal(char *p, char *s)
{ // compare strings skipping spaces in second
XtAddCallback(entry, XtNcallback,
(XtCallbackProc) (strcmp(name, "recent") ? MenuBarSelect : MenuEngineSelect),
(caddr_t) action);
+ menuWidget[nrOfMenuItems] = entry;
}
}
board = lastBoard[nr];
}
if (!lastBoardValid[nr] || (nr == 0 && lastFlipView != flipView)) {
- XtSetArg(args[0], XtNleftBitmap, (flipView ? xMarkPixmap : None));
- XtSetValues(XtNameToWidget(menuBarWidget, "menuView.Flip View"),
- args, 1);
+ MarkMenuItem("Flip View", flipView);
}
/*
frozen = 0;
}
-char *
-ModeToWidgetName (GameMode mode)
-{
- switch (mode) {
- case BeginningOfGame:
- if (appData.icsActive)
- return "menuMode.ICS Client";
- else if (appData.noChessProgram ||
- *appData.cmailGameName != NULLCHAR)
- return "menuMode.Edit Game";
- else
- return "menuMode.Machine Black";
- case MachinePlaysBlack:
- return "menuMode.Machine Black";
- case MachinePlaysWhite:
- return "menuMode.Machine White";
- case AnalyzeMode:
- return "menuMode.Analysis Mode";
- case AnalyzeFile:
- return "menuMode.Analyze File";
- case TwoMachinesPlay:
- return "menuMode.Two Machines";
- case EditGame:
- return "menuMode.Edit Game";
- case PlayFromGameFile:
- return "menuFile.Load Game";
- case EditPosition:
- return "menuMode.Edit Position";
- case Training:
- return "menuMode.Training";
- case IcsPlayingWhite:
- case IcsPlayingBlack:
- case IcsObserving:
- case IcsIdle:
- case IcsExamining:
- return "menuMode.ICS Client";
- default:
- case EndOfGame:
- return NULL;
- }
-}
-
void
ModeHighlight ()
{
if (pausing != oldPausing) {
oldPausing = pausing;
- if (pausing) {
- XtSetArg(args[0], XtNleftBitmap, xMarkPixmap);
- } else {
- XtSetArg(args[0], XtNleftBitmap, None);
- }
- XtSetValues(XtNameToWidget(menuBarWidget, "menuMode.Pause"),
- args, 1);
+ MarkMenuItem("Pause", pausing);
if (appData.showButtonBar) {
/* Always toggle, don't set. Previous code messes up when
wname = ModeToWidgetName(oldmode);
if (wname != NULL) {
- XtSetArg(args[0], XtNleftBitmap, None);
- XtSetValues(XtNameToWidget(menuBarWidget, wname), args, 1);
+ MarkMenuItem(wname, False);
}
wname = ModeToWidgetName(gameMode);
if (wname != NULL) {
- XtSetArg(args[0], XtNleftBitmap, xMarkPixmap);
- XtSetValues(XtNameToWidget(menuBarWidget, wname), args, 1);
+ MarkMenuItem(wname, True);
}
oldmode = gameMode;
- XtSetArg(args[0], XtNleftBitmap, matchMode && matchGame < appData.matchGames ? xMarkPixmap : None);
- XtSetValues(XtNameToWidget(menuBarWidget, "menuMode.Machine Match"), args, 1);
+ MarkMenuItem("Machine Match", matchMode && matchGame < appData.matchGames);
/* Maybe all the enables should be handled here, not just this one */
- XtSetSensitive(XtNameToWidget(menuBarWidget, "menuMode.Training"),
- gameMode == Training || gameMode == PlayFromGameFile);
+ EnableMenuItem("Training", gameMode == Training || gameMode == PlayFromGameFile);
}
return LoadGame(f, gameNumber, title, FALSE);
}
-void
-LoadGameProc ()
-{
- if (gameMode == AnalyzeMode || gameMode == AnalyzeFile) {
- Reset(FALSE, TRUE);
- }
- FileNamePopUp(_("Load game file name?"), "", ".pgn .game", LoadGamePopUp, "rb");
-}
-
-void
-LoadNextGameProc ()
-{
- ReloadGame(1);
-}
-
-void
-LoadPrevGameProc ()
-{
- ReloadGame(-1);
-}
-
-void
-ReloadGameProc ()
-{
- ReloadGame(0);
-}
-
-void
-LoadNextPositionProc ()
-{
- ReloadPosition(1);
-}
-
-void
-LoadPrevPositionProc ()
-{
- ReloadPosition(-1);
-}
-
-void
-ReloadPositionProc ()
-{
- ReloadPosition(0);
-}
-
-void
-LoadPositionProc()
-{
- if (gameMode == AnalyzeMode || gameMode == AnalyzeFile) {
- Reset(FALSE, TRUE);
- }
- FileNamePopUp(_("Load position file name?"), "", ".fen .epd .pos", LoadPosition, "rb");
-}
-
-void
-SaveGameProc ()
-{
- FileNamePopUp(_("Save game file name?"),
- DefaultFileName(appData.oldSaveStyle ? "game" : "pgn"),
- appData.oldSaveStyle ? ".game" : ".pgn",
- SaveGame, "a");
-}
-
-void
-SavePositionProc ()
-{
- FileNamePopUp(_("Save position file name?"),
- DefaultFileName(appData.oldSaveStyle ? "pos" : "fen"),
- appData.oldSaveStyle ? ".pos" : ".fen",
- SavePosition, "a");
-}
-
-void
-ReloadCmailMsgProc ()
-{
- ReloadCmailMsgEvent(FALSE);
-}
-
/* this variable is shared between CopyPositionProc and SendPositionSelection */
char *selected_fen_position=NULL;
NULL/* transfer_done_proc */);
}
-void
-CopyFENToClipboard ()
-{ // wrapper to make call from back-end possible
- CopyPositionProc();
-}
-
/* function called when the data to Paste is ready */
static void
PastePositionCB (Widget w, XtPointer client_data, Atom *selection,
/* note: when called from menu all parameters are NULL, so no clue what the
* Widget which was clicked on was, or what the click event was
*/
-void
-CopyGameProc ()
-{
- int ret;
-
- ret = SaveGameToFile(gameCopyFilename, FALSE);
- if (!ret) return;
-
- CopySomething();
-}
-
-void
-CopyGameListProc ()
-{
- if(!SaveGameListAsText(fopen(gameCopyFilename, "w"))) return;
- CopySomething();
-}
-
/* function called when the data to Paste is ready */
static void
PasteGameCB (Widget w, XtPointer client_data, Atom *selection,
void
-AutoSaveGame ()
-{
- SaveGameProc();
-}
-
-
-void
-QuitProc ()
-{
- ExitEvent(0);
-}
-
-void
QuitWrapper (Widget w, XEvent *event, String *prms, Cardinal *nprms)
{
QuitProc();
}
void
-AnalyzeModeProc ()
-{
- char buf[MSG_SIZ];
-
- if (!first.analysisSupport) {
- snprintf(buf, sizeof(buf), _("%s does not support analysis"), first.tidy);
- DisplayError(buf, 0);
- return;
- }
- /* [DM] icsEngineAnalyze [HGM] This is horrible code; reverse the gameMode and isEngineAnalyze tests! */
- if (appData.icsActive) {
- if (gameMode != IcsObserving) {
- snprintf(buf, MSG_SIZ, _("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;
- }
- /* 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"));
- }
-#ifndef OPTIONSDIALOG
- if (!appData.showThinking)
- ShowThinkingProc();
-#endif
-
- AnalyzeModeEvent();
-}
-
-void
-AnalyzeFileProc ()
-{
- if (!first.analysisSupport) {
- char buf[MSG_SIZ];
- snprintf(buf, sizeof(buf), _("%s does not support analysis"), first.tidy);
- DisplayError(buf, 0);
- return;
- }
-// Reset(FALSE, TRUE);
-#ifndef OPTIONSDIALOG
- if (!appData.showThinking)
- ShowThinkingProc();
-#endif
- AnalyzeFileEvent();
-// FileNamePopUp(_("File to analyze"), "", ".pgn .game", LoadGamePopUp, "rb");
- AnalysisPeriodicEvent(1);
-}
-
-void
-MatchProc ()
-{
- MatchEvent(2);
-}
-
-void
-EditCommentProc ()
-{
- Arg args[5];
- int j;
- if (PopDown(1)) { // popdown succesful
- j = 0;
- XtSetArg(args[j], XtNleftBitmap, None); j++;
- XtSetValues(XtNameToWidget(menuBarWidget, "menuEdit.Edit Comment"), args, j);
- XtSetValues(XtNameToWidget(menuBarWidget, "menuView.Show Comments"), args, j);
- } else // was not up
- EditCommentEvent();
-}
-
-void
-IcsInputBoxProc ()
-{
- if (!PopDown(4)) ICSInputBoxPopUp();
-}
-
-void
-AdjuWhiteProc ()
-{
- UserAdjudicationEvent(+1);
-}
-
-void
-AdjuBlackProc ()
-{
- UserAdjudicationEvent(-1);
-}
-
-void
-AdjuDrawProc ()
-{
- UserAdjudicationEvent(0);
-}
-
-void
-EnterKeyProc (Widget w, XEvent *event, String *prms, Cardinal *nprms)
-{
- if (shellUp[4] == True)
- ICSInputSendText();
-}
-
-void
UpKeyProc (Widget w, XEvent *event, String *prms, Cardinal *nprms)
{ // [HGM] input: let up-arrow recall previous line from history
Widget edit;
}
void
+EnterKeyProc (Widget w, XEvent *event, String *prms, Cardinal *nprms)
+{
+ if (shellUp[4] == True)
+ ICSInputSendText();
+}
+
+void
TempBackwardProc (Widget w, XEvent *event, String *prms, Cardinal *nprms)
{
if (!TempBackwardActive) {
}
void
-RevertProc ()
-{
- RevertEvent(False);
-}
-
-void
-AnnotateProc ()
-{
- RevertEvent(True);
-}
-
-void
-FlipViewProc ()
-{
- flipView = !flipView;
- DrawPosition(True, NULL);
-}
-
-void
-PonderNextMoveProc ()
-{
- Arg args[16];
-
- PonderNextMoveEvent(!appData.ponderNextMove);
-#ifndef OPTIONSDIALOG
- if (appData.ponderNextMove) {
- XtSetArg(args[0], XtNleftBitmap, xMarkPixmap);
- } else {
- XtSetArg(args[0], XtNleftBitmap, None);
- }
- XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Ponder Next Move"),
- args, 1);
-#endif
-}
-
-#ifndef OPTIONSDIALOG
-void
-AlwaysQueenProc ()
-{
- Arg args[16];
-
- appData.alwaysPromoteToQueen = !appData.alwaysPromoteToQueen;
-
- if (appData.alwaysPromoteToQueen) {
- XtSetArg(args[0], XtNleftBitmap, xMarkPixmap);
- } else {
- XtSetArg(args[0], XtNleftBitmap, None);
- }
- XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Always Queen"),
- args, 1);
-}
-
-void
-AnimateDraggingProc ()
-{
- Arg args[16];
-
- appData.animateDragging = !appData.animateDragging;
-
- if (appData.animateDragging) {
- XtSetArg(args[0], XtNleftBitmap, xMarkPixmap);
- CreateAnimVars();
- } else {
- XtSetArg(args[0], XtNleftBitmap, None);
- }
- XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Animate Dragging"),
- args, 1);
-}
-
-void
-AnimateMovingProc ()
-{
- Arg args[16];
-
- appData.animate = !appData.animate;
-
- if (appData.animate) {
- XtSetArg(args[0], XtNleftBitmap, xMarkPixmap);
- CreateAnimVars();
- } else {
- XtSetArg(args[0], XtNleftBitmap, None);
- }
- XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Animate Moving"),
- args, 1);
-}
-
-void
-AutoflagProc ()
-{
- Arg args[16];
-
- appData.autoCallFlag = !appData.autoCallFlag;
-
- if (appData.autoCallFlag) {
- XtSetArg(args[0], XtNleftBitmap, xMarkPixmap);
- } else {
- XtSetArg(args[0], XtNleftBitmap, None);
- }
- XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Auto Flag"),
- args, 1);
-}
-
-void
-AutoflipProc ()
-{
- Arg args[16];
-
- appData.autoFlipView = !appData.autoFlipView;
-
- if (appData.autoFlipView) {
- XtSetArg(args[0], XtNleftBitmap, xMarkPixmap);
- } else {
- XtSetArg(args[0], XtNleftBitmap, None);
- }
- XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Auto Flip View"),
- args, 1);
-}
-
-void
-BlindfoldProc ()
-{
- Arg args[16];
-
- appData.blindfold = !appData.blindfold;
-
- if (appData.blindfold) {
- XtSetArg(args[0], XtNleftBitmap, xMarkPixmap);
- } else {
- XtSetArg(args[0], XtNleftBitmap, None);
- }
- XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Blindfold"),
- args, 1);
-
- DrawPosition(True, NULL);
-}
-
-void
-TestLegalityProc ()
-{
- Arg args[16];
-
- appData.testLegality = !appData.testLegality;
-
- if (appData.testLegality) {
- XtSetArg(args[0], XtNleftBitmap, xMarkPixmap);
- } else {
- XtSetArg(args[0], XtNleftBitmap, None);
- }
- XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Test Legality"),
- args, 1);
-}
-
-
-void
-FlashMovesProc ()
-{
- Arg args[16];
-
- if (appData.flashCount == 0) {
- appData.flashCount = 3;
- } else {
- appData.flashCount = -appData.flashCount;
- }
-
- if (appData.flashCount > 0) {
- XtSetArg(args[0], XtNleftBitmap, xMarkPixmap);
- } else {
- XtSetArg(args[0], XtNleftBitmap, None);
- }
- XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Flash Moves"),
- args, 1);
-}
-
-#if HIGHDRAG
-void
-HighlightDraggingProc ()
-{
- Arg args[16];
-
- appData.highlightDragging = !appData.highlightDragging;
-
- if (appData.highlightDragging) {
- XtSetArg(args[0], XtNleftBitmap, xMarkPixmap);
- } else {
- XtSetArg(args[0], XtNleftBitmap, None);
- }
- XtSetValues(XtNameToWidget(menuBarWidget,
- "menuOptions.Highlight Dragging"), args, 1);
-}
-#endif
-
-void
-HighlightLastMoveProc ()
-{
- Arg args[16];
-
- appData.highlightLastMove = !appData.highlightLastMove;
-
- if (appData.highlightLastMove) {
- XtSetArg(args[0], XtNleftBitmap, xMarkPixmap);
- } else {
- XtSetArg(args[0], XtNleftBitmap, None);
- }
- XtSetValues(XtNameToWidget(menuBarWidget,
- "menuOptions.Highlight Last Move"), args, 1);
-}
-
-void
-HighlightArrowProc ()
-{
- Arg args[16];
-
- appData.highlightMoveWithArrow = !appData.highlightMoveWithArrow;
-
- if (appData.highlightMoveWithArrow) {
- XtSetArg(args[0], XtNleftBitmap, xMarkPixmap);
- } else {
- XtSetArg(args[0], XtNleftBitmap, None);
- }
- XtSetValues(XtNameToWidget(menuBarWidget,
- "menuOptions.Arrow"), args, 1);
-}
-
-#if 0
-void
-IcsAlarmProc ()
-{
- Arg args[16];
-
- appData.icsAlarm = !appData.icsAlarm;
-
- if (appData.icsAlarm) {
- XtSetArg(args[0], XtNleftBitmap, xMarkPixmap);
- } else {
- XtSetArg(args[0], XtNleftBitmap, None);
- }
- XtSetValues(XtNameToWidget(menuBarWidget,
- "menuOptions.ICS Alarm"), args, 1);
-}
-#endif
-
-void
-MoveSoundProc ()
-{
- Arg args[16];
-
- appData.ringBellAfterMoves = !appData.ringBellAfterMoves;
-
- if (appData.ringBellAfterMoves) {
- XtSetArg(args[0], XtNleftBitmap, xMarkPixmap);
- } else {
- XtSetArg(args[0], XtNleftBitmap, None);
- }
- XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Move Sound"),
- args, 1);
-}
-
-void
-OneClickProc ()
-{
- Arg args[16];
-
- appData.oneClick = !appData.oneClick;
-
- if (appData.oneClick) {
- XtSetArg(args[0], XtNleftBitmap, xMarkPixmap);
- } else {
- XtSetArg(args[0], XtNleftBitmap, None);
- }
- XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.OneClick"),
- args, 1);
-}
-
-void
-PeriodicUpdatesProc ()
-{
- Arg args[16];
-
- PeriodicUpdatesEvent(!appData.periodicUpdates);
-
- if (appData.periodicUpdates) {
- XtSetArg(args[0], XtNleftBitmap, xMarkPixmap);
- } else {
- XtSetArg(args[0], XtNleftBitmap, None);
- }
- XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Periodic Updates"),
- args, 1);
-}
-
-void
-PopupExitMessageProc ()
-{
- Arg args[16];
-
- appData.popupExitMessage = !appData.popupExitMessage;
-
- if (appData.popupExitMessage) {
- XtSetArg(args[0], XtNleftBitmap, xMarkPixmap);
- } else {
- XtSetArg(args[0], XtNleftBitmap, None);
- }
- XtSetValues(XtNameToWidget(menuBarWidget,
- "menuOptions.Popup Exit Message"), args, 1);
-}
-
-void
-PopupMoveErrorsProc ()
-{
- Arg args[16];
-
- appData.popupMoveErrors = !appData.popupMoveErrors;
-
- if (appData.popupMoveErrors) {
- XtSetArg(args[0], XtNleftBitmap, xMarkPixmap);
- } else {
- XtSetArg(args[0], XtNleftBitmap, None);
- }
- XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Popup Move Errors"),
- args, 1);
-}
-
-#if 0
-void
-PremoveProc ()
-{
- Arg args[16];
-
- appData.premove = !appData.premove;
-
- if (appData.premove) {
- XtSetArg(args[0], XtNleftBitmap, xMarkPixmap);
- } else {
- XtSetArg(args[0], XtNleftBitmap, None);
- }
- XtSetValues(XtNameToWidget(menuBarWidget,
- "menuOptions.Premove"), args, 1);
-}
-#endif
-
-void
-ShowCoordsProc ()
-{
- Arg args[16];
-
- appData.showCoords = !appData.showCoords;
-
- if (appData.showCoords) {
- XtSetArg(args[0], XtNleftBitmap, xMarkPixmap);
- } else {
- XtSetArg(args[0], XtNleftBitmap, None);
- }
- XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Show Coords"),
- args, 1);
-
- DrawPosition(True, NULL);
-}
-
-void
-ShowThinkingProc ()
-{
- appData.showThinking = !appData.showThinking; // [HGM] thinking: tken out of ShowThinkingEvent
- ShowThinkingEvent();
-}
-
-void
-HideThinkingProc ()
-{
- Arg args[16];
-
- appData.hideThinkingFromHuman = !appData.hideThinkingFromHuman; // [HGM] thinking: tken out of ShowThinkingEvent
- ShowThinkingEvent();
-
- if (appData.hideThinkingFromHuman) {
- XtSetArg(args[0], XtNleftBitmap, xMarkPixmap);
- } else {
- XtSetArg(args[0], XtNleftBitmap, None);
- }
- XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Hide Thinking"),
- args, 1);
-}
-#endif
-
-void
-SaveOnExitProc ()
-{
- Arg args[16];
-
- saveSettingsOnExit = !saveSettingsOnExit;
-
- if (saveSettingsOnExit) {
- XtSetArg(args[0], XtNleftBitmap, xMarkPixmap);
- } else {
- XtSetArg(args[0], XtNleftBitmap, None);
- }
- XtSetValues(XtNameToWidget(menuBarWidget, "menuOptions.Save Settings on Exit"),
- args, 1);
-}
-
-void
-SaveSettingsProc ()
-{
- SaveSettings(settingsFileName);
-}
-
-void
-InfoProc ()
-{
- char buf[MSG_SIZ];
- snprintf(buf, sizeof(buf), "xterm -e info --directory %s --directory . -f %s &",
- INFODIR, INFOFILE);
- system(buf);
-}
-
-void
ManInner (Widget w, XEvent *event, String *prms, Cardinal *nprms)
{ // called as key binding
char buf[MSG_SIZ];
}
void
-ManProc ()
-{ // called from menu
- ManInner(NULL, NULL, NULL, NULL);
-}
-
-void
-BugReportProc ()
-{
- char buf[MSG_SIZ];
- snprintf(buf, MSG_SIZ, "%s mailto:bug-xboard@gnu.org", appData.sysOpen);
- system(buf);
-}
-
-void
-GuideProc ()
-{
- char buf[MSG_SIZ];
- snprintf(buf, MSG_SIZ, "%s http://www.gnu.org/software/xboard/user_guide/UserGuide.html", appData.sysOpen);
- system(buf);
-}
-
-void
-HomePageProc ()
-{
- char buf[MSG_SIZ];
- snprintf(buf, MSG_SIZ, "%s http://www.gnu.org/software/xboard/", appData.sysOpen);
- system(buf);
-}
-
-void
-NewsPageProc ()
-{
- char buf[MSG_SIZ];
- snprintf(buf, MSG_SIZ, "%s http://www.gnu.org/software/xboard/whats_new/portal.html", appData.sysOpen);
- system(buf);
-}
-
-void
-AboutProc ()
-{
- char buf[2 * MSG_SIZ];
-#if ZIPPY
- char *zippy = _(" (with Zippy code)");
-#else
- char *zippy = "";
-#endif
- snprintf(buf, sizeof(buf),
-_("%s%s\n\n"
-"Copyright 1991 Digital Equipment Corporation\n"
-"Enhancements Copyright 1992-2012 Free Software Foundation\n"
-"Enhancements Copyright 2005 Alessandro Scotti\n\n"
-"%s is free software and carries NO WARRANTY;"
-"see the file COPYING for more information.\n\n"
-"Visit XBoard on the web at: http://www.gnu.org/software/xboard/\n"
-"Check out the newest features at: http://www.gnu.org/software/xboard/whats_new.html\n\n"
-"Report bugs via email at: <bug-xboard@gnu.org>\n\n"
- ),
- programVersion, zippy, PACKAGE);
- ErrorPopUp(_("About XBoard"), buf, FALSE);
-}
-
-void
-DebugProc ()
-{
- appData.debugMode = !appData.debugMode;
-}
-
-void
-NothingProc ()
-{
- return;
-}
-
-void
DisplayMessage (char *message, char *extMessage)
{
/* display a message in the message widget */
anim->outlineGC = None;
}
-static void
+void
CreateAnimVars ()
{
XWindowAttributes info;