X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=dialogs.c;h=c1d093017cb46f18f86eaa67dcfeef92928d9492;hb=v4.9.x;hp=d3b333e2a9d389854a1214b5f4f42f15f8199bea;hpb=ebe17f3dae29fa51a6170440ef8cc20a02037e26;p=xboard.git diff --git a/dialogs.c b/dialogs.c index d3b333e..c1d0930 100644 --- a/dialogs.c +++ b/dialogs.c @@ -64,6 +64,7 @@ extern char *getenv(); #endif +int initialSquareSize; int values[MAX_OPTIONS]; ChessProgramState *currentCps; char manDir[MSG_SIZ] = MANDIR; @@ -866,7 +867,9 @@ static void Test (int n) { GenericReadout(soundOptions, 1); + mute <<= 1; // temporarily enable if(soundFiles[values[2]]) PlaySoundFile(soundFiles[values[2]]); + mute >>= 1; } void @@ -1213,7 +1216,7 @@ static int NewTagsCallback (int n) { if(bookUp) SaveToBook(tagsText), DisplayBook(currentMove); else - if(resPtr) { ASSIGN(*resPtr, tagsText); } else + if(resPtr) { ASSIGN(*resPtr, tagsText); if(resPtr == &firstChessProgramNames) SaveEngineList(); } else ReplaceTags(tagsText, &gameInfo); return 1; } @@ -1493,28 +1496,33 @@ RefreshSettingsDialog (ChessProgramState *cps, int val) //----------------------------------------------- Load Engine -------------------------------------- -char *engineDir, *engineLine, *nickName, *params; +char *engineDir, *engineLine, *nickName, *params, *protocolChoice; Boolean isUCI, isUSI, hasBook, storeVariant, v1, addToList, useNick, secondEng; static void EngSel P((int n, int sel)); static int InstallOK P((int n)); +static char *protocols[] = { "autodetect", "WB", "UCI", "USI/UCCI", "WB v1", NULL }; + static Option installOptions[] = { { 0,LR|T2T, 0, NULL, NULL, NULL, NULL, Label, N_("Select engine from list:") }, { 300,LR|TB,200, NULL, (void*) engineMnemonic, (char*) &EngSel, NULL, ListBox, "" }, { 0,SAME_ROW, 0, NULL, NULL, NULL, NULL, Break, NULL }, { 0, LR, 0, NULL, NULL, NULL, NULL, Label, N_("or specify one below:") }, +{ 0, 0, 0, NULL, (void*) &engineName, NULL, NULL, FileName, N_("Engine Command:") }, +{ 0, LR, 0, NULL, NULL, NULL, NULL, Label, N_("------------- User preferences (optional) ---------------") }, { 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, LR, 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*) &isUSI, NULL, NULL, CheckBox, N_("USI/UCCI (uses specified -uxiAdapter)") }, -{ 0, 0, 0, NULL, (void*) &v1, NULL, NULL, CheckBox, N_("WB protocol v1 (do not wait for engine features)") }, +{ 0, 0, 0, NULL, (void*) &storeVariant, NULL, NULL, CheckBox, N_("Force current variant with this engine") }, { 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, LR, 0, NULL, NULL, NULL, NULL, Label, N_("--------- Advanced (only change in exceptional cases) ----------") }, +{ 0, 0, 5, NULL, (void*) &protocolChoice, (char*) protocols, protocols, ComboBox, N_("Engine Protocol:") }, +{ 0, 0, 0, NULL, (void*) &engineDir, NULL, NULL, PathName, N_("Engine Directory:") }, +{ 0, LR, 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*) &isUSI, NULL, NULL, CheckBox, N_("USI/UCCI (uses specified -uxiAdapter)") }, +//{ 0, 0, 0, NULL, (void*) &v1, NULL, NULL, CheckBox, N_("WB protocol v1 (do not wait for engine features)") }, { 0, 0, 0, NULL, (void*) &InstallOK, "", NULL, EndMark , "" } }; @@ -1523,6 +1531,12 @@ InstallOK (int n) { if(n && (n = SelectedListBoxItem(&installOptions[1])) > 0) { // called by pressing OK, and engine selected ASSIGN(engineLine, engineList[n]); + } else switch(values[12]) { + case 0: isUCI = 3; break; + case 2: isUCI = 1; break; + case 3: isUSI = 1; break; + case 4: v1 = 1; + case 1: break; } PopDown(TransientDlg); // early popdown, to allow FreezeUI to instate grab if(isUSI) { @@ -1554,10 +1568,13 @@ EngSel (int n, int sel) static void LoadEngineProc (int engineNr, char *title) { + int p = appData.defProtocol; + if(*engineListFile) ParseSettingsFile(engineListFile, &engineListFile); // contains engine list + if(p >= 0 && p < 5) protocolChoice = protocols[p]; isUCI = isUSI = storeVariant = v1 = useNick = False; addToList = hasBook = True; // defaults secondEng = engineNr; if(engineLine) free(engineLine); engineLine = strdup(""); - if(engineDir) free(engineDir); engineDir = strdup("."); + if(engineDir) free(engineDir); engineDir = strdup(appData.defEngDir); if(nickName) free(nickName); nickName = strdup(""); if(params) free(params); params = strdup(""); ASSIGN(engineMnemonic[0], ""); @@ -2520,12 +2537,12 @@ DisplayMoveError (String message) void DisplayFatalError (String message, int error, int status) { - char buf[MSG_SIZ]; + char buf[MSG_SIZ], logout = appData.icsActive; if(status == 666) { // ignore this error when ICS Console window is up if(shellUp[ChatDlg]) return; status = 0; - } + } else if(status == 6666) status = logout = 0; // 6666 = kludge that indicates ICS connection already closed errorExitStatus = status; if (error == 0) { @@ -2538,7 +2555,7 @@ DisplayFatalError (String message, int error, int status) } if(mainOptions[W_BOARD].handle) { if (appData.popupExitMessage) { - if(appData.icsActive) SendToICS("logout\n"); // [HGM] make sure no new games will be started + if(logout) SendToICS("logout\n"); // [HGM] make sure no new games will be started ErrorPopUp(status ? _("Fatal Error") : _("Exiting"), message, TRUE); } else { ExitEvent(status); @@ -2691,7 +2708,9 @@ DisplayHelp (char *name) FREE(manText[1]); manText[1] = NULL; // so any currently held text is worthless safeStrCpy(tidy, buf, MSG_SIZ); // remember current engine eng = BufferCommandOutput(tidy, MSG_SIZ); // obtain path to its man file + if(*eng) safeStrCpy(engMan, eng, strlen(eng)); // and remember that too + else *engMan = NULLCHAR; FREE(eng); } safeStrCpy(buf, engMan, MSG_SIZ); n = 1; // use engine man @@ -3391,3 +3410,11 @@ ActivateTheme (int col) DrawPosition(True, NULL); } +char * +Shorten (char *s) +{ + static char buf[MSG_SIZ]; + if(strstr(s, dataDir) != s) return s; + snprintf(buf, MSG_SIZ, "~~%s", s + strlen(dataDir)); + return buf; +}