/*\r
* xoptions.c -- Move list window, part of X front end for XBoard\r
*\r
- * Copyright 2000 Free Software Foundation, Inc.\r
- *\r
- * The following terms apply to the enhanced version of XBoard distributed\r
- * by the Free Software Foundation:\r
+ * Copyright 2000,2009 Free Software Foundation, Inc.\r
* ------------------------------------------------------------------------\r
- * This program is free software; you can redistribute it and/or modify\r
+ *\r
+ * GNU XBoard is free software: you can redistribute it and/or modify\r
* it under the terms of the GNU General Public License as published by\r
- * the Free Software Foundation; either version 2 of the License, or\r
- * (at your option) any later version.\r
+ * the Free Software Foundation, either version 3 of the License, or (at\r
+ * your option) any later version.\r
*\r
- * This program is distributed in the hope that it will be useful,\r
- * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
- * GNU General Public License for more details.\r
+ * GNU XBoard is distributed in the hope that it will be useful, but\r
+ * WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\r
+ * General Public License for more details.\r
*\r
* You should have received a copy of the GNU General Public License\r
- * along with this program; if not, write to the Free Software\r
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\r
- * ------------------------------------------------------------------------\r
+ * along with this program. If not, see http://www.gnu.org/licenses/. *\r
*\r
- * See the file ChangeLog for a revision history.\r
- */\r
+ *------------------------------------------------------------------------\r
+ ** See the file ChangeLog for a revision history. */\r
\r
// [HGM] this file is the counterpart of woptions.c, containing xboard popup menus\r
// similar to those of WinBoard, to set the most common options interactively.\r
#include "common.h"\r
#include "backend.h"\r
#include "xboard.h"\r
+#include "gettext.h"\r
+\r
+#ifdef ENABLE_NLS\r
+# define _(s) gettext (s)\r
+# define N_(s) gettext_noop (s)\r
+#else\r
+# define _(s) (s)\r
+# define N_(s) s\r
+#endif\r
\r
extern Widget formWidget, shellWidget, boardWidget, menuBarWidget;\r
extern Display *xDisplay;\r
XtSetArg(args[0], XtNlabel, &name);\r
XtGetValues(w, args, 1);\r
\r
- if (strcmp(name, "cancel") == 0) {\r
+ if (strcmp(name, _("cancel")) == 0) {\r
ShufflePopDown();\r
return;\r
}\r
- if (strcmp(name, "off") == 0) {\r
+ if (strcmp(name, _("off")) == 0) {\r
ShufflePopDown();\r
shuffleOpenings = False; // [HGM] should be moved to New Variant menu, once we have it!\r
ResetGameEvent();\r
AnalysisPopDown();\r
return;\r
}\r
- if (strcmp(name, "random") == 0) {\r
+ if (strcmp(name, _("random")) == 0) {\r
sprintf(buf, "%d", rand());\r
XtSetArg(args[0],XtNvalue, buf); // erase bad (non-numeric) value\r
XtSetValues(XtParent(w), args, 1);\r
return;\r
}\r
- if (strcmp(name, "ok") == 0) {\r
+ if (strcmp(name, _("ok")) == 0) {\r
int nr; String name;\r
name = XawDialogGetValueString(w2 = XtParent(w));\r
if(sscanf(name ,"%d",&nr) != 1) {\r
XtSetArg(args[i], XtNresizable, True); i++;\r
XtSetArg(args[i], XtNwidth, DIALOG_SIZE); i++;\r
shuffleShell = popup =\r
- XtCreatePopupShell("New Shuffle Game", transientShellWidgetClass,\r
+ XtCreatePopupShell(_("New Shuffle Game"), transientShellWidgetClass,\r
shellWidget, args, i);\r
\r
layout =\r
\r
sprintf(def, "%d\n", appData.defaultFrcPosition);\r
i = 0;\r
- XtSetArg(args[i], XtNlabel, "Start-position number:"); i++;\r
+ XtSetArg(args[i], XtNlabel, _("Start-position number:")); i++;\r
XtSetArg(args[i], XtNvalue, def); i++;\r
XtSetArg(args[i], XtNborderWidth, 0); i++;\r
- dialog = XtCreateManagedWidget("Shuffle", dialogWidgetClass,\r
+ dialog = XtCreateManagedWidget(_("Shuffle"), dialogWidgetClass,\r
layout, args, i);\r
\r
// XtSetArg(args[0], XtNeditType, XawtextEdit); // [HGM] can't get edit to work decently\r
// XtSetArg(args[1], XtNuseStringInPlace, False);\r
// XtSetValues(dialog, args, 2);\r
\r
- XawDialogAddButton(dialog, "ok", ShuffleCallback, (XtPointer) dialog);\r
- XawDialogAddButton(dialog, "cancel", ShuffleCallback, (XtPointer) dialog);\r
- XawDialogAddButton(dialog, "random", ShuffleCallback, (XtPointer) dialog);\r
- XawDialogAddButton(dialog, "off", ShuffleCallback, (XtPointer) dialog);\r
+ XawDialogAddButton(dialog, _("ok"), ShuffleCallback, (XtPointer) dialog);\r
+ XawDialogAddButton(dialog, _("cancel"), ShuffleCallback, (XtPointer) dialog);\r
+ XawDialogAddButton(dialog, _("random"), ShuffleCallback, (XtPointer) dialog);\r
+ XawDialogAddButton(dialog, _("off"), ShuffleCallback, (XtPointer) dialog);\r
\r
XtRealizeWidget(popup);\r
CatchDeleteWindow(popup, "ShufflePopDown");\r
XtSetArg(args[0], XtNlabel, &name);\r
XtGetValues(w, args, 1);\r
\r
- if (strcmp(name, "classical") == 0) {\r
+ if (strcmp(name, _("classical")) == 0) {\r
if(!tcInc) return;\r
j=0;\r
- XtSetArg(args[j], XtNlabel, "minutes for each"); j++;\r
+ XtSetArg(args[j], XtNlabel, _("minutes for each")); j++;\r
XtSetValues(tcMess1, args, j);\r
j=0;\r
- XtSetArg(args[j], XtNlabel, "moves"); j++;\r
+ XtSetArg(args[j], XtNlabel, _("moves")); j++;\r
XtSetValues(tcMess2, args, j);\r
j=0;\r
XtSetArg(args[j], XtNstring, &name); j++;\r
tcInc = False;\r
return;\r
}\r
- if (strcmp(name, "incremental") == 0) {\r
+ if (strcmp(name, _("incremental")) == 0) {\r
if(tcInc) return;\r
j=0;\r
- XtSetArg(args[j], XtNlabel, "minutes, plus"); j++;\r
+ XtSetArg(args[j], XtNlabel, _("minutes, plus")); j++;\r
XtSetValues(tcMess1, args, j);\r
j=0;\r
- XtSetArg(args[j], XtNlabel, "sec/move"); j++;\r
+ XtSetArg(args[j], XtNlabel, _("sec/move")); j++;\r
XtSetValues(tcMess2, args, j);\r
j=0;\r
XtSetArg(args[j], XtNstring, &name); j++;\r
tcInc = True;\r
return;\r
}\r
- if (strcmp(name, " OK ") == 0) {\r
+ if (strcmp(name, _(" OK ")) == 0) {\r
int inc, mps, tc, ok;\r
XtSetArg(args[0], XtNstring, &txt);\r
XtGetValues(tcData, args, 1);\r
if(!ParseTimeControl(txt, inc, mps)) {\r
XtSetArg(args[0], XtNstring, ""); // erase any offending input\r
XtSetValues(tcTime, args, 1);\r
- DisplayError("Bad Time-Control String", 0);\r
+ DisplayError(_("Bad Time-Control String"), 0);\r
return;\r
}\r
appData.movesPerSession = mps;\r
XtSetArg(args[i], XtNresizable, True); i++;\r
// XtSetArg(args[i], XtNwidth, DIALOG_SIZE); i++;\r
TimeControlShell = popup =\r
- XtCreatePopupShell("TimeControl Menu", transientShellWidgetClass,\r
+ XtCreatePopupShell(_("TimeControl Menu"), transientShellWidgetClass,\r
shellWidget, args, i);\r
\r
layout =\r
XtAddEventHandler(tcTime, ButtonPressMask, False, SetFocus, (XtPointer) popup);\r
\r
j= 0;\r
- XtSetArg(args[j], XtNlabel, tcInc ? " minutes, plus " : "minutes for each"); j++;\r
+ XtSetArg(args[j], XtNlabel, tcInc ? _(" minutes, plus ") : _("minutes for each")); j++;\r
XtSetArg(args[j], XtNborderWidth, 0); j++;\r
XtSetArg(args[j], XtNfromHoriz, tcTime); j++;\r
XtSetArg(args[j], XtNtop, XtChainTop); j++;\r
XtAddEventHandler(tcData, ButtonPressMask, False, SetFocus, (XtPointer) popup);\r
\r
j= 0;\r
- XtSetArg(args[j], XtNlabel, tcInc ? "sec/move" : "moves "); j++;\r
+ XtSetArg(args[j], XtNlabel, tcInc ? _("sec/move") : _("moves ")); j++;\r
XtSetArg(args[j], XtNjustify, XtJustifyLeft); j++;\r
XtSetArg(args[j], XtNborderWidth, 0); j++;\r
XtSetArg(args[j], XtNfromHoriz, tcData); j++;\r
XtAddEventHandler(tcOdds2, ButtonPressMask, False, SetFocus, (XtPointer) popup);\r
\r
j= 0;\r
- XtSetArg(args[j], XtNlabel, "Engine #1 and #2 Time-Odds Factors"); j++;\r
+ XtSetArg(args[j], XtNlabel, _("Engine #1 and #2 Time-Odds Factors")); j++;\r
XtSetArg(args[j], XtNjustify, XtJustifyLeft); j++;\r
XtSetArg(args[j], XtNborderWidth, 0); j++;\r
XtSetArg(args[j], XtNfromVert, tcTime); j++;\r
XtSetArg(args[j], XtNtop, XtChainBottom); j++;\r
XtSetArg(args[j], XtNleft, XtChainLeft); j++;\r
XtSetArg(args[j], XtNright, XtChainLeft); j++;\r
- b_clas= XtCreateManagedWidget("classical", commandWidgetClass,\r
+ b_clas= XtCreateManagedWidget(_("classical"), commandWidgetClass,\r
form, args, j); \r
XtAddCallback(b_clas, XtNcallback, TimeControlCallback, (XtPointer) 0);\r
\r
XtSetArg(args[j], XtNtop, XtChainBottom); j++;\r
XtSetArg(args[j], XtNleft, XtChainLeft); j++;\r
XtSetArg(args[j], XtNright, XtChainLeft); j++;\r
- b_inc = XtCreateManagedWidget("incremental", commandWidgetClass,\r
+ b_inc = XtCreateManagedWidget(_("incremental"), commandWidgetClass,\r
form, args, j); \r
XtAddCallback(b_inc, XtNcallback, TimeControlCallback, (XtPointer) 0);\r
\r
XtSetArg(args[j], XtNtop, XtChainBottom); j++;\r
XtSetArg(args[j], XtNleft, XtChainRight); j++;\r
XtSetArg(args[j], XtNright, XtChainRight); j++;\r
- b_ok= XtCreateManagedWidget(" OK ", commandWidgetClass,\r
+ b_ok= XtCreateManagedWidget(_(" OK "), commandWidgetClass,\r
form, args, j); \r
XtAddCallback(b_ok, XtNcallback, TimeControlCallback, (XtPointer) 0);\r
\r
XtSetArg(args[j], XtNtop, XtChainBottom); j++;\r
XtSetArg(args[j], XtNleft, XtChainRight); j++;\r
XtSetArg(args[j], XtNright, XtChainRight); j++;\r
- b_cancel= XtCreateManagedWidget("cancel", commandWidgetClass,\r
+ b_cancel= XtCreateManagedWidget(_("cancel"), commandWidgetClass,\r
form, args, j); \r
XtAddCallback(b_cancel, XtNcallback, TimeControlPopDown, (XtPointer) 0);\r
\r
XtSetArg(args[0], XtNlabel, &name);\r
XtGetValues(w, args, 1);\r
\r
- if (strcmp(name, "OK") == 0) {\r
+ if (strcmp(name, _("OK")) == 0) {\r
// read all switches\r
appData.periodicUpdates = ReadToggle(w1);\r
// appData.hideThinkingFromHuman = ReadToggle(w2);\r
XtSetArg(args[i], XtNresizable, True); i++;\r
// XtSetArg(args[i], XtNwidth, DIALOG_SIZE); i++;\r
EngineShell = popup =\r
- XtCreatePopupShell("Adjudications", transientShellWidgetClass,\r
+ XtCreatePopupShell(_("Adjudications"), transientShellWidgetClass,\r
shellWidget, args, i);\r
\r
layout =\r
XtSetArg(args[j], XtNright, (XtArgVal) XtChainRight); j++;\r
XtSetArg(args[j], XtNstate, appData.periodicUpdates); j++;\r
// XtSetArg(args[j], XtNjustify, (XtArgVal) XtJustifyLeft); j++;\r
- w1 = XtCreateManagedWidget("Periodic Updates (Analysis Mode)", toggleWidgetClass, form, args, j);\r
+ w1 = XtCreateManagedWidget(_("Periodic Updates (Analysis Mode)"), toggleWidgetClass, form, args, j);\r
\r
XtSetArg(args[j], XtNwidth, (XtArgVal) &width);\r
XtGetValues(w1, &args[j], 1);\r
\r
// XtSetArg(args[j-1], XtNfromVert, (XtArgVal) w1);\r
// XtSetArg(args[j-3], XtNstate, appData.hideThinkingFromHuman);\r
-// w2 = XtCreateManagedWidget("Hide Thinking from Human", toggleWidgetClass, form, args, j);\r
+// w2 = XtCreateManagedWidget(_("Hide Thinking from Human"), toggleWidgetClass, form, args, j);\r
\r
XtSetArg(args[j], XtNwidth, (XtArgVal) width); j++;\r
XtSetArg(args[j-2], XtNstate, appData.firstScoreIsAbsolute);\r
XtSetArg(args[j], XtNfromVert, (XtArgVal) w1); j++;\r
- w3 = XtCreateManagedWidget("Engine #1 Score is Absolute", toggleWidgetClass, form, args, j);\r
+ w3 = XtCreateManagedWidget(_("Engine #1 Score is Absolute"), toggleWidgetClass, form, args, j);\r
\r
XtSetArg(args[j-1], XtNfromVert, (XtArgVal) w3);\r
XtSetArg(args[j-3], XtNstate, appData.secondScoreIsAbsolute);\r
- w4 = XtCreateManagedWidget("Engine #2 Score is Absolute", toggleWidgetClass, form, args, j);\r
+ w4 = XtCreateManagedWidget(_("Engine #2 Score is Absolute"), toggleWidgetClass, form, args, j);\r
\r
- s1 = XtCreateManagedWidget("\nEngine-Engine Adjudications:", labelWidgetClass, form, args, 3);\r
+ s1 = XtCreateManagedWidget(_("\nEngine-Engine Adjudications:"), labelWidgetClass, form, args, 3);\r
\r
XtSetArg(args[j-1], XtNfromVert, (XtArgVal) s1);\r
XtSetArg(args[j-3], XtNstate, appData.testClaims);\r
- w5 = XtCreateManagedWidget("Verify Engine Result Claims", toggleWidgetClass, form, args, j);\r
+ w5 = XtCreateManagedWidget(_("Verify Engine Result Claims"), toggleWidgetClass, form, args, j);\r
\r
XtSetArg(args[j-1], XtNfromVert, (XtArgVal) w5);\r
XtSetArg(args[j-3], XtNstate, appData.checkMates);\r
- w6 = XtCreateManagedWidget("Detect All Mates", toggleWidgetClass, form, args, j);\r
+ w6 = XtCreateManagedWidget(_("Detect All Mates"), toggleWidgetClass, form, args, j);\r
\r
XtSetArg(args[j-1], XtNfromVert, (XtArgVal) w6);\r
XtSetArg(args[j-3], XtNstate, appData.materialDraws);\r
- w7 = XtCreateManagedWidget("Draw when Insuff. Mating Material", toggleWidgetClass, form, args, j);\r
+ w7 = XtCreateManagedWidget(_("Draw when Insuff. Mating Material"), toggleWidgetClass, form, args, j);\r
\r
XtSetArg(args[j-1], XtNfromVert, (XtArgVal) w7);\r
XtSetArg(args[j-3], XtNstate, appData.trivialDraws);\r
- w8 = XtCreateManagedWidget("Adjudicate Trivial Draws", toggleWidgetClass, form, args, j);\r
+ w8 = XtCreateManagedWidget(_("Adjudicate Trivial Draws"), toggleWidgetClass, form, args, j);\r
\r
XtSetArg(args[0], XtNfromVert, (XtArgVal) w4);\r
XtSetArg(args[1], XtNborderWidth, (XtArgVal) 0);\r
XtAddEventHandler(engDrawMoves, ButtonPressMask, False, SetFocus, (XtPointer) popup);\r
\r
j= 0;\r
- XtSetArg(args[j], XtNlabel, " moves maximum, then draw"); j++;\r
+ XtSetArg(args[j], XtNlabel, _(" moves maximum, then draw")); j++;\r
XtSetArg(args[j], XtNjustify, (XtArgVal) XtJustifyLeft); j++;\r
XtSetArg(args[j], XtNborderWidth, 0); j++;\r
XtSetArg(args[j], XtNfromVert, w8); j++;\r
XtAddEventHandler(engThreshold, ButtonPressMask, False, SetFocus, (XtPointer) popup);\r
\r
j= 0;\r
- XtSetArg(args[j], XtNlabel, "-centiPawn lead is win"); j++;\r
+ XtSetArg(args[j], XtNlabel, _("-centiPawn lead is win")); j++;\r
XtSetArg(args[j], XtNjustify, XtJustifyLeft); j++;\r
XtSetArg(args[j], XtNborderWidth, 0); j++;\r
XtSetArg(args[j], XtNfromVert, engDrawMoves); j++;\r
XtAddEventHandler(engRule, ButtonPressMask, False, SetFocus, (XtPointer) popup);\r
\r
j= 0;\r
- XtSetArg(args[j], XtNlabel, "-move rule applied"); j++;\r
+ XtSetArg(args[j], XtNlabel, _("-move rule applied")); j++;\r
XtSetArg(args[j], XtNjustify, (XtArgVal) XtJustifyLeft); j++;\r
XtSetArg(args[j], XtNborderWidth, 0); j++;\r
XtSetArg(args[j], XtNfromVert, engThreshold); j++;\r
XtAddEventHandler(engRepeat, ButtonPressMask, False, SetFocus, (XtPointer) popup);\r
\r
j= 0;\r
- XtSetArg(args[j], XtNlabel, "-fold repeat is draw"); j++;\r
+ XtSetArg(args[j], XtNlabel, _("-fold repeat is draw")); j++;\r
XtSetArg(args[j], XtNjustify, XtJustifyLeft); j++;\r
XtSetArg(args[j], XtNborderWidth, 0); j++;\r
XtSetArg(args[j], XtNfromVert, engRule); j++;\r
XtSetArg(args[j], XtNtop, XtChainBottom); j++;\r
XtSetArg(args[j], XtNleft, XtChainRight); j++;\r
XtSetArg(args[j], XtNright, XtChainRight); j++;\r
- b_ok= XtCreateManagedWidget("OK", commandWidgetClass, form, args, j); \r
+ b_ok= XtCreateManagedWidget(_("OK"), commandWidgetClass, form, args, j); \r
XtAddCallback(b_ok, XtNcallback, EngineCallback, (XtPointer) 0);\r
\r
j=0;\r
XtSetArg(args[j], XtNtop, XtChainBottom); j++;\r
XtSetArg(args[j], XtNleft, XtChainRight); j++;\r
XtSetArg(args[j], XtNright, XtChainRight); j++;\r
- b_cancel= XtCreateManagedWidget("cancel", commandWidgetClass,\r
+ b_cancel= XtCreateManagedWidget(_("cancel"), commandWidgetClass,\r
form, args, j); \r
XtAddCallback(b_cancel, XtNcallback, EnginePopDown, (XtPointer) 0);\r
\r
};\r
\r
struct NewVarButton buttonDesc[] = {\r
- {"normal", "#FFFFFF", 0, VariantNormal},\r
- {"FRC", "#FFFFFF", 0, VariantFischeRandom},\r
- {"wild castle", "#FFFFFF", 0, VariantWildCastle},\r
- {"no castle", "#FFFFFF", 0, VariantNoCastle},\r
- {"knightmate", "#FFFFFF", 0, VariantKnightmate},\r
- {"berolina", "#FFFFFF", 0, VariantBerolina},\r
- {"cylinder", "#FFFFFF", 0, VariantCylinder},\r
- {"shatranj", "#FFFFFF", 0, VariantShatranj},\r
- {"atomic", "#FFFFFF", 0, VariantAtomic},\r
- {"two kings", "#FFFFFF", 0, VariantTwoKings},\r
- {"3-checks", "#FFFFFF", 0, Variant3Check},\r
- {"suicide", "#FFFFBF", 0, VariantSuicide},\r
- {"give-away", "#FFFFBF", 0, VariantGiveaway},\r
- {"losers", "#FFFFBF", 0, VariantLosers},\r
- {"fairy", "#BFBFBF", 0, VariantFairy},\r
- {"Superchess", "#FFBFBF", 0, VariantSuper},\r
- {"crazyhouse", "#FFBFBF", 0, VariantCrazyhouse},\r
- {"bughouse", "#FFBFBF", 0, VariantBughouse},\r
- {"shogi (9x9)", "#BFFFFF", 0, VariantShogi},\r
- {"xiangqi (9x10)", "#BFFFFF", 0, VariantXiangqi},\r
- {"courier (12x8)", "#BFFFBF", 0, VariantCourier},\r
- {"janus (10x8)", "#BFBFFF", 0, VariantJanus},\r
- {"Capablanca (10x8)", "#BFBFFF", 0, VariantCapablanca},\r
- {"CRC (10x8)", "#BFBFFF", 0, VariantCapaRandom},\r
+ {N_("normal"), "#FFFFFF", 0, VariantNormal},\r
+ {N_("FRC"), "#FFFFFF", 0, VariantFischeRandom},\r
+ {N_("wild castle"), "#FFFFFF", 0, VariantWildCastle},\r
+ {N_("no castle"), "#FFFFFF", 0, VariantNoCastle},\r
+ {N_("knightmate"), "#FFFFFF", 0, VariantKnightmate},\r
+ {N_("berolina"), "#FFFFFF", 0, VariantBerolina},\r
+ {N_("cylinder"), "#FFFFFF", 0, VariantCylinder},\r
+ {N_("shatranj"), "#FFFFFF", 0, VariantShatranj},\r
+ {N_("atomic"), "#FFFFFF", 0, VariantAtomic},\r
+ {N_("two kings"), "#FFFFFF", 0, VariantTwoKings},\r
+ {N_("3-checks"), "#FFFFFF", 0, Variant3Check},\r
+ {N_("suicide"), "#FFFFBF", 0, VariantSuicide},\r
+ {N_("give-away"), "#FFFFBF", 0, VariantGiveaway},\r
+ {N_("losers"), "#FFFFBF", 0, VariantLosers},\r
+ {N_("fairy"), "#BFBFBF", 0, VariantFairy},\r
+ {N_("Superchess"), "#FFBFBF", 0, VariantSuper},\r
+ {N_("crazyhouse"), "#FFBFBF", 0, VariantCrazyhouse},\r
+ {N_("bughouse"), "#FFBFBF", 0, VariantBughouse},\r
+ {N_("shogi (9x9)"), "#BFFFFF", 0, VariantShogi},\r
+ {N_("xiangqi (9x10)"), "#BFFFFF", 0, VariantXiangqi},\r
+ {N_("courier (12x8)"), "#BFFFBF", 0, VariantCourier},\r
+ {N_("janus (10x8)"), "#BFBFFF", 0, VariantJanus},\r
+ {N_("Capablanca (10x8)"), "#BFBFFF", 0, VariantCapablanca},\r
+ {N_("CRC (10x8)"), "#BFBFFF", 0, VariantCapaRandom},\r
#ifdef GOTHIC\r
- {"Gothic (10x8)", "#BFBFFF", 0, VariantGothic},\r
+ {N_("Gothic (10x8)"), "#BFBFFF", 0, VariantGothic},\r
#endif\r
#ifdef FALCON\r
- {"Falcon (10x8)", "#BFBFFF", 0, VariantFalcon},\r
+ {N_("Falcon (10x8)"), "#BFBFFF", 0, VariantFalcon},\r
#endif\r
{NULL, 0, 0, (VariantClass) 0}\r
};\r
XtSetArg(args[0], XtNlabel, &name);\r
XtGetValues(w, args, 1);\r
\r
- if (strcmp(name, " OK ") == 0) {\r
+ if (strcmp(name, _(" OK ")) == 0) {\r
int nr = (int) XawToggleGetCurrent(buttonDesc[0].handle) - 1;\r
if(nr < 0) return;\r
v = buttonDesc[nr].variant;\r
char *name = VariantName(v), buf[MSG_SIZ];\r
if (first.protocolVersion > 1 && StrStr(first.variants, name) == NULL) {\r
/* [HGM] in protocol 2 we check if variant is suported by engine */\r
- sprintf(buf, "Variant %s not supported by %s", name, first.tidy);\r
+ sprintf(buf, _("Variant %s not supported by %s"), name, first.tidy);\r
DisplayError(buf, 0);\r
// NewVariantPopDown();\r
return; /* ignore OK if first engine does not support it */\r
} else\r
if (second.initDone && second.protocolVersion > 1 && StrStr(second.variants, name) == NULL) {\r
- sprintf(buf, "Warning: second engine (%s) does not support this!", second.tidy);\r
+ sprintf(buf, _("Warning: second engine (%s) does not support this!"), second.tidy);\r
DisplayError(buf, 0); /* use of second engine is optional; only warn user */\r
}\r
}\r
// XtSetArg(args[i], XtNwidth, 250); i++;\r
// XtSetArg(args[i], XtNheight, 300); i++;\r
NewVariantShell = popup =\r
- XtCreatePopupShell("NewVariant Menu", transientShellWidgetClass,\r
+ XtCreatePopupShell(_("NewVariant Menu"), transientShellWidgetClass,\r
shellWidget, args, i);\r
\r
layout =\r
XtSetArg(args[j], XtNtop, XtChainBottom); j++;\r
XtSetArg(args[j], XtNleft, XtChainRight); j++;\r
XtSetArg(args[j], XtNright, XtChainRight); j++;\r
- b_cancel= XtCreateManagedWidget("CANCEL", commandWidgetClass, form, args, j); \r
+ b_cancel= XtCreateManagedWidget(_("CANCEL"), commandWidgetClass, form, args, j); \r
XtAddCallback(b_cancel, XtNcallback, NewVariantPopDown, (XtPointer) 0);\r
\r
j=0;\r
XtSetArg(args[j], XtNtop, XtChainBottom); j++;\r
XtSetArg(args[j], XtNleft, XtChainRight); j++;\r
XtSetArg(args[j], XtNright, XtChainRight); j++;\r
- b_ok= XtCreateManagedWidget(" OK ", commandWidgetClass, form, args, j); \r
+ b_ok= XtCreateManagedWidget(_(" OK "), commandWidgetClass, form, args, j); \r
XtAddCallback(b_ok, XtNcallback, NewVariantCallback, (XtPointer) 0);\r
\r
XtRealizeWidget(popup);\r
};\r
\r
struct UciControl controlDesc[] = {\r
- {"maximum nr of CPUs:", 0, &appData.smpCores},\r
- {"Polyglot Directory:", 0, &appData.polyglotDir},\r
- {"Hash Size (MB):", 0, &appData.defaultHashSize},\r
- {"EGTB Path:", 0, &appData.defaultPathEGTB},\r
- {"EGTB Cache (MB):", 0, &appData.defaultCacheSizeEGTB},\r
- {"Polyglot Book:", 0, &appData.polyglotBook},\r
+ {N_("maximum nr of CPUs:"), 0, &appData.smpCores},\r
+ {N_("Polyglot Directory:"), 0, &appData.polyglotDir},\r
+ {N_("Hash Size (MB):"), 0, &appData.defaultHashSize},\r
+ {N_("EGTB Path:"), 0, &appData.defaultPathEGTB},\r
+ {N_("EGTB Cache (MB):"), 0, &appData.defaultCacheSizeEGTB},\r
+ {N_("Polyglot Book:"), 0, &appData.polyglotBook},\r
{NULL, 0, NULL},\r
};\r
\r
XtSetArg(args[0], XtNlabel, &name);\r
XtGetValues(w, args, 1);\r
\r
- if (strcmp(name, "OK") == 0) {\r
+ if (strcmp(name, _("OK")) == 0) {\r
int nr, i, j; String name;\r
for(i=0; i<6; i++) {\r
XtSetArg(args[0], XtNstring, &name);\r
XtSetArg(args[i], XtNresizable, True); i++;\r
// XtSetArg(args[i], XtNwidth, 300); i++;\r
UciShell = popup =\r
- XtCreatePopupShell("Engine Settings", transientShellWidgetClass,\r
+ XtCreatePopupShell(_("Engine Settings"), transientShellWidgetClass,\r
shellWidget, args, i);\r
\r
layout =\r
XtSetArg(args[j], XtNleft, XtChainRight); j++;\r
XtSetArg(args[j], XtNright, XtChainRight); j++;\r
XtSetArg(args[j], XtNstate, appData.ponderNextMove); j++;\r
- w4 = XtCreateManagedWidget("Ponder", toggleWidgetClass, form, args, j); \r
+ w4 = XtCreateManagedWidget(_("Ponder"), toggleWidgetClass, form, args, j); \r
\r
j=0;\r
XtSetArg(args[j], XtNfromVert, last); j++;\r
XtSetArg(args[j], XtNtop, XtChainBottom); j++;\r
XtSetArg(args[j], XtNleft, XtChainLeft); j++;\r
XtSetArg(args[j], XtNright, XtChainLeft); j++;\r
- b_ok = XtCreateManagedWidget("OK", commandWidgetClass, form, args, j); \r
+ b_ok = XtCreateManagedWidget(_("OK"), commandWidgetClass, form, args, j); \r
XtAddCallback(b_ok, XtNcallback, UciCallback, (XtPointer) 0);\r
\r
XtSetArg(args[j], XtNfromHoriz, b_ok); j++;\r
- b_cancel = XtCreateManagedWidget("cancel", commandWidgetClass, form, args, j); \r
+ b_cancel = XtCreateManagedWidget(_("cancel"), commandWidgetClass, form, args, j); \r
XtAddCallback(b_cancel, XtNcallback, UciPopDown, (XtPointer) 0);\r
\r
j = 5;\r
XtSetArg(args[j], XtNfromHoriz, upperLeft); j++;\r
XtSetArg(args[j], XtNstate, appData.usePolyglotBook); j++;\r
- w1 = XtCreateManagedWidget(" use book ", toggleWidgetClass, form, args, j); \r
+ w1 = XtCreateManagedWidget(_(" use book "), toggleWidgetClass, form, args, j); \r
// XtAddCallback(w1, XtNcallback, UciCallback, (XtPointer) 0);\r
\r
j = 5;\r
XtSetArg(args[j], XtNfromHoriz, w1); j++;\r
XtSetArg(args[j], XtNstate, appData.firstHasOwnBookUCI); j++;\r
- w2 = XtCreateManagedWidget("own book 1", toggleWidgetClass, form, args, j); \r
+ w2 = XtCreateManagedWidget(_("own book 1"), toggleWidgetClass, form, args, j); \r
// XtAddCallback(w2, XtNcallback, UciCallback, (XtPointer) 0);\r
\r
j = 5;\r
XtSetArg(args[j], XtNfromHoriz, w2); j++;\r
XtSetArg(args[j], XtNstate, appData.secondHasOwnBookUCI); j++;\r
- w3 = XtCreateManagedWidget("own book 2", toggleWidgetClass, form, args, j); \r
+ w3 = XtCreateManagedWidget(_("own book 2"), toggleWidgetClass, form, args, j); \r
// XtAddCallback(w3, XtNcallback, UciCallback, (XtPointer) 0);\r
\r
XtRealizeWidget(popup);\r
UciPopUp();\r
}\r
\r
+//--------------------------- Engine-specific options menu ----------------------------------\r
+\r
+int SettingsUp;\r
+Widget SettingsShell;\r
+int values[MAX_OPTIONS];\r
+ChessProgramState *currentCps;\r
+\r
+void SettingsPopDown()\r
+{\r
+ if (!SettingsUp) return;\r
+ XtPopdown(SettingsShell);\r
+ XtDestroyWidget(SettingsShell);\r
+ SettingsUp = False;\r
+ ModeHighlight();\r
+}\r
+\r
+void SpinCallback(w, client_data, call_data)\r
+ Widget w;\r
+ XtPointer client_data, call_data;\r
+{\r
+ String name, val;\r
+ Widget w2;\r
+ Arg args[16];\r
+ char buf[MSG_SIZ];\r
+ int i, j;\r
+ \r
+ XtSetArg(args[0], XtNlabel, &name);\r
+ XtGetValues(w, args, 1);\r
+ \r
+ j = 0;\r
+ XtSetArg(args[0], XtNstring, &val);\r
+ XtGetValues(currentCps->option[(int)client_data].handle, args, 1);\r
+ sscanf(val, "%d", &j);\r
+ if (strcmp(name, "+") == 0) {\r
+ if(++j > currentCps->option[(int)client_data].max) return;\r
+ } else\r
+ if (strcmp(name, "-") == 0) {\r
+ if(--j < currentCps->option[(int)client_data].min) return;\r
+ } else return;\r
+ sprintf(buf, "%d", j);\r
+ XtSetArg(args[0], XtNstring, buf);\r
+ XtSetValues(currentCps->option[(int)client_data].handle, args, 1);\r
+}\r
+\r
+void SettingsCallback(w, client_data, call_data)\r
+ Widget w;\r
+ XtPointer client_data, call_data;\r
+{\r
+ String name, val;\r
+ Widget w2;\r
+ Arg args[16];\r
+ char buf[MSG_SIZ];\r
+ int i, j;\r
+ \r
+ XtSetArg(args[0], XtNlabel, &name);\r
+ XtGetValues(w, args, 1);\r
+ \r
+ if (strcmp(name, _("cancel")) == 0) {\r
+ SettingsPopDown();\r
+ return;\r
+ }\r
+ if (strcmp(name, _("OK")) == 0 || (int)client_data) { // save buttons imply OK\r
+ int nr;\r
+\r
+ for(i=0; i<currentCps->nrOptions; i++) { // send all options that had to be OK-ed to engine\r
+ switch(currentCps->option[i].type) {\r
+ case TextBox:\r
+ XtSetArg(args[0], XtNstring, &val);\r
+ XtGetValues(currentCps->option[i].handle, args, 1);\r
+ if(strcmp(currentCps->option[i].textValue, val)) {\r
+ strcpy(currentCps->option[i].textValue, val);\r
+ sprintf(buf, "option %s=%s\n", currentCps->option[i].name, val);\r
+ SendToProgram(buf, currentCps);\r
+ }\r
+ break;\r
+ case Spin:\r
+ XtSetArg(args[0], XtNstring, &val);\r
+ XtGetValues(currentCps->option[i].handle, args, 1);\r
+ sscanf(val, "%d", &j);\r
+ if(j > currentCps->option[i].max) j = currentCps->option[i].max;\r
+ if(j < currentCps->option[i].min) j = currentCps->option[i].min;\r
+ if(currentCps->option[i].value != j) {\r
+ currentCps->option[i].value = j;\r
+ sprintf(buf, "option %s=%d\n", currentCps->option[i].name, j);\r
+ SendToProgram(buf, currentCps);\r
+ }\r
+ break;\r
+ case CheckBox:\r
+ j = 0;\r
+ XtSetArg(args[0], XtNstate, &j);\r
+ XtGetValues(currentCps->option[i].handle, args, 1);\r
+ if(currentCps->option[i].value != j) {\r
+ currentCps->option[i].value = j;\r
+ sprintf(buf, "option %s=%d\n", currentCps->option[i].name, j);\r
+ SendToProgram(buf, currentCps);\r
+ }\r
+ break;\r
+ case ComboBox:\r
+ if(currentCps->option[i].value != values[i]) {\r
+ currentCps->option[i].value = values[i];\r
+ sprintf(buf, "option %s=%s\n", currentCps->option[i].name, \r
+ ((char**)currentCps->option[i].textValue)[values[i]]);\r
+ SendToProgram(buf, currentCps);\r
+ }\r
+ break;\r
+ }\r
+ }\r
+ if((int)client_data) { // send save-button command to engine\r
+ sprintf(buf, "option %s\n", name);\r
+ SendToProgram(buf, currentCps);\r
+ }\r
+ SettingsPopDown();\r
+ return;\r
+ }\r
+ sprintf(buf, "option %s\n", name);\r
+ SendToProgram(buf, currentCps);\r
+}\r
+\r
+void ComboSelect(w, addr, index) // callback for all combo items\r
+ Widget w;\r
+ caddr_t addr;\r
+ caddr_t index;\r
+{\r
+ Arg args[16];\r
+ int i = ((int)addr)>>8;\r
+ int j = 255 & (int) addr;\r
+\r
+ values[i] = j; // store in temporary, for transfer at OK\r
+ XtSetArg(args[0], XtNlabel, ((char**)currentCps->option[i].textValue)[j]);\r
+ XtSetValues(currentCps->option[i].handle, args, 1);\r
+}\r
+\r
+void CreateComboPopup(parent, name, n, mb)\r
+ Widget parent;\r
+ String name;\r
+ int n;\r
+ char *mb[];\r
+{\r
+ int i=0, j;\r
+ Widget menu, entry;\r
+ Arg args[16];\r
+\r
+ menu = XtCreatePopupShell(name, simpleMenuWidgetClass,\r
+ parent, NULL, 0);\r
+ j = 0;\r
+ XtSetArg(args[j], XtNwidth, 100); j++;\r
+// XtSetArg(args[j], XtNright, XtChainRight); j++;\r
+ while (mb[i] != NULL) {\r
+ entry = XtCreateManagedWidget(mb[i], smeBSBObjectClass,\r
+ menu, args, j);\r
+ XtAddCallback(entry, XtNcallback,\r
+ (XtCallbackProc) ComboSelect,\r
+ (caddr_t) (256*n+i));\r
+ i++;\r
+ }\r
+} \r
+\r
+void SettingsPopUp(ChessProgramState *cps)\r
+{\r
+ Arg args[16];\r
+ Widget popup, layout, dialog, edit, form, oldform, last, b_ok, b_cancel;\r
+ Window root, child;\r
+ int x, y, i, j;\r
+ int win_x, win_y;\r
+ unsigned int mask;\r
+ char def[80], *p, *q;\r
+\r
+ // to do: start up second engine if needed\r
+ if(!cps->initDone || !cps->nrOptions) return; // nothing to be done\r
+ currentCps = cps;\r
+\r
+ i = 0;\r
+ XtSetArg(args[i], XtNresizable, True); i++;\r
+ SettingsShell = popup =\r
+ XtCreatePopupShell(_("Settings Menu"), transientShellWidgetClass,\r
+ shellWidget, args, i);\r
+ \r
+ layout =\r
+ XtCreateManagedWidget(layoutName, formWidgetClass, popup,\r
+ layoutArgs, XtNumber(layoutArgs));\r
+ \r
+ form =\r
+ XtCreateManagedWidget(layoutName, formWidgetClass, layout,\r
+ formArgs, XtNumber(formArgs));\r
+ \r
+ last = NULL;\r
+ for(i=0; i<cps->nrOptions; i++) {\r
+ Widget box;\r
+ switch(cps->option[i].type) {\r
+ case Spin:\r
+ sprintf(def, "%d", cps->option[i].value);\r
+ case TextBox:\r
+ j=0;\r
+ XtSetArg(args[j], XtNfromVert, last); j++;\r
+ XtSetArg(args[j], XtNborderWidth, 0); j++;\r
+ XtSetArg(args[j], XtNjustify, XtJustifyLeft); j++;\r
+ dialog = XtCreateManagedWidget(cps->option[i].name, labelWidgetClass, form, args, j); \r
+ j=0;\r
+ XtSetArg(args[j], XtNfromVert, last); j++;\r
+ XtSetArg(args[j], XtNfromHoriz, dialog); j++;\r
+ XtSetArg(args[j], XtNborderWidth, 1); j++;\r
+ XtSetArg(args[j], XtNwidth, cps->option[i].type == Spin ? 40 : 100); j++;\r
+ XtSetArg(args[j], XtNeditType, XawtextEdit); j++;\r
+ XtSetArg(args[j], XtNuseStringInPlace, False); j++;\r
+ XtSetArg(args[j], XtNdisplayCaret, False); j++;\r
+ XtSetArg(args[j], XtNright, XtChainRight); j++;\r
+ XtSetArg(args[j], XtNresizable, True); j++;\r
+ XtSetArg(args[j], XtNstring, cps->option[i].type==Spin ? def : cps->option[i].textValue); j++;\r
+ edit = last;\r
+ cps->option[i].handle = (void*)\r
+ (last = XtCreateManagedWidget("text", asciiTextWidgetClass, form, args, j)); \r
+ XtAddEventHandler(box, ButtonPressMask, False, SetFocus, (XtPointer) popup);\r
+ if(cps->option[i].type == TextBox) break;\r
+ // add increment and decrement controls for spin\r
+ j=0;\r
+ XtSetArg(args[j], XtNfromVert, edit); j++;\r
+ XtSetArg(args[j], XtNfromHoriz, box); j++;\r
+ XtSetArg(args[j], XtNheight, 10); j++;\r
+ XtSetArg(args[j], XtNwidth, 20); j++;\r
+ edit = XtCreateManagedWidget("+", commandWidgetClass, form, args, j);\r
+ XtAddCallback(edit, XtNcallback, SpinCallback, (XtPointer) i);\r
+ j=0;\r
+ XtSetArg(args[j], XtNfromVert, edit); j++;\r
+ XtSetArg(args[j], XtNfromHoriz, last); j++;\r
+ XtSetArg(args[j], XtNheight, 10); j++;\r
+ XtSetArg(args[j], XtNwidth, 20); j++;\r
+ last = XtCreateManagedWidget("-", commandWidgetClass, form, args, j);\r
+ XtAddCallback(last, XtNcallback, SpinCallback, (XtPointer) i);\r
+ break;\r
+ case CheckBox:\r
+ j=0;\r
+ XtSetArg(args[j], XtNfromVert, last); j++;\r
+ XtSetArg(args[j], XtNwidth, 10); j++;\r
+ XtSetArg(args[j], XtNheight, 10); j++;\r
+ XtSetArg(args[j], XtNstate, cps->option[i].value); j++;\r
+ cps->option[i].handle = (void*) \r
+ (dialog = XtCreateManagedWidget(" ", toggleWidgetClass, form, args, j)); \r
+ j=0;\r
+ XtSetArg(args[j], XtNfromVert, last); j++;\r
+ XtSetArg(args[j], XtNfromHoriz, dialog); j++;\r
+ XtSetArg(args[j], XtNborderWidth, 0); j++;\r
+ XtSetArg(args[j], XtNjustify, XtJustifyLeft); j++;\r
+ last = XtCreateManagedWidget(cps->option[i].name, labelWidgetClass, form, args, j);\r
+ break;\r
+ case SaveButton:\r
+ case Button:\r
+ j=0;\r
+ XtSetArg(args[j], XtNfromVert, last); j++;\r
+ XtSetArg(args[j], XtNstate, cps->option[i].value); j++;\r
+ cps->option[i].handle = (void*) \r
+ (last = XtCreateManagedWidget(cps->option[i].name, commandWidgetClass, form, args, j)); \r
+ XtAddCallback(last, XtNcallback, SettingsCallback, (XtPointer) (cps->option[i].type == SaveButton));\r
+ break;\r
+ case ComboBox:\r
+ j=0;\r
+ XtSetArg(args[j], XtNfromVert, last); j++;\r
+ XtSetArg(args[j], XtNborderWidth, 0); j++;\r
+ XtSetArg(args[j], XtNjustify, XtJustifyLeft); j++;\r
+ dialog = XtCreateManagedWidget(cps->option[i].name, labelWidgetClass, form, args, j);\r
+\r
+ j=0;\r
+ XtSetArg(args[j], XtNfromVert, last); j++;\r
+ XtSetArg(args[j], XtNfromHoriz, dialog); j++;\r
+ XtSetArg(args[j], XtNwidth, 100); j++;\r
+ XtSetArg(args[j], XtNmenuName, XtNewString(cps->option[i].name)); j++;\r
+ XtSetArg(args[j], XtNlabel, ((char**)cps->option[i].textValue)[cps->option[i].value]); j++;\r
+ cps->option[i].handle = (void*) \r
+ (last = XtCreateManagedWidget(" ", menuButtonWidgetClass, form, args, j)); \r
+ CreateComboPopup(last, cps->option[i].name, i, (char **) cps->option[i].textValue);\r
+ values[i] = cps->option[i].value;\r
+ break;\r
+ }\r
+ }\r
+\r
+ j=0;\r
+ XtSetArg(args[j], XtNfromVert, last); j++;\r
+ XtSetArg(args[j], XtNbottom, XtChainBottom); j++;\r
+ XtSetArg(args[j], XtNtop, XtChainBottom); j++;\r
+ XtSetArg(args[j], XtNleft, XtChainLeft); j++;\r
+ XtSetArg(args[j], XtNright, XtChainLeft); j++;\r
+ b_ok = XtCreateManagedWidget(_("OK"), commandWidgetClass, form, args, j); \r
+ XtAddCallback(b_ok, XtNcallback, SettingsCallback, (XtPointer) 0);\r
+\r
+ XtSetArg(args[j], XtNfromHoriz, b_ok); j++;\r
+ b_cancel = XtCreateManagedWidget(_("cancel"), commandWidgetClass, form, args, j); \r
+ XtAddCallback(b_cancel, XtNcallback, SettingsPopDown, (XtPointer) 0);\r
+\r
+ XtRealizeWidget(popup);\r
+ CatchDeleteWindow(popup, "SettingsPopDown");\r
+ \r
+ XQueryPointer(xDisplay, xBoardWindow, &root, &child,\r
+ &x, &y, &win_x, &win_y, &mask);\r
+ \r
+ XtSetArg(args[0], XtNx, x - 10);\r
+ XtSetArg(args[1], XtNy, y - 30);\r
+ XtSetValues(popup, args, 2);\r
+ \r
+ XtPopup(popup, XtGrabExclusive);\r
+ SettingsUp = True;\r
+\r
+ previous = NULL;\r
+ SetFocus(edit, popup, (XEvent*) NULL, False);\r
+}\r
+\r
+void FirstSettingsProc(w, event, prms, nprms)\r
+ Widget w;\r
+ XEvent *event;\r
+ String *prms;\r
+ Cardinal *nprms;\r
+{\r
+ SettingsPopUp(&first);\r
+}\r
+\r
+void SecondSettingsProc(w, event, prms, nprms)\r
+ Widget w;\r
+ XEvent *event;\r
+ String *prms;\r
+ Cardinal *nprms;\r
+{\r
+ SettingsPopUp(&second);\r
+}\r
+\r
//--------------------------- General Popup for Cloning ----------------------------------\r
#if 0\r
int XXXUp;\r
XtSetArg(args[0], XtNlabel, &name);\r
XtGetValues(w, args, 1);\r
\r
- if (strcmp(name, "cancel") == 0) {\r
+ if (strcmp(name, _("cancel")) == 0) {\r
XXXPopDown();\r
return;\r
}\r
- if (strcmp(name, "ok") == 0) {\r
+ if (strcmp(name, _("ok")) == 0) {\r
int nr; String name;\r
name = XawDialogGetValueString(w2 = XtParent(w));\r
if(sscanf(name ,"%d",&nr) != 1) {\r
XtSetArg(args[i], XtNresizable, True); i++;\r
XtSetArg(args[i], XtNwidth, DIALOG_SIZE); i++;\r
XXXShell = popup =\r
- XtCreatePopupShell("XXX Menu", transientShellWidgetClass,\r
+ XtCreatePopupShell(_("XXX Menu"), transientShellWidgetClass,\r
shellWidget, args, i);\r
\r
layout =\r
dialog = XtCreateManagedWidget("XXX", dialogWidgetClass,\r
layout, args, i);\r
\r
- XawDialogAddButton(dialog, "ok", XXXCallback, (XtPointer) dialog);\r
- XawDialogAddButton(dialog, "cancel", XXXCallback, (XtPointer) dialog);\r
+ XawDialogAddButton(dialog, _("ok"), XXXCallback, (XtPointer) dialog);\r
+ XawDialogAddButton(dialog, _("cancel"), XXXCallback, (XtPointer) dialog);\r
\r
XtRealizeWidget(popup);\r
CatchDeleteWindow(popup, "XXXPopDown");\r