X-Git-Url: http://winboard.nl/cgi-bin?a=blobdiff_plain;f=xoptions.c;h=922db9031ed786101b7121c7d492cd15f589d884;hb=f5883cc4e2222df9c0a504a0c50da4acd6b77fb0;hp=446cf156c58fe4cc6943e0f796f10429bc8c896b;hpb=97d28802c3f1166f64a2cc32da74d829a60d8243;p=xboard.git diff --git a/xoptions.c b/xoptions.c index 446cf15..922db90 100644 --- a/xoptions.c +++ b/xoptions.c @@ -113,6 +113,7 @@ typedef int OKCallback(int n); int values[MAX_OPTIONS]; ChessProgramState *currentCps; +int dialogError; static Option *currentOption; static Boolean browserUp; ButtonCallback *comboCallback; @@ -220,13 +221,13 @@ CreateComboPopup (Widget parent, Option *option, int n) int i=0, j; Widget menu, entry; Arg args[16]; + char **mb = (char **) option->textValue; + if(mb[0] == NULL) return; // avoid empty menus, as they cause crash menu = XtCreatePopupShell(option->name, simpleMenuWidgetClass, parent, NULL, 0); j = 0; XtSetArg(args[j], XtNwidth, 100); j++; -// XtSetArg(args[j], XtNright, XtChainRight); j++; - char **mb = (char **) option->textValue; while (mb[i] != NULL) { if (option->min & NO_GETTEXT) @@ -249,7 +250,7 @@ CreateComboPopup (Widget parent, Option *option, int n) extern WindowPlacement wpComment, wpTags, wpMoveHistory; char *trialSound; -static int oldCores, oldPonder; +static int oldCores, oldPonder, oldShow, oldBlind; int MakeColors P((void)); void CreateGCs P((int redo)); void CreateAnyPieces P((void)); @@ -303,7 +304,7 @@ PopDown (int n) void GenericPopDown (Widget w, XEvent *event, String *prms, Cardinal *nprms) { - if(browserUp) return; // prevent closing dialog when it has an open file-browse daughter + if(browserUp || dialogError) return; // prevent closing dialog when it has an open file-browse daughter PopDown(prms[0][0] - '0'); } @@ -409,6 +410,8 @@ GeneralOptionsOK (int n) int newPonder = appData.ponderNextMove; appData.ponderNextMove = oldPonder; PonderNextMoveEvent(newPonder); + if(!appData.highlightLastMove) ClearHighlights(), ClearPremoveHighlights(); + if(oldShow != appData.showCoords || oldBlind != appData.blindfold) DrawPosition(TRUE, NULL); return 1; } @@ -433,6 +436,7 @@ Option generalOptions[] = { { 0, 0, 0, NULL, (void*) &appData.showEvalInMoveHistory, "", NULL, CheckBox, N_("Scores in Move List") }, { 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.useStickyWindows, "", NULL, CheckBox, N_("Sticky Windows") }, { 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):") }, @@ -629,7 +633,7 @@ Option loadOptions[] = { { 0, 0, 5000, NULL, (void*) &appData.eloThreshold2, "", NULL, Spin, N_("Elo of weakest player at least:") }, { 0, 0, 5000, NULL, (void*) &appData.dateThreshold, "", NULL, Spin, N_("No games before year:") }, { 0, 1, 50, NULL, (void*) &appData.stretch, "", NULL, Spin, N_("Minimum nr consecutive positions:") }, -{ 1, 0, 180, NULL, (void*) &searchMode, (char*) modeNames, modeValues, ComboBox, N_("Seach mode:") }, +{ 1, 0, 180, NULL, (void*) &searchMode, (char*) modeNames, modeValues, ComboBox, N_("Search mode:") }, { 0, 0, 0, NULL, (void*) &appData.ignoreColors, "", NULL, CheckBox, N_("Also match reversed colors") }, { 0, 0, 0, NULL, (void*) &appData.findMirror, "", NULL, CheckBox, N_("Also match left-right flipped position") }, { 0, 0, 0, NULL, (void*) &LoadOptionsOK, "", NULL, EndMark , "" } @@ -641,6 +645,7 @@ Option saveOptions[] = { { 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.numberTag, "", NULL, CheckBox, N_("Include Number Tag in tourney 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 , "" } @@ -798,9 +803,13 @@ BoardOptionsOK (int n) Option boardOptions[] = { { 0, 0, 70, NULL, (void*) &appData.whitePieceColor, "", NULL, TextBox, N_("White Piece Color:") }, { 1000, 1, 0, NULL, (void*) &DefColor, NULL, (char**) "#FFFFCC", Button, " " }, +/* TRANSLATORS: R = single letter for the color red */ { 1, 1, 0, NULL, (void*) &AdjustColor, NULL, NULL, Button, N_("R") }, +/* TRANSLATORS: G = single letter for the color green */ { 2, 1, 0, NULL, (void*) &AdjustColor, NULL, NULL, Button, N_("G") }, +/* TRANSLATORS: B = single letter for the color blue */ { 3, 1, 0, NULL, (void*) &AdjustColor, NULL, NULL, Button, N_("B") }, +/* TRANSLATORS: D = single letter to make a color darker */ { 4, 1, 0, NULL, (void*) &AdjustColor, NULL, NULL, Button, N_("D") }, { 0, 0, 70, NULL, (void*) &appData.blackPieceColor, "", NULL, TextBox, N_("Black Piece Color:") }, { 1000, 1, 0, NULL, (void*) &DefColor, NULL, (char**) "#202020", Button, " " }, @@ -1012,7 +1021,7 @@ GenericPopUp (Option *option, char *title, int dlgNr) Arg args[16]; 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 x, y, i, j, height=999, width=1, h, c, w, shrink=FALSE; int win_x, win_y, maxWidth, maxTextWidth; unsigned int mask; char def[MSG_SIZ], *msg; @@ -1082,6 +1091,7 @@ GenericPopUp (Option *option, char *title, int dlgNr) XtSetArg(args[j], XtNfromVert, last); j++; XtSetArg(args[j], XtNleft, XtChainLeft); j++; XtSetArg(args[j], XtNright, XtChainLeft); j++; + XtSetArg(args[j], XtNheight, textHeight), j++; XtSetArg(args[j], XtNborderWidth, 0); j++; XtSetArg(args[j], XtNjustify, XtJustifyLeft); j++; XtSetArg(args[j], XtNlabel, _(option[i].name)); j++; @@ -1095,14 +1105,13 @@ GenericPopUp (Option *option, char *title, int dlgNr) XtSetArg(args[j], XtNfromHoriz, dialog); j++; XtSetArg(args[j], XtNborderWidth, 1); j++; XtSetArg(args[j], XtNwidth, w); j++; - XtSetArg(args[j], XtNheight, textHeight); j++; // [HGM] use message widget if(option[i].type == TextBox && option[i].min) { - XtSetArg(args[j-1], XtNheight, option[i].min); // overwrite + XtSetArg(args[j], XtNheight, option[i].min); j++; if(option[i].value & 1) { XtSetArg(args[j], XtNscrollVertical, XawtextScrollAlways); j++; } if(option[i].value & 2) { XtSetArg(args[j], XtNscrollHorizontal, XawtextScrollAlways); j++; } if(option[i].value & 4) { XtSetArg(args[j], XtNautoFill, True); j++; } if(option[i].value & 8) { XtSetArg(args[j], XtNwrap, XawtextWrapWord); j++; } - } + } else shrink = TRUE; XtSetArg(args[j], XtNleft, XtChainLeft); j++; XtSetArg(args[j], XtNeditType, XawtextEdit); j++; XtSetArg(args[j], XtNuseStringInPlace, False); j++; @@ -1131,9 +1140,10 @@ GenericPopUp (Option *option, char *title, int dlgNr) msg = _("browse"); w = 0; /* automatically scale to width of text */ XtSetArg(args[j], XtNwidth, (XtArgVal) NULL ); j++; + if(textHeight) XtSetArg(args[j], XtNheight, textHeight), j++; } else { w = 20; msg = "+"; - XtSetArg(args[j], XtNheight, 10); j++; + XtSetArg(args[j], XtNheight, textHeight/2); j++; XtSetArg(args[j], XtNwidth, w); j++; } edit = XtCreateManagedWidget(msg, commandWidgetClass, form, args, j); @@ -1145,7 +1155,8 @@ GenericPopUp (Option *option, char *title, int dlgNr) j=0; XtSetArg(args[j], XtNfromVert, edit); j++; XtSetArg(args[j], XtNfromHoriz, last); j++; - XtSetArg(args[j], XtNheight, 10); j++; + XtSetArg(args[j], XtNvertDistance, -1); j++; + XtSetArg(args[j], XtNheight, textHeight/2); j++; XtSetArg(args[j], XtNwidth, 20); j++; XtSetArg(args[j], XtNleft, XtChainRight); j++; XtSetArg(args[j], XtNright, XtChainRight); j++; @@ -1154,20 +1165,11 @@ GenericPopUp (Option *option, char *title, int dlgNr) break; case CheckBox: if(!currentCps) option[i].value = *(Boolean*)option[i].target; - j=0; // space holder - XtSetArg(args[j], XtNfromVert, last); j++; - XtSetArg(args[j], XtNwidth, 10); j++; - XtSetArg(args[j], XtNheight, textHeight-22); j++; - XtSetArg(args[j], XtNleft, XtChainLeft); j++; - XtSetArg(args[j], XtNright, XtChainLeft); j++; - XtSetArg(args[j], XtNborderWidth, 0); j++; -printf("%d\n",textHeight); - if(textHeight < 24) dialog = last; else - dialog = XtCreateManagedWidget(" ", labelWidgetClass, form, args, j); j=0; - XtSetArg(args[j], XtNfromVert, dialog); j++; - XtSetArg(args[j], XtNwidth, 10); j++; - XtSetArg(args[j], XtNheight, 10); j++; + XtSetArg(args[j], XtNfromVert, last); j++; + XtSetArg(args[j], XtNvertDistance, (textHeight+2)/4 + 3); j++; + XtSetArg(args[j], XtNwidth, textHeight/2); j++; + XtSetArg(args[j], XtNheight, textHeight/2); j++; XtSetArg(args[j], XtNleft, XtChainLeft); j++; XtSetArg(args[j], XtNright, XtChainLeft); j++; XtSetArg(args[j], XtNstate, option[i].value); j++; @@ -1180,6 +1182,7 @@ printf("%d\n",textHeight); j=0; XtSetArg(args[j], XtNfromVert, last); j++; XtSetArg(args[j], XtNfromHoriz, option[i].type != Label ? dialog : NULL); j++; + if(option[i].type != Label) XtSetArg(args[j], XtNheight, textHeight), j++, shrink = TRUE; XtSetArg(args[j], XtNleft, XtChainLeft); j++; XtSetArg(args[j], XtNborderWidth, 0); j++; XtSetArg(args[j], XtNjustify, XtJustifyLeft); j++; @@ -1194,9 +1197,13 @@ printf("%d\n",textHeight); if(option[i].min & SAME_ROW) { XtSetArg(args[j], XtNfromVert, lastrow); j++; XtSetArg(args[j], XtNfromHoriz, last); j++; + XtSetArg(args[j], XtNleft, XtChainRight); j++; + XtSetArg(args[j], XtNright, XtChainRight); j++; + if(shrink) XtSetArg(args[j], XtNheight, textHeight), j++; } else { XtSetArg(args[j], XtNfromVert, last); j++; XtSetArg(args[j], XtNfromHoriz, NULL); j++; lastrow = forelast; + shrink = FALSE; } XtSetArg(args[j], XtNlabel, _(option[i].name)); j++; if(option[i].max) { XtSetArg(args[j], XtNwidth, option[i].max); j++; } @@ -1221,6 +1228,7 @@ printf("%d\n",textHeight); XtSetArg(args[j], XtNfromVert, last); j++; XtSetArg(args[j], XtNleft, XtChainLeft); j++; XtSetArg(args[j], XtNright, XtChainLeft); j++; + XtSetArg(args[j], XtNheight, textHeight), j++; XtSetArg(args[j], XtNborderWidth, 0); j++; XtSetArg(args[j], XtNjustify, XtJustifyLeft); j++; XtSetArg(args[j], XtNlabel, _(option[i].name)); j++; @@ -1239,6 +1247,8 @@ printf("%d\n",textHeight); 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], XtNheight, textHeight), j++; + shrink = TRUE; option[i].handle = (void*) (last = XtCreateManagedWidget(" ", menuButtonWidgetClass, form, args, j)); CreateComboPopup(last, option + i, i); @@ -1319,13 +1329,14 @@ printf("%d\n",textHeight); } j = 0; XtSetArg(args[j], XtNfromHoriz, last); last = forelast; - } else + } else shrink = FALSE, XtSetArg(args[j], XtNfromHoriz, widest ? widest : dialog); j++; XtSetArg(args[j], XtNfromVert, anchor ? anchor : last); j++; XtSetArg(args[j], XtNbottom, XtChainBottom); j++; XtSetArg(args[j], XtNtop, XtChainBottom); j++; XtSetArg(args[j], XtNleft, XtChainRight); j++; XtSetArg(args[j], XtNright, XtChainRight); j++; + if(shrink) XtSetArg(args[j], XtNheight, textHeight), j++; b_ok = XtCreateManagedWidget(_("OK"), commandWidgetClass, form, args, j); XtAddCallback(b_ok, XtNcallback, GenericCallback, (XtPointer)(intptr_t) dlgNr + (dlgNr<<16)); @@ -1362,26 +1373,26 @@ printf("%d\n",textHeight); void -IcsOptionsProc (Widget w, XEvent *event, String *prms, Cardinal *nprms) +IcsOptionsProc () { GenericPopUp(icsOptions, _("ICS Options"), 0); } void -LoadOptionsProc (Widget w, XEvent *event, String *prms, Cardinal *nprms) +LoadOptionsProc () { ASSIGN(searchMode, modeValues[appData.searchMode-1]); GenericPopUp(loadOptions, _("Load Game Options"), 0); } void -SaveOptionsProc (Widget w, XEvent *event, String *prms, Cardinal *nprms) +SaveOptionsProc () { GenericPopUp(saveOptions, _("Save Game Options"), 0); } void -SoundOptionsProc (Widget w, XEvent *event, String *prms, Cardinal *nprms) +SoundOptionsProc () { free(soundFiles[2]); soundFiles[2] = strdup("*"); @@ -1389,19 +1400,19 @@ SoundOptionsProc (Widget w, XEvent *event, String *prms, Cardinal *nprms) } void -BoardOptionsProc (Widget w, XEvent *event, String *prms, Cardinal *nprms) +BoardOptionsProc () { GenericPopUp(boardOptions, _("Board Options"), 0); } void -EngineMenuProc (Widget w, XEvent *event, String *prms, Cardinal *nprms) +EngineMenuProc () { GenericPopUp(adjudicationOptions, _("Adjudicate non-ICS Games"), 0); } void -UciMenuProc (Widget w, XEvent *event, String *prms, Cardinal *nprms) +UciMenuProc () { oldCores = appData.smpCores; oldPonder = appData.ponderNextMove; @@ -1409,20 +1420,21 @@ UciMenuProc (Widget w, XEvent *event, String *prms, Cardinal *nprms) } void -NewVariantProc (Widget w, XEvent *event, String *prms, Cardinal *nprms) +NewVariantProc () { GenericPopUp(variantDescriptors, _("New Variant"), 0); } void -OptionsProc (Widget w, XEvent *event, String *prms, Cardinal *nprms) +OptionsProc () { oldPonder = appData.ponderNextMove; + oldShow = appData.showCoords; oldBlind = appData.blindfold; GenericPopUp(generalOptions, _("General Options"), 0); } void -MatchOptionsProc (Widget w, XEvent *event, String *prms, Cardinal *nprms) +MatchOptionsProc () { NamesToList(firstChessProgramNames, engineList, engineMnemonic, "all"); comboCallback = &AddToTourney; @@ -1480,7 +1492,7 @@ SendText (int n) } void -IcsTextProc (Widget w, XEvent *event, String *prms, Cardinal *nprms) +IcsTextProc () { int i=0, j; char *p, *q, *r; @@ -1707,13 +1719,13 @@ SettingsPopUp (ChessProgramState *cps) } void -FirstSettingsProc (Widget w, XEvent *event, String *prms, Cardinal *nprms) +FirstSettingsProc () { SettingsPopUp(&first); } void -SecondSettingsProc (Widget w, XEvent *event, String *prms, Cardinal *nprms) +SecondSettingsProc () { if(WaitForEngine(&second, SettingsMenuIfReady)) return; SettingsPopUp(&second); @@ -1745,7 +1757,7 @@ Option installOptions[] = { }; void -LoadEngineProc (Widget w, XEvent *event, String *prms, Cardinal *nprms) +LoadEngineProc () { isUCI = storeVariant = v1 = useNick = False; addToList = hasBook = True; // defaults if(engineChoice) free(engineChoice); engineChoice = strdup(engineNr[0]); @@ -1758,7 +1770,7 @@ LoadEngineProc (Widget w, XEvent *event, String *prms, Cardinal *nprms) } void -EditBookProc (Widget w, XEvent *event, String *prms, Cardinal *nprms) +EditBookProc () { EditBookEvent(); } @@ -1791,7 +1803,7 @@ SetRandom (int n) } void -ShuffleMenuProc (Widget w, XEvent *event, String *prms, Cardinal *nprms) +ShuffleMenuProc () { GenericPopUp(shuffleOptions, _("New Shuffle Game"), 0); } @@ -1877,7 +1889,7 @@ SetTcType (int n) } void -TimeControlProc (Widget w, XEvent *event, String *prms, Cardinal *nprms) +TimeControlProc () { tmpMoves = appData.movesPerSession; tmpInc = appData.timeIncrement; if(tmpInc < 0) tmpInc = 0;