}
XtSetArg(args, XtNdisplayCaret, True);
XtSetValues(w, &args, 1);
- XawTextSetInsertionPoint(w, 9999); // position cursor at end
XtSetKeyboardFocus((Widget) data, w);
previous = w;
}
String name;
Widget w2;
Arg args[16];
- char buf[80];
-
+ char buf[MSG_SIZ];
+
XtSetArg(args[0], XtNlabel, &name);
XtGetValues(w, args, 1);
-
+
if (strcmp(name, _("cancel")) == 0) {
ShufflePopDown();
return;
return;
}
if (strcmp(name, _("random")) == 0) {
- sprintf(buf, "%d", rand());
+ snprintf(buf, MSG_SIZ, "%d", rand());
XtSetArg(args[0],XtNvalue, buf); // erase bad (non-numeric) value
XtSetValues(XtParent(w), args, 1);
return;
int nr; String name;
name = XawDialogGetValueString(w2 = XtParent(w));
if(sscanf(name ,"%d",&nr) != 1) {
- sprintf(buf, "%d", appData.defaultFrcPosition);
+ snprintf(buf, MSG_SIZ, "%d", appData.defaultFrcPosition);
XtSetArg(args[0],XtNvalue, buf); // erase bad (non-numeric) value
XtSetValues(w2, args, 1);
return;
int x, y, i;
int win_x, win_y;
unsigned int mask;
- char def[80];
-
+ char def[MSG_SIZ];
+
i = 0;
XtSetArg(args[i], XtNresizable, True); i++;
XtSetArg(args[i], XtNwidth, DIALOG_SIZE); i++;
shuffleShell = popup =
XtCreatePopupShell(_("New Shuffle Game"), transientShellWidgetClass,
shellWidget, args, i);
-
+
layout =
XtCreateManagedWidget(layoutName, formWidgetClass, popup,
layoutArgs, XtNumber(layoutArgs));
-
- sprintf(def, "%d\n", appData.defaultFrcPosition);
+
+ snprintf(def, MSG_SIZ, "%d\n", appData.defaultFrcPosition);
i = 0;
XtSetArg(args[i], XtNlabel, _("Start-position number:")); i++;
XtSetArg(args[i], XtNvalue, def); i++;
XtSetArg(args[i], XtNborderWidth, 0); i++;
dialog = XtCreateManagedWidget(_("Shuffle"), dialogWidgetClass,
layout, args, i);
-
+
// XtSetArg(args[0], XtNeditType, XawtextEdit); // [HGM] can't get edit to work decently
// XtSetArg(args[1], XtNuseStringInPlace, False);
// XtSetValues(dialog, args, 2);
XawDialogAddButton(dialog, _("cancel"), ShuffleCallback, (XtPointer) dialog);
XawDialogAddButton(dialog, _("random"), ShuffleCallback, (XtPointer) dialog);
XawDialogAddButton(dialog, _("off"), ShuffleCallback, (XtPointer) dialog);
-
+
XtRealizeWidget(popup);
CatchDeleteWindow(popup, "ShufflePopDown");
-
+
XQueryPointer(xDisplay, xBoardWindow, &root, &child,
&x, &y, &win_x, &win_y, &mask);
-
+
XtSetArg(args[0], XtNx, x - 10);
XtSetArg(args[1], XtNy, y - 30);
XtSetValues(popup, args, 2);
-
+
XtPopup(popup, XtGrabExclusive);
shuffleUp = True;
-
+
edit = XtNameToWidget(dialog, "*value");
XtSetKeyboardFocus(popup, edit);
XtPointer client_data, call_data;
{
String name, txt;
- Widget w2;
Arg args[16];
- char buf[80];
+ char buf[MSG_SIZ];
int j;
XtSetArg(args[0], XtNlabel, &name);
XtGetValues(w, args, 1);
-
+
if (strcmp(name, _("classical")) == 0) {
if(tcInc == 0) return;
j=0;
XtGetValues(tcData, args, j);
tcIncrement = 0; sscanf(name, "%d", &tcIncrement);
}
- sprintf(buf, "%d", tcMoves);
+ snprintf(buf, MSG_SIZ, "%d", tcMoves);
j=0;
XtSetArg(args[j], XtNstring, buf); j++;
XtSetValues(tcData, args, j);
XtGetValues(tcData, args, j);
tcMoves = appData.movesPerSession; sscanf(name, "%d", &tcMoves);
}
- sprintf(buf, "%d", tcIncrement);
+ snprintf(buf, MSG_SIZ, "%d", tcIncrement);
j=0;
XtSetArg(args[j], XtNstring, buf); j++;
XtSetValues(tcData, args, j);
return;
}
if (strcmp(name, _(" OK ")) == 0) {
- int inc, mps, tc, ok;
+ int inc, mps, ok;
XtSetArg(args[0], XtNstring, &txt);
XtGetValues(tcData, args, 1);
switch(tcInc) {
}
XtSetArg(args[0], XtNstring, &txt);
XtGetValues(tcOdds1, args, 1);
- appData.firstTimeOdds = first.timeOdds
+ appData.firstTimeOdds = first.timeOdds
= (sscanf(txt, "%d", &j) == 1 && j > 0) ? j : 1;
XtGetValues(tcOdds2, args, 1);
- appData.secondTimeOdds = second.timeOdds
+ appData.secondTimeOdds = second.timeOdds
= (sscanf(txt, "%d", &j) == 1 && j > 0) ? j : 1;
Reset(True, True);
void TimeControlPopUp()
{
Arg args[16];
- Widget popup, layout, form, edit, b_ok, b_cancel, b_clas, b_inc, mess;
+ Widget popup, layout, form, b_ok, b_cancel, b_clas, b_inc, mess;
Window root, child;
int x, y, i, j;
int win_x, win_y;
unsigned int mask;
- char def[80];
-
+ char def[MSG_SIZ];
+
tcInc = searchTime > 0 ? 2 : (appData.timeIncrement >= 0);
tcMoves = appData.movesPerSession; tcIncrement = appData.timeIncrement;
if(!tcInc) tcIncrement = 0;
- sprintf(def, "%d", tcInc ? tcIncrement : tcMoves);
+ snprintf(def, MSG_SIZ, "%d", tcInc ? tcIncrement : tcMoves);
i = 0;
XtSetArg(args[i], XtNresizable, True); i++;
TimeControlShell = popup =
XtCreatePopupShell(_("TimeControl Menu"), transientShellWidgetClass,
shellWidget, args, i);
-
+
layout =
XtCreateManagedWidget(layoutName, formWidgetClass, popup,
layoutArgs, XtNumber(layoutArgs));
-
+
form =
XtCreateManagedWidget(layoutName, formWidgetClass, layout,
formArgs, XtNumber(formArgs));
-
+
j = 0;
// XtSetArg(args[j], XtNwidth, (XtArgVal) 300); j++;
// XtSetArg(args[j], XtNheight, (XtArgVal) 85); j++;
XtSetArg(args[j], XtNright, XtChainRight); j++;
XtSetArg(args[j], XtNresizable, True); j++;
XtSetArg(args[j], XtNwidth, 85); j++;
-// XtSetArg(args[j], XtNheight, 20); j++;
+ XtSetArg(args[j], XtNinsertPosition, 9999); j++;
tcTime = XtCreateManagedWidget("TC", asciiTextWidgetClass, form, args, j);
XtAddEventHandler(tcTime, ButtonPressMask, False, SetFocus, (XtPointer) popup);
XtSetArg(args[j], XtNright, XtChainLeft); j++;
XtSetArg(args[j], XtNstate, tcInc==0); j++;
b_clas= XtCreateManagedWidget(_("classical"), toggleWidgetClass,
- form, args, j);
+ form, args, j);
XtAddCallback(b_clas, XtNcallback, TimeControlCallback, (XtPointer) 0);
j=0;
XtSetArg(args[j], XtNright, XtChainLeft); j++;
XtSetArg(args[j], XtNstate, tcInc==1); j++;
b_inc = XtCreateManagedWidget(_("incremental"), toggleWidgetClass,
- form, args, j);
+ form, args, j);
XtAddCallback(b_inc, XtNcallback, TimeControlCallback, (XtPointer) 0);
j=0;
XtSetArg(args[j], XtNright, XtChainLeft); j++;
XtSetArg(args[j], XtNstate, tcInc==2); j++;
b_inc = XtCreateManagedWidget(_("fixed time"), toggleWidgetClass,
- form, args, j);
+ form, args, j);
XtAddCallback(b_inc, XtNcallback, TimeControlCallback, (XtPointer) 0);
j=0;
XtSetArg(args[j], XtNleft, XtChainRight); j++;
XtSetArg(args[j], XtNright, XtChainRight); j++;
b_ok= XtCreateManagedWidget(_(" OK "), commandWidgetClass,
- form, args, j);
+ form, args, j);
XtAddCallback(b_ok, XtNcallback, TimeControlCallback, (XtPointer) 0);
j=0;
XtSetArg(args[j], XtNleft, XtChainRight); j++;
XtSetArg(args[j], XtNright, XtChainRight); j++;
b_cancel= XtCreateManagedWidget(_("cancel"), commandWidgetClass,
- form, args, j);
+ form, args, j);
XtAddCallback(b_cancel, XtNcallback, TimeControlPopDown, (XtPointer) 0);
XtRealizeWidget(popup);
CatchDeleteWindow(popup, "TimeControlPopDown");
-
+
XQueryPointer(xDisplay, xBoardWindow, &root, &child,
&x, &y, &win_x, &win_y, &mask);
-
+
XtSetArg(args[0], XtNx, x - 10);
XtSetArg(args[1], XtNy, y - 30);
XtSetValues(popup, args, 2);
-
+
XtPopup(popup, XtGrabExclusive);
TimeControlUp = True;
-
+
previous = NULL;
SetFocus(tcTime, popup, (XEvent*) NULL, False);
// XtSetKeyboardFocus(popup, tcTime);
XtPointer client_data, call_data;
{
String name;
- Widget s2;
Arg args[16];
- char buf[80];
int j;
-
+
XtSetArg(args[0], XtNlabel, &name);
XtGetValues(w, args, 1);
-
+
if (strcmp(name, _("OK")) == 0) {
// read all switches
appData.periodicUpdates = ReadToggle(w1);
appData.materialDraws = ReadToggle(w7);
appData.trivialDraws = ReadToggle(w8);
- // adjust setting in other menu for duplicates
+ // adjust setting in other menu for duplicates
// (perhaps duplicates should be removed from general Option Menu?)
// XtSetArg(args[0], XtNleftBitmap, appData.showThinking ? xMarkPixmap : None);
// XtSetValues(XtNameToWidget(menuBarWidget,
XtGetValues(engDrawMoves, args, 1);
if(sscanf(name, "%d", &j) == 1) appData.adjudicateDrawMoves = j;
XtGetValues(engThreshold, args, 1);
- if(sscanf(name, "%d", &j) == 1)
+ if(sscanf(name, "%d", &j) == 1)
adjudicateLossThreshold = appData.adjudicateLossThreshold = -j; // inverted!
XtGetValues(engRule, args, 1);
if(sscanf(name, "%d", &j) == 1) appData.ruleMoves = j;
void EnginePopUp()
{
Arg args[16];
- Widget popup, layout, form, edit, b_ok, b_cancel, b_clas, b_inc, s1;
+ Widget popup, layout, form, b_ok, b_cancel, s1;
Window root, child;
int x, y, i, j, width;
int win_x, win_y;
unsigned int mask;
- char def[80];
-
+ char def[MSG_SIZ];
+
tcInc = (appData.timeIncrement >= 0);
tcMoves = appData.movesPerSession; tcIncrement = appData.timeIncrement;
if(!tcInc) tcIncrement = 0;
- sprintf(def, "%d", tcInc ? tcIncrement : tcMoves);
+ snprintf(def, MSG_SIZ, "%d", tcInc ? tcIncrement : tcMoves);
i = 0;
XtSetArg(args[i], XtNresizable, True); i++;
EngineShell = popup =
XtCreatePopupShell(_("Adjudications"), transientShellWidgetClass,
shellWidget, args, i);
-
+
layout =
XtCreateManagedWidget(layoutName, formWidgetClass, popup,
layoutArgs, XtNumber(layoutArgs));
-
+
form =
XtCreateManagedWidget(layoutName, formWidgetClass, layout,
formArgs, XtNumber(formArgs));
-
+
j = 0;
// XtSetArg(args[j], XtNwidth, (XtArgVal) 250); j++;
// XtSetArg(args[j], XtNheight, (XtArgVal) 400); j++;
XtSetArg(args[1], XtNborderWidth, (XtArgVal) 0);
XtSetValues(s1, args, 2);
- sprintf(def, "%d", appData.adjudicateDrawMoves);
+ snprintf(def, MSG_SIZ, "%d", appData.adjudicateDrawMoves);
j= 0;
XtSetArg(args[j], XtNborderWidth, 1); j++;
XtSetArg(args[j], XtNfromVert, w8); j++;
// XtSetArg(args[j], XtNheight, 20); j++;
tcMess1 = XtCreateManagedWidget("TCtext", labelWidgetClass, form, args, j);
- sprintf(def, "%d", -appData.adjudicateLossThreshold); // inverted!
+ snprintf(def, MSG_SIZ, "%d", -appData.adjudicateLossThreshold); // inverted!
j= 0;
XtSetArg(args[j], XtNborderWidth, 1); j++;
XtSetArg(args[j], XtNfromVert, engDrawMoves); j++;
XtSetArg(args[j], XtNright, XtChainLeft); j++;
XtSetArg(args[j], XtNresizable, True); j++;
XtSetArg(args[j], XtNwidth, 60); j++;
-// XtSetArg(args[j], XtNheight, 20); j++;
+ XtSetArg(args[j], XtNinsertPosition, 9999); j++;
engThreshold = XtCreateManagedWidget("Threshold", asciiTextWidgetClass, form, args, j);
XtAddEventHandler(engThreshold, ButtonPressMask, False, SetFocus, (XtPointer) popup);
// XtSetArg(args[j], XtNheight, 20); j++;
tcMess2 = XtCreateManagedWidget("MPStext", labelWidgetClass, form, args, j);
- sprintf(def, "%d", appData.ruleMoves);
+ snprintf(def, MSG_SIZ, "%d", appData.ruleMoves);
j= 0;
XtSetArg(args[j], XtNborderWidth, 1); j++;
XtSetArg(args[j], XtNfromVert, engThreshold); j++;
// XtSetArg(args[j], XtNheight, 20); j++;
tcMess1 = XtCreateManagedWidget("TCtext", labelWidgetClass, form, args, j);
- sprintf(def, "%d", appData.drawRepeats);
+ snprintf(def, MSG_SIZ, "%d", appData.drawRepeats);
j= 0;
XtSetArg(args[j], XtNborderWidth, 1); j++;
XtSetArg(args[j], XtNfromVert, engRule); j++;
XtSetArg(args[j], XtNtop, XtChainBottom); j++;
XtSetArg(args[j], XtNleft, XtChainRight); j++;
XtSetArg(args[j], XtNright, XtChainRight); j++;
- b_ok= XtCreateManagedWidget(_("OK"), commandWidgetClass, form, args, j);
+ b_ok= XtCreateManagedWidget(_("OK"), commandWidgetClass, form, args, j);
XtAddCallback(b_ok, XtNcallback, EngineCallback, (XtPointer) 0);
j=0;
XtSetArg(args[j], XtNleft, XtChainRight); j++;
XtSetArg(args[j], XtNright, XtChainRight); j++;
b_cancel= XtCreateManagedWidget(_("cancel"), commandWidgetClass,
- form, args, j);
+ form, args, j);
XtAddCallback(b_cancel, XtNcallback, EnginePopDown, (XtPointer) 0);
XtRealizeWidget(popup);
CatchDeleteWindow(popup, "EnginePopDown");
-
+
XQueryPointer(xDisplay, xBoardWindow, &root, &child,
&x, &y, &win_x, &win_y, &mask);
-
+
XtSetArg(args[0], XtNx, x - 10);
XtSetArg(args[1], XtNy, y - 30);
XtSetValues(popup, args, 2);
-
+
XtPopup(popup, XtGrabExclusive);
EngineUp = True;
-
+
previous = NULL;
SetFocus(engThreshold, popup, (XEvent*) NULL, False);
}
{N_("give-away"), "#FFFFBF", 0, VariantGiveaway},
{N_("losers"), "#FFFFBF", 0, VariantLosers},
{N_("fairy"), "#BFBFBF", 0, VariantFairy},
+ {N_("Seirawan"), "#FFBFBF", 0, VariantSChess},
{N_("Superchess"), "#FFBFBF", 0, VariantSuper},
{N_("crazyhouse"), "#FFBFBF", 0, VariantCrazyhouse},
{N_("bughouse"), "#FFBFBF", 0, VariantBughouse},
#ifdef FALCON
{N_("Falcon (10x8)"), "#BFBFFF", 0, VariantFalcon},
#endif
+ {N_("Spartan"), "#FF0000", 0, VariantSpartan},
{NULL, 0, 0, (VariantClass) 0}
};
XtPointer client_data, call_data;
{
String name;
- Widget w2;
Arg args[16];
- char buf[80];
VariantClass v;
-
+
XtSetArg(args[0], XtNlabel, &name);
XtGetValues(w, args, 1);
-
+
if (strcmp(name, _(" OK ")) == 0) {
int nr = (intptr_t) XawToggleGetCurrent(buttonDesc[0].handle) - 1;
if(nr < 0) return;
v = buttonDesc[nr].variant;
- if(!appData.noChessProgram) {
+ if(!appData.noChessProgram) {
char *name = VariantName(v), buf[MSG_SIZ];
if (first.protocolVersion > 1 && StrStr(first.variants, name) == NULL) {
/* [HGM] in protocol 2 we check if variant is suported by engine */
- sprintf(buf, _("Variant %s not supported by %s"), name, first.tidy);
+ snprintf(buf, MSG_SIZ, _("Variant %s not supported by %s"), name, first.tidy);
DisplayError(buf, 0);
// NewVariantPopDown();
return; /* ignore OK if first engine does not support it */
} else
if (second.initDone && second.protocolVersion > 1 && StrStr(second.variants, name) == NULL) {
- sprintf(buf, _("Warning: second engine (%s) does not support this!"), second.tidy);
+ snprintf(buf, MSG_SIZ, _("Warning: second engine (%s) does not support this!"), second.tidy);
DisplayError(buf, 0); /* use of second engine is optional; only warn user */
}
}
void NewVariantPopUp()
{
Arg args[16];
- Widget popup, layout, dialog, edit, form, last = NULL, b_ok, b_cancel;
+ Widget popup, layout, form, last = NULL, b_ok, b_cancel;
Window root, child;
int x, y, i, j;
int win_x, win_y;
unsigned int mask;
- char def[80];
XrmValue vFrom, vTo;
i = 0;
NewVariantShell = popup =
XtCreatePopupShell(_("NewVariant Menu"), transientShellWidgetClass,
shellWidget, args, i);
-
+
layout =
XtCreateManagedWidget(layoutName, formWidgetClass, popup,
layoutArgs, XtNumber(layoutArgs));
-
+
form =
XtCreateManagedWidget("form", formWidgetClass, layout,
formArgs, XtNumber(formArgs));
-
+
for(i = 0; buttonDesc[i].name != NULL; i++) {
Pixel buttonColor;
if (!appData.monoMode) {
buttonColor = *(Pixel *) vTo.addr;
}
}
-
+
j = 0;
XtSetArg(args[j], XtNradioGroup, last); j++;
XtSetArg(args[j], XtNwidth, 125); j++;
XtSetArg(args[j], XtNtop, XtChainBottom); j++;
XtSetArg(args[j], XtNleft, XtChainRight); j++;
XtSetArg(args[j], XtNright, XtChainRight); j++;
- b_cancel= XtCreateManagedWidget(_("CANCEL"), commandWidgetClass, form, args, j);
+ b_cancel= XtCreateManagedWidget(_("CANCEL"), commandWidgetClass, form, args, j);
XtAddCallback(b_cancel, XtNcallback, NewVariantPopDown, (XtPointer) 0);
j=0;
XtSetArg(args[j], XtNtop, XtChainBottom); j++;
XtSetArg(args[j], XtNleft, XtChainRight); j++;
XtSetArg(args[j], XtNright, XtChainRight); j++;
- b_ok= XtCreateManagedWidget(_(" OK "), commandWidgetClass, form, args, j);
+ b_ok= XtCreateManagedWidget(_(" OK "), commandWidgetClass, form, args, j);
XtAddCallback(b_ok, XtNcallback, NewVariantCallback, (XtPointer) 0);
j=0;
XtRealizeWidget(popup);
CatchDeleteWindow(popup, "NewVariantPopDown");
-
+
XQueryPointer(xDisplay, xBoardWindow, &root, &child,
&x, &y, &win_x, &win_y, &mask);
-
+
XtSetArg(args[0], XtNx, x - 10);
XtSetArg(args[1], XtNy, y - 30);
XtSetValues(popup, args, 2);
-
+
XtPopup(popup, XtGrabExclusive);
NewVariantUp = True;
}
{
String name;
Arg args[16];
- char buf[80];
int oldCores = appData.smpCores, ponder = 0;
-
+
XtSetArg(args[0], XtNlabel, &name);
XtGetValues(w, args, 1);
-
+
if (strcmp(name, _("OK")) == 0) {
- int nr, i, j; String name;
+ int i, j; String name;
for(i=0; i<6; i++) {
XtSetArg(args[0], XtNstring, &name);
XtGetValues(controlDesc[i].handle, args, 1);
if(name)
*(char**) controlDesc[i].ptr = strdup(name);
} else {
- if(sscanf(name, "%d", &j) == 1)
+ if(sscanf(name, "%d", &j) == 1)
*(int*) controlDesc[i].ptr = j;
}
}
XtSetArg(args[0], XtNstate, &ponder);
XtGetValues(w4, args, 1);
- // adjust setting in other menu for duplicates
+ // adjust setting in other menu for duplicates
// (perhaps duplicates should be removed from general Option Menu?)
XtSetArg(args[0], XtNleftBitmap, ponder ? xMarkPixmap : None);
XtSetValues(XtNameToWidget(menuBarWidget,
// Some changed setting need immediate sending always.
PonderNextMoveEvent(ponder);
if(oldCores != appData.smpCores)
- NewSettingEvent(False, "cores", appData.smpCores);
+ NewSettingEvent(False, &(first.maxCores), "cores", appData.smpCores);
}
UciPopDown();
return;
void UciPopUp()
{
Arg args[16];
- Widget popup, layout, dialog, edit, form, b_ok, b_cancel, last = NULL, new, upperLeft;
+ Widget popup, layout, form, b_ok, b_cancel, last = NULL, new, upperLeft;
Window root, child;
int x, y, i, j;
int win_x, win_y;
unsigned int mask;
- char def[80];
-
+ char def[MSG_SIZ];
+
i = 0;
XtSetArg(args[i], XtNresizable, True); i++;
// XtSetArg(args[i], XtNwidth, 300); i++;
UciShell = popup =
XtCreatePopupShell(_("Engine Settings"), transientShellWidgetClass,
shellWidget, args, i);
-
+
layout =
XtCreateManagedWidget(layoutName, formWidgetClass, popup,
layoutArgs, XtNumber(layoutArgs));
-
-
+
+
form =
XtCreateManagedWidget("form", formWidgetClass, layout,
formArgs, XtNumber(formArgs));
-
+
j = 0;
XtSetArg(args[j], XtNtop, XtChainTop); j++;
XtSetArg(args[j], XtNbottom, XtChainTop); j++;
XtSetArg(args[j], XtNright, XtChainRight); j++;
XtSetArg(args[j], XtNresizable, True); j++;
XtSetArg(args[j], XtNwidth, i&1 ? 245 : 50); j++;
+ XtSetArg(args[j], XtNinsertPosition, 9999); j++;
if(i&1) {
- XtSetArg(args[j], XtNstring, * (char**) controlDesc[i].ptr ?
+ XtSetArg(args[j], XtNstring, * (char**) controlDesc[i].ptr ?
* (char**) controlDesc[i].ptr : ""); j++;
} else {
- sprintf(def, "%d", * (int*) controlDesc[i].ptr);
+ snprintf(def, MSG_SIZ, "%d", * (int*) controlDesc[i].ptr);
XtSetArg(args[j], XtNstring, def); j++;
}
XtSetArg(args[j], XtNfromHoriz, upperLeft); j++;
XtSetArg(args[j], XtNleft, XtChainRight); j++;
XtSetArg(args[j], XtNright, XtChainRight); j++;
XtSetArg(args[j], XtNstate, appData.ponderNextMove); j++;
- w4 = XtCreateManagedWidget(_("Ponder"), toggleWidgetClass, form, args, j);
+ w4 = XtCreateManagedWidget(_("Ponder"), toggleWidgetClass, form, args, j);
j=0;
XtSetArg(args[j], XtNfromVert, last); j++;
XtSetArg(args[j], XtNtop, XtChainBottom); j++;
XtSetArg(args[j], XtNleft, XtChainLeft); j++;
XtSetArg(args[j], XtNright, XtChainLeft); j++;
- b_ok = XtCreateManagedWidget(_("OK"), commandWidgetClass, form, args, j);
+ b_ok = XtCreateManagedWidget(_("OK"), commandWidgetClass, form, args, j);
XtAddCallback(b_ok, XtNcallback, UciCallback, (XtPointer) 0);
XtSetArg(args[j], XtNfromHoriz, b_ok); j++;
- b_cancel = XtCreateManagedWidget(_("cancel"), commandWidgetClass, form, args, j);
+ b_cancel = XtCreateManagedWidget(_("cancel"), commandWidgetClass, form, args, j);
XtAddCallback(b_cancel, XtNcallback, UciPopDown, (XtPointer) 0);
j = 5;
XtSetArg(args[j], XtNfromHoriz, upperLeft); j++;
XtSetArg(args[j], XtNstate, appData.usePolyglotBook); j++;
- w1 = XtCreateManagedWidget(_(" use book "), toggleWidgetClass, form, args, j);
+ w1 = XtCreateManagedWidget(_(" use book "), toggleWidgetClass, form, args, j);
// XtAddCallback(w1, XtNcallback, UciCallback, (XtPointer) 0);
j = 5;
XtSetArg(args[j], XtNfromHoriz, w1); j++;
XtSetArg(args[j], XtNstate, appData.firstHasOwnBookUCI); j++;
- w2 = XtCreateManagedWidget(_("own book 1"), toggleWidgetClass, form, args, j);
+ w2 = XtCreateManagedWidget(_("own book 1"), toggleWidgetClass, form, args, j);
// XtAddCallback(w2, XtNcallback, UciCallback, (XtPointer) 0);
j = 5;
XtSetArg(args[j], XtNfromHoriz, w2); j++;
XtSetArg(args[j], XtNstate, appData.secondHasOwnBookUCI); j++;
- w3 = XtCreateManagedWidget(_("own book 2"), toggleWidgetClass, form, args, j);
+ w3 = XtCreateManagedWidget(_("own book 2"), toggleWidgetClass, form, args, j);
// XtAddCallback(w3, XtNcallback, UciCallback, (XtPointer) 0);
XtRealizeWidget(popup);
CatchDeleteWindow(popup, "UciPopDown");
-
+
XQueryPointer(xDisplay, xBoardWindow, &root, &child,
&x, &y, &win_x, &win_y, &mask);
-
+
XtSetArg(args[0], XtNx, x - 10);
XtSetArg(args[1], XtNy, y - 30);
XtSetValues(popup, args, 2);
-
+
XtPopup(popup, XtGrabExclusive);
UciUp = True;
XtPointer client_data, call_data;
{
String name, val;
- Widget w2;
Arg args[16];
char buf[MSG_SIZ];
- int i, j;
+ int j;
int data = (intptr_t) client_data;
-
+
XtSetArg(args[0], XtNlabel, &name);
XtGetValues(w, args, 1);
-
+
j = 0;
XtSetArg(args[0], XtNstring, &val);
XtGetValues(currentCps->option[data].handle, args, 1);
if (strcmp(name, "-") == 0) {
if(--j < currentCps->option[data].min) return;
} else return;
- sprintf(buf, "%d", j);
+ snprintf(buf, MSG_SIZ, "%d", j);
XtSetArg(args[0], XtNstring, buf);
XtSetValues(currentCps->option[data].handle, args, 1);
}
XtPointer client_data, call_data;
{
String name, val;
- Widget w2;
Arg args[16];
char buf[MSG_SIZ];
int i, j;
int data = (intptr_t) client_data;
-
+
XtSetArg(args[0], XtNlabel, &name);
XtGetValues(w, args, 1);
-
+
if (strcmp(name, _("cancel")) == 0) {
SettingsPopDown();
return;
}
if (strcmp(name, _("OK")) == 0 || data) { // save buttons imply OK
- int nr;
-
for(i=0; i<currentCps->nrOptions; i++) { // send all options that had to be OK-ed to engine
switch(currentCps->option[i].type) {
case TextBox:
XtSetArg(args[0], XtNstring, &val);
XtGetValues(currentCps->option[i].handle, args, 1);
if(strcmp(currentCps->option[i].textValue, val)) {
- strcpy(currentCps->option[i].textValue, val);
- sprintf(buf, "option %s=%s\n", currentCps->option[i].name, val);
- SendToProgram(buf, currentCps);
+ safeStrCpy(currentCps->option[i].textValue, val, MSG_SIZ - (currentCps->option[i].textValue - currentCps->option[i].name) );
+ snprintf(buf, MSG_SIZ, "option %s=%s\n", currentCps->option[i].name, val);
+ SendToProgram(buf, currentCps);
}
break;
case Spin:
if(j < currentCps->option[i].min) j = currentCps->option[i].min;
if(currentCps->option[i].value != j) {
currentCps->option[i].value = j;
- sprintf(buf, "option %s=%d\n", currentCps->option[i].name, j);
+ snprintf(buf, MSG_SIZ, "option %s=%d\n", currentCps->option[i].name, j);
SendToProgram(buf, currentCps);
}
break;
XtGetValues(currentCps->option[i].handle, args, 1);
if(currentCps->option[i].value != j) {
currentCps->option[i].value = j;
- sprintf(buf, "option %s=%d\n", currentCps->option[i].name, j);
+ snprintf(buf, MSG_SIZ, "option %s=%d\n", currentCps->option[i].name, j);
SendToProgram(buf, currentCps);
}
break;
case ComboBox:
if(currentCps->option[i].value != values[i]) {
currentCps->option[i].value = values[i];
- sprintf(buf, "option %s=%s\n", currentCps->option[i].name,
+ snprintf(buf, MSG_SIZ, "option %s=%s\n", currentCps->option[i].name,
((char**)currentCps->option[i].textValue)[values[i]]);
SendToProgram(buf, currentCps);
}
break;
+ default:
+ if( appData.debugMode )
+ fprintf(debugFP, "SettingsPopUp: unexpected case in switch.\n");
+ break;
}
}
if(data) { // send save-button command to engine
- sprintf(buf, "option %s\n", name);
- SendToProgram(buf, currentCps);
+ snprintf(buf, MSG_SIZ, "option %s\n", name);
+ SendToProgram(buf, currentCps);
}
SettingsPopDown();
return;
}
- sprintf(buf, "option %s\n", name);
+ snprintf(buf, MSG_SIZ, "option %s\n", name);
SendToProgram(buf, currentCps);
}
(caddr_t)(intptr_t) (256*n+i));
i++;
}
-}
+}
-void SettingsPopUp(ChessProgramState *cps)
+void
+SettingsPopUp(ChessProgramState *cps)
{
Arg args[16];
- Widget popup, layout, dialog, edit=NULL, form, oldform, last, b_ok, b_cancel, leftMargin = NULL;
+ Widget popup, layout, dialog, edit=NULL, form, last, b_ok, b_cancel, leftMargin = NULL, textField = NULL;
Window root, child;
int x, y, i, j, height, width, h, c;
int win_x, win_y, maxWidth, maxTextWidth;
unsigned int mask;
- char def[80], *p, *q;
+ char def[MSG_SIZ];
static char pane[6] = "paneX";
Widget texts[100], forelast = NULL, anchor, widest;
SettingsShell = popup =
XtCreatePopupShell(_("Settings Menu"), transientShellWidgetClass,
shellWidget, args, i);
-
+
layout =
XtCreateManagedWidget(layoutName, formWidgetClass, popup,
layoutArgs, XtNumber(layoutArgs));
XtSetArg(args[j], XtNfromHoriz, leftMargin); j++;
XtSetValues(form, args, j);
leftMargin = form;
-
+
last = widest = NULL; anchor = forelast;
for(h=0; h<height; h++) {
forelast = last;
if(i >= cps->nrOptions) break;
switch(cps->option[i].type) {
case Spin:
- sprintf(def, "%d", cps->option[i].value);
+ snprintf(def, MSG_SIZ, "%d", cps->option[i].value);
case TextBox:
j=0;
XtSetArg(args[j], XtNfromVert, last); j++;
XtSetArg(args[j], XtNborderWidth, 0); j++;
XtSetArg(args[j], XtNjustify, XtJustifyLeft); j++;
texts[h] =
- dialog = XtCreateManagedWidget(cps->option[i].name, labelWidgetClass, form, args, j);
+ dialog = XtCreateManagedWidget(cps->option[i].name, labelWidgetClass, form, args, j);
j=0;
XtSetArg(args[j], XtNfromVert, last); j++;
XtSetArg(args[j], XtNfromHoriz, dialog); j++;
XtSetArg(args[j], XtNright, XtChainRight); j++;
XtSetArg(args[j], XtNresizable, True); j++;
XtSetArg(args[j], XtNstring, cps->option[i].type==Spin ? def : cps->option[i].textValue); j++;
+ XtSetArg(args[j], XtNinsertPosition, 9999); j++;
edit = last;
cps->option[i].handle = (void*)
- (last = XtCreateManagedWidget("text", asciiTextWidgetClass, form, args, j));
+ (textField = last = XtCreateManagedWidget("text", asciiTextWidgetClass, form, args, j));
XtAddEventHandler(last, ButtonPressMask, False, SetFocus, (XtPointer) popup);
if(cps->option[i].type == TextBox) break;
XtSetArg(args[j], XtNwidth, 10); j++;
XtSetArg(args[j], XtNheight, 10); j++;
XtSetArg(args[j], XtNstate, cps->option[i].value); j++;
- cps->option[i].handle = (void*)
- (dialog = XtCreateManagedWidget(" ", toggleWidgetClass, form, args, j));
+ cps->option[i].handle = (void*)
+ (dialog = XtCreateManagedWidget(" ", toggleWidgetClass, form, args, j));
j=0;
XtSetArg(args[j], XtNfromVert, last); j++;
XtSetArg(args[j], XtNfromHoriz, dialog); j++;
j=0;
XtSetArg(args[j], XtNfromVert, last); j++;
XtSetArg(args[j], XtNstate, cps->option[i].value); j++;
- cps->option[i].handle = (void*)
- (dialog = last = XtCreateManagedWidget(cps->option[i].name, commandWidgetClass, form, args, j));
+ cps->option[i].handle = (void*)
+ (dialog = last = XtCreateManagedWidget(cps->option[i].name, commandWidgetClass, form, args, j));
XtAddCallback(last, XtNcallback, SettingsCallback,
(XtPointer)(intptr_t) (cps->option[i].type == SaveButton));
break;
XtSetArg(args[j], XtNwidth, 100); j++;
XtSetArg(args[j], XtNmenuName, XtNewString(cps->option[i].name)); j++;
XtSetArg(args[j], XtNlabel, ((char**)cps->option[i].textValue)[cps->option[i].value]); j++;
- cps->option[i].handle = (void*)
- (last = XtCreateManagedWidget(" ", menuButtonWidgetClass, form, args, j));
+ cps->option[i].handle = (void*)
+ (last = XtCreateManagedWidget(" ", menuButtonWidgetClass, form, args, j));
CreateComboPopup(last, cps->option[i].name, i, (char **) cps->option[i].textValue);
values[i] = cps->option[i].value;
break;
+ default:
+ if( appData.debugMode )
+ fprintf(debugFP, "SettingsPopUp: unexpected case in switch.\n");
+ break;
}
}
XtSetArg(args[j], XtNleft, XtChainRight); j++;
XtSetArg(args[j], XtNright, XtChainRight); j++;
XtSetArg(args[j], XtNfromHoriz, widest ? widest : dialog); j++;
- b_ok = XtCreateManagedWidget(_("OK"), commandWidgetClass, form, args, j);
+ b_ok = XtCreateManagedWidget(_("OK"), commandWidgetClass, form, args, j);
XtAddCallback(b_ok, XtNcallback, SettingsCallback, (XtPointer) 0);
XtSetArg(args[j-1], XtNfromHoriz, b_ok);
- b_cancel = XtCreateManagedWidget(_("cancel"), commandWidgetClass, form, args, j);
+ b_cancel = XtCreateManagedWidget(_("cancel"), commandWidgetClass, form, args, j);
XtAddCallback(b_cancel, XtNcallback, SettingsPopDown, (XtPointer) 0);
XtRealizeWidget(popup);
CatchDeleteWindow(popup, "SettingsPopDown");
-
+
XQueryPointer(xDisplay, xBoardWindow, &root, &child,
&x, &y, &win_x, &win_y, &mask);
-
+
XtSetArg(args[0], XtNx, x - 10);
XtSetArg(args[1], XtNy, y - 30);
XtSetValues(popup, args, 2);
-
+
XtPopup(popup, XtGrabExclusive);
SettingsUp = True;
previous = NULL;
- if(edit)SetFocus(edit, popup, (XEvent*) NULL, False);
+ if(textField)SetFocus(textField, popup, (XEvent*) NULL, False);
}
void FirstSettingsProc(w, event, prms, nprms)
String *prms;
Cardinal *nprms;
{
+ if(WaitForSecond(SettingsMenuIfReady)) return;
SettingsPopUp(&second);
}