X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=winboard%2Fwsettings.c;h=f32fc9470fc46b0df65d1f4d69d2788f71cee9d0;hb=c37d45adc7d98a702a7459ccdc0ac23df01a476e;hp=b3e41cd8fa9aa6b24fa647034929233c09c42895;hpb=75a6740777dacce0256aa85aecfad5c9861ac5b5;p=xboard.git diff --git a/winboard/wsettings.c b/winboard/wsettings.c index b3e41cd..f32fc94 100644 --- a/winboard/wsettings.c +++ b/winboard/wsettings.c @@ -1,4 +1,27 @@ /* + * woptions.h -- Options dialog box routines for WinBoard + * + * Copyright 2003, 2009, 2010, 2011, 2012, 2013, 2014 Free Software Foundation, Inc. + * + * ------------------------------------------------------------------------ + * + * GNU XBoard is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or (at + * your option) any later version. + * + * GNU XBoard is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. * + * + *------------------------------------------------------------------------ + ** See the file ChangeLog for a revision history. */ + +/* * Engine-settings dialog. The complexity come from an attempt to present the engine-defined options * in a nicey formatted layout. To this end we first run a back-end pre-formatter, which will distribute * the controls over two columns (the minimum required, as some are double width). It also takes care of @@ -551,13 +574,15 @@ void AddControl(int x, int y, int w, int h, int type, int style, int n) void AddOption(int x, int y, Control type, int i) { - int extra; + int extra, num = ES_NUMBER; switch(type) { + case Slider+100: + num = 0; // needs text control for accepting negative numbers case Slider: case Spin: AddControl(x, y+1, 95, 9, 0x0082, SS_ENDELLIPSIS | WS_VISIBLE | WS_CHILD, i); - AddControl(x+95, y, 50, 11, 0x0081, ES_AUTOHSCROLL | ES_NUMBER | WS_BORDER | WS_VISIBLE | WS_CHILD | WS_TABSTOP, i+1); + AddControl(x+95, y, 50, 11, 0x0081, ES_AUTOHSCROLL | num | WS_BORDER | WS_VISIBLE | WS_CHILD | WS_TABSTOP, i+1); break; case TextBox: extra = 13*activeList[layoutList[i/2]].min; // when extra high, left-align and put description text above it @@ -625,7 +650,8 @@ CreateDialogTemplate(int *layoutList, int nr, Option *optionList) } j = layoutList[i]; if(j >= 0) { - AddOption(x+155-150*(i&1), y+13*(i>>1)+5, optionList[j].type, 2*i); + int neg = (optionList[j].type == Spin && optionList[j].min < 0 ? 100 : 0); // flags spin with negative range + AddOption(x+155-150*(i&1), y+13*(i>>1)+5, optionList[j].type + neg, 2*i); // listboxes have the special power to adjust the width of the column they are in if(optionList[j].type == ListBox) x -= optionList[j].value, template.header.cx -= optionList[j].value; } @@ -977,7 +1003,7 @@ void TourneyPopup(HWND hwnd) { int n = NamesToList(firstChessProgramNames, engineList, engineMnemonic, ""); autoinc = appData.loadGameIndex < 0 || appData.loadPositionIndex < 0; - twice = FALSE; swiss = appData.tourneyType < 0; + twice = appData.loadGameIndex == -2 || appData.loadPositionIndex == -2; swiss = appData.tourneyType < 0; tourneyOptions[0].max = n; snprintf(title, MSG_SIZ, _("Tournament and Match Options")); ASSIGN(tfName, appData.tourneyFile[0] ? appData.tourneyFile : MakeName(appData.defName));