// [HGM] the following code for makng menu popups was cloned from the FileNamePopUp routines
static Widget previous = NULL;
+extern Pixel timerBackgroundPixel;
void
SetFocus (Widget w, XtPointer data, XEvent *event, Boolean *b)
int values[MAX_OPTIONS];
ChessProgramState *currentCps;
+int dialogError;
static Option *currentOption;
static Boolean browserUp;
ButtonCallback *comboCallback;
int i=0, j;
Widget menu, entry;
Arg args[16];
+ char **mb = (char **) option->textValue;
+ if(mb[0] == NULL) return; // avoid empty menus, as they cause crash
menu = XtCreatePopupShell(option->name, simpleMenuWidgetClass,
parent, NULL, 0);
j = 0;
XtSetArg(args[j], XtNwidth, 100); j++;
-// XtSetArg(args[j], XtNright, XtChainRight); j++;
- char **mb = (char **) option->textValue;
while (mb[i] != NULL)
{
if (option->min & NO_GETTEXT)
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');
}
Boolean isUCI, hasBook, storeVariant, v1, addToList, useNick;
extern Option installOptions[], matchOptions[];
char *engineNr[] = { N_("First Engine"), N_("Second Engine"), NULL };
-char *engineList[100] = {" "}, *engineMnemonic[100] = {""};
+char *engineList[MAXENGINES] = {" "}, *engineMnemonic[MAXENGINES] = {""};
int
AppendText (Option *opt, char *s)
{ 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, 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 , "" }
} else {
buttonColor = *(Pixel *) vTo.addr;
}
- } else buttonColor = (Pixel) 0;
+ } else buttonColor = timerBackgroundPixel;
XtSetArg(args[0], XtNbackground, buttonColor);;
XtSetValues(box->handle, args, 1);
}
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++;
msg = _("browse"); w = 0;
/* automatically scale to width of text */
XtSetArg(args[j], XtNwidth, (XtArgVal) NULL ); j++;
+ if(textHeight) XtSetArg(args[j], XtNheight, textHeight), j++;
} else {
w = 20; msg = "+";
- XtSetArg(args[j], XtNheight, 10); j++;
+ XtSetArg(args[j], XtNheight, textHeight/2); j++;
XtSetArg(args[j], XtNwidth, w); j++;
}
edit = XtCreateManagedWidget(msg, commandWidgetClass, form, args, j);
j=0;
XtSetArg(args[j], XtNfromVert, edit); j++;
XtSetArg(args[j], XtNfromHoriz, last); j++;
- XtSetArg(args[j], XtNheight, 10); j++;
+ XtSetArg(args[j], XtNvertDistance, -1); j++;
+ XtSetArg(args[j], XtNheight, textHeight/2); j++;
XtSetArg(args[j], XtNwidth, 20); j++;
XtSetArg(args[j], XtNleft, XtChainRight); j++;
XtSetArg(args[j], XtNright, XtChainRight); j++;
if(!currentCps) option[i].value = *(Boolean*)option[i].target;
j=0;
XtSetArg(args[j], XtNfromVert, last); j++;
- XtSetArg(args[j], XtNwidth, 10); j++;
- XtSetArg(args[j], XtNheight, 10); j++;
+ XtSetArg(args[j], XtNvertDistance, (textHeight+2)/4 + 3); j++;
+ XtSetArg(args[j], XtNwidth, textHeight/2); j++;
+ XtSetArg(args[j], XtNheight, textHeight/2); j++;
XtSetArg(args[j], XtNleft, XtChainLeft); j++;
XtSetArg(args[j], XtNright, XtChainLeft); j++;
XtSetArg(args[j], XtNstate, option[i].value); 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++, 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(option[i].max) { XtSetArg(args[j], XtNwidth, option[i].max); j++; }
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++;
+ 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(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
MatchOptionsProc (Widget w, XEvent *event, String *prms, Cardinal *nprms)
{
- NamesToList(firstChessProgramNames, engineList, engineMnemonic);
+ NamesToList(firstChessProgramNames, engineList, engineMnemonic, "all");
comboCallback = &AddToTourney;
matchOptions[5].min = -(appData.pairingEngine[0] != NULLCHAR); // with pairing engine, allow Swiss
ASSIGN(tfName, appData.tourneyFile[0] ? appData.tourneyFile : MakeName(appData.defName));
if(engineDir) free(engineDir); engineDir = strdup("");
if(nickName) free(nickName); nickName = strdup("");
if(params) free(params); params = strdup("");
- NamesToList(firstChessProgramNames, engineList, engineMnemonic);
+ NamesToList(firstChessProgramNames, engineList, engineMnemonic, "all");
GenericPopUp(installOptions, _("Load engine"), 0);
}