Increas number of engine-defined variants to 15 (WB)
[xboard.git] / winboard / wsettings.c
index 2cce2e0..eb04e41 100644 (file)
@@ -1,4 +1,27 @@
 /*\r
+ * woptions.h -- Options dialog box routines for WinBoard\r
+ *\r
+ * Copyright 2003, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Free Software Foundation, Inc.\r
+ *\r
+ * ------------------------------------------------------------------------\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 3 of the License, or (at\r
+ * your option) any later version.\r
+ *\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, see http://www.gnu.org/licenses/.  *\r
+ *\r
+ *------------------------------------------------------------------------\r
+ ** See the file ChangeLog for a revision history.  */\r
+\r
+/*\r
  * Engine-settings dialog. The complexity come from an attempt to present the engine-defined options\r
  * in a nicey formatted layout. To this end we first run a back-end pre-formatter, which will distribute\r
  * the controls over two columns (the minimum required, as some are double width). It also takes care of\r
@@ -97,7 +120,7 @@ void
 LayoutOptions(int firstOption, int endOption, char *groupName, Option *optionList)\r
 {\r
     int i, b = strlen(groupName), stop, prefix, right, nextOption, firstButton = buttons;\r
-    Control lastType, nextType;\r
+    Control lastType, nextType=Label;\r
 \r
     nextOption = firstOption;\r
     while(nextOption < endOption) {\r
@@ -357,7 +380,6 @@ int
 GetOptionValues(HWND hDlg, ChessProgramState *cps, Option *optionList)\r
 // read out all controls, and if value is altered, remember it and send it to the engine\r
 {\r
-    HANDLE hwndCombo;\r
     int i, k, new=0, changed=0, len;\r
     char **choices, newText[MSG_SIZ], buf[MSG_SIZ], *text;\r
     BOOL success;\r
@@ -401,7 +423,6 @@ GetOptionValues(HWND hDlg, ChessProgramState *cps, Option *optionList)
                break;\r
            case ComboBox:\r
                choices = (char**) optionList[j].textValue;\r
-               hwndCombo = GetDlgItem(hDlg, 2001+2*i);\r
                success = GetDlgItemText( hDlg, 2001+2*i, newText, MSG_SIZ );\r
                if(!success) break;\r
                new = -1;\r
@@ -472,7 +493,7 @@ LRESULT CALLBACK SettingsProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lPa
                if(j == -2) {\r
                          char filter[] =\r
                                "All files\0*.*\0Game files\0*.pgn;*.gam\0Position files\0*.fen;*.epd;*.pos\0"\r
-                               "EXE files\0*.exe\0Tournament files (*.trn)\0*.trn\0"\r
+                               "EXE files\0*.exe;*.jar\0Tournament files (*.trn)\0*.trn\0"\r
                                "BIN Files\0*.bin\0LOG Files\0*.log\0INI Files\0*.ini\0"\r
                                "Image files\0*.bmp\0\0";\r
                          OPENFILENAME ofn;\r
@@ -554,7 +575,7 @@ void AddOption(int x, int y, Control type, int i)
     int extra, num = ES_NUMBER;\r
 \r
     switch(type) {\r
-       case Slider+100:\r
+       case Spin+100:\r
            num = 0; // needs text control for accepting negative numbers\r
        case Slider:\r
        case Spin:\r
@@ -689,7 +710,7 @@ Option installOptions[] = {
   {   0,  0,    0, NULL, NULL, NULL, NULL, Label, N_("or specify one below:") },\r
   {   0,  0,    0, NULL, (void*) &nickName, NULL, NULL, TextBox, N_("Nickname (optional):") },\r
   {   0,  0,    0, NULL, (void*) &useNick, NULL, NULL, CheckBox, N_("Use nickname in PGN tag") },\r
-  {   0,  0, 32+3, NULL, (void*) &engineName, NULL, NULL, FileName, N_("Engine (*.exe):") },\r
+  {   0,  0, 32+3, NULL, (void*) &engineName, NULL, NULL, FileName, N_("Engine (.exe or .jar):") },\r
   {   0,  0,    0, NULL, (void*) &params, NULL, NULL, TextBox, N_("command-line parameters:") },\r
   {   0,  0,    0, NULL, (void*) &wbOptions, NULL, NULL, TextBox, N_("Special WinBoard options:") },\r
   {   0,  0,    0, NULL, (void*) &engineDir, NULL, NULL, PathName, N_("directory:") },\r
@@ -865,15 +886,20 @@ int MatchOK()
 \r
 void PseudoOK(HWND hDlg)\r
 {\r
-    void (*saveOK)();\r
-    saveOK = okFunc; okFunc = 0;\r
+    if(matchMode) return;\r
+    okFunc = 0;\r
     GetOptionValues(hDlg, activeCps, activeList);\r
     EndDialog( hDlg, 0 );\r
     comboCallback = NULL; activeCps = NULL;\r
 \r
     if(autoinc) appData.loadGameIndex = appData.loadPositionIndex = -(twice + 1); else\r
     if(!appData.loadGameFile[0]) appData.loadGameIndex = -2*twice; // kludge to pass value of "twice" for use in GUI book\r
+    if(!autoinc && !twice) { // prevent auto-inc being remembered in index value if checkboxes not ticked\r
+       if(appData.loadGameIndex < 0) appData.loadGameIndex = 0;\r
+       if(appData.loadPositionIndex < 0) appData.loadPositionIndex = 0;\r
+    }\r
     if(swiss) { appData.defaultMatchGames = 1; appData.tourneyType = -1; }\r
+    ASSIGN(appData.tourneyFile, tfName);\r
 }\r
 \r
 char *GetParticipants(HWND hDlg)\r