int values[MAX_OPTIONS];
ChessProgramState *currentCps;
+int dialogError;
static Option *currentOption;
static Boolean browserUp;
ButtonCallback *comboCallback;
extern WindowPlacement wpComment, wpTags, wpMoveHistory;
char *trialSound;
-static int oldCores, oldPonder;
+static int oldCores, oldPonder, oldShow, oldBlind;
int MakeColors P((void));
void CreateGCs P((int redo));
void CreateAnyPieces P((void));
int GenericReadout P((int selected));
void GenericUpdate P((int selected));
Widget shells[10];
-Widget marked[10];
+char *marked[10];
Boolean shellUp[10];
WindowPlacement *wp[10] = { NULL, &wpComment, &wpTags, NULL, NULL, NULL, NULL, &wpMoveHistory };
Option *dialogOptions[10];
void
MarkMenu (char *item, int dlgNr)
{
- Arg args[2];
- XtSetArg(args[0], XtNleftBitmap, xMarkPixmap);
- XtSetValues(marked[dlgNr] = XtNameToWidget(menuBarWidget, item), args, 1);
+ MarkMenuItem(marked[dlgNr] = item, True);
}
int
if(n == 0) XtDestroyWidget(shells[n]);
shellUp[n] = False;
if(marked[n]) {
- XtSetArg(args[0], XtNleftBitmap, None);
- XtSetValues(marked[n], args, 1);
+ MarkMenuItem(marked[n], False);
+ marked[n] = NULL;
}
if(!n) currentCps = NULL; // if an Engine Settings dialog was up, we must be popping it down now
return 1;
void
GenericPopDown (Widget w, XEvent *event, String *prms, Cardinal *nprms)
{
- if(browserUp) return; // prevent closing dialog when it has an open file-browse daughter
+ if(browserUp || dialogError) return; // prevent closing dialog when it has an open file-browse daughter
PopDown(prms[0][0] - '0');
}
int newPonder = appData.ponderNextMove;
appData.ponderNextMove = oldPonder;
PonderNextMoveEvent(newPonder);
+ if(!appData.highlightLastMove) ClearHighlights(), ClearPremoveHighlights();
+ if(oldShow != appData.showCoords || oldBlind != appData.blindfold) DrawPosition(TRUE, NULL);
return 1;
}
{ 0, 0, 0, NULL, (void*) &appData.showEvalInMoveHistory, "", NULL, CheckBox, N_("Scores in Move List") },
{ 0, 0, 0, NULL, (void*) &appData.showCoords, "", NULL, CheckBox, N_("Show Coordinates") },
{ 0, 0, 0, NULL, (void*) &appData.markers, "", NULL, CheckBox, N_("Show Target Squares") },
+{ 0, 0, 0, NULL, (void*) &appData.useStickyWindows, "", NULL, CheckBox, N_("Sticky Windows") },
{ 0, 0, 0, NULL, (void*) &appData.testLegality, "", NULL, CheckBox, N_("Test Legality") },
{ 0, 0, 10, NULL, (void*) &appData.flashCount, "", NULL, Spin, N_("Flash Moves (0 = no flashing):") },
{ 0, 1, 10, NULL, (void*) &appData.flashRate, "", NULL, Spin, N_("Flash Rate (high = fast):") },
{ 0, 0, 5000, NULL, (void*) &appData.eloThreshold2, "", NULL, Spin, N_("Elo of weakest player at least:") },
{ 0, 0, 5000, NULL, (void*) &appData.dateThreshold, "", NULL, Spin, N_("No games before year:") },
{ 0, 1, 50, NULL, (void*) &appData.stretch, "", NULL, Spin, N_("Minimum nr consecutive positions:") },
-{ 1, 0, 180, NULL, (void*) &searchMode, (char*) modeNames, modeValues, ComboBox, N_("Seach mode:") },
+{ 1, 0, 180, NULL, (void*) &searchMode, (char*) modeNames, modeValues, ComboBox, N_("Search mode:") },
{ 0, 0, 0, NULL, (void*) &appData.ignoreColors, "", NULL, CheckBox, N_("Also match reversed colors") },
{ 0, 0, 0, NULL, (void*) &appData.findMirror, "", NULL, CheckBox, N_("Also match left-right flipped position") },
{ 0, 0, 0, NULL, (void*) &LoadOptionsOK, "", NULL, EndMark , "" }
{ 0, 0, 0, NULL, (void*) &appData.savePositionFile, ".fen", NULL, FileName, N_("Save Final Positions on File:") },
{ 0, 0, 0, NULL, (void*) &appData.pgnEventHeader, "", NULL, TextBox, N_("PGN Event Header:") },
{ 0, 0, 0, NULL, (void*) &appData.oldSaveStyle, "", NULL, CheckBox, N_("Old Save Style (as opposed to PGN)") },
+{ 0, 0, 0, NULL, (void*) &appData.numberTag, "", NULL, CheckBox, N_("Include Number Tag in tourney PGN") },
{ 0, 0, 0, NULL, (void*) &appData.saveExtendedInfoInPGN, "", NULL, CheckBox, N_("Save Score/Depth Info in PGN") },
{ 0, 0, 0, NULL, (void*) &appData.saveOutOfBookInfo, "", NULL, CheckBox, N_("Save Out-of-Book Info in PGN ") },
{ 0, 1, 0, NULL, NULL, "", NULL, EndMark , "" }
Option boardOptions[] = {
{ 0, 0, 70, NULL, (void*) &appData.whitePieceColor, "", NULL, TextBox, N_("White Piece Color:") },
{ 1000, 1, 0, NULL, (void*) &DefColor, NULL, (char**) "#FFFFCC", Button, " " },
+/* TRANSLATORS: R = single letter for the color red */
{ 1, 1, 0, NULL, (void*) &AdjustColor, NULL, NULL, Button, N_("R") },
+/* TRANSLATORS: G = single letter for the color green */
{ 2, 1, 0, NULL, (void*) &AdjustColor, NULL, NULL, Button, N_("G") },
+/* TRANSLATORS: B = single letter for the color blue */
{ 3, 1, 0, NULL, (void*) &AdjustColor, NULL, NULL, Button, N_("B") },
+/* TRANSLATORS: D = single letter to make a color darker */
{ 4, 1, 0, NULL, (void*) &AdjustColor, NULL, NULL, Button, N_("D") },
{ 0, 0, 70, NULL, (void*) &appData.blackPieceColor, "", NULL, TextBox, N_("Black Piece Color:") },
{ 1000, 1, 0, NULL, (void*) &DefColor, NULL, (char**) "#202020", Button, " " },
Arg args[16];
Widget popup, layout, dialog=NULL, edit=NULL, form, last, b_ok, b_cancel, leftMargin = NULL, textField = NULL;
Window root, child;
- int x, y, i, j, height=999, width=1, h, c, w;
+ int x, y, i, j, height=999, width=1, h, c, w, shrink=FALSE;
int win_x, win_y, maxWidth, maxTextWidth;
unsigned int mask;
char def[MSG_SIZ], *msg;
XtSetArg(args[j], XtNfromVert, last); j++;
XtSetArg(args[j], XtNleft, XtChainLeft); j++;
XtSetArg(args[j], XtNright, XtChainLeft); j++;
+ XtSetArg(args[j], XtNheight, textHeight), j++;
XtSetArg(args[j], XtNborderWidth, 0); j++;
XtSetArg(args[j], XtNjustify, XtJustifyLeft); j++;
XtSetArg(args[j], XtNlabel, _(option[i].name)); j++;
if(option[i].value & 2) { XtSetArg(args[j], XtNscrollHorizontal, XawtextScrollAlways); j++; }
if(option[i].value & 4) { XtSetArg(args[j], XtNautoFill, True); j++; }
if(option[i].value & 8) { XtSetArg(args[j], XtNwrap, XawtextWrapWord); j++; }
- }
+ } else shrink = TRUE;
XtSetArg(args[j], XtNleft, XtChainLeft); j++;
XtSetArg(args[j], XtNeditType, XawtextEdit); j++;
XtSetArg(args[j], XtNuseStringInPlace, False); j++;
j=0;
XtSetArg(args[j], XtNfromVert, last); j++;
XtSetArg(args[j], XtNfromHoriz, option[i].type != Label ? dialog : NULL); j++;
- if(option[i].type != Label) XtSetArg(args[j], XtNheight, textHeight), j++;
+ if(option[i].type != Label) XtSetArg(args[j], XtNheight, textHeight), j++, shrink = TRUE;
XtSetArg(args[j], XtNleft, XtChainLeft); j++;
XtSetArg(args[j], XtNborderWidth, 0); j++;
XtSetArg(args[j], XtNjustify, XtJustifyLeft); j++;
if(option[i].min & SAME_ROW) {
XtSetArg(args[j], XtNfromVert, lastrow); j++;
XtSetArg(args[j], XtNfromHoriz, last); j++;
+ XtSetArg(args[j], XtNleft, XtChainRight); j++;
+ XtSetArg(args[j], XtNright, XtChainRight); j++;
+ if(shrink) XtSetArg(args[j], XtNheight, textHeight), j++;
} else {
XtSetArg(args[j], XtNfromVert, last); j++;
XtSetArg(args[j], XtNfromHoriz, NULL); j++; lastrow = forelast;
+ shrink = FALSE;
}
XtSetArg(args[j], XtNlabel, _(option[i].name)); j++;
- if(textHeight) XtSetArg(args[j], XtNheight, textHeight), j++;
if(option[i].max) { XtSetArg(args[j], XtNwidth, option[i].max); j++; }
if(option[i].textValue) { // special for buttons of New Variant dialog
XtSetArg(args[j], XtNsensitive, appData.noChessProgram || option[i].value < 0
XtSetArg(args[j], XtNfromVert, last); j++;
XtSetArg(args[j], XtNleft, XtChainLeft); j++;
XtSetArg(args[j], XtNright, XtChainLeft); j++;
+ XtSetArg(args[j], XtNheight, textHeight), j++;
XtSetArg(args[j], XtNborderWidth, 0); j++;
XtSetArg(args[j], XtNjustify, XtJustifyLeft); j++;
XtSetArg(args[j], XtNlabel, _(option[i].name)); j++;
XtSetArg(args[j], XtNleft, XtChainLeft); j++;
XtSetArg(args[j], XtNmenuName, XtNewString(option[i].name)); j++;
XtSetArg(args[j], XtNlabel, _(((char**)option[i].textValue)[option[i].value])); j++;
- if(textHeight) XtSetArg(args[j], XtNheight, textHeight), j++;
+ XtSetArg(args[j], XtNheight, textHeight), j++;
+ shrink = TRUE;
option[i].handle = (void*)
(last = XtCreateManagedWidget(" ", menuButtonWidgetClass, form, args, j));
CreateComboPopup(last, option + i, i);
}
j = 0;
XtSetArg(args[j], XtNfromHoriz, last); last = forelast;
- } else
+ } else shrink = FALSE,
XtSetArg(args[j], XtNfromHoriz, widest ? widest : dialog); j++;
XtSetArg(args[j], XtNfromVert, anchor ? anchor : last); j++;
XtSetArg(args[j], XtNbottom, XtChainBottom); j++;
XtSetArg(args[j], XtNtop, XtChainBottom); j++;
XtSetArg(args[j], XtNleft, XtChainRight); j++;
XtSetArg(args[j], XtNright, XtChainRight); j++;
- if(textHeight) XtSetArg(args[j], XtNheight, textHeight), j++;
+ if(shrink) XtSetArg(args[j], XtNheight, textHeight), j++;
b_ok = XtCreateManagedWidget(_("OK"), commandWidgetClass, form, args, j);
XtAddCallback(b_ok, XtNcallback, GenericCallback, (XtPointer)(intptr_t) dlgNr + (dlgNr<<16));
void
-IcsOptionsProc (Widget w, XEvent *event, String *prms, Cardinal *nprms)
+IcsOptionsProc ()
{
GenericPopUp(icsOptions, _("ICS Options"), 0);
}
void
-LoadOptionsProc (Widget w, XEvent *event, String *prms, Cardinal *nprms)
+LoadOptionsProc ()
{
ASSIGN(searchMode, modeValues[appData.searchMode-1]);
GenericPopUp(loadOptions, _("Load Game Options"), 0);
}
void
-SaveOptionsProc (Widget w, XEvent *event, String *prms, Cardinal *nprms)
+SaveOptionsProc ()
{
GenericPopUp(saveOptions, _("Save Game Options"), 0);
}
void
-SoundOptionsProc (Widget w, XEvent *event, String *prms, Cardinal *nprms)
+SoundOptionsProc ()
{
free(soundFiles[2]);
soundFiles[2] = strdup("*");
}
void
-BoardOptionsProc (Widget w, XEvent *event, String *prms, Cardinal *nprms)
+BoardOptionsProc ()
{
GenericPopUp(boardOptions, _("Board Options"), 0);
}
void
-EngineMenuProc (Widget w, XEvent *event, String *prms, Cardinal *nprms)
+EngineMenuProc ()
{
GenericPopUp(adjudicationOptions, _("Adjudicate non-ICS Games"), 0);
}
void
-UciMenuProc (Widget w, XEvent *event, String *prms, Cardinal *nprms)
+UciMenuProc ()
{
oldCores = appData.smpCores;
oldPonder = appData.ponderNextMove;
}
void
-NewVariantProc (Widget w, XEvent *event, String *prms, Cardinal *nprms)
+NewVariantProc ()
{
GenericPopUp(variantDescriptors, _("New Variant"), 0);
}
void
-OptionsProc (Widget w, XEvent *event, String *prms, Cardinal *nprms)
+OptionsProc ()
{
oldPonder = appData.ponderNextMove;
+ oldShow = appData.showCoords; oldBlind = appData.blindfold;
GenericPopUp(generalOptions, _("General Options"), 0);
}
void
-MatchOptionsProc (Widget w, XEvent *event, String *prms, Cardinal *nprms)
+MatchOptionsProc ()
{
NamesToList(firstChessProgramNames, engineList, engineMnemonic, "all");
comboCallback = &AddToTourney;
}
void
-IcsTextProc (Widget w, XEvent *event, String *prms, Cardinal *nprms)
+IcsTextProc ()
{
int i=0, j;
char *p, *q, *r;
textOptions[i].type = EndMark;
textOptions[i].target = NULL;
textOptions[i].min = 2;
- MarkMenu("menuView.ICStex", 3);
+ MarkMenu("ICStex", 3);
GenericPopUp(textOptions, _("ICS text menu"), 3);
}
}
if(commentText) free(commentText); commentText = strdup(text);
commentIndex = index;
- MarkMenu("menuView.Show Comments", 1);
+ MarkMenu("Show Comments", 1);
if(GenericPopUp(commentOptions, title, 1))
XtOverrideTranslations(commentOptions[0].handle, XtParseTranslationTable(commentTranslations));
}
}
if(tagsText) free(tagsText); tagsText = strdup(text);
tagsOptions[0].textValue = msg;
- MarkMenu("menuView.Show Tags", 2);
+ MarkMenu("Show Tags", 2);
GenericPopUp(tagsOptions, title, 2);
}
void
InputBoxPopup ()
{
- MarkMenu("menuView.ICS Input Box", 4);
+ MarkMenu("ICS Input Box", 4);
if(GenericPopUp(boxOptions, _("ICS input box"), 4))
XtOverrideTranslations(boxOptions[0].handle, XtParseTranslationTable(ICSInputTranslations));
}
}
void
-FirstSettingsProc (Widget w, XEvent *event, String *prms, Cardinal *nprms)
+FirstSettingsProc ()
{
SettingsPopUp(&first);
}
void
-SecondSettingsProc (Widget w, XEvent *event, String *prms, Cardinal *nprms)
+SecondSettingsProc ()
{
if(WaitForEngine(&second, SettingsMenuIfReady)) return;
SettingsPopUp(&second);
};
void
-LoadEngineProc (Widget w, XEvent *event, String *prms, Cardinal *nprms)
+LoadEngineProc ()
{
isUCI = storeVariant = v1 = useNick = False; addToList = hasBook = True; // defaults
if(engineChoice) free(engineChoice); engineChoice = strdup(engineNr[0]);
}
void
-EditBookProc (Widget w, XEvent *event, String *prms, Cardinal *nprms)
+EditBookProc ()
{
EditBookEvent();
}
}
void
-ShuffleMenuProc (Widget w, XEvent *event, String *prms, Cardinal *nprms)
+ShuffleMenuProc ()
{
GenericPopUp(shuffleOptions, _("New Shuffle Game"), 0);
}
}
void
-TimeControlProc (Widget w, XEvent *event, String *prms, Cardinal *nprms)
+TimeControlProc ()
{
tmpMoves = appData.movesPerSession;
tmpInc = appData.timeIncrement; if(tmpInc < 0) tmpInc = 0;