xboard-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [XBoard-devel] Options and the manual


From: h.g. muller
Subject: Re: [XBoard-devel] Options and the manual
Date: Wed, 04 Jan 2012 15:37:32 +0100


-pieceToSquareTable is described in the manual, doesn't exist

Oops! This is supposed to be -pieceToCharTable. Sometimes
my engine-author hat gets the better of me... :-(

Many options are undocumented. I found these:

Indeed, the docs are currently in a very sorry state. Worst thing
is actually that there is no automatic conversion between XBoard
and WinBoard docs, so that early everything has to be done in
triplicate, as there are two incompatible help stadards for Windows,
between which automatic conversion also seems impossible.

So usually I only update the winboard.rtf file, which unfortunately
onlycan be compiled to the obsolete help standard, which almost
no one can read anymore.

That being said, the documentation of options deserves some
comments too. As the list is shared between XBoard and WinBoard,
itcan contain WinBoard options for features ot implemented in
XBoard, and then they naturally won't be found in the XBoard docs
either. I never took any trouble to keep them out of the list by using
#ifdef XBOARD, as it did not seem very harmful to simply leave them in.
The list takes negligible space, and processing it negligible time.
And the order of options in the list is not entirely arbitrary, as it
reflects the ordering which the options will be saved in the settings file,
and there are many people that edit settings files (at least for WinBoard).
So it would probably take a lot of #ifdefs to blot out all WB-only options
for XBoard, and this would clutter the code more than it is worth.

Another issue that should perhaps be reconsidered is the abundance of
synomyms. Many options historically come in 4 forms: a verbose form
which is intuitive, but too cumbersome to use, a cryptic and efficient
abbreviation, and two cryptic ones for switching them on or off (for boolean
options). This could have been useful at a time when command-line options
were the only way to control these features. But now that almost every setting
can be controlled from a menu dialog, it seems like over-doing it. Nowadays it
could be considered foolhardy using command-line options for setting (say) the
square color.

The most legitimate use of the options is in settings files, and in particular
in the file that saves user settings. Long names are very suitable for that;
users won't have to type them there very often, and it provides clarity.
Note that some options are basically intended only for that purpose, such
as remembering the window coordinates. I can't imagine a reason why one
would ever want to use those on the command line, as simply dragging the
window around after opening it is infinitely easier. I think it is a legitimate
question if such options should be described in the docs. Flooding a
user with (mostly) useless information is not necessarily a good thing.
We should decide whether we want the man file to be a reference manual
or a user guide, and if we opt for the former, ask ourselves the question
where the (IMO much more important) user guide is.

Finally there are some undocumented features that I implemented purely
for my own convenience, sometimes in a flaky way (which is tolerable
when I am aware of the shortcomings, but could easily become a disaster
when exposed to the public).

Finally, the specific options:

  /* keyword arguments */
  { "wpc", ArgColor, (void *) 0, FALSE, INVALID },
  { "bpc", ArgColor, (void *) 1, FALSE, INVALID },
  { "lsc", ArgColor, (void *) 2, FALSE, INVALID },
  { "dsc", ArgColor, (void *) 3, FALSE, INVALID },
  { "hsc", ArgColor, (void *) 4, FALSE, INVALID },
  { "phc", ArgColor, (void *) 5, FALSE, INVALID },

It could be these short forms are due to me, to save me typing when testing the Board Options dialog. If so, they could be immediately removed: now the Board Options dialog exists, I see no need for them. Since they are not documented, I guess we should feel free to scrap them without notice anyway. But at least deprecate them. So no need to include them in the docs.

{ "premoveHighlightColor", ArgColor, (void *) 5, TRUE, (ArgIniType) PREMOVE_HIGHLIGHT_COLOR },

Funny. It is mentioned in examples, but not as item or in the index. An oversight, obviously.

{ "firstInitString", ArgString, (void *) &appData.firstInitString, FALSE, (ArgIniType) INIT_STRING },

synonymous for -initString (which should be deprecated, but was probably kept as a 'short' form).

  { "-ncp", ArgFalse, (void *) &appData.noChessProgram, FALSE, INVALID },

{ "cmail", ArgString, (void *) &appData.cmailGameName, FALSE, (ArgIniType) "" },

  { "-ics", ArgFalse, (void *) &appData.icsActive, FALSE, INVALID },

Things like -ics and -ncp are discussed in the general introduction about major modes, and it would be a bit hard to explain what they do without repeating that. So perhaps
we should just add an entry in the index pointing to this introduction?
Not sure why -ics exists anyway. It seems unusable without -icshost, so the latter could be made to imply it... What cmail is nobody seems to know anymore. (I don't...)

{ "internetChessServerComPort", ArgString, (void *) &appData.icsCommPort, FALSE, INVALID },
  { "icscom", ArgString, (void *) &appData.icsCommPort, FALSE, INVALID },

  { "-fb", ArgFalse, (void *) &appData.firstPlaysBlack, FALSE, INVALID },
  { "-telnet", ArgFalse, (void *) &appData.useTelnet, FALSE, INVALID },
  { "-autosave", ArgFalse, (void *) &appData.autoSaveGames, FALSE, INVALID },
  { "-mm", ArgFalse, (void *) &appData.matchMode, FALSE, INVALID },
  { "-mono", ArgFalse, (void *) &appData.monoMode, FALSE, INVALID },
  { "-debug", ArgFalse, (void *) &appData.debugMode, FALSE, INVALID },
  { "-clock", ArgFalse, (void *) &appData.clockMode, FALSE, INVALID },
  { "-coords", ArgFalse, (void *) &appData.showCoords, FALSE, INVALID },
  { "-thinking", ArgFalse, (void *) &appData.showThinking, FALSE, INVALID },
  { "-ponder", ArgFalse, (void *) &appData.ponderNextMove, FALSE, INVALID },
{ "periodicUpdates", ArgBoolean, (void *) &appData.periodicUpdates, TRUE, (ArgIniType) TRUE },
  { "periodic", ArgTrue, (void *) &appData.periodicUpdates, FALSE, INVALID },
{ "xperiodic", ArgFalse, (void *) &appData.periodicUpdates, FALSE, INVALID }, { "-periodic", ArgFalse, (void *) &appData.periodicUpdates, FALSE, INVALID },
  { "-exit", ArgFalse, (void *) &appData.popupExitMessage, FALSE, INVALID },
  { "-popup", ArgFalse, (void *) &appData.popupMoveErrors, FALSE, INVALID },

Perhaps all the stuff starting with minus should be considered deprecated?
They are just synonyms for those starting with x, and not any shorter.
Not sure why periodic updates are not mentioned (the menu item for it is...)

  { "popUpErrors", ArgBoolean, (void *) &appData.popupMoveErrors,
FALSE, INVALID }, /* only so that old WinBoard.ini files from betas can be read */ { "font", ArgFont, (void *) MESSAGE_FONT, FALSE, INVALID }, /* only so that old .xboardrc files will parse. -font does not work from the command line because it is captured by the X libraries. */

-font is deprecated, and is now -messageFont.

  { "tagsFont", ArgFont, (void *) EDITTAGS_FONT, TRUE, INVALID },
  { "commentFont", ArgFont, (void *) COMMENT_FONT, TRUE, INVALID },
  { "icsFont", ArgFont, (void *) CONSOLE_FONT, TRUE, INVALID },
{ "moveHistoryFont", ArgFont, (void *) MOVEHISTORY_FONT, TRUE, INVALID }, /* [AS] */ { "gameListFont", ArgFont, (void *) GAMELIST_FONT, TRUE, INVALID }, /* [HGM] */

These are WinBoard-only options, (waiting to be ported to XBoard?)
In XBoard these all use the same font (-messageFont).

{ "bell", ArgTrue, (void *) &appData.ringBellAfterMoves, FALSE, INVALID }, // for XB { "xbell", ArgFalse, (void *) &appData.ringBellAfterMoves, FALSE, INVALID }, // for XB

I think this is deprecated for -moveSound

  { "alwaysOnTop", ArgBoolean, (void *) &alwaysOnTop, TRUE, INVALID },
  { "top", ArgTrue, (void *) &alwaysOnTop, FALSE, INVALID },
  { "xtop", ArgFalse, (void *) &alwaysOnTop, FALSE, INVALID },

This could be a WB-only feature too?

  { "-top", ArgFalse, (void *) &alwaysOnTop, FALSE, INVALID },
  { "-autoflag", ArgFalse, (void *) &appData.autoCallFlag, FALSE, INVALID },
  { "-autocomm", ArgFalse, (void *) &appData.autoComment, FALSE, INVALID },
  { "-autobs", ArgFalse, (void *) &appData.autoObserve, FALSE, INVALID },
  { "-flip", ArgFalse, (void *) &appData.flipView, FALSE, INVALID },
  { "-autoflip", ArgFalse, (void *) &appData.autoFlipView, FALSE, INVALID },
{ "-autoraise", ArgFalse, (void *) &appData.autoRaiseBoard, FALSE, INVALID }, { "-queen", ArgFalse, (void *) &appData.alwaysPromoteToQueen, FALSE, INVALID },
  { "-oldsave", ArgFalse, (void *) &appData.oldSaveStyle, FALSE, INVALID },
  { "-quiet", ArgFalse, (void *) &appData.quietPlay, FALSE, INVALID },
  { "-moves", ArgFalse, (void *) &appData.getMoveList, FALSE, INVALID },
  { "-legal", ArgFalse, (void *) &appData.testLegality, FALSE, INVALID },
  { "-pre", ArgFalse, (void *) &appData.premove, FALSE, INVALID },
{ "premoveWhite", ArgBoolean, (void *) &appData.premoveWhite, TRUE, (ArgIniType) FALSE },
  { "prewhite", ArgTrue, (void *) &appData.premoveWhite, FALSE, INVALID },
  { "xprewhite", ArgFalse, (void *) &appData.premoveWhite, FALSE, INVALID },
  { "-prewhite", ArgFalse, (void *) &appData.premoveWhite, FALSE, INVALID },
{ "premoveWhiteText", ArgString, (void *) &appData.premoveWhiteText, TRUE, (ArgIniType) "" }, { "premoveBlack", ArgBoolean, (void *) &appData.premoveBlack, TRUE, (ArgIniType) FALSE },
  { "preblack", ArgTrue, (void *) &appData.premoveBlack, FALSE, INVALID },
  { "xpreblack", ArgFalse, (void *) &appData.premoveBlack, FALSE, INVALID },
  { "-preblack", ArgFalse, (void *) &appData.premoveBlack, FALSE, INVALID },
{ "premoveBlackText", ArgString, (void *) &appData.premoveBlackText, TRUE, (ArgIniType) "" },
  { "-alarm", ArgFalse, (void *) &appData.icsAlarm, FALSE},

{ "localLineEditing", ArgBoolean, (void *) &appData.localLineEditing, FALSE, (ArgIniType) TRUE},
  { "edit", ArgTrue, (void *) &appData.localLineEditing, FALSE, INVALID },
  { "xedit", ArgFalse, (void *) &appData.localLineEditing, FALSE, INVALID },
  { "-edit", ArgFalse, (void *) &appData.localLineEditing, FALSE, INVALID },

These 4 also WB, I think. XBoard has the -icsinputBox for this.

  { "-animate", ArgFalse, (void *) &appData.animate, FALSE, INVALID },
  { "-drag", ArgFalse, (void *) &appData.animateDragging, FALSE, INVALID },
  { "-blind", ArgFalse, (void *) &appData.blindfold, FALSE, INVALID },
{ "-highlight", ArgFalse, (void *) &appData.highlightLastMove, FALSE, INVALID },
  { "highlightDragging", ArgBoolean,
    (void *) &appData.highlightDragging, TRUE, INVALID },
{ "highdrag", ArgTrue, (void *) &appData.highlightDragging, FALSE, INVALID }, { "xhighdrag", ArgFalse, (void *) &appData.highlightDragging, FALSE, INVALID }, { "-highdrag", ArgFalse, (void *) &appData.highlightDragging, FALSE, INVALID },

Highlight dragging used to be not-implemented in XBoard, but I guess I gave it
another meaning.

  { "xcolorize", ArgFalse, (void *) &appData.colorize, FALSE, INVALID },
  { "-colorize", ArgFalse, (void *) &appData.colorize, FALSE, INVALID },
{ "colorCShout", ArgAttribs, (void *) ColorSShout, FALSE, INVALID }, // for XB
  { "colorBackground", ArgColor, (void *) 7, TRUE, COLOR_BKGD },
{ "soundCShout", ArgFilename, (void *) &appData.soundSShout, FALSE, (ArgIniType) "" }, // for XB { "soundChannel1", ArgFilename, (void *) &appData.soundChannel1, TRUE, (ArgIniType) "" }, { "soundBell", ArgFilename, (void *) &appData.soundBell, TRUE, (ArgIniType) SOUND_BELL }, { "disguisePromotedPieces", ArgBoolean, (void *) &appData.disguise, TRUE, (ArgIniType) TRUE },
  { "-reuse", ArgFalse, (void *) &appData.reuseFirst, FALSE, INVALID },

  { "reuseChessPrograms", ArgBoolean,
(void *) &appData.reuseFirst, FALSE, INVALID }, /* backward compat only */

Deprecated

  { "-reuse2", ArgFalse, (void *) &appData.reuseSecond, FALSE, INVALID },
  { "comPortSettings", ArgCommSettings, (void *) /*&dcb*/ 0, TRUE, INVALID },

  { "at", ArgSettingsFilename, (void *) NULL, FALSE, INVALID },
  { "opt", ArgSettingsFilename, (void *) NULL, FALSE, INVALID },

-at and -opt were only intended for WB as work-around for a Windows bug in displaying @ signs

{ "saveSettingsOnExit", ArgBoolean, (void *) &saveSettingsOnExit, TRUE, (ArgIniType) TRUE },

{ "chessProgram", ArgBoolean, (void *) &chessProgram, FALSE, (ArgIniType) FALSE },
  { "cp", ArgTrue, (void *) &chessProgram, FALSE, INVALID },
  { "xcp", ArgFalse, (void *) &chessProgram, FALSE, INVALID },
  { "-cp", ArgFalse, (void *) &chessProgram, FALSE, INVALID },

-cp is WB-only. In XBoard this is the default mode.

{ "icsMenu", ArgString, (void *) &icsTextMenuString, TRUE, (ArgIniType) ICS_TEXT_MENU_DEFAULT }, { "icsNames", ArgString, (void *) &icsNames, TRUE, (ArgIniType) ICS_NAMES }, { "singleEngineList", ArgBoolean, (void *) &singleList, !XBOARD, (ArgIniType) FALSE },
  { "secondChessProgramNames", ArgString, (void *) &secondChessProgramNames,
    !XBOARD, (ArgIniType) SCP_NAMES },

WB-only, although I think icsMenu is now used with XBoard to define a persistent dialog.

  { "-buttons", ArgFalse, (void *) &appData.showButtonBar, FALSE, INVALID },

  /* [AS] New features */
{ "liteBackTextureMode", ArgInt, (void *) &appData.liteBackTextureMode, TRUE, (ArgIniType) BACK_TEXTURE_MODE_PLAIN }, { "darkBackTextureMode", ArgInt, (void *) &appData.darkBackTextureMode, TRUE, (ArgIniType) BACK_TEXTURE_MODE_PLAIN }, { "renderPiecesWithFont", ArgString, (void *) &appData.renderPiecesWithFont, TRUE, (ArgIniType) "" }, { "fontPieceToCharTable", ArgString, (void *) &appData.fontToPieceTable, TRUE, (ArgIniType) "" }, { "fontPieceBackColorWhite", ArgColor, (void *) 8, TRUE, (ArgIniType) WHITE_PIECE_COLOR }, { "fontPieceForeColorWhite", ArgColor, (void *) 9, TRUE, (ArgIniType) WHITE_PIECE_COLOR }, { "fontPieceBackColorBlack", ArgColor, (void *) 10, TRUE, (ArgIniType) BLACK_PIECE_COLOR }, { "fontPieceForeColorBlack", ArgColor, (void *) 11, TRUE, (ArgIniType) BLACK_PIECE_COLOR }, { "fontPieceSize", ArgInt, (void *) &appData.fontPieceSize, TRUE, (ArgIniType) 80 },

For features not implemented in XBoard (font-based piece rendering an randomizing of the texture cutouts)

{ "overrideLineGap", ArgInt, (void *) &appData.overrideLineGap, TRUE, (ArgIniType) 1 }, { "showEvalInMoveHistory", ArgBoolean, (void *) &appData.showEvalInMoveHistory, TRUE, (ArgIniType) TRUE },

{ "evalHistColorWhite", ArgColor, (void *) 12, TRUE, (ArgIniType) "#FFFFB0" }, { "evalHistColorBlack", ArgColor, (void *) 13, TRUE, (ArgIniType) "#AD5D3D" }, { "highlightArrowColor", ArgColor, (void *) 14, TRUE, (ArgIniType) "#FFFF80" },

Not sure these 3 work in XBoard. I think the arrow simply uses the -highlightSquareColor there.

{ "stickyWindows", ArgBoolean, (void *) &appData.useStickyWindows, TRUE, (ArgIniType) TRUE },

WB-only; the XBoard windows don't stick yet,and considering the inaccuracy with which we
can reproduce their positioning in X, it is not likely we could make this work.

  { "firstUCI", ArgTrue, (void *) &appData.firstIsUCI, FALSE, INVALID },
  { "secondUCI", ArgTrue, (void *) &appData.secondIsUCI, FALSE, INVALID },

There are many synonyms of these options, for various reasons (some only of historic importance). I am not sure how many of these alterntives we should depracate. Nowadays -fUCI/-sUCI are preferred versions of this, but to install UCI engines in the PSWBTM tournament manager a kludge was used involving first -> second substitution, which does not work on them
(and "-firstIsUCI true" was irritatingly verbose).

{ "bookDepth", ArgInt, (void *) &appData.bookDepth, TRUE, (ArgIniType) 12 }, { "bookVariation", ArgInt, (void *) &appData.bookStrength, TRUE, (ArgIniType) 50 }, { "discourageOwnBooks", ArgBoolean, (void *) &appData.defNoBook, TRUE, (ArgIniType) FALSE },

{ "language", ArgFilename, (void *) &appData.language, TRUE, (ArgIniType) "" }, { "userFileDirectory", ArgFilename, (void *) &homeDir, FALSE, (ArgIniType) installDir }, { "usePieceFont", ArgBoolean, (void *) &appData.useFont, TRUE, (ArgIniType) FALSE },

These 3 WB-only (althouh even there I am ot sure the -userFileDirectory works...)


  // [HGM] tournament options
{ "syncAfterRound", ArgBoolean, (void *) &appData.roundSync, FALSE, (ArgIniType) FALSE }, { "syncAfterCycle", ArgBoolean, (void *) &appData.cycleSync, FALSE, (ArgIniType) TRUE },

  /* [HGM] board-size, adjudication and misc. options */
{ "defaultMatchGames", ArgInt, (void *) &appData.defaultMatchGames, TRUE, (ArgIniType) 10 }, { "matchPause", ArgInt, (void *) &appData.matchPause, TRUE, (ArgIniType) 10000 }, { "pieceToCharTable", ArgString, (void *) &appData.pieceToCharTable, FALSE, INVALID }, { "pieceNickNames", ArgString, (void *) &appData.pieceNickNames, FALSE, INVALID }, { "colorNickNames", ArgString, (void *) &appData.colorNickNames, FALSE, INVALID },

{ "flipBlack", ArgBoolean, (void *) &appData.upsideDown, FALSE, (ArgIniType) FALSE }, { "allWhite", ArgBoolean, (void *) &appData.allWhite, FALSE, (ArgIniType) FALSE },

-allWhite is WB only. There was no need to implement it in XBoard, as the set of Shogi pieces we could lay our hand on had different white and black piece due to the 3d effect. For this reason -flipBlack also does something completely different from what it does in WB (it swaps black and white pieces, rather than turning the opponent pieces upside-down).

{ "alphaRank", ArgBoolean, (void *) &appData.alphaRank, FALSE, (ArgIniType) FALSE }, { "firstAlphaRank", ArgBoolean, (void *) &first.alphaRank, FALSE, (ArgIniType) FALSE }, { "secondAlphaRank", ArgBoolean, (void *) &second.alphaRank, FALSE, (ArgIniType) FALSE },

experimental Shogi stuff that never worked properly.

  { "firstLogo", ArgFilename, (void *) &appData.firstLogo, FALSE, INVALID },
{ "secondLogo", ArgFilename, (void *) &appData.secondLogo, FALSE, INVALID },
  { "autoLogo", ArgBoolean, (void *) &appData.autoLogo, TRUE, INVALID },

XBoard does not support logos (yet).

{ "firstFeatures", ArgString, (void *) &appData.features[0], FALSE, (ArgIniType) "" }, { "secondFeatures", ArgString, (void *) &appData.features[1], FALSE, (ArgIniType) "" }, { "featureDefaults", ArgString, (void *) &appData.featureDefaults, TRUE, (ArgIniType) "" },
  { "keepAlive", ArgInt, (void *) &appData.keepAlive, FALSE, INVALID },
  { "icstype", ArgInt, (void *) &ics_type, FALSE, INVALID },

{ "forceIllegalMoves", ArgTrue, (void *) &appData.forceIllegal, FALSE, INVALID },

So far this was a 'private option'

  { "stretch", ArgInt, (void *) &appData.stretch, FALSE, (ArgIniType) 1 },
{ "ignoreColors", ArgBoolean, (void *) &appData.ignoreColors, FALSE, FALSE }, { "findMirrorImage", ArgBoolean, (void *) &appData.findMirror, FALSE, FALSE },

#if ZIPPY
  { "-zt", ArgFalse, (void *) &appData.zippyTalk, FALSE, INVALID },
  { "-zp", ArgFalse, (void *) &appData.zippyPlay, FALSE, INVALID },
  { "-zui", ArgFalse, (void *) &appData.zippyUseI, FALSE, INVALID },
  { "-znc", ArgFalse, (void *) &appData.zippyNoplayCrafty, FALSE, INVALID },
  { "-zadj", ArgFalse, (void *) &appData.zippyAdjourn, FALSE, INVALID },
  { "-zab", ArgFalse, (void *) &appData.zippyAbort, FALSE, INVALID },
#endif

  /* [HGM] options for broadcasting and time odds */
{ "chatBoxes", ArgString, (void *) &appData.chatBoxes, !XBOARD, (ArgIniType) NULL },

WB only

{ "serverMoves", ArgString, (void *) &appData.serverMovesName, FALSE, (ArgIniType) NULL }, { "suppressLoadMoves", ArgBoolean, (void *) &appData.suppressLoadMoves, FALSE, (ArgIniType) FALSE }, { "serverPause", ArgInt, (void *) &appData.serverPause, FALSE, (ArgIniType) 15 },

Used to be private options;part of the ChessLive! broadcasting project

{ "firstAccumulateTC", ArgInt, (void *) &appData.firstAccumulateTC, FALSE, (ArgIniType) 1 }, { "secondAccumulateTC", ArgInt, (void *) &appData.secondAccumulateTC, FALSE, (ArgIniType) 1 },

This is an option for making engines handle time controls not supported by the protocol (or at least, not supporting the protocol extension that defines them), in particular multi-session TC.
It is not fully implemented yet, though.

{ "keepLineBreaksICS", ArgBoolean, (void *) &appData.noJoin, TRUE, INVALID }, { "wrapContinuationSequence", ArgString, (void *) &appData.wrapContSeq, FALSE, INVALID }, { "useInternalWrap", ArgTrue, (void *) &appData.useInternalWrap, FALSE, INVALID }, /* noJoin usurps this if set */

// [HGM] placement: put all window layouts last in ini file, but man X,Y before all others { "minX", ArgZ, (void *) &minX, FALSE, INVALID }, // [HGM] placement: to make suer auxialary windows can be placed
  { "minY", ArgZ, (void *) &minY, FALSE, INVALID },
{ "winWidth", ArgInt, (void *) &wpMain.width, TRUE, INVALID }, // [HGM] placement: dummies to remember right & bottom { "winHeight", ArgInt, (void *) &wpMain.height, TRUE, INVALID }, // for attaching auxiliary windows to them
  { "x", ArgInt, (void *) &wpMain.x, TRUE, (ArgIniType) CW_USEDEFAULT },
  { "y", ArgInt, (void *) &wpMain.y, TRUE, (ArgIniType) CW_USEDEFAULT },
{ "icsX", ArgX, (void *) &wpConsole.x, TRUE, (ArgIniType) CW_USEDEFAULT }, { "icsY", ArgY, (void *) &wpConsole.y, TRUE, (ArgIniType) CW_USEDEFAULT }, { "icsW", ArgInt, (void *) &wpConsole.width, TRUE, (ArgIniType) CW_USEDEFAULT }, { "icsH", ArgInt, (void *) &wpConsole.height, TRUE, (ArgIniType) CW_USEDEFAULT }, { "analysisX", ArgX, (void *) &junk, FALSE, INVALID }, // [HGM] placement: analysis window no longer exists { "analysisY", ArgY, (void *) &junk, FALSE, INVALID }, // provided for compatibility with old ini files
  { "analysisW", ArgInt, (void *) &junk, FALSE, INVALID },
  { "analysisH", ArgInt, (void *) &junk, FALSE, INVALID },
{ "commentX", ArgX, (void *) &wpComment.x, TRUE, (ArgIniType) CW_USEDEFAULT }, { "commentY", ArgY, (void *) &wpComment.y, TRUE, (ArgIniType) CW_USEDEFAULT }, { "commentW", ArgInt, (void *) &wpComment.width, TRUE, (ArgIniType) CW_USEDEFAULT }, { "commentH", ArgInt, (void *) &wpComment.height, TRUE, (ArgIniType) CW_USEDEFAULT },
  { "tagsX", ArgX,   (void *) &wpTags.x, TRUE, (ArgIniType) CW_USEDEFAULT },
  { "tagsY", ArgY,   (void *) &wpTags.y, TRUE, (ArgIniType) CW_USEDEFAULT },
{ "tagsW", ArgInt, (void *) &wpTags.width, TRUE, (ArgIniType) CW_USEDEFAULT }, { "tagsH", ArgInt, (void *) &wpTags.height, TRUE, (ArgIniType) CW_USEDEFAULT }, { "gameListX", ArgX, (void *) &wpGameList.x, TRUE, (ArgIniType) CW_USEDEFAULT }, { "gameListY", ArgY, (void *) &wpGameList.y, TRUE, (ArgIniType) CW_USEDEFAULT }, { "gameListW", ArgInt, (void *) &wpGameList.width, TRUE, (ArgIniType) CW_USEDEFAULT }, { "gameListH", ArgInt, (void *) &wpGameList.height, TRUE, (ArgIniType) CW_USEDEFAULT },
  /* [AS] Layout stuff */
{ "moveHistoryUp", ArgBoolean, (void *) &wpMoveHistory.visible, TRUE, (ArgIniType) TRUE }, { "moveHistoryX", ArgX, (void *) &wpMoveHistory.x, TRUE, (ArgIniType) CW_USEDEFAULT }, { "moveHistoryY", ArgY, (void *) &wpMoveHistory.y, TRUE, (ArgIniType) CW_USEDEFAULT }, { "moveHistoryW", ArgInt, (void *) &wpMoveHistory.width, TRUE, (ArgIniType) CW_USEDEFAULT }, { "moveHistoryH", ArgInt, (void *) &wpMoveHistory.height, TRUE, (ArgIniType) CW_USEDEFAULT },

{ "evalGraphUp", ArgBoolean, (void *) &wpEvalGraph.visible, TRUE, (ArgIniType) TRUE }, { "evalGraphX", ArgX, (void *) &wpEvalGraph.x, TRUE, (ArgIniType) CW_USEDEFAULT }, { "evalGraphY", ArgY, (void *) &wpEvalGraph.y, TRUE, (ArgIniType) CW_USEDEFAULT }, { "evalGraphW", ArgInt, (void *) &wpEvalGraph.width, TRUE, (ArgIniType) CW_USEDEFAULT }, { "evalGraphH", ArgInt, (void *) &wpEvalGraph.height, TRUE, (ArgIniType) CW_USEDEFAULT },

{ "engineOutputUp", ArgBoolean, (void *) &wpEngineOutput.visible, TRUE, (ArgIniType) TRUE }, { "engineOutputX", ArgX, (void *) &wpEngineOutput.x, TRUE, (ArgIniType) CW_USEDEFAULT }, { "engineOutputY", ArgY, (void *) &wpEngineOutput.y, TRUE, (ArgIniType) CW_USEDEFAULT }, { "engineOutputW", ArgInt, (void *) &wpEngineOutput.width, TRUE, (ArgIniType) CW_USEDEFAULT }, { "engineOutputH", ArgInt, (void *) &wpEngineOutput.height, TRUE, (ArgIniType) CW_USEDEFAULT },

All this Up/X/Y/H stuff is for storing window parameters in the settings file. I am not sure all mentioned windows save their position in XBoard; this is all ported from WinBoard. I don't think many people would
shed a tear if they remained undocumented. They are not meant for human use.

One final matter: now that most settings in XBoard can be set through the menu as well as through command-line options, would it still be a good idea of giving a full description of them in both places?
I would preferto not duplicate descriptions, but just refer to a single one.
As the new XBoard wants to be 'menu centered', I think the option descriptions should refer to the menus.
E.g.

-coords/-xcoords or -showCoordinates true|false
Sets, clears or specifies the value of the "show coordinates" feature controlled by {menu item reference}.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]