# define N_(s) s
#endif
-extern void SendToProgram P((char *message, ChessProgramState *cps));
-FILE * XsraSelFile P((Widget w, char *prompt, char *ok, char *cancel, char *failed,
- char *init_path, char *filter, char *mode, int (*show_entry)(), char **name_return));
-
-extern Widget formWidget, shellWidget, boardWidget, menuBarWidget;
-extern Display *xDisplay;
-extern int squareSize;
-extern Pixmap xMarkPixmap;
-extern char *layoutName;
-extern Window xBoardWindow;
-extern Arg layoutArgs[2], formArgs[2];
-Pixel timerForegroundPixel, timerBackgroundPixel;
-extern int searchTime;
-extern Atom wm_delete_window;
-extern int lineGap;
-
// [HGM] the following code for makng menu popups was cloned from the FileNamePopUp routines
static Widget previous = NULL;
{
Arg args[2];
char *s;
+ int j;
if(previous) {
XtSetArg(args[0], XtNdisplayCaret, False);
}
XtSetArg(args[0], XtNstring, &s);
XtGetValues(w, args, 1);
+ j = 1;
XtSetArg(args[0], XtNdisplayCaret, True);
- XtSetArg(args[1], XtNinsertPosition, strlen(s));
- XtSetValues(w, args, 2);
+ if(!strchr(s, '\n')) XtSetArg(args[1], XtNinsertPosition, strlen(s)), j++;
+ XtSetValues(w, args, j);
XtSetKeyboardFocus((Widget) data, w);
previous = w;
}
//--------------------------- New Shuffle Game --------------------------------------------
-extern int shuffleOpenings;
-extern int startedFromPositionFile;
int shuffleUp;
Widget shuffleShell;
return;
}
if (strcmp(name, _(" OK ")) == 0) {
- int inc, mps, ok;
+ int inc, mps, ok=0;
XtSetArg(args[0], XtNstring, &txt);
XtGetValues(tcData, args, 1);
switch(tcInc) {
//--------------------------- Engine-specific options menu ----------------------------------
+typedef void ButtonCallback(int n);
+typedef int OKCallback(int n);
+
int values[MAX_OPTIONS];
ChessProgramState *currentCps;
static Option *currentOption;
-extern Widget shells[];
static Boolean browserUp;
+ButtonCallback *comboCallback;
void CheckCallback(Widget ww, XtPointer data, XEvent *event, Boolean *b)
{
XtSetArg(args[0], XtNstring, &q);
XtGetValues(currentOption[data].handle, args, 1);
for(r = ""; *q; q++) if(*q == '.') r = q; else if(*q == '/') r = ""; // last dot after last slash
+ if(!strcmp(r, "") && !currentCps && currentOption[data].type == FileName && currentOption[data].textValue)
+ r = currentOption[data].textValue;
browserUp = True;
if(XsraSelFile(shells[0], currentOption[data].name, NULL, NULL, "", "", r,
currentOption[data].type == PathName ? "p" : "f", NULL, &p)) {
int j = 255 & (intptr_t) addr;
values[i] = j; // store in temporary, for transfer at OK
- XtSetArg(args[0], XtNlabel, ((char**)currentOption[i].textValue)[j]);
+ XtSetArg(args[0], XtNlabel, _(((char**)currentOption[i].textValue)[j]));
XtSetValues(currentOption[i].handle, args, 1);
+
+ if(currentOption[i].min & 1 && !currentCps && comboCallback) (comboCallback)(i);
}
void CreateComboPopup(parent, name, n, mb)
XtSetArg(args[j], XtNwidth, 100); j++;
// XtSetArg(args[j], XtNright, XtChainRight); j++;
while (mb[i] != NULL) {
+ XtSetArg(args[j], XtNlabel, _(mb[i]));
entry = XtCreateManagedWidget(mb[i], smeBSBObjectClass,
- menu, args, j);
+ menu, args, j+1);
XtAddCallback(entry, XtNcallback,
(XtCallbackProc) ComboSelect,
(caddr_t)(intptr_t) (256*n+i));
// cloned from Engine Settings dialog (and later merged with it)
-typedef void ButtonCallback(int n);
-
extern WindowPlacement wpComment, wpTags;
char *trialSound;
static int oldCores, oldPonder;
int MakeColors P((void));
void CreateGCs P((int redo));
void CreateAnyPieces P((void));
-void GenericReadout();
+int GenericReadout P((int selected));
Widget shells[10];
Widget marked[10];
Boolean shellUp[10];
String *prms;
Cardinal *nprms;
{
- int n;
if(browserUp) return; // prevent closing dialog when it has an open file-browse daughter
PopDown(prms[0][0] - '0');
}
+char *engineName, *engineDir, *engineChoice, *engineLine, *nickName, *params;
+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] = {""};
+
+void AddToTourney(int n)
+{
+ Arg args[2];
+ char *p, *val, buf[10000];
+ XawTextBlock t;
+
+ GenericReadout(4); // selected engine
+ t.ptr = engineChoice; t.firstPos = 0; t.length = strlen(engineChoice); t.format = XawFmt8Bit;
+ XawTextReplace(matchOptions[3].handle, 9999, 9999, &t);
+ t.ptr = "\n"; t.length = 1;
+ XawTextReplace(matchOptions[3].handle, 9999, 9999, &t);
+}
+
+int MatchOK(int n)
+{
+ if(appData.participants && appData.participants[0]) free(appData.participants);
+ appData.participants = strdup(engineName);
+ if(!CreateTourney(appData.tourneyFile)) return 0;
+ PopDown(0); // early popdown to prevent FreezeUI called through MatchEvent from causing XtGrab warning
+ MatchEvent(2); // start tourney
+ return 1;
+}
+
Option matchOptions[] = {
-{ 0, 2, 1000000000, NULL, (void*) &appData.defaultMatchGames, "", NULL, Spin, _("Default Number of Games in Match:") },
-{ 0, 0, 1000000000, NULL, (void*) &appData.matchPause, "", NULL, Spin, _("Pause between Match Games (msec):") },
-{ 0, 0, 0, NULL, (void*) &appData.loadGameFile, "", NULL, FileName, _("Game File with Opening Lines:") },
-{ 0, -2, 1000000000, NULL, (void*) &appData.loadGameIndex, "", NULL, Spin, _("Game Number (-1 or -2 = Auto-Increment):") },
-{ 0, 0, 0, NULL, (void*) &appData.loadPositionFile, "", NULL, FileName, _("File with Start Positions:") },
-{ 0, -2, 1000000000, NULL, (void*) &appData.loadPositionIndex, "", NULL, Spin, _("Position Number (-1 or -2 = Auto-Increment):") },
-{ 0, 0, 1000000000, NULL, (void*) &appData.rewindIndex, "", NULL, Spin, _("Rewind Index after this many Games (0 = never):") },
-{ 0, 0, 0, NULL, NULL, "", NULL, EndMark , "" }
+{ 0, 0, 0, NULL, (void*) &appData.tourneyFile, ".trn", NULL, FileName, N_("Tournament file:") },
+{ 0, 0, 0, NULL, (void*) &appData.roundSync, "", NULL, CheckBox, N_("Sync after round (for concurrent playing of a single") },
+{ 0, 0, 0, NULL, (void*) &appData.cycleSync, "", NULL, CheckBox, N_("Sync after cycle tourney with multiple XBoards)") },
+{ 0xD, 150, 0, NULL, (void*) &engineName, "", NULL, TextBox, "Tourney participants:" },
+{ 0, 1, 0, NULL, (void*) &engineChoice, (char*) (engineMnemonic+1), (engineMnemonic+1), ComboBox, N_("Select Engine:") },
+{ 0, 0, 10, NULL, (void*) &appData.tourneyType, "", NULL, Spin, N_("Tourney type (0 = round-robin, 1 = gauntlet):") },
+{ 0, 1, 1000000000, NULL, (void*) &appData.tourneyCycles, "", NULL, Spin, N_("Number of tourney cycles (or Swiss rounds):") },
+{ 0, 1, 1000000000, NULL, (void*) &appData.defaultMatchGames, "", NULL, Spin, N_("Default Number of Games in Match (or Pairing):") },
+{ 0, 0, 1000000000, NULL, (void*) &appData.matchPause, "", NULL, Spin, N_("Pause between Match Games (msec):") },
+{ 0, 0, 0, NULL, (void*) &appData.saveGameFile, ".pgn", NULL, FileName, N_("Save Tourney Games on:") },
+{ 0, 0, 0, NULL, (void*) &appData.loadGameFile, ".pgn", NULL, FileName, N_("Game File with Opening Lines:") },
+{ 0, -2, 1000000000, NULL, (void*) &appData.loadGameIndex, "", NULL, Spin, N_("Game Number (-1 or -2 = Auto-Increment):") },
+{ 0, 0, 0, NULL, (void*) &appData.loadPositionFile, ".fen", NULL, FileName, N_("File with Start Positions:") },
+{ 0, -2, 1000000000, NULL, (void*) &appData.loadPositionIndex, "", NULL, Spin, N_("Position Number (-1 or -2 = Auto-Increment):") },
+{ 0, 0, 1000000000, NULL, (void*) &appData.rewindIndex, "", NULL, Spin, N_("Rewind Index after this many Games (0 = never):") },
+{ 0, 0, 0, NULL, (void*) &MatchOK, "", NULL, EndMark , "" }
};
-void GeneralOptionsOK(int n)
+int GeneralOptionsOK(int n)
{
int newPonder = appData.ponderNextMove;
appData.ponderNextMove = oldPonder;
PonderNextMoveEvent(newPonder);
+ return 1;
}
Option generalOptions[] = {
-{ 0, 0, 0, NULL, (void*) &appData.sweepSelect, "", NULL, CheckBox, _("Almost Always Queen (Detour Under-Promote)") },
-{ 0, 0, 0, NULL, (void*) &appData.animateDragging, "", NULL, CheckBox, _("Animate Dragging") },
-{ 0, 0, 0, NULL, (void*) &appData.animate, "", NULL, CheckBox, _("Animate Moving") },
-{ 0, 0, 0, NULL, (void*) &appData.autoCallFlag, "", NULL, CheckBox, _("Auto Flag") },
-{ 0, 0, 0, NULL, (void*) &appData.autoFlipView, "", NULL, CheckBox, _("Auto Flip View") },
-{ 0, 0, 0, NULL, (void*) &appData.blindfold, "", NULL, CheckBox, _("Blindfold") },
-{ 0, 0, 0, NULL, (void*) &appData.dropMenu, "", NULL, CheckBox, _("Drop Menu") },
-{ 0, 0, 0, NULL, (void*) &appData.highlightDragging, "", NULL, CheckBox, _("Highlight Dragging (Show Move Targets)") },
-{ 0, 0, 0, NULL, (void*) &appData.highlightLastMove, "", NULL, CheckBox, _("Highlight Last Move") },
-{ 0, 0, 0, NULL, (void*) &appData.highlightMoveWithArrow, "", NULL, CheckBox, _("Highlight with Arrow") },
-{ 0, 0, 0, NULL, (void*) &appData.ringBellAfterMoves, "", NULL, CheckBox, _("Move Sound") },
-{ 0, 0, 0, NULL, (void*) &appData.oneClick, "", NULL, CheckBox, _("One-Click Moving") },
-{ 0, 0, 0, NULL, (void*) &appData.periodicUpdates, "", NULL, CheckBox, _("Periodic Updates (in Analysis Mode)") },
-{ 0, 0, 0, NULL, (void*) &appData.ponderNextMove, "", NULL, CheckBox, _("Ponder Next Move") },
-{ 0, 0, 0, NULL, (void*) &appData.popupExitMessage, "", NULL, CheckBox, _("Popup Exit Messages") },
-{ 0, 0, 0, NULL, (void*) &appData.popupMoveErrors, "", NULL, CheckBox, _("Popup Move Errors") },
-{ 0, 0, 0, NULL, (void*) &appData.showCoords, "", NULL, CheckBox, _("Show Coordinates") },
-{ 0, 0, 0, NULL, (void*) &appData.markers, "", NULL, CheckBox, _("Show Target Squares") },
-{ 0, 0, 0, NULL, (void*) &appData.hideThinkingFromHuman, "", NULL, CheckBox, _("Hide Thinking from Human") },
-{ 0, 0, 0, NULL, (void*) &appData.testLegality, "", NULL, CheckBox, _("Test Legality") },
-{ 0, 0, 10, NULL, (void*) &appData.flashCount, "", NULL, Spin, _("Flash Moves (0 = no flashing):") },
-{ 0, 1, 10, NULL, (void*) &appData.flashRate, "", NULL, Spin, _("Flash Rate (high = fast):") },
-{ 0, 5, 100,NULL, (void*) &appData.animSpeed, "", NULL, Spin, _("Animation Speed (high = slow):") },
+{ 0, 0, 0, NULL, (void*) &appData.sweepSelect, "", NULL, CheckBox, N_("Almost Always Queen (Detour Under-Promote)") },
+{ 0, 0, 0, NULL, (void*) &appData.animateDragging, "", NULL, CheckBox, N_("Animate Dragging") },
+{ 0, 0, 0, NULL, (void*) &appData.animate, "", NULL, CheckBox, N_("Animate Moving") },
+{ 0, 0, 0, NULL, (void*) &appData.autoCallFlag, "", NULL, CheckBox, N_("Auto Flag") },
+{ 0, 0, 0, NULL, (void*) &appData.autoFlipView, "", NULL, CheckBox, N_("Auto Flip View") },
+{ 0, 0, 0, NULL, (void*) &appData.blindfold, "", NULL, CheckBox, N_("Blindfold") },
+{ 0, 0, 0, NULL, (void*) &appData.dropMenu, "", NULL, CheckBox, N_("Drop Menu") },
+{ 0, 0, 0, NULL, (void*) &appData.highlightDragging, "", NULL, CheckBox, N_("Highlight Dragging (Show Move Targets)") },
+{ 0, 0, 0, NULL, (void*) &appData.highlightLastMove, "", NULL, CheckBox, N_("Highlight Last Move") },
+{ 0, 0, 0, NULL, (void*) &appData.highlightMoveWithArrow, "", NULL, CheckBox, N_("Highlight with Arrow") },
+{ 0, 0, 0, NULL, (void*) &appData.ringBellAfterMoves, "", NULL, CheckBox, N_("Move Sound") },
+{ 0, 0, 0, NULL, (void*) &appData.oneClick, "", NULL, CheckBox, N_("One-Click Moving") },
+{ 0, 0, 0, NULL, (void*) &appData.periodicUpdates, "", NULL, CheckBox, N_("Periodic Updates (in Analysis Mode)") },
+{ 0, 0, 0, NULL, (void*) &appData.ponderNextMove, "", NULL, CheckBox, N_("Ponder Next Move") },
+{ 0, 0, 0, NULL, (void*) &appData.popupExitMessage, "", NULL, CheckBox, N_("Popup Exit Messages") },
+{ 0, 0, 0, NULL, (void*) &appData.popupMoveErrors, "", NULL, CheckBox, N_("Popup Move Errors") },
+{ 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.hideThinkingFromHuman, "", NULL, CheckBox, N_("Hide Thinking from Human") },
+{ 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, 5, 100,NULL, (void*) &appData.animSpeed, "", NULL, Spin, N_("Animation Speed (high = slow):") },
{ 0, 0, 0, NULL, (void*) &GeneralOptionsOK, "", NULL, EndMark , "" }
};
}
}
- GenericReadout(); // make sure ranks and file settings are read
+ GenericReadout(-1); // make sure ranks and file settings are read
gameInfo.variant = v;
appData.variant = VariantName(v);
{ VariantGiveaway, 0, 135, NULL, (void*) &Pick, "#FFFFBF", NULL, Button, N_("give-away")},
{ VariantSpartan, 1, 135, NULL, (void*) &Pick, "#FF0000", NULL, Button, N_("Spartan")},
{ VariantLosers, 0, 135, NULL, (void*) &Pick, "#FFFFBF", NULL, Button, N_("losers")},
-{ 0, 0, 0, NULL, NULL, NULL, NULL, Label, _("Board size ( -1 = default for selected variant):")},
+{ 0, 0, 0, NULL, NULL, NULL, NULL, Label, N_("Board size ( -1 = default for selected variant):")},
{ 0, -1, BOARD_RANKS-1, NULL, (void*) &appData.NrRanks, "", NULL, Spin, N_("Number of Board Ranks:") },
{ 0, -1, BOARD_FILES, NULL, (void*) &appData.NrFiles, "", NULL, Spin, N_("Number of Board Files:") },
{ 0, -1, BOARD_RANKS-1, NULL, (void*) &appData.holdingsSize, "", NULL, Spin, N_("Holdings Size:") },
{ 0, 0, 0, NULL, NULL, NULL, NULL, Label,
- _("WARNING: variants with un-orthodox\n"
+ N_("WARNING: variants with un-orthodox\n"
"pieces only have built-in bitmaps\n"
"for -boardSize middling, bulky and\n"
"petite, and substitute king or amazon\n"
{ 0, 2, 0, NULL, NULL, "", NULL, EndMark , "" }
};
-void CommonOptionsOK(int n)
+int CommonOptionsOK(int n)
{
int newPonder = appData.ponderNextMove;
// make sure changes are sent to first engine by re-initializing it
appData.ponderNextMove = oldPonder;
PonderNextMoveEvent(newPonder);
}
+ return 1;
}
Option commonEngineOptions[] = {
-{ 0, 0, 0, NULL, (void*) &appData.ponderNextMove, "", NULL, CheckBox, _("Ponder Next Move") },
-{ 0, 0, 1000, NULL, (void*) &appData.smpCores, "", NULL, Spin, _("Maximum Number of CPUs per Engine:") },
-{ 0, 0, 0, NULL, (void*) &appData.polyglotDir, "", NULL, PathName, _("Polygot Directory:") },
-{ 0, 0, 16000, NULL, (void*) &appData.defaultHashSize, "", NULL, Spin, _("Hash-Table Size (MB):") },
-{ 0, 0, 0, NULL, (void*) &appData.defaultPathEGTB, "", NULL, PathName, _("Nalimov EGTB Path:") },
-{ 0, 0, 1000, NULL, (void*) &appData.defaultCacheSizeEGTB, "", NULL, Spin, _("EGTB Cache Size (MB):") },
-{ 0, 0, 0, NULL, (void*) &appData.usePolyglotBook, "", NULL, CheckBox, _("Use GUI Book") },
-{ 0, 0, 0, NULL, (void*) &appData.polyglotBook, "", NULL, FileName, _("Opening-Book Filename:") },
-{ 0, 0, 100, NULL, (void*) &appData.bookDepth, "", NULL, Spin, _("Book Depth (moves):") },
-{ 0, 0, 100, NULL, (void*) &appData.bookStrength, "", NULL, Spin, _("Book Variety (0) vs. Strength (100):") },
-{ 0, 0, 0, NULL, (void*) &appData.firstHasOwnBookUCI, "", NULL, CheckBox, _("Engine #1 Has Own Book") },
-{ 0, 0, 0, NULL, (void*) &appData.secondHasOwnBookUCI, "", NULL, CheckBox, _("Engine #2 Has Own Book ") },
+{ 0, 0, 0, NULL, (void*) &appData.ponderNextMove, "", NULL, CheckBox, N_("Ponder Next Move") },
+{ 0, 0, 1000, NULL, (void*) &appData.smpCores, "", NULL, Spin, N_("Maximum Number of CPUs per Engine:") },
+{ 0, 0, 0, NULL, (void*) &appData.polyglotDir, "", NULL, PathName, N_("Polygot Directory:") },
+{ 0, 0, 16000, NULL, (void*) &appData.defaultHashSize, "", NULL, Spin, N_("Hash-Table Size (MB):") },
+{ 0, 0, 0, NULL, (void*) &appData.defaultPathEGTB, "", NULL, PathName, N_("Nalimov EGTB Path:") },
+{ 0, 0, 1000, NULL, (void*) &appData.defaultCacheSizeEGTB, "", NULL, Spin, N_("EGTB Cache Size (MB):") },
+{ 0, 0, 0, NULL, (void*) &appData.usePolyglotBook, "", NULL, CheckBox, N_("Use GUI Book") },
+{ 0, 0, 0, NULL, (void*) &appData.polyglotBook, ".bin", NULL, FileName, N_("Opening-Book Filename:") },
+{ 0, 0, 100, NULL, (void*) &appData.bookDepth, "", NULL, Spin, N_("Book Depth (moves):") },
+{ 0, 0, 100, NULL, (void*) &appData.bookStrength, "", NULL, Spin, N_("Book Variety (0) vs. Strength (100):") },
+{ 0, 0, 0, NULL, (void*) &appData.firstHasOwnBookUCI, "", NULL, CheckBox, N_("Engine #1 Has Own Book") },
+{ 0, 0, 0, NULL, (void*) &appData.secondHasOwnBookUCI, "", NULL, CheckBox, N_("Engine #2 Has Own Book ") },
{ 0, 1, 0, NULL, (void*) &CommonOptionsOK, "", NULL, EndMark , "" }
};
Option adjudicationOptions[] = {
-{ 0, 0, 0, NULL, (void*) &appData.checkMates, "", NULL, CheckBox, _("Detect all Mates") },
-{ 0, 0, 0, NULL, (void*) &appData.testClaims, "", NULL, CheckBox, _("Verify Engine Result Claims") },
-{ 0, 0, 0, NULL, (void*) &appData.materialDraws, "", NULL, CheckBox, _("Draw if Insufficient Mating Material") },
-{ 0, 0, 0, NULL, (void*) &appData.trivialDraws, "", NULL, CheckBox, _("Adjudicate Trivial Draws (3-Move Delay)") },
-{ 0, 0, 100, NULL, (void*) &appData.ruleMoves, "", NULL, Spin, _("N-Move Rule:") },
-{ 0, 0, 6, NULL, (void*) &appData.drawRepeats, "", NULL, Spin, _("N-fold Repeats:") },
-{ 0, 0, 1000, NULL, (void*) &appData.adjudicateDrawMoves, "", NULL, Spin, _("Draw after N Moves Total:") },
-{ 0,-5000, 0, NULL, (void*) &appData.adjudicateLossThreshold, "", NULL, Spin, _("Win / Loss Threshold:") },
-{ 0, 0, 0, NULL, (void*) &first.scoreIsAbsolute, "", NULL, CheckBox, _("Negate Score of Engine #1") },
-{ 0, 0, 0, NULL, (void*) &second.scoreIsAbsolute, "", NULL, CheckBox, _("Negate Score of Engine #2") },
+{ 0, 0, 0, NULL, (void*) &appData.checkMates, "", NULL, CheckBox, N_("Detect all Mates") },
+{ 0, 0, 0, NULL, (void*) &appData.testClaims, "", NULL, CheckBox, N_("Verify Engine Result Claims") },
+{ 0, 0, 0, NULL, (void*) &appData.materialDraws, "", NULL, CheckBox, N_("Draw if Insufficient Mating Material") },
+{ 0, 0, 0, NULL, (void*) &appData.trivialDraws, "", NULL, CheckBox, N_("Adjudicate Trivial Draws (3-Move Delay)") },
+{ 0, 0, 100, NULL, (void*) &appData.ruleMoves, "", NULL, Spin, N_("N-Move Rule:") },
+{ 0, 0, 6, NULL, (void*) &appData.drawRepeats, "", NULL, Spin, N_("N-fold Repeats:") },
+{ 0, 0, 1000, NULL, (void*) &appData.adjudicateDrawMoves, "", NULL, Spin, N_("Draw after N Moves Total:") },
+{ 0,-5000, 0, NULL, (void*) &appData.adjudicateLossThreshold, "", NULL, Spin, N_("Win / Loss Threshold:") },
+{ 0, 0, 0, NULL, (void*) &first.scoreIsAbsolute, "", NULL, CheckBox, N_("Negate Score of Engine #1") },
+{ 0, 0, 0, NULL, (void*) &second.scoreIsAbsolute, "", NULL, CheckBox, N_("Negate Score of Engine #2") },
{ 0, 1, 0, NULL, NULL, "", NULL, EndMark , "" }
};
-void IcsOptionsOK(int n)
+int IcsOptionsOK(int n)
{
ParseIcsTextColors();
+ return 1;
}
Option icsOptions[] = {
-{ 0, 0, 0, NULL, (void*) &appData.autoKibitz, "", NULL, CheckBox, _("Auto-Kibitz") },
-{ 0, 0, 0, NULL, (void*) &appData.autoComment, "", NULL, CheckBox, _("Auto-Comment") },
-{ 0, 0, 0, NULL, (void*) &appData.autoObserve, "", NULL, CheckBox, _("Auto-Observe") },
-{ 0, 0, 0, NULL, (void*) &appData.autoRaiseBoard, "", NULL, CheckBox, _("Auto-Raise Board") },
-{ 0, 0, 0, NULL, (void*) &appData.bgObserve, "", NULL, CheckBox, _("Background Observe while Playing") },
-{ 0, 0, 0, NULL, (void*) &appData.dualBoard, "", NULL, CheckBox, _("Dual Board for Background-Observed Game") },
-{ 0, 0, 0, NULL, (void*) &appData.getMoveList, "", NULL, CheckBox, _("Get Move List") },
-{ 0, 0, 0, NULL, (void*) &appData.quietPlay, "", NULL, CheckBox, _("Quiet Play") },
-{ 0, 0, 0, NULL, (void*) &appData.seekGraph, "", NULL, CheckBox, _("Seek Graph") },
-{ 0, 0, 0, NULL, (void*) &appData.autoRefresh, "", NULL, CheckBox, _("Auto-Refresh Seek Graph") },
-{ 0, 0, 0, NULL, (void*) &appData.premove, "", NULL, CheckBox, _("Premove") },
-{ 0, 0, 0, NULL, (void*) &appData.premoveWhite, "", NULL, CheckBox, _("Premove for White") },
-{ 0, 0, 0, NULL, (void*) &appData.premoveWhiteText, "", NULL, TextBox, _("First White Move:") },
-{ 0, 0, 0, NULL, (void*) &appData.premoveBlack, "", NULL, CheckBox, _("Premove for Black") },
-{ 0, 0, 0, NULL, (void*) &appData.premoveBlackText, "", NULL, TextBox, _("First Black Move:") },
+{ 0, 0, 0, NULL, (void*) &appData.autoKibitz, "", NULL, CheckBox, N_("Auto-Kibitz") },
+{ 0, 0, 0, NULL, (void*) &appData.autoComment, "", NULL, CheckBox, N_("Auto-Comment") },
+{ 0, 0, 0, NULL, (void*) &appData.autoObserve, "", NULL, CheckBox, N_("Auto-Observe") },
+{ 0, 0, 0, NULL, (void*) &appData.autoRaiseBoard, "", NULL, CheckBox, N_("Auto-Raise Board") },
+{ 0, 0, 0, NULL, (void*) &appData.bgObserve, "", NULL, CheckBox, N_("Background Observe while Playing") },
+{ 0, 0, 0, NULL, (void*) &appData.dualBoard, "", NULL, CheckBox, N_("Dual Board for Background-Observed Game") },
+{ 0, 0, 0, NULL, (void*) &appData.getMoveList, "", NULL, CheckBox, N_("Get Move List") },
+{ 0, 0, 0, NULL, (void*) &appData.quietPlay, "", NULL, CheckBox, N_("Quiet Play") },
+{ 0, 0, 0, NULL, (void*) &appData.seekGraph, "", NULL, CheckBox, N_("Seek Graph") },
+{ 0, 0, 0, NULL, (void*) &appData.autoRefresh, "", NULL, CheckBox, N_("Auto-Refresh Seek Graph") },
+{ 0, 0, 0, NULL, (void*) &appData.premove, "", NULL, CheckBox, N_("Premove") },
+{ 0, 0, 0, NULL, (void*) &appData.premoveWhite, "", NULL, CheckBox, N_("Premove for White") },
+{ 0, 0, 0, NULL, (void*) &appData.premoveWhiteText, "", NULL, TextBox, N_("First White Move:") },
+{ 0, 0, 0, NULL, (void*) &appData.premoveBlack, "", NULL, CheckBox, N_("Premove for Black") },
+{ 0, 0, 0, NULL, (void*) &appData.premoveBlackText, "", NULL, TextBox, N_("First Black Move:") },
{ 0, 0, 0, NULL, NULL, NULL, NULL, Break, "" },
-{ 0, 0, 0, NULL, (void*) &appData.icsAlarm, "", NULL, CheckBox, _("Alarm") },
-{ 0, 0, 100000000, NULL, (void*) &appData.icsAlarmTime, "", NULL, Spin, _("Alarm Time (msec):") },
-//{ 0, 0, 0, NULL, (void*) &appData.chatBoxes, "", NULL, TextBox, _("Startup Chat Boxes:") },
-{ 0, 0, 0, NULL, (void*) &appData.colorize, "", NULL, CheckBox, _("Colorize Messages") },
-{ 0, 0, 0, NULL, (void*) &appData.colorShout, "", NULL, TextBox, _("Shout Text Colors:") },
-{ 0, 0, 0, NULL, (void*) &appData.colorSShout, "", NULL, TextBox, _("S-Shout Text Colors:") },
-{ 0, 0, 0, NULL, (void*) &appData.colorChannel1, "", NULL, TextBox, _("Channel #1 Text Colors:") },
-{ 0, 0, 0, NULL, (void*) &appData.colorChannel, "", NULL, TextBox, _("Other Channel Text Colors:") },
-{ 0, 0, 0, NULL, (void*) &appData.colorKibitz, "", NULL, TextBox, _("Kibitz Text Colors:") },
-{ 0, 0, 0, NULL, (void*) &appData.colorTell, "", NULL, TextBox, _("Tell Text Colors:") },
-{ 0, 0, 0, NULL, (void*) &appData.colorChallenge, "", NULL, TextBox, _("Challenge Text Colors:") },
-{ 0, 0, 0, NULL, (void*) &appData.colorRequest, "", NULL, TextBox, _("Request Text Colors:") },
-{ 0, 0, 0, NULL, (void*) &appData.colorSeek, "", NULL, TextBox, _("Seek Text Colors:") },
+{ 0, 0, 0, NULL, (void*) &appData.icsAlarm, "", NULL, CheckBox, N_("Alarm") },
+{ 0, 0, 100000000, NULL, (void*) &appData.icsAlarmTime, "", NULL, Spin, N_("Alarm Time (msec):") },
+//{ 0, 0, 0, NULL, (void*) &appData.chatBoxes, "", NULL, TextBox, N_("Startup Chat Boxes:") },
+{ 0, 0, 0, NULL, (void*) &appData.colorize, "", NULL, CheckBox, N_("Colorize Messages") },
+{ 0, 0, 0, NULL, (void*) &appData.colorShout, "", NULL, TextBox, N_("Shout Text Colors:") },
+{ 0, 0, 0, NULL, (void*) &appData.colorSShout, "", NULL, TextBox, N_("S-Shout Text Colors:") },
+{ 0, 0, 0, NULL, (void*) &appData.colorChannel1, "", NULL, TextBox, N_("Channel #1 Text Colors:") },
+{ 0, 0, 0, NULL, (void*) &appData.colorChannel, "", NULL, TextBox, N_("Other Channel Text Colors:") },
+{ 0, 0, 0, NULL, (void*) &appData.colorKibitz, "", NULL, TextBox, N_("Kibitz Text Colors:") },
+{ 0, 0, 0, NULL, (void*) &appData.colorTell, "", NULL, TextBox, N_("Tell Text Colors:") },
+{ 0, 0, 0, NULL, (void*) &appData.colorChallenge, "", NULL, TextBox, N_("Challenge Text Colors:") },
+{ 0, 0, 0, NULL, (void*) &appData.colorRequest, "", NULL, TextBox, N_("Request Text Colors:") },
+{ 0, 0, 0, NULL, (void*) &appData.colorSeek, "", NULL, TextBox, N_("Seek Text Colors:") },
{ 0, 0, 0, NULL, (void*) &IcsOptionsOK, "", NULL, EndMark , "" }
};
Option loadOptions[] = {
-{ 0, 0, 0, NULL, (void*) &appData.autoDisplayTags, "", NULL, CheckBox, _("Auto-Display Tags") },
-{ 0, 0, 0, NULL, (void*) &appData.autoDisplayComment, "", NULL, CheckBox, _("Auto-Display Comment") },
-{ 0, 0, 0, NULL, NULL, NULL, NULL, Label, _("Auto-Play speed of loaded games\n(0 = instant, -1 = off):") },
-{ 0, -1, 10000000, NULL, (void*) &appData.timeDelay, "", NULL, Fractional, _("Seconds per Move:") },
+{ 0, 0, 0, NULL, (void*) &appData.autoDisplayTags, "", NULL, CheckBox, N_("Auto-Display Tags") },
+{ 0, 0, 0, NULL, (void*) &appData.autoDisplayComment, "", NULL, CheckBox, N_("Auto-Display Comment") },
+{ 0, 0, 0, NULL, NULL, NULL, NULL, Label, N_("Auto-Play speed of loaded games\n(0 = instant, -1 = off):") },
+{ 0, -1, 10000000, NULL, (void*) &appData.timeDelay, "", NULL, Fractional, N_("Seconds per Move:") },
{ 0, 0, 0, NULL, NULL, "", NULL, EndMark , "" }
};
Option saveOptions[] = {
-{ 0, 0, 0, NULL, (void*) &appData.autoSaveGames, "", NULL, CheckBox, _("Auto-Save Games") },
-{ 0, 0, 0, NULL, (void*) &appData.saveGameFile, "", NULL, FileName, _("Save Games on File:") },
-{ 0, 0, 0, NULL, (void*) &appData.savePositionFile, "", NULL, FileName, _("Save Final Positions on File:") },
-{ 0, 0, 0, NULL, (void*) &appData.pgnEventHeader, "", NULL, TextBox, _("PGN Event Header:") },
-{ 0, 0, 0, NULL, (void*) &appData.oldSaveStyle, "", NULL, CheckBox, _("Old Save Style (as opposed to PGN)") },
-{ 0, 0, 0, NULL, (void*) &appData.saveExtendedInfoInPGN, "", NULL, CheckBox, _("Save Score/Depth Info in PGN") },
-{ 0, 0, 0, NULL, (void*) &appData.saveOutOfBookInfo, "", NULL, CheckBox, _("Save Out-of-Book Info in PGN ") },
+{ 0, 0, 0, NULL, (void*) &appData.autoSaveGames, "", NULL, CheckBox, N_("Auto-Save Games") },
+{ 0, 0, 0, NULL, (void*) &appData.saveGameFile, ".pgn", NULL, FileName, N_("Save Games on File:") },
+{ 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.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 , "" }
};
N_("No Sound"),
N_("Default Beep"),
N_("Above WAV File"),
- N_("Ching"),
- N_("Click"),
+ N_("Car Horn"),
+ N_("Cymbal"),
N_("Ding"),
N_("Gong"),
N_("Laser"),
N_("Penalty"),
N_("Phone"),
- N_("Thud"),
- N_("Challenge"),
- N_("Tell"),
+ N_("Pop"),
+ N_("Slap"),
+ N_("Wood Thunk"),
NULL,
N_("User File")
};
"",
"$",
"*", // kludge alert: as first thing in the dialog readout this is replaced with the user-given .WAV filename
- "ching.wav",
- "click.wav",
+ "honkhonk.wav",
+ "cymbal.wav",
"ding1.wav",
"gong.wav",
"laser.wav",
"penalty.wav",
"phone.wav",
- "thud.wav",
- "challenge.wav",
- "tell.wav",
+ "pop2.wav",
+ "slap.wav",
+ "woodthunk.wav",
NULL,
NULL
};
void Test(int n)
{
+ GenericReadout(2);
if(soundFiles[values[3]]) PlaySound(soundFiles[values[3]]);
}
Option soundOptions[] = {
-{ 0, 0, 0, NULL, (void*) &appData.soundProgram, "", NULL, TextBox, _("Sound Program:") },
-{ 0, 0, 0, NULL, (void*) &appData.soundDirectory, "", NULL, PathName, _("Sounds Directory:") },
-{ 0, 0, 0, NULL, (void*) (soundFiles+2) /* kludge! */, "", NULL, FileName, _("User WAV File:") },
-{ 0, 0, 0, NULL, (void*) &trialSound, (char*) soundNames, soundFiles, ComboBox, _("Try-Out Sound:") },
-{ 0, 1, 0, NULL, (void*) &Test, NULL, NULL, Button, _("Play") },
-{ 0, 0, 0, NULL, (void*) &appData.soundMove, (char*) soundNames, soundFiles, ComboBox, _("Move:") },
-{ 0, 0, 0, NULL, (void*) &appData.soundIcsWin, (char*) soundNames, soundFiles, ComboBox, _("Win:") },
-{ 0, 0, 0, NULL, (void*) &appData.soundIcsLoss, (char*) soundNames, soundFiles, ComboBox, _("Lose:") },
-{ 0, 0, 0, NULL, (void*) &appData.soundIcsDraw, (char*) soundNames, soundFiles, ComboBox, _("Draw:") },
-{ 0, 0, 0, NULL, (void*) &appData.soundIcsUnfinished, (char*) soundNames, soundFiles, ComboBox, _("Unfinished:") },
-{ 0, 0, 0, NULL, (void*) &appData.soundIcsAlarm, (char*) soundNames, soundFiles, ComboBox, _("Alarm:") },
-{ 0, 0, 0, NULL, (void*) &appData.soundShout, (char*) soundNames, soundFiles, ComboBox, _("Shout:") },
-{ 0, 0, 0, NULL, (void*) &appData.soundSShout, (char*) soundNames, soundFiles, ComboBox, _("S-Shout:") },
-{ 0, 0, 0, NULL, (void*) &appData.soundChannel, (char*) soundNames, soundFiles, ComboBox, _("Channel:") },
-{ 0, 0, 0, NULL, (void*) &appData.soundChannel1, (char*) soundNames, soundFiles, ComboBox, _("Channel 1:") },
-{ 0, 0, 0, NULL, (void*) &appData.soundTell, (char*) soundNames, soundFiles, ComboBox, _("Tell:") },
-{ 0, 0, 0, NULL, (void*) &appData.soundKibitz, (char*) soundNames, soundFiles, ComboBox, _("Kibitz:") },
-{ 0, 0, 0, NULL, (void*) &appData.soundChallenge, (char*) soundNames, soundFiles, ComboBox, _("Challenge:") },
-{ 0, 0, 0, NULL, (void*) &appData.soundRequest, (char*) soundNames, soundFiles, ComboBox, _("Request:") },
-{ 0, 0, 0, NULL, (void*) &appData.soundSeek, (char*) soundNames, soundFiles, ComboBox, _("Seek:") },
+{ 0, 0, 0, NULL, (void*) &appData.soundProgram, "", NULL, TextBox, N_("Sound Program:") },
+{ 0, 0, 0, NULL, (void*) &appData.soundDirectory, "", NULL, PathName, N_("Sounds Directory:") },
+{ 0, 0, 0, NULL, (void*) (soundFiles+2) /* kludge! */, ".wav", NULL, FileName, N_("User WAV File:") },
+{ 0, 0, 0, NULL, (void*) &trialSound, (char*) soundNames, soundFiles, ComboBox, N_("Try-Out Sound:") },
+{ 0, 1, 0, NULL, (void*) &Test, NULL, NULL, Button, N_("Play") },
+{ 0, 0, 0, NULL, (void*) &appData.soundMove, (char*) soundNames, soundFiles, ComboBox, N_("Move:") },
+{ 0, 0, 0, NULL, (void*) &appData.soundIcsWin, (char*) soundNames, soundFiles, ComboBox, N_("Win:") },
+{ 0, 0, 0, NULL, (void*) &appData.soundIcsLoss, (char*) soundNames, soundFiles, ComboBox, N_("Lose:") },
+{ 0, 0, 0, NULL, (void*) &appData.soundIcsDraw, (char*) soundNames, soundFiles, ComboBox, N_("Draw:") },
+{ 0, 0, 0, NULL, (void*) &appData.soundIcsUnfinished, (char*) soundNames, soundFiles, ComboBox, N_("Unfinished:") },
+{ 0, 0, 0, NULL, (void*) &appData.soundIcsAlarm, (char*) soundNames, soundFiles, ComboBox, N_("Alarm:") },
+{ 0, 0, 0, NULL, (void*) &appData.soundShout, (char*) soundNames, soundFiles, ComboBox, N_("Shout:") },
+{ 0, 0, 0, NULL, (void*) &appData.soundSShout, (char*) soundNames, soundFiles, ComboBox, N_("S-Shout:") },
+{ 0, 0, 0, NULL, (void*) &appData.soundChannel, (char*) soundNames, soundFiles, ComboBox, N_("Channel:") },
+{ 0, 0, 0, NULL, (void*) &appData.soundChannel1, (char*) soundNames, soundFiles, ComboBox, N_("Channel 1:") },
+{ 0, 0, 0, NULL, (void*) &appData.soundTell, (char*) soundNames, soundFiles, ComboBox, N_("Tell:") },
+{ 0, 0, 0, NULL, (void*) &appData.soundKibitz, (char*) soundNames, soundFiles, ComboBox, N_("Kibitz:") },
+{ 0, 0, 0, NULL, (void*) &appData.soundChallenge, (char*) soundNames, soundFiles, ComboBox, N_("Challenge:") },
+{ 0, 0, 0, NULL, (void*) &appData.soundRequest, (char*) soundNames, soundFiles, ComboBox, N_("Request:") },
+{ 0, 0, 0, NULL, (void*) &appData.soundSeek, (char*) soundNames, soundFiles, ComboBox, N_("Seek:") },
{ 0, 1, 0, NULL, NULL, "", NULL, EndMark , "" }
};
} else {
buttonColor = *(Pixel *) vTo.addr;
}
- }
+ } else buttonColor = (Pixel) 0;
XtSetArg(args[0], XtNbackground, buttonColor);;
XtSetValues(box, args, 1);
}
RefreshColor(i-n-1, n);
}
-void BoardOptionsOK(int n)
+int BoardOptionsOK(int n)
{
- extern int defaultLineGap, useImages, useImageSqs;
if(appData.overrideLineGap >= 0) lineGap = appData.overrideLineGap; else lineGap = defaultLineGap;
useImages = useImageSqs = 0;
MakeColors(); CreateGCs(True);
CreateAnyPieces();
InitDrawingSizes(-1, 0);
DrawPosition(True, NULL);
+ return 1;
}
Option boardOptions[] = {
-{ 0, 0, 70, NULL, (void*) &appData.whitePieceColor, "", NULL, TextBox, _("White Piece Color:") },
+{ 0, 0, 70, NULL, (void*) &appData.whitePieceColor, "", NULL, TextBox, N_("White Piece Color:") },
{ 1000, 1, 0, NULL, (void*) &DefColor, NULL, (char**) "#FFFFCC", Button, " " },
{ 1, 1, 0, NULL, (void*) &AdjustColor, NULL, NULL, Button, "R" },
{ 2, 1, 0, NULL, (void*) &AdjustColor, NULL, NULL, Button, "G" },
{ 3, 1, 0, NULL, (void*) &AdjustColor, NULL, NULL, Button, "B" },
{ 4, 1, 0, NULL, (void*) &AdjustColor, NULL, NULL, Button, "D" },
-{ 0, 0, 70, NULL, (void*) &appData.blackPieceColor, "", NULL, TextBox, _("Black Piece Color:") },
+{ 0, 0, 70, NULL, (void*) &appData.blackPieceColor, "", NULL, TextBox, N_("Black Piece Color:") },
{ 1000, 1, 0, NULL, (void*) &DefColor, NULL, (char**) "#202020", Button, " " },
{ 1, 1, 0, NULL, (void*) &AdjustColor, NULL, NULL, Button, "R" },
{ 2, 1, 0, NULL, (void*) &AdjustColor, NULL, NULL, Button, "G" },
{ 3, 1, 0, NULL, (void*) &AdjustColor, NULL, NULL, Button, "B" },
{ 4, 1, 0, NULL, (void*) &AdjustColor, NULL, NULL, Button, "D" },
-{ 0, 0, 70, NULL, (void*) &appData.lightSquareColor, "", NULL, TextBox, _("Light Square Color:") },
+{ 0, 0, 70, NULL, (void*) &appData.lightSquareColor, "", NULL, TextBox, N_("Light Square Color:") },
{ 1000, 1, 0, NULL, (void*) &DefColor, NULL, (char**) "#C8C365", Button, " " },
{ 1, 1, 0, NULL, (void*) &AdjustColor, NULL, NULL, Button, "R" },
{ 2, 1, 0, NULL, (void*) &AdjustColor, NULL, NULL, Button, "G" },
{ 3, 1, 0, NULL, (void*) &AdjustColor, NULL, NULL, Button, "B" },
{ 4, 1, 0, NULL, (void*) &AdjustColor, NULL, NULL, Button, "D" },
-{ 0, 0, 70, NULL, (void*) &appData.darkSquareColor, "", NULL, TextBox, _("Dark Square Color:") },
+{ 0, 0, 70, NULL, (void*) &appData.darkSquareColor, "", NULL, TextBox, N_("Dark Square Color:") },
{ 1000, 1, 0, NULL, (void*) &DefColor, NULL, (char**) "#77A26D", Button, " " },
{ 1, 1, 0, NULL, (void*) &AdjustColor, NULL, NULL, Button, "R" },
{ 2, 1, 0, NULL, (void*) &AdjustColor, NULL, NULL, Button, "G" },
{ 3, 1, 0, NULL, (void*) &AdjustColor, NULL, NULL, Button, "B" },
{ 4, 1, 0, NULL, (void*) &AdjustColor, NULL, NULL, Button, "D" },
-{ 0, 0, 70, NULL, (void*) &appData.highlightSquareColor, "", NULL, TextBox, _("Highlight Color:") },
+{ 0, 0, 70, NULL, (void*) &appData.highlightSquareColor, "", NULL, TextBox, N_("Highlight Color:") },
{ 1000, 1, 0, NULL, (void*) &DefColor, NULL, (char**) "#FFFF00", Button, " " },
{ 1, 1, 0, NULL, (void*) &AdjustColor, NULL, NULL, Button, "R" },
{ 2, 1, 0, NULL, (void*) &AdjustColor, NULL, NULL, Button, "G" },
{ 3, 1, 0, NULL, (void*) &AdjustColor, NULL, NULL, Button, "B" },
{ 4, 1, 0, NULL, (void*) &AdjustColor, NULL, NULL, Button, "D" },
-{ 0, 0, 70, NULL, (void*) &appData.premoveHighlightColor, "", NULL, TextBox, _("Premove Highlight Color:") },
+{ 0, 0, 70, NULL, (void*) &appData.premoveHighlightColor, "", NULL, TextBox, N_("Premove Highlight Color:") },
{ 1000, 1, 0, NULL, (void*) &DefColor, NULL, (char**) "#FF0000", Button, " " },
{ 1, 1, 0, NULL, (void*) &AdjustColor, NULL, NULL, Button, "R" },
{ 2, 1, 0, NULL, (void*) &AdjustColor, NULL, NULL, Button, "G" },
{ 3, 1, 0, NULL, (void*) &AdjustColor, NULL, NULL, Button, "B" },
{ 4, 1, 0, NULL, (void*) &AdjustColor, NULL, NULL, Button, "D" },
-{ 0, 0, 0, NULL, (void*) &appData.upsideDown, "", NULL, CheckBox, _("Flip Pieces Shogi Style (Colored buttons restore default)") },
-//{ 0, 0, 0, NULL, (void*) &appData.allWhite, "", NULL, CheckBox, _("Use Outline Pieces for Black") },
-{ 0, 0, 0, NULL, (void*) &appData.monoMode, "", NULL, CheckBox, _("Mono Mode") },
-{ 0,-1, 5, NULL, (void*) &appData.overrideLineGap, "", NULL, Spin, _("Line Gap ( -1 = default for board size):") },
-{ 0, 0, 0, NULL, (void*) &appData.liteBackTextureFile, "", NULL, FileName, _("Light-Squares Texture File:") },
-{ 0, 0, 0, NULL, (void*) &appData.darkBackTextureFile, "", NULL, FileName, _("Dark-Squares Texture File:") },
-{ 0, 0, 0, NULL, (void*) &appData.bitmapDirectory, "", NULL, PathName, _("Directory with Bitmap Pieces:") },
-{ 0, 0, 0, NULL, (void*) &appData.pixmapDirectory, "", NULL, PathName, _("Directory with Pixmap Pieces:") },
+{ 0, 0, 0, NULL, (void*) &appData.upsideDown, "", NULL, CheckBox, N_("Flip Pieces Shogi Style (Colored buttons restore default)") },
+//{ 0, 0, 0, NULL, (void*) &appData.allWhite, "", NULL, CheckBox, N_("Use Outline Pieces for Black") },
+{ 0, 0, 0, NULL, (void*) &appData.monoMode, "", NULL, CheckBox, N_("Mono Mode") },
+{ 0,-1, 5, NULL, (void*) &appData.overrideLineGap, "", NULL, Spin, N_("Line Gap ( -1 = default for board size):") },
+{ 0, 0, 0, NULL, (void*) &appData.liteBackTextureFile, ".xpm", NULL, FileName, N_("Light-Squares Texture File:") },
+{ 0, 0, 0, NULL, (void*) &appData.darkBackTextureFile, ".xpm", NULL, FileName, N_("Dark-Squares Texture File:") },
+{ 0, 0, 0, NULL, (void*) &appData.bitmapDirectory, "", NULL, PathName, N_("Directory with Bitmap Pieces:") },
+{ 0, 0, 0, NULL, (void*) &appData.pixmapDirectory, "", NULL, PathName, N_("Directory with Pixmap Pieces:") },
{ 0, 0, 0, NULL, (void*) &BoardOptionsOK, "", NULL, EndMark , "" }
};
-void GenericReadout()
+int GenericReadout(int selected)
{
- int i, j;
- String name, val;
+ int i, j, res=1;
+ String val;
Arg args[16];
char buf[MSG_SIZ], **dest;
float x;
for(i=0; ; i++) { // send all options that had to be OK-ed to engine
+ if(selected >= 0) { if(i < selected) continue; else if(i > selected) break; }
switch(currentOption[i].type) {
case TextBox:
case FileName:
if(currentCps) {
snprintf(buf, MSG_SIZ, "option %s=%s\n", currentOption[i].name, val);
SendToProgram(buf, currentCps);
- } else *dest = currentOption[i].name + 100; // option gets to point to private storage;
+ } else {
+ if(*dest) free(*dest);
+ *dest = malloc(strlen(val)+1);
+ }
safeStrCpy(*dest, val, MSG_SIZ - (*dest - currentOption[i].name)); // copy text there
}
break;
break;
case EndMark:
if(currentOption[i].target) // callback for implementing necessary actions on OK (like redraw)
- ((ButtonCallback*) currentOption[i].target)(i);
+ res = ((OKCallback*) currentOption[i].target)(i);
break;
default:
printf("GenericReadout: unexpected case in switch.\n");
}
if(currentOption[i].type == EndMark) break;
}
+ return res;
}
void GenericCallback(w, client_data, call_data)
Widget w;
XtPointer client_data, call_data;
{
- String name, val;
+ String name;
Arg args[16];
char buf[MSG_SIZ];
- int i, j;
int data = (intptr_t) client_data;
currentOption = dialogOptions[data>>16]; data &= 0xFFFF;
return;
}
if (strcmp(name, _("OK")) == 0) { // save buttons imply OK
- GenericReadout();
- PopDown(data);
+ if(GenericReadout(-1)) PopDown(data);
return;
}
if(currentCps) {
- if(currentOption[data].type == SaveButton) GenericReadout();
+ if(currentOption[data].type == SaveButton) GenericReadout(-1);
snprintf(buf, MSG_SIZ, "option %s\n", name);
SendToProgram(buf, currentCps);
} else ((ButtonCallback*) currentOption[data].target)(data);
GenericPopUp(Option *option, char *title, int dlgNr)
{
Arg args[16];
- Widget popup, layout, dialog, edit=NULL, form, last, b_ok, b_cancel, leftMargin = NULL, textField = NULL;
+ 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 win_x, win_y, maxWidth, maxTextWidth;
if(currentCps) { // Settings popup for engine: format through heuristic
int n = currentCps->nrOptions;
+ if(!n) { DisplayNote(_("Engine has no options")); return 0; }
if(n > 50) width = 4; else if(n>24) width = 2; else width = 1;
height = n / width + 1;
- if(currentOption[n-1].type == Button || currentOption[n-1].type == SaveButton) currentOption[n].min = 1; // OK on same line
+ if(n && (currentOption[n-1].type == Button || currentOption[n-1].type == SaveButton)) currentOption[n].min = 1; // OK on same line
currentOption[n].type = EndMark; currentOption[n].target = NULL; // delimit list by callback-less end mark
}
i = 0;
XtSetArg(args[j], XtNright, XtChainLeft); j++;
XtSetArg(args[j], XtNborderWidth, 0); j++;
XtSetArg(args[j], XtNjustify, XtJustifyLeft); j++;
+ XtSetArg(args[j], XtNlabel, _(option[i].name)); j++;
texts[h] =
dialog = XtCreateManagedWidget(option[i].name, labelWidgetClass, form, args, j);
} else texts[h] = dialog = NULL;
XtSetArg(args[j], XtNleft, XtChainRight); j++;
XtSetArg(args[j], XtNright, XtChainRight); j++;
if(option[i].type == FileName || option[i].type == PathName) {
- w = 50; msg = "browse";
+ w = 50; msg = _("browse");
} else {
XtSetArg(args[j], XtNheight, 10); j++;
w = 20; msg = "+";
XtSetArg(args[j], XtNleft, XtChainLeft); j++;
XtSetArg(args[j], XtNborderWidth, 0); j++;
XtSetArg(args[j], XtNjustify, XtJustifyLeft); j++;
+ XtSetArg(args[j], XtNlabel, _(msg)); j++;
last = XtCreateManagedWidget(msg, labelWidgetClass, form, args, j);
if(option[i].type == CheckBox)
XtAddEventHandler(last, ButtonPressMask, False, CheckCallback, (XtPointer)(intptr_t) i);
case Button:
j=0;
XtSetArg(args[j], XtNfromVert, option[i].min & 1 ? lastrow : last); j++;
+ XtSetArg(args[j], XtNlabel, _(option[i].name)); j++;
if(option[i].min & 1) { XtSetArg(args[j], XtNfromHoriz, last); j++; }
else { XtSetArg(args[j], XtNfromHoriz, NULL); j++; lastrow = forelast; }
- if(option[i].max) XtSetArg(args[j], XtNwidth, option[i].max); 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
|| strstr(first.variants, VariantName(option[i].value))); j++;
XtSetArg(args[j], XtNright, XtChainLeft); j++;
XtSetArg(args[j], XtNborderWidth, 0); j++;
XtSetArg(args[j], XtNjustify, XtJustifyLeft); j++;
+ XtSetArg(args[j], XtNlabel, _(option[i].name)); j++;
texts[h] = dialog = XtCreateManagedWidget(option[i].name, labelWidgetClass, form, args, j);
if(currentCps) option[i].choice = (char**) option[i].textValue; else {
XtSetArg(args[j], XtNwidth, option[i].max && !currentCps ? option[i].max : 100); 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], XtNlabel, _(((char**)option[i].textValue)[option[i].value])); j++;
option[i].handle = (void*)
(last = XtCreateManagedWidget(" ", menuButtonWidgetClass, form, args, j));
CreateComboPopup(last, option[i].name, i, (char **) option[i].textValue);
if(!(option[i].min & 2)) {
j=0;
- if(option[i].min & 1) { XtSetArg(args[j], XtNfromHoriz, last); last = forelast; } else
+ if(option[i].min & 1) {
+ for(j=i-1; option[j+1].min&1 && option[j].type == Button; j--) {
+ XtSetArg(args[0], XtNtop, XtChainBottom);
+ XtSetArg(args[1], XtNbottom, XtChainBottom);
+ XtSetValues(option[j].handle, args, 2);
+ }
+ if(option[j].type == TextBox && option[j].name[0] == NULLCHAR) {
+ XtSetArg(args[0], XtNbottom, XtChainBottom);
+ XtSetValues(option[j].handle, args, 1);
+ }
+ j = 0;
+ XtSetArg(args[j], XtNfromHoriz, last); last = forelast;
+ } else
XtSetArg(args[j], XtNfromHoriz, widest ? widest : dialog); j++;
XtSetArg(args[j], XtNfromVert, anchor ? anchor : last); j++;
XtSetArg(args[j], XtNbottom, XtChainBottom); j++;
String *prms;
Cardinal *nprms;
{
+ NamesToList(firstChessProgramNames, engineList, engineMnemonic);
+ comboCallback = &AddToTourney;
+ matchOptions[5].min = -(appData.pairingEngine[0] != NULLCHAR); // with pairing engine, allow Swiss
GenericPopUp(matchOptions, _("Match Options"), 0);
}
Option textOptions[100];
-extern char *icsTextMenuString;
void PutText P((char *text, int pos));
-SendString(char *p)
+void SendString(char *p)
{
char buf[MSG_SIZ], *q;
if(q = strstr(p, "$input")) {
void ClearComment P((int n));
extern char commentTranslations[];
-void NewComCallback(int n)
+int NewComCallback(int n)
{
ReplaceComment(commentIndex, commentText);
+ return 1;
}
void SaveChanges(int n)
}
Option commentOptions[] = {
-{ 0xD, 200, 300, NULL, (void*) &commentText, "", NULL, TextBox, "" },
-{ 0, 0, 0, NULL, (void*) &ClearComment, NULL, NULL, Button, "clear" },
-{ 0, 1, 0, NULL, (void*) &SaveChanges, NULL, NULL, Button, "save changes" },
+{ 0xD, 200, 250, NULL, (void*) &commentText, "", NULL, TextBox, "" },
+{ 0, 0, 50, NULL, (void*) &ClearComment, NULL, NULL, Button, "clear" },
+{ 0, 1, 100, NULL, (void*) &SaveChanges, NULL, NULL, Button, "save changes" },
{ 0, 1, 0, NULL, (void*) &NewComCallback, "", NULL, EndMark , "" }
};
XtSetArg(args[0], XtNstring, text);
XtSetValues(commentOptions[0].handle, args, 1);
}
- commentText = text;
+ if(commentText) free(commentText); commentText = strdup(text);
commentIndex = index;
MarkMenu("menuView.Show Comments", 1);
if(GenericPopUp(commentOptions, title, 1))
static char *tagsText, *msgText;
-void NewTagsCallback(int n)
+int NewTagsCallback(int n)
{
ReplaceTags(tagsText, &gameInfo);
+ return 1;
}
void changeTags(int n)
{
Arg args[16];
XtSetArg(args[0], XtNstring, &tagsText);
- XtGetValues(currentOption[0].handle, args, 1);
+ XtGetValues(currentOption[1].handle, args, 1);
+ if(bookUp) SaveToBook(tagsText); else\r
ReplaceTags(tagsText, &gameInfo);
}
Option tagsOptions[] = {
-{ 0xD, 200, 250, NULL, (void*) &tagsText, "", NULL, TextBox, "" },
{ 0, 0, 0, NULL, NULL, NULL, NULL, Label, "" },
-{ 0, 0, 0, NULL, (void*) &changeTags, NULL, NULL, Button, "save changes" },
+{ 0xD, 200, 200, NULL, (void*) &tagsText, "", NULL, TextBox, "" },
+{ 0, 0, 100, NULL, (void*) &changeTags, NULL, NULL, Button, "save changes" },
{ 0, 1, 0, NULL, (void*) &NewTagsCallback, "", NULL, EndMark , "" }
};
{
Widget edit;
Arg args[16];
+ char *title = bookUp ? _("Edit book") : _("Tags");
if(shells[2]) { // if already exists, alter title and content
XtSetArg(args[0], XtNstring, text);
- XtSetValues(tagsOptions[0].handle, args, 1);
+ XtSetValues(tagsOptions[1].handle, args, 1);
+ XtSetArg(args[0], XtNtitle, title);
+ XtSetValues(shells[2], args, 1);
}
- tagsText = text;
- tagsOptions[1].textValue = msg;
+ if(tagsText) free(tagsText); tagsText = strdup(text);
+ tagsOptions[0].textValue = msg;
MarkMenu("menuView.Show Tags", 2);
- GenericPopUp(tagsOptions, _("Tags"), 2);
+ GenericPopUp(tagsOptions, title, 2);
}
-extern char ICSInputTranslations[];
char *icsText;
Option boxOptions[] = {
void PutText(char *text, int pos)
{
- Widget edit;
Arg args[16];
char buf[MSG_SIZ], *p;
String *prms;
Cardinal *nprms;
{
- SettingsPopUp(&first);
+ SettingsPopUp(&first);
}
void SecondSettingsProc(w, event, prms, nprms)
String *prms;
Cardinal *nprms;
{
- if(WaitForSecond(SettingsMenuIfReady)) return;
+ if(WaitForEngine(&second, SettingsMenuIfReady)) return;
SettingsPopUp(&second);
}
+int InstallOK(int n)
+{
+ PopDown(0); // early popdown, to allow FreezeUI to instate grab
+ if(engineChoice[0] == engineNr[0][0]) Load(&first, 0); else Load(&second, 1);
+ return 1;
+}
+
+Option installOptions[] = {
+{ 0, 0, 0, NULL, (void*) &engineLine, (char*) engineMnemonic, engineList, ComboBox, N_("Select engine from list:") },
+{ 0, 0, 0, NULL, NULL, NULL, NULL, Label, N_("or specify one below:") },
+{ 0, 0, 0, NULL, (void*) &nickName, NULL, NULL, TextBox, N_("Nickname (optional):") },
+{ 0, 0, 0, NULL, (void*) &useNick, NULL, NULL, CheckBox, N_("Use nickname in PGN player tags of engine-engine games") },
+{ 0, 0, 0, NULL, (void*) &engineDir, NULL, NULL, PathName, N_("Engine Directory:") },
+{ 0, 0, 0, NULL, (void*) &engineName, NULL, NULL, FileName, N_("Engine Command:") },
+{ 0, 0, 0, NULL, NULL, NULL, NULL, Label, N_("(Directory will be derived from engine path when empty)") },
+{ 0, 0, 0, NULL, (void*) &isUCI, NULL, NULL, CheckBox, N_("UCI") },
+{ 0, 0, 0, NULL, (void*) &v1, NULL, NULL, CheckBox, N_("WB protocol v1 (do not wait for engine features)") },
+{ 0, 0, 0, NULL, (void*) &hasBook, NULL, NULL, CheckBox, N_("Must not use GUI book") },
+{ 0, 0, 0, NULL, (void*) &addToList, NULL, NULL, CheckBox, N_("Add this engine to the list") },
+{ 0, 0, 0, NULL, (void*) &storeVariant, NULL, NULL, CheckBox, N_("Force current variant with this engine") },
+{ 0, 0, 0, NULL, (void*) &engineChoice, (char*) engineNr, engineNr, ComboBox, N_("Load mentioned engine as") },
+{ 0, 1, 0, NULL, (void*) &InstallOK, "", NULL, EndMark , "" }
+};
+
+void LoadEngineProc(w, event, prms, nprms)
+ Widget w;
+ XEvent *event;
+ String *prms;
+ Cardinal *nprms;
+{
+ isUCI = storeVariant = v1 = useNick = False; addToList = hasBook = True; // defaults
+ if(engineChoice) free(engineChoice); engineChoice = strdup(engineNr[0]);
+ if(engineLine) free(engineLine); engineLine = strdup("");
+ if(engineDir) free(engineDir); engineDir = strdup("");
+ if(nickName) free(nickName); nickName = strdup("");
+ if(params) free(params); params = strdup("");
+ NamesToList(firstChessProgramNames, engineList, engineMnemonic);
+ GenericPopUp(installOptions, _("Load engine"), 0);
+}
+
+void EditBookProc(w, event, prms, nprms)
+ Widget w;
+ XEvent *event;
+ String *prms;
+ Cardinal *nprms;
+{
+ EditBookEvent();
+}
+
//---------------------------- Chat Windows ----------------------------------------------
void OutputChatMessage(int partner, char *mess)