8 years agoLet t on final leg in Betza notation forbid checking
H.G.Muller [Tue, 7 Oct 2014 17:13:54 +0000 (19:13 +0200)]
Let t on final leg in Betza notation forbid checking

To allow approximate definition of pieces that are too difficult to
describe exactly, we can revoke their capture rights on Kings,
to prevent imagined moves that happen to threaten a King forces the
opponent to evade this imagined check, making most of his moves illegal.
Then the piece can be safely replaced by an upward-compatible one,
leaving rejection of the extra moves to the engine.

8 years agoImplement Betza hr and hr as chiral move sets
H.G.Muller [Tue, 7 Oct 2014 16:56:59 +0000 (18:56 +0200)]
Implement Betza hr and hr as chiral move sets

To easily separate right- and left-handed moves on oblique atoms
(which needs opposite use of l and r in their multi-leg continuations),
the direction sets hr and hl are added.

8 years agoPreserve other Betza mode bits on setting default modality
H.G.Muller [Tue, 7 Oct 2014 06:20:06 +0000 (08:20 +0200)]
Preserve other Betza mode bits on setting default modality

8 years agoSwitch to new Betza orth-diag conversion standard
H.G.Muller [Mon, 6 Oct 2014 18:20:00 +0000 (20:20 +0200)]
Switch to new Betza orth-diag conversion standard

The interconversion from orthogonal to diagonal atoms is now possible
for any 4-way atom, based on specification of an 'in-between' direction,
irrespective of modality. Also take backward out of default continuation

8 years agoImplement Betza t modifier for hop-own
H.G.Muller [Fri, 3 Oct 2014 08:31:47 +0000 (10:31 +0200)]
Implement Betza t modifier for hop-own

The 't' modifier will restrict any form of hopping as specified by
p or g modifiers to friendly pieces. This only works on non-final legs.

8 years agoImplement directional modifiers on KQ, and let y&g upgrade
H.G.Muller [Thu, 2 Oct 2014 17:32:45 +0000 (19:32 +0200)]
Implement directional modifiers on KQ, and let y&g upgrade

The Betza y and g modifiers now not only change range, but also upgrade
the directional capabilities of the atom to full non-degenerate 8-fold.
Directional modifiers can now be used in that symmetry too, to maximally
exploit this, and implement 4-fold pieces that make 45-degree turns.
Let oblique continuation legs also use the non-degenerate system.

8 years agoImplement Betza y modifier
H.G.Muller [Thu, 2 Oct 2014 13:19:09 +0000 (15:19 +0200)]
Implement Betza y modifier

The non-standard modifier 'y' is the spontaneous counterpart of 'g',
changing the range of the atom, and upgrading its directionality.

8 years agoImplement Betza g modifier for non-final legs
H.G.Muller [Thu, 2 Oct 2014 08:21:43 +0000 (10:21 +0200)]
Implement Betza g modifier for non-final legs

The g modifier is implemented as a p that turns a rider into the
corresponding leaper when it hops, and vice versa. This is done by
stripping off any existing range indicator, and making the range
infinite by suffixing '0' when the old range was 1 (whether implied
or explicitly written). Except that for sliders/steppers this is done
by atom-name conversion after stripping off the range. Limited range
thus in general turns into leaper (D -> D0, Dn -> D), but with FWK
W3 -> R and R3 -> W, etc.

8 years agoImplement Betza a modifier
H.G.Muller [Wed, 1 Oct 2014 13:32:14 +0000 (15:32 +0200)]
Implement Betza a modifier

This is pretty complex, and might overload the current primitive two-leg
legality testing when pieces are defined that can reach squares only in
two legs.

8 years agoImplement Betza j on W,F as skip first square
H.G.Muller [Wed, 1 Oct 2014 07:28:32 +0000 (09:28 +0200)]
Implement Betza j on W,F as skip first square

8 years agoAlways accept piece commands for Falcon and Cobra
H.G.Muller [Sat, 4 Oct 2014 19:56:14 +0000 (21:56 +0200)]
Always accept piece commands for Falcon and Cobra

The wild-card pieces Falcon and Cobra do not have any moves assigned to
them, and XBoard would accept any move for them even when legality
checking is on. So for these pieces it is always better to trust the
engine's piece definition.

8 years agoFix pieceToCharTable of Falcon Chess
H.G.Muller [Sat, 4 Oct 2014 19:52:51 +0000 (21:52 +0200)]
Fix pieceToCharTable of Falcon Chess

This variant was using the Falcon piece, but defining ID F for the
unused Lance instead.

8 years agoDon't preserve setup position on board-size change
H.G.Muller [Sat, 4 Oct 2014 17:59:13 +0000 (19:59 +0200)]
Don't preserve setup position on board-size change

Normally the setup command sent by an engine is ignored if the user
already has set up a position, to not render it impossible to do the
latter. But if the setup command orders a different board size nothing
the user has set up can possibly remain valid.

8 years agoReset move entry on stepping through game
H.G.Muller [Sat, 4 Oct 2014 17:39:06 +0000 (19:39 +0200)]
Reset move entry on stepping through game

A forward or backward step through the game after selecting a from-square
did not erase the latter, so that it became impossible to select a
from-square for an opponent move, as it would be interpreted as the
to-square for the patially entered move. This was especially annoying
with legality testing off, as the legality test there, based on the
square markings, does not reset the entry state either, but waits
until you do click a legal to-square, so that you had to attempt
moving with pieces of the side not to move to get out of this state.
Now stepping through another position will reset the move-entry state
completely, always considering the first click a from-square selection.

8 years agoFix engine-defined variant as startup
H.G.Muller [Tue, 7 Oct 2014 18:55:00 +0000 (20:55 +0200)]
Fix engine-defined variant as startup

Non-standard names were all recognized as 'normal' in InitBackend1().
Now if the -variant argument was not "normal", it is assumed to be an
engine-defined variant if we run with engine.

8 years agoFix clipping of board GTK
H.G.Muller [Tue, 7 Oct 2014 16:53:50 +0000 (18:53 +0200)]
Fix clipping of board GTK

ResizeBoardWindow now measures the with of the window dressing by
brute force, interrogating GTK both for the width of the top-level
window and the board widget, and subtracting the two.

8 years agoFix writing of Seirawan960 virginity in FEN
H.G.Muller [Wed, 8 Oct 2014 16:28:09 +0000 (18:28 +0200)]
Fix writing of Seirawan960 virginity in FEN

When variant seirawan was played with Fischer castling, only the
castling rights were written, and not the virginity of other pieces.
Now all virgin files are dumped in Shredder-FEN style.

8 years agofixed whitespace error in configure.ac for os x
Arun Persaud [Sat, 13 Sep 2014 21:33:37 +0000 (14:33 -0700)]
fixed whitespace error in configure.ac for os x

8 years agoupdate gettext configuration to not include any generated files in git
Arun Persaud [Sat, 20 Sep 2014 17:06:17 +0000 (10:06 -0700)]
update gettext configuration to not include any generated files in git

before we had a somewhat mixed setup, which seems to create problems
when a different gettext version was installed on the users machine compared
to the version used to generate the files in git. This should solve
the problem. The user will now have to generate these files using autopoint,
which we call from autogen.sh.

8 years agoConfigure XBoard for -size 49 in master settings
H.G.Muller [Sun, 28 Sep 2014 20:19:00 +0000 (22:19 +0200)]
Configure XBoard for -size 49 in master settings

Now the code for auto-sizing works, it turns out this does more harm than
good in the GTK build, as it takes maximum size that fits the screen as
initial size, and the board window then cannot be shrunk below that.
So we configure a hard -size 49 for a cold startup.

8 years agoImplement ff etc. in Betza parser
H.G.Muller [Sun, 28 Sep 2014 19:27:22 +0000 (21:27 +0200)]
Implement ff etc. in Betza parser

Dupliacated directional modifiers can be needed with oblique moves
to unambiguously specify a direction set, e.g. ffrrN.

8 years agoRename PGN Pieces tag to VariantMen
H.G.Muller [Sun, 28 Sep 2014 11:40:13 +0000 (13:40 +0200)]
Rename PGN Pieces tag to VariantMen

Following a suggestion from Steven Edwards, this indeed makes a much
clearer name. Also add code to skip the tag on reading, rather than
allowing it to end up with the 'extra tags', as the latter could lead
to duplication of the tag on subsequent saves.

8 years agoSuppress use of promo-Gold bitmaps in Tori Shogi (WB)
H.G.Muller [Sun, 28 Sep 2014 09:18:10 +0000 (11:18 +0200)]
Suppress use of promo-Gold bitmaps in Tori Shogi (WB)

In Tori Shogi the Swallow Pawn does not promote to Tokin, so the use
of a Gold General pictogram would only be confusing. So we stick to
the regular fairy bitmaps in Tori, which is recognized by the board
having 7 ranks in Shogi.

8 years agoPrevent board-size oscillations
H.G.Muller [Sun, 28 Sep 2014 08:55:10 +0000 (10:55 +0200)]
Prevent board-size oscillations

It could happen that after resize there was room for enlarging the
squares by one pixel, but that this crossed the boundary where the line
gaps also become wider, and there is no room for making both squares
and line gap. This would cause perpetual oscillations of the window size.
Resizing is now suppressed when a 1-pixel square-size increase would also
result in a line-gap increase.

8 years agoAllow use of second-row pieces for non-promoted in drop games
H.G.Muller [Sun, 28 Sep 2014 08:09:17 +0000 (10:09 +0200)]
Allow use of second-row pieces for non-promoted in drop games

Second-row pieces were automatically demoted on capture, but this
should really happen only when the piece-to-char table says it is a
shogi-promoted piece (assigned a '+' there). Pieces assigned a letter
should really stay themselves.
 PieceToNumber had to be adapted to skip '+' pieces in order to count
correctly for second-row pieces, as did the code in UserMoveEvent() that
mapped the from-square onto the piece type. (Why do we do that anyway?
The piece type was displayed on the from-square!)

8 years agoFix reset of 50-move counter on FRC castling
H.G.Muller [Fri, 26 Sep 2014 18:24:05 +0000 (20:24 +0200)]
Fix reset of 50-move counter on FRC castling

The FxR internal representation was taken a bit too seriously!

8 years agoFix abort of machine game on variant mismatch
H.G.Muller [Fri, 26 Sep 2014 18:15:33 +0000 (20:15 +0200)]
Fix abort of machine game on variant mismatch

When the second engine did not support the current variant, and we clicked
Two Machines, there was an error popup, but the Two Machines menu item
stayed checkmarked. Now we explicitly uncheck it, and switch to EditGame

8 years agoMake unsupported variant on loading 1st engine non-fatal
H.G.Muller [Fri, 26 Sep 2014 17:47:08 +0000 (19:47 +0200)]
Make unsupported variant on loading 1st engine non-fatal

Like in the startup code, when the loaded engine does not play the
currently selected variant, we now figure out what the engine does play,
and switch to that. The error message still pops up, but not non-fatal.

8 years agoPrint PGN Piece tag listing engine-defined pieces
H.G.Muller [Thu, 25 Sep 2014 21:37:24 +0000 (23:37 +0200)]
Print PGN Piece tag listing engine-defined pieces

A newly defined PGN tag is printed, which summarizes all non-standard
pieces. Black copies of identically named white pieces are suppressed.
In the future also non-standard naming should be reported here.

8 years agoAlways accept piece commands in partly supported variants
H.G.Muller [Thu, 25 Sep 2014 17:11:21 +0000 (19:11 +0200)]
Always accept piece commands in partly supported variants

Normally piece commands are ignored when legality checking is on, as
XBoard's idea of legality should obviously overrule the engine's.
In variants that are not or only partly supported, however, XBoard has
no own idea of what is legal, so it is better to take the engine's
advice than enforcing wrong rules.

8 years agoSize seek graph to also cover board rim WinBoard
H.G.Muller [Thu, 25 Sep 2014 10:29:15 +0000 (12:29 +0200)]
Size seek graph to also cover board rim WinBoard

The seek graph always used the plain board size, but in WB it is
possible to diplay a rim around the board, and the seekgraph would
then be positioned in the upper-left corner of the rim, leaving the
lower and right board edge and rim uncovered. Its size is now increased
to fill the entire window (as leaving a rim around it seems not useful).

8 years agoReparse ambiguous move under built-in rules
H.G.Muller [Thu, 25 Sep 2014 09:48:00 +0000 (11:48 +0200)]
Reparse ambiguous move under built-in rules

When a move parses as ambiguous under engine-defined piece locomotion,
we re-parse it with XBoard's native idea of the pieces, just in case
it is a move from a game that was saved without the engine having
redefined the pieces. This keeps games created before the introduction
of the 'piece' command loadable.

8 years agoPrevent multi-path moves from parsing as ambiguous
H.G.Muller [Thu, 25 Sep 2014 09:14:06 +0000 (11:14 +0200)]
Prevent multi-path moves from parsing as ambiguous

In Cylinder Chess the MovesFromString() generator might generate duplicate
moves, one wrapping, the other direct. When they were both counted as
matching the SAN input move, Disambiguate() would think it an ambiguous
move. So a move that came from the same square as the one we already
have must not be counted.

8 years agoFix cross-edge e.p. capture in Cylinder Chess
H.G.Muller [Wed, 24 Sep 2014 19:47:59 +0000 (21:47 +0200)]
Fix cross-edge e.p. capture in Cylinder Chess

ApplyMove() did not remove the e.p. victim when an edge-crossing e.p.
capture was made, because e.p. rights are only set to neighboring files
(after checking there is a Pawn there to capture). The e.p. heuristic
has now been changed to also assume e.p. on file-changing Pawn moves
that span a large number of files, assuming that these will be wrapping
moves. Eventually we should change to better e.p. logic that can be
integrated with engine-configured move generation, as the current system
would fail for any Pawn that captures more than just neighbor ranks.

8 years agoImplement Betza o modifier for cylinder boards
H.G.Muller [Wed, 24 Sep 2014 17:43:27 +0000 (19:43 +0200)]
Implement Betza o modifier for cylinder boards

8 years agoImprove virginity test for engine-defined pieces
H.G.Muller [Wed, 24 Sep 2014 15:02:37 +0000 (17:02 +0200)]
Improve virginity test for engine-defined pieces

Two squares in the board are now reserved for flags that indicate
whether back-rank pieces have been touched. This allows MovesFromString()
to accurately test virginity of these pieces, rather than having to assume
it when the piece matches that in the opening position. For other ranks
the latter test is still used, as these are normally (irreversible) Pawns,
which cannot return there (and in drop games, when they would, would again
be considered virgin enough for the purpose of double-pushing!).

8 years agoImplement Betza p and g modifiers in piece command
H.G.Muller [Wed, 24 Sep 2014 11:20:31 +0000 (13:20 +0200)]
Implement Betza p and g modifiers in piece command

8 years agoRepair piece defs with showTargetSquares off
H.G.Muller [Wed, 24 Sep 2014 06:28:40 +0000 (08:28 +0200)]
Repair piece defs with showTargetSquares off

The proxy legality checking based on marking of target square was
rejecting all moves when target squares were not highlighted.

8 years agoAllow definition of castling in piece command
H.G.Muller [Tue, 23 Sep 2014 19:53:55 +0000 (21:53 +0200)]
Allow definition of castling in piece command

Castling is defined by the O atom, with a suffix indicating the number
of steps the King must step in the direction of the corner. Kings keep
their normal castling unless overruled by this. Can currently only be
used on the variant's royal piece, as XBoard's ApplyMove() is not smart
enough to understand displacing the corner piece is implied when it is
used on other pieces.

8 years agoUpdate description of piece command in protocol specs
H.G.Muller [Tue, 23 Sep 2014 19:49:44 +0000 (21:49 +0200)]
Update description of piece command in protocol specs

8 years agoImprove SAN of Pawn moves and allow Betza e.p. definition
H.G.Muller [Tue, 23 Sep 2014 12:52:16 +0000 (14:52 +0200)]
Improve SAN of Pawn moves and allow Betza e.p. definition

The move descriptions in 'piece' commands can now use 'i' and 'n'
modifiers to define a blockable double push. ('n' only work for moves
of stride 2!) The test for initial moves now is based on comparison with
the opening position, rather than on a way-to-generous heuristic. (This
still does not prove in generak the piece did not move, though, but it
does for Pawns.) A new 'e' modifier stands for e.p. capture; to implement
this the rank and file of the e.p. square are now stored in the board.
(EP_STATUS was holding the file of the moved Pawn, which in Berolina Chess
is not the file of the e.p. square!)
 The generation of SAN moves for Pawns can now reliably distinguish between
captures and non-captures even in Berolina, when the move generator informs
it whether the move was e.p. capture.

8 years agoRetune -stickyWindows GTK
H.G.Muller [Mon, 22 Sep 2014 20:48:50 +0000 (22:48 +0200)]
Retune -stickyWindows GTK

This still does not work well, and in particular windows refuse to stick
to the top of the board window.

8 years agoFix detection of screen size GTK
H.G.Muller [Mon, 22 Sep 2014 19:59:00 +0000 (21:59 +0200)]
Fix detection of screen size GTK

A gdk call that can get the screen without there first being a window
mapped to it is used now. This fixes initial sizing of the board window
on a cold start.

8 years agoConfigure a size for the Eval Graph
H.G.Muller [Mon, 22 Sep 2014 19:57:23 +0000 (21:57 +0200)]
Configure a size for the Eval Graph

If no size for the Eval Graph window is configured in the master
settings file, the window will pop up as 2x4 pixels.

8 years agoPrevent crash on specifying non-existent texture XB
H.G.Muller [Mon, 22 Sep 2014 18:39:21 +0000 (20:39 +0200)]
Prevent crash on specifying non-existent texture XB

By setting the texture width to 0 when the texture could not be loaded,
XBoard will never attempt to draw it.

8 years agoConfigure some themes in XBoard master settings
H.G.Muller [Mon, 22 Sep 2014 18:30:50 +0000 (20:30 +0200)]
Configure some themes in XBoard master settings

The -themeNames option is set to contain some themes that could be
defined with the default pieces and textures that come with XBoard.

8 years agoRemove debug printf
H.G.Muller [Mon, 22 Sep 2014 16:48:00 +0000 (18:48 +0200)]
Remove debug printf

8 years agoControl Eval Graph with mouse
H.G.Muller [Sun, 21 Sep 2014 14:47:41 +0000 (16:47 +0200)]
Control Eval Graph with mouse

Let mousewheel control evalZoom, and right-click toggle between
normal view and differential view ('blunder graph').

8 years agoAdd extra font field to Option struct
H.G.Muller [Sun, 21 Sep 2014 14:10:19 +0000 (16:10 +0200)]
Add extra font field to Option struct

Storing the font in the textValue field was too kludgy, as this field
is already heavily used in the various Option types, for storing handles,
or defining colors and callbacks. A 'font' field is now added at the end,
so that it can be optionally initialized in the rare case it is needed.

8 years agoRepair damage done by merging with v4.7.x
H.G.Muller [Sun, 21 Sep 2014 11:44:11 +0000 (13:44 +0200)]
Repair damage done by merging with v4.7.x

8 years agoSort fail lows and fail highs below others
H.G.Muller [Sun, 21 Sep 2014 06:36:22 +0000 (08:36 +0200)]
Sort fail lows and fail highs below others

Every more recent line should always float up aove lines that were
indicated to be fail lows or fail highs through ? or ! PV suffixes.

8 years agoDescribe the new texture conventions in manual
H.G.Muller [Sat, 20 Sep 2014 10:58:32 +0000 (12:58 +0200)]
Describe the new texture conventions in manual

The exact rules for how textures are scaled in response to their
filename is described in the manual.

8 years agoForce exactly overlayed texture scaling through filename
H.G.Muller [Fri, 19 Sep 2014 08:22:14 +0000 (10:22 +0200)]
Force exactly overlayed texture scaling through filename

A filename suffix -NxM.png on a texture image will cause XBoard to scale
the image as if it were the image of a complete board of N files and M
ranks, to make the square size equal to that of the current board,
and adjust the cutting parameters such that contiguous squares are cut
out of it. (If the current board format is larger than NxM, the remaining
space will be padded with white!)
 If N=M=0, N and M are assumed to correspond to the current board size,
and the bitmap will be scaled to fit the height of the board.
 If no suffix is present, the old cut-and-tile algorithm is used. It will
be assumed the texture bitmap is intended for a single square, unless the
pathname contains a file that starts with "xq", in which case it is assumed
that the file contains a Xiangqi board.

8 years agoAllow two Pawns per file in Tori Shogi
H.G.Muller [Thu, 18 Sep 2014 21:30:09 +0000 (23:30 +0200)]
Allow two Pawns per file in Tori Shogi

When the board has 7 ranks it is assumed to be Tori Shogi, and the
requirement for maximally one Pawn per file is relaxed to two.

8 years agoTest legality even when off if engine defined pieces
H.G.Muller [Thu, 18 Sep 2014 21:08:36 +0000 (23:08 +0200)]
Test legality even when off if engine defined pieces

After reception of a piece command XBoard will mark target squares
even when legality testing is off, and now also will require the lifted
piece to land on a marked square (like when the engine highlighted them
through a highlight command).
 A problem is that this does not work for drops, as drops do not mark
target squares. So drops are always accepted. Which of course is bad
for Pawn drops. But there really is no way yet for an engine to specify
how pieces can be dropped, similar to the 'piece' command.

8 years agoFix texture scaling
H.G.Muller [Wed, 17 Sep 2014 20:32:43 +0000 (22:32 +0200)]
Fix texture scaling

8 years agoImplement engine-defined pieces
H.G.Muller [Wed, 17 Sep 2014 11:41:58 +0000 (13:41 +0200)]
Implement engine-defined pieces

When legality testing is off, XBoard now listens to 'piece' commands
to redefine its move generator. After such a piece command is received,
target-square marking also can be used when legality testing is off.
The engine keeps in charge of legality testing, though.
 Only a very basic version of Betza notation is currently understood for
the move description: mode modifiers have to appear in the order mcd,
and gpz modifiers are ignored. Multi-leg moves as in Betza 2.0 is not
implemented at all. A leading i modifier limits the moves to the first
two ranks, which is no good at all. (But XBoard does not keep track of
which pieces have moved, and this at least would work for Pawns in a
FIDE-like setup, in particular Berolina.)

8 years agoScale texture bitmaps that are not large enough
H.G.Muller [Wed, 17 Sep 2014 07:44:15 +0000 (09:44 +0200)]
Scale texture bitmaps that are not large enough

Texture bitmaps are now sized up by an integer factor to be at least
as large as the board (if they seem intended for a full XQ board, which is
assumed when they are larger than 256x256) or the square. This necessitated
the textures to be re-initialized in InitDrawingSizes whenever the window
size changes.

8 years agoIgnore color arguments not starting with #
H.G.Muller [Tue, 16 Sep 2014 17:04:19 +0000 (19:04 +0200)]
Ignore color arguments not starting with #

Old settings files from xpm-using version might still contain color
designations like 'white' or 'red'. Since Cairo would interpret these
as black, it is better to ignore them, so the default color is used.

8 years agoImplement -autoInstall option
H.G.Muller [Mon, 15 Sep 2014 13:30:40 +0000 (15:30 +0200)]
Implement -autoInstall option

When -autoInstall is a non-empty string, XBoard will scan the system's
plugin specs directories for UCI and WB protocol, to see if new engines
were added since the last settings save. If so, they are added to the
list of installed engines.
 The variants listed in the plugin-spec files are currently ignored,
but the option is already configured to install engines for all variants.

8 years agoFix typo
H.G.Muller [Sun, 14 Sep 2014 20:47:55 +0000 (22:47 +0200)]
Fix typo

8 years agoMake inlined functions static
H.G.Muller [Sun, 14 Sep 2014 19:41:04 +0000 (21:41 +0200)]
Make inlined functions static

Clang apparently chokes on non-static inline functions,
and they were not used from other files anyway.

9 years agoupdated spanish translation, added new polish translation
Arun Persaud [Wed, 10 Sep 2014 03:29:15 +0000 (20:29 -0700)]
updated spanish translation, added new polish translation

9 years agoLook for logo in engine dir first (GTK)
H.G.Muller [Sat, 13 Sep 2014 07:12:54 +0000 (09:12 +0200)]
Look for logo in engine dir first (GTK)

When setting engine logos, we look for a file logo.png in the engine
directory, before trying <enginename>.png in the -logoDir. This is useful
on OS X. Fix bug that checks for existence of -fd/sd rather than -logoDir,
when using the latter (also in Xaw).

9 years agoFix checkmarking of OS X menu items
H.G.Muller [Thu, 11 Sep 2014 21:10:59 +0000 (23:10 +0200)]
Fix checkmarking of OS X menu items

The routine MarkMenuItem() was moved to xboard.c, where it can see
the OSX-specific #defines, and calls to sync_menu_bar were added
to it, and to EnableNamendMenuItem().

9 years agoFix crash of tournament dialog GTK
H.G.Muller [Thu, 11 Sep 2014 20:48:10 +0000 (22:48 +0200)]
Fix crash of tournament dialog GTK

The font/color disambiguation of the Option.textField in Label and
ulti-line TextBox options cannot stand it if unused elements are
initialized as "" rather than NULL.

9 years agoLet OS X display dock icon
H.G.Muller [Thu, 11 Sep 2014 17:17:55 +0000 (19:17 +0200)]
Let OS X display dock icon

9 years agoFix Xaw button color error
H.G.Muller [Thu, 11 Sep 2014 10:41:50 +0000 (12:41 +0200)]
Fix Xaw button color error

The textValue field, now also used to indicate font, was used in two
places when popping up buttons, and the font patch only addressed one.

9 years agoMake SVGDIR a variable
H.G.Muller [Thu, 11 Sep 2014 08:23:42 +0000 (10:23 +0200)]
Make SVGDIR a variable

Replace all occurrences of SVGDIR in the source by svgDir, a char array
that is initialized to SVGDIR, so that it can be altered at run time.
This is needed to make portable apps. Where SVGDIR was used in string
concatenation, the code had to be re-written to use snprintf to do the
concatenation at run time, through a new function LoadIconFile.
The extension of image files used there is now made dependent on the
__APPLE__ switch, so that it can use .png in OS X (which does not seem
to understand SVG icons).

9 years agoFix warning in dead code Show
H.G.Muller [Wed, 10 Sep 2014 19:20:40 +0000 (21:20 +0200)]
Fix warning in dead code Show

9 years agoReorder variants, to comply with Polyglot book specs
H.G.Muller [Wed, 10 Sep 2014 18:49:38 +0000 (20:49 +0200)]
Reorder variants, to comply with Polyglot book specs

XBoard's variant number is used as a key to access Polyglot opening
books, and thus cannot be changed without consequences. (As it was when
we introduced ASEAN and Chu Shogi.)
  We also renamed Chu Chess to Elven Chess (under which name it is now
described on chessvariants.org).

9 years agoReserve piece command in protocol specs
H.G.Muller [Wed, 10 Sep 2014 17:52:12 +0000 (19:52 +0200)]
Reserve piece command in protocol specs

9 years agosuppress Alien Edition standard variants
H.G.Muller [Wed, 10 Sep 2014 16:54:45 +0000 (18:54 +0200)]
suppress Alien Edition standard variants

Variants that are standard in the Alien Edition should not be
recognized as engine-defined variants: the engines that announce
them will not respond with the required setup command, so allowing
the user to select them just leads to trouble.

9 years agoFix SetWidgetFont GTK
H.G.Muller [Wed, 10 Sep 2014 11:51:44 +0000 (13:51 +0200)]
Fix SetWidgetFont GTK

This was testing for an empty font spec in the wrong way, with as a side
effect that some pointers to font strings would be interpreted as colors.

9 years agoUpdate protocol specs
H.G.Muller [Wed, 10 Sep 2014 13:56:59 +0000 (15:56 +0200)]
Update protocol specs

9 years agoMerge branch 'v4.7.x' into master
Arun Persaud [Wed, 10 Sep 2014 03:15:45 +0000 (20:15 -0700)]
Merge branch 'v4.7.x' into master


9 years agoLet message field and button bar use GTK -messageFont
H.G.Muller [Tue, 9 Sep 2014 19:43:39 +0000 (21:43 +0200)]
Let message field and button bar use GTK -messageFont

The -messageFont spec (using the default coordFont pixel size, like the
others) is now used to modify the fonts of message field and buttons
in the button bar. They pass a pointer to the appData font variable in
their Option's textField. This conflicts with the use of this field in
buttons for specifying a color, as done in the New Variant buttons.
This is resolved by checking if the first byte of the pointed-to value
is a #. The Xaw version must ignore the textField if it does not
specify a color.

9 years agoFix GTK fonts
H.G.Muller [Tue, 9 Sep 2014 18:51:54 +0000 (20:51 +0200)]
Fix GTK fonts

9 years agoUse coordFont default pixel size for other fonts
H.G.Muller [Tue, 9 Sep 2014 17:57:52 +0000 (19:57 +0200)]
Use coordFont default pixel size for other fonts

The message-font is way too large for the dialogs. A better solution
would be to redo the entire table of SIZE_DEFAULTS in xboard.h, as
this file is front-end-specific anyway.

9 years agoUse -gameListFont in Game List
H.G.Muller [Tue, 9 Sep 2014 17:39:50 +0000 (19:39 +0200)]
Use -gameListFont in Game List

Not implemented in a very generic way, but hacked into the code that
added the handler. There aren't many other listboxes that would need
adjustable font.

9 years agoFix Chat window for Xaw build
H.G.Muller [Tue, 9 Sep 2014 14:49:18 +0000 (16:49 +0200)]
Fix Chat window for Xaw build

The ICS output field and Hide button are removed from the ICS Interaction
window, to make it similar to the old Chat window. This required adding
some tests in the handlers of this window, to prevent segfaults due to
accessing it.

9 years agoFix infinite-regression problem on OS X
H.G.Muller [Tue, 9 Sep 2014 13:53:29 +0000 (15:53 +0200)]
Fix infinite-regression problem on OS X

Apparently the OpenFile handler can already be called during
gtkosx_application_ready (or gtk_signal_connect), so we have to make
sure 'suppress' is set before we call those.

9 years agoCorrect for .Xresources form->paneA renaming in manual
H.G.Muller [Tue, 9 Sep 2014 08:47:41 +0000 (10:47 +0200)]
Correct for .Xresources form->paneA renaming in manual

In the Xaw build the name of the form widget of dialog.layout.form...
hierarchy was changed to paneA, paneB, ... when allowing multi-pane
dialogs through the Break Option (such as the Engine Output window).

9 years agoUse GTK fonts in Engine Output and Move History
H.G.Muller [Tue, 9 Sep 2014 08:36:42 +0000 (10:36 +0200)]
Use GTK fonts in Engine Output and Move History

9 years agoInclude some conditional OS X fixes
H.G.Muller [Mon, 8 Sep 2014 18:42:11 +0000 (20:42 +0200)]
Include some conditional OS X fixes

DATADIR must be corrected to ~~ in the OS X app, and the info command
must be started in a different way.

9 years agoFix WB DoEvents error
H.G.Muller [Mon, 8 Sep 2014 18:12:08 +0000 (20:12 +0200)]
Fix WB DoEvents error

9 years agoLimit auto-extending to click on first move of PV
H.G.Muller [Mon, 8 Sep 2014 17:06:35 +0000 (19:06 +0200)]
Limit auto-extending to click on first move of PV

Even when auto-exted on clicks on the tail of a PV will no longer cause
any moves to be added to the game. Only clicks on or before the first
move can do that now.

9 years agoAnimate multi-leg in auto-play and forward event
H.G.Muller [Mon, 8 Sep 2014 14:20:26 +0000 (16:20 +0200)]
Animate multi-leg in auto-play and forward event

Replaying multi-leg moves is now also done by animating both legs.
In addition, the highlights are set on final and intermediate square,
rather than from-square.
(There seems to be a great deal of code duplication here. Why doesn't
AutoPlayOneMove simply call ForwardInner?)

9 years agoFix key bindings for non-menu functions
H.G.Muller [Mon, 8 Sep 2014 12:45:51 +0000 (14:45 +0200)]
Fix key bindings for non-menu functions

The accelerator keystrokes for next game, previous game and debug mode,
which don't have menu items, and are grouped in the menu table 'noMenu',
were not treated in the building of the translation table, as 'noMenu'
does not occur on the menu bar. An extra iteration is done now to
treat this menu group.

9 years agoFix Xaw key bindings
H.G.Muller [Mon, 8 Sep 2014 12:24:59 +0000 (14:24 +0200)]
Fix Xaw key bindings

The routine to automatically construct the translation table for
accelerator keys did not respect the rule that more specific keystrokes
(like :Meta<Key>Home:) have to be defined before more general ones
(like :<Key>Home:). As a result Alt+Home would activate the Revert
item, intended for plain Home.

9 years agoDefine default font names
H.G.Muller [Mon, 8 Sep 2014 12:20:08 +0000 (14:20 +0200)]
Define default font names

9 years agoFix MSVC problems
H.G.Muller [Mon, 8 Sep 2014 07:25:18 +0000 (09:25 +0200)]
Fix MSVC problems

Book.c did not include config.h, and thus missed the redefinition of
snprintf (which is not known in MSVC). The use of 'inline' in parser.c
also needed an MSVC redefinition, now added to winboard/config.h.

9 years agoFix GTK font patch
H.G.Muller [Mon, 8 Sep 2014 07:22:55 +0000 (09:22 +0200)]
Fix GTK font patch

9 years agoReplace strcasecmp by StrCaseCmp
H.G.Muller [Sun, 7 Sep 2014 21:35:22 +0000 (23:35 +0200)]
Replace strcasecmp by StrCaseCmp

The MicroSoft compiler does not know strcasecmp, so we better use
our own function for this everywhere.

9 years agoLet GTK build pay attention to font arguments
H.G.Muller [Sun, 7 Sep 2014 21:28:29 +0000 (23:28 +0200)]
Let GTK build pay attention to font arguments

Multi-line text edits now use the initial value of the Option.textValue
field as a pointer to a (char*) holding a font name, to be used for
the text displayed in it. (After which they overwrite the field with
the textView handle.) The font options -tagsFont, -commentFont, icsFont,
-moveHistoryFont and -gameListFont are now activated in the GTK build,
to control the corresponding memos.

9 years agoFix auto-display comment option in General Options
H.G.Muller [Sun, 7 Sep 2014 11:58:15 +0000 (13:58 +0200)]
Fix auto-display comment option in General Options

This options had the same ID as auto-Queen, making it ignored.

9 years agoCall DoEvents during time-consuming operations
H.G.Muller [Sun, 7 Sep 2014 11:43:48 +0000 (13:43 +0200)]
Call DoEvents during time-consuming operations

Processing of a game file for reading it, searching positions, saving
selected games or creating a book from them can take minutes. To keep
the application responsive during that time, the main loops of those
tasks calls DoEvents(). A possible risk is that the user can now do
too much, and will initiate actions that interfere with the tast in

9 years agoFix GameListHighlight WB
H.G.Muller [Sun, 7 Sep 2014 11:32:49 +0000 (13:32 +0200)]
Fix GameListHighlight WB

The routine to highlight a game line in the Game List listbox of WinBoard
used an extremely inefficient linear search to find the game amongst the
selected games. This has now been replaced by bisection, after finding
an upper limit to the number of entries in the listbox by doubling
a trial size.

9 years agoProvide DoEvents function in front-ends
H.G.Muller [Sun, 7 Sep 2014 10:10:50 +0000 (12:10 +0200)]
Provide DoEvents function in front-ends

A routine to process all pending events in a non-blocking way is now
provided in the Xaw, GTK+ and WinBoard front-ends, so that time-consuming
tasks (such as PGN loading or opening-book creation) can call it to keep
the user control over the application alive.

9 years agoFix syntax error in bitbase code
H.G.Muller [Sat, 6 Sep 2014 21:13:01 +0000 (23:13 +0200)]
Fix syntax error in bitbase code