4 years agoEnlarge background of startup message
H.G.Muller [Tue, 5 Apr 2016 19:05:11 +0000 (21:05 +0200)]
Enlarge background of startup message

Because of rounding of the character size the message width exceeded
the background for some square sizes.

4 years agoAdapt clock and message font after board-window sizing
H.G.Muller [Tue, 5 Apr 2016 18:23:12 +0000 (20:23 +0200)]
Adapt clock and message font after board-window sizing

The clock and message font are now adapted to the new -boardSize value
determined after sizing of the board window. When a valid font for the
new size was already available (e.g. read from the settings file), it
uses that. If not it uses the hard-coded default font name. In both
cases a %d in the name is expanded based on the size-table indication
for that font. This makes the clock font adpat even without prior history.

4 years agoPrevent message text widening window GTK
H.G.Muller [Tue, 5 Apr 2016 18:19:21 +0000 (20:19 +0200)]
Prevent message text widening window GTK

Removing the size request from the label widget of the message field
made the width of this field grow with the text displayed in it, and
with it the entire board window. This could be prevented by setting
an ellipsize mode for it.

4 years agoPick -boardSize on window width rather than square size
H.G.Muller [Tue, 5 Apr 2016 16:52:32 +0000 (18:52 +0200)]
Pick -boardSize on window width rather than square size

For boards with other than 8 files the squares will be scaled different
from what the sizeDefaults say, so that the font and menu clipping
determined by the latter will match the total board width. We now pick
the boardSize after sizing such that popup with an 8-wide board next time
would reproduce the board width.

4 years agoAdjust menu-text clipping to square size
H.G.Muller [Tue, 5 Apr 2016 16:40:05 +0000 (18:40 +0200)]
Adjust menu-text clipping to square size

After window sizing has adjusted the square size the text on the menu
bar are now clipped to a length that would make the menu bar not exceed
the width of the board, similar to what is done at startup.

4 years agoMake user-adjusted board size quasi-persistent (GTK)
H.G.Muller [Tue, 5 Apr 2016 14:49:12 +0000 (16:49 +0200)]
Make user-adjusted board size quasi-persistent (GTK)

After adjusting the board-window size the newly calculated square size
will be used to derive a new -boardSize for saving in the settings file,
by rounding it down to the nearest standard size. (But the size actually
used for display will not be rounded!) This will cause the board to pop
up with approximately the same size next time. The remembered initial
square size will also be adapted to the rounded value, so that the fonts
will start to apply to the new -boardSize as well on saving settings.
This will only be done if the old -boardSize value did not contain
commas (meaning it specified more than just square size).

4 years agoUnlock width requests in board window GTK
H.G.Muller [Tue, 5 Apr 2016 14:36:15 +0000 (16:36 +0200)]
Unlock width requests in board window GTK

The message field and clocks had a specified width to force them as
wide as the board irrespective of their text content. This prevented
the user to size the board window below the initial width. The size
requests are now removes after initial pop up, as they already were
for Graph widgets. This means the width of the window can now be
decreased, although we quickly run into the point where the texts
on clock or menu bar prevent further shrinking. (Which could only
be prevented by clipping the menu texts more, or decreasing the clock

4 years agoAdjust window height after clock-font change
H.G.Muller [Tue, 5 Apr 2016 12:32:54 +0000 (14:32 +0200)]
Adjust window height after clock-font change

A routine LockBoardSize are added, and called to protect the board's
Graph widget from absorbing the height change pf clock and message field.
Enlarging these now forces the top-level window to expand, and after the
change we try to reduce this window size to tightly fit the board to
squeeze out empty area after shrinking.

4 years agoFix help clicks in Engine Settings dialogs
H.G.Muller [Mon, 4 Apr 2016 10:04:36 +0000 (12:04 +0200)]
Fix help clicks in Engine Settings dialogs

A previous patch had broken recognition of the .IX Item "..." lines.

4 years agoIgnore stderr when reading from man command
H.G.Muller [Mon, 4 Apr 2016 10:00:57 +0000 (12:00 +0200)]
Ignore stderr when reading from man command

BufferCommandOutput was using StartChildProcess also used for engines,
which combines the output from stdout and stderr on the pipe. On FreeBSD
"man -w" produces spurious error messages, however, which would append
to the path of the man file. To work around this we now use popen()
to collect the output of the man command during help clicks.

4 years agoSilence Clang warnings
H.G.Muller [Mon, 4 Apr 2016 08:53:26 +0000 (10:53 +0200)]
Silence Clang warnings

The assignment of the variant number to appData.variant was a real bug.
The signedness of EP_STATUS looked like one, but seemed to work in practice.

4 years agoUpdate nl.po Translation
Joshua Pettus [Wed, 13 Apr 2016 18:22:35 +0000 (14:22 -0400)]
Update nl.po Translation

4 years agoUpdate es.po translation
Joshua Pettus [Sun, 10 Apr 2016 12:32:47 +0000 (08:32 -0400)]
Update es.po translation

4 years agoUpdate de.po translation
Joshua Pettus [Wed, 6 Apr 2016 21:29:37 +0000 (17:29 -0400)]
Update de.po translation

4 years agoUpdate fr.po translation
Joshua Pettus [Wed, 6 Apr 2016 03:59:50 +0000 (23:59 -0400)]
Update fr.po translation

4 years agoUpdate zh_CN.po translation
Joshua Pettus [Tue, 5 Apr 2016 19:11:25 +0000 (15:11 -0400)]
Update zh_CN.po translation

4 years agoUpdate uk.po translation
Joshua Pettus [Mon, 4 Apr 2016 17:41:23 +0000 (13:41 -0400)]
Update uk.po translation

4 years agonew developer release; updated po/pot
Arun Persaud [Sun, 3 Apr 2016 20:55:34 +0000 (13:55 -0700)]
new developer release; updated po/pot

4 years agoStart implementing rights control in Edit Position mode
H.G.Muller [Sun, 3 Apr 2016 19:25:31 +0000 (21:25 +0200)]
Start implementing rights control in Edit Position mode

Clicking on an already selected Rook or King will toggle its virginity,
displaying the new state in the message field.

4 years agoFix erroneous use of @itemx
H.G.Muller [Sun, 3 Apr 2016 14:28:42 +0000 (16:28 +0200)]
Fix erroneous use of @itemx

The offending @itemx directives were changed to @item. This does mean
an unwanted empty line will appear above the corresponding headers.

4 years agoSave font settings based on initial square size
H.G.Muller [Sun, 3 Apr 2016 08:23:49 +0000 (10:23 +0200)]
Save font settings based on initial square size

Font settings were saved by the square size as it was at the time of
saving, which could have been altered compared to the reading of the
fonts from the settings file by interactive sizing of the window, or
by switching to a variant with other board dimensions. Now the initial
square size is remembered and used for this.
BEWARE: we might want to undo this when window sizing would affect font
selection, rather than just sizing the board.

4 years agoLet color-pickers start at current color
H.G.Muller [Sat, 2 Apr 2016 17:12:22 +0000 (19:12 +0200)]
Let color-pickers start at current color

4 years agoUse GTK color picker instead of R, G, B and D buttons
H.G.Muller [Fri, 1 Apr 2016 20:01:40 +0000 (22:01 +0200)]
Use GTK color picker instead of R, G, B and D buttons

By an awful hack in the generic dialog constructor ever Button Option
with the name R, G or B is now completely ignored, while Buttons with
name D will be replaced by GtkColorButtons. Instead of catching the
"clicked" signal these will respond to the "color-set" signal, invoking
a handler private to the GTK front end, which will set the color text
and colorof the reset button as the platform-independent handler of the
RGBD buttons would normally have done.
Unfortunately this had to use deprecated GTK2 stuff, as the recommended
GTK3 equivalents are not understood on Ubuntu 10.04.

4 years agoUse the official GTK font selector
H.G.Muller [Fri, 1 Apr 2016 14:34:15 +0000 (16:34 +0200)]
Use the official GTK font selector

A gtk_font_button is now put in the Fonts dialog to allow selection
of a general font. The individual window fonts got a button marked *
to assign this font to them. To implement the selector button some
kludgy code had to be added in the generic dialog constructor, to
recognize these Button Options by name, and use the special GTK
widget to implement them, or assign an unusual callback.

4 years agoDescribe Fonts dialog in texi file
H.G.Muller [Fri, 1 Apr 2016 09:13:27 +0000 (11:13 +0200)]
Describe Fonts dialog in texi file

4 years agoSilence warning due to missing prototype
H.G.Muller [Fri, 1 Apr 2016 08:30:51 +0000 (10:30 +0200)]
Silence warning due to missing prototype

4 years agoFix translation of dialog texts GTK
H.G.Muller [Fri, 1 Apr 2016 08:28:22 +0000 (10:28 +0200)]
Fix translation of dialog texts GTK

When using the Option names during the creation of GTK widgets,
the gettext macro _() was not applied to them, so they remained
untranslated even though they were marked with N_() in the Option

4 years agoFix Xaw for font damage
H.G.Muller [Fri, 1 Apr 2016 08:19:29 +0000 (10:19 +0200)]
Fix Xaw for font damage

A dummy for ApplyFont is added in the Xaw front end to allow compiling it,
and the Fonts dialog refuses to pop up when it recognizes an X-font setting
for the message font, with an apology.

4 years agoSilence warnings
H.G.Muller [Fri, 1 Apr 2016 08:08:15 +0000 (10:08 +0200)]
Silence warnings

4 years agoReplace coord font control for ICS font control
H.G.Muller [Fri, 1 Apr 2016 07:50:46 +0000 (09:50 +0200)]
Replace coord font control for ICS font control

In the Fonts the control to set the coord font is removed, as the Cairo
version currently ignores the -coordFont setting. Instead a control to
set the font in the ICS Console is added. As the fonts there are controlled
by tags, and would ignoe the global font setting of the widget, the font
tag is redefined through a kludgy call of AppendColorized with a NULL
string as text. This is now interpreted as a signalfor recreating the font
tag based on the current icsFont, which will then only be applied to
future messages.

4 years agoLet font entries show preview of their own setting
H.G.Muller [Fri, 1 Apr 2016 07:13:51 +0000 (09:13 +0200)]
Let font entries show preview of their own setting

The font settings are now applied to the text entries in the Fonts dialog
that control them, at popup of the dialog as well as when changing them
through the buttons.

4 years agoAdd Fonts dialog
H.G.Muller [Thu, 31 Mar 2016 22:46:37 +0000 (00:46 +0200)]
Add Fonts dialog

A dialog is added to set the various window fonts, either by typing or by
operating buttons for Bold, Italic, or adjusting the point size.

4 years agoAdd headers for <<, <, > and >> buttons in texi file
H.G.Muller [Tue, 29 Mar 2016 19:23:41 +0000 (21:23 +0200)]
Add headers for <<, <, > and >> buttons in texi file

4 years agoFix help search
H.G.Muller [Tue, 29 Mar 2016 19:20:51 +0000 (21:20 +0200)]
Fix help search

The help search was ignoring the last character of the searched string.
Which almost neven mattered, except when the searched string was only
1 or 2 characters, like for the buttons in the button bar.

4 years agoFix disambiguation for one-click moving
H.G.Muller [Tue, 29 Mar 2016 18:20:54 +0000 (20:20 +0200)]
Fix disambiguation for one-click moving

The test in the DisambiguateCallback to ignore duplicate moves (as
sometimes generated by Betza descriptions) was only testing for the
same from square. This is good enugh if the to-square is always given
(as in SAN), so that moves with different to-square would always be
rejected anyway. But to determine if a piece has only a single move
we disambiguate with unknown to-square. So all moves but the first
of a piece would be ignored, making it always pass the only-move test.
We now test both from- and to-square, and only ignore moves that
have both of these equal to that of an already matching move.

4 years agoFix exposing of premove highlight and move exclusion XB
H.G.Muller [Tue, 29 Mar 2016 14:33:30 +0000 (16:33 +0200)]
Fix exposing of premove highlight and move exclusion XB

Now that drawHighlights does not trigger an expose event itself, it is
essiential that DrawPosition is called after every SetPremoveHighlight()
call. But it wasn't after entering a premove, and after a drag-drop move
exclusion the old position was not redrawn at all, leaving the dragged
piece 'floating'.

4 years agoFix erasing of premove highlights XB
H.G.Muller [Tue, 29 Mar 2016 14:30:50 +0000 (16:30 +0200)]
Fix erasing of premove highlights XB

The to-square premove highlight was not marked for erasure (but
the from-square was marked twice if the to-square higlight  changed),
leading to accumulation of highlighted squares during PV walking.

4 years agoDescribe New Shuffle dialog item by item in texi file
H.G.Muller [Mon, 28 Mar 2016 20:31:13 +0000 (22:31 +0200)]
Describe New Shuffle dialog item by item in texi file

4 years agoFix New Shuffle Game dialog
H.G.Muller [Mon, 28 Mar 2016 20:24:20 +0000 (22:24 +0200)]
Fix New Shuffle Game dialog

The insertion of the Fischer-castling option had broken the operation
of the 'randomize' and 'pick fixed' buttons.

4 years agoDescribe -epd option in texi file
H.G.Muller [Mon, 28 Mar 2016 19:56:32 +0000 (21:56 +0200)]
Describe -epd option in texi file

4 years agoDescribe divide-by-60 option of TC dialog in texi file
H.G.Muller [Mon, 28 Mar 2016 19:44:13 +0000 (21:44 +0200)]
Describe divide-by-60 option of TC dialog in texi file

4 years agoSuppress participation of second engine in EPD mode
H.G.Muller [Mon, 28 Mar 2016 19:37:52 +0000 (21:37 +0200)]
Suppress participation of second engine in EPD mode

Starting the second engine, and initializng it for the next game in
TwoMachineEvent() is now suppressed in EPD mode, so that the latter
even works with a non-existent second engine.

4 years agoAlso copy -sd from -fd when no second engine defined
H.G.Muller [Mon, 28 Mar 2016 07:56:38 +0000 (09:56 +0200)]
Also copy -sd from -fd when no second engine defined

If the second engine defaults to the first, and the first needs to
be run in a specific directory, the second engine would not start
if we do not copy its directory too.

4 years agoOnly let second engine default to first when of same type
H.G.Muller [Sun, 27 Mar 2016 16:17:52 +0000 (18:17 +0200)]
Only let second engine default to first when of same type

When the first engine is UCI, making the second engine equal to the
first without setting the corresponding protocol flag, is a certain
recipe for causing trouble. So copy the flag too.

4 years agoChange EPD reporting
H.G.Muller [Sun, 27 Mar 2016 15:27:30 +0000 (17:27 +0200)]
Change EPD reporting

The individual positions now get "time: move" printed when solved,
and "move?" or "move???" when not solved (the latter when it was an
avoid move). The total time is now reported also, at the end.

4 years agoClear total solving time at start of match
H.G.Muller [Sun, 27 Mar 2016 11:21:52 +0000 (13:21 +0200)]
Clear total solving time at start of match

When multiple EPD suites are launched interactively, the time should be
calculated separately for each of them.

4 years agoAllow a list of best moves in EPD
H.G.Muller [Sun, 27 Mar 2016 10:59:36 +0000 (12:59 +0200)]
Allow a list of best moves in EPD

All characters upto a semicolon (rather than space) are now read as bestMove
string. For checking the correctness of a solution all moves in this string
are parsed and compared.

4 years agoInternationalize EPD messages
H.G.Muller [Sun, 27 Mar 2016 10:02:01 +0000 (12:02 +0200)]
Internationalize EPD messages

4 years agoPrint average solving time of EPD suite
H.G.Muller [Sun, 27 Mar 2016 09:58:10 +0000 (11:58 +0200)]
Print average solving time of EPD suite

The number of good solutions and average thinking time on them are
now printed in the 2nd engine-output pane.

4 years agoFix determination of EPD solving time
H.G.Muller [Sun, 27 Mar 2016 09:22:41 +0000 (11:22 +0200)]
Fix determination of EPD solving time

Repeating an already found solution would increase the solving time
like the repetition was the first good solution.

4 years agoAdd more EPD code
H.G.Muller [Sat, 26 Mar 2016 22:35:51 +0000 (23:35 +0100)]
Add more EPD code

The -epd option now causes color assignment such that the first engine
plays all moves. Extraction of the bm field from the EPD is fixed,
and clearing of the second engine-output pane is suppressed.

4 years agoAdd -analysisBell option to use move sound in analysis mode
H.G.Muller [Thu, 24 Mar 2016 22:46:01 +0000 (23:46 +0100)]
Add -analysisBell option to use move sound in analysis mode

The persistent integer option -analysisBell can be used to let the
move sound play in analysis mode for every PV that arrives after the
dely (in seconds) it specifies has elapsed since the current analysis
search started.

4 years agoFix crash on loading variant engine after changing variant
H.G.Muller [Thu, 24 Mar 2016 16:25:44 +0000 (17:25 +0100)]
Fix crash on loading variant engine after changing variant

The New Variant dialog did not store the variant name (and in fact
several other option values, such as nick names) in allocated memory,
but just by pointing to it, which made XBoard crash when the options
were parsed again (as part of an engine load), and it tried to free()
the old value.

4 years agoFix variant switch on engine load
H.G.Muller [Thu, 24 Mar 2016 15:15:47 +0000 (16:15 +0100)]
Fix variant switch on engine load

When an engine was installed with an engine-defined variant, selecting
that engine through the Load Engine dialog did not properly switch to
the intended variant. Now doing this at the start of a game forces an
extra New Game event. This event now also remembers the name of any
unknown variant, in the hope the engine will define it.

4 years agoDescribe Board Options dialog in texi file
H.G.Muller [Thu, 24 Mar 2016 13:40:06 +0000 (14:40 +0100)]
Describe Board Options dialog in texi file

The Board Options dialog is described item by item, so that the help
clicks on it will work.

4 years agoReorganize texi file
H.G.Muller [Wed, 23 Mar 2016 21:54:27 +0000 (22:54 +0100)]
Reorganize texi file

For the help clicks to work universaly, it is necessary that all dialog
items are described separately, with headers exactly equal to the label
they have in the dialog. This is a first step in that direction.

4 years agoAllow help-clicks on Label Options with linefeeds
H.G.Muller [Wed, 23 Mar 2016 19:25:40 +0000 (20:25 +0100)]
Allow help-clicks on Label Options with linefeeds

Some of the LabelOptions in dialogs do have linefeeds. (In particular,
those in the Load Options dialog.) So we allow help clicks on them,
but add linefeed with the termination characters. Except that a leading
linefeed will be clipped off.

4 years agoMake sizing more robust (GTK)
H.G.Muller [Wed, 23 Mar 2016 19:16:24 +0000 (20:16 +0100)]
Make sizing more robust (GTK)

On sizing we now do not immediately replace the buffer canvas, but set
a flag in the Graph Option to indicate the canvas is invalid. Instead
of taking the canvas handle from a global variable (csBoardWindow) we
now obtain it in every drawing call from a function, which first tests
if the canvas is still valid. If it is not, we replace it by one of
the size specified in the Option (which was obtained from the window
size the moment the flag was set).
 The GraphExpose requests now bypass the general GraphEventProc, by
calling the drawing of the exposed area (which was relocated to a
separate function) directly. This avoids the overhead of checking for
resizing through requesting the window geometry.

4 years agoImprove behavior of secondary board on sizing main window
H.G.Muller [Wed, 23 Mar 2016 10:07:43 +0000 (11:07 +0100)]
Improve behavior of secondary board on sizing main window

Resizing the main window now immediately orders corresponding resizing
of the secondary board window, plus an immediate redraw, rather than
waiting for a move to occur on that board.

4 years agoPrevent FICS bell character fro printing in ICS Console XB
H.G.Muller [Tue, 22 Mar 2016 21:37:24 +0000 (22:37 +0100)]
Prevent FICS bell character fro printing in ICS Console XB

FICS sends bell characters (ascii 7) at the start of many messages.
We now strip a leading bell off the message before appending it to
the text memo of the ICS Console, and ignore the message altogether
if it was just bell + linefeed (to prevent each move of an observed
game adding an empty line).

4 years agoFix erasing and exposing of arrow on secondary board
H.G.Muller [Tue, 22 Mar 2016 19:59:51 +0000 (20:59 +0100)]
Fix erasing and exposing of arrow on secondary board

For the second board the damage flags set for exposing a freshly drawn
arrow are left for the next draw to erase that arrow again.

4 years agoRemove debug printf
H.G.Muller [Tue, 22 Mar 2016 14:40:28 +0000 (15:40 +0100)]
Remove debug printf

4 years agoPop up warning when engine manual is not available
H.G.Muller [Tue, 22 Mar 2016 14:38:00 +0000 (15:38 +0100)]
Pop up warning when engine manual is not available

Help clicks on the engine dialog pop up a warning when the manual is
not found. It seems useful to alert the user that this info has to
come from the manual of the engine' rather than XBoard's.

4 years agoAdd -men option for changing piece moves
H.G.Muller [Tue, 22 Mar 2016 14:10:43 +0000 (15:10 +0100)]
Add -men option for changing piece moves

A volatile string option -men allows the user to change the moves of
the pieces from the command line similar to what the VariantMen tag
does from a PGN file. Using the New Variant dialog resets the option.

4 years agoAdd -fen option
H.G.Muller [Tue, 22 Mar 2016 13:56:10 +0000 (14:56 +0100)]
Add -fen option

A volatile string option -fen can now be used to set the initial position
of the initial variant through the command line, removing the need to
prepare a position file for this. Otherwise the effect should be the same
as when using -lpf: New games will be started from the specifoed  positon
until the New Variant dialog is used. The position is 'auto-sizing', i.e.
the FEN is used to set the board geometry as well.

4 years agoMake startup announcement self-disappearing
H.G.Muller [Tue, 22 Mar 2016 11:04:12 +0000 (12:04 +0100)]
Make startup announcement self-disappearing

The startup message is now configurable through an option -startupMessage,
and the master config file sets this to announce the help clicks.
The message can contain multiple lines. The display of lines that are a
sub-string of the option -messageSuppress is suppressed, however.
Using a help-click sets this latter option to the help-click announcement,
so that people who have used help clicks won't see this message anymoe.
Displaying the startup message is now only considered on board draws
that ordered a full repaint.

4 years agoForget piece redefinitions before loading game
H.G.Muller [Tue, 22 Mar 2016 09:36:09 +0000 (10:36 +0100)]
Forget piece redefinitions before loading game

The effect of a VariantMen tag in a previous game of the same file
was also applied to later games that did not have such a tag.

4 years agoPrevent crash on loading empty game file
H.G.Muller [Tue, 22 Mar 2016 08:41:44 +0000 (09:41 +0100)]
Prevent crash on loading empty game file

The parser code is made resistant to loading a file with 0 characters in it.

4 years agoSilence warning WB
H.G.Muller [Mon, 21 Mar 2016 22:50:46 +0000 (23:50 +0100)]
Silence warning WB

No prototype for SendToICS was in a sufficiently shared header.

4 years agoFix replay of multi-leg move
H.G.Muller [Mon, 21 Mar 2016 22:44:29 +0000 (23:44 +0100)]
Fix replay of multi-leg move

Replaying multi-leg moves made the moving piece reappear on the
from-square during continuation legs in WinBoard.

4 years agofix2
H.G.Muller [Mon, 21 Mar 2016 22:39:40 +0000 (23:39 +0100)]

4 years agofix
H.G.Muller [Mon, 21 Mar 2016 22:37:24 +0000 (23:37 +0100)]

4 years agoImplement 3-leg animation in WinBoard
H.G.Muller [Mon, 21 Mar 2016 21:30:00 +0000 (22:30 +0100)]
Implement 3-leg animation in WinBoard

Move animation in WinBoard now also pays attention to the kill2 square.
Besides a bug was fixed that made the animated piece re-appear on the
from-square during the second leg, and the victimes are made to disappear
when the animated piece passes over them.

4 years agoMove dataDir definition to args.h so WB can also use it
H.G.Muller [Mon, 21 Mar 2016 20:51:50 +0000 (21:51 +0100)]
Move dataDir definition to args.h so WB can also use it

4 years agoFix exposure of square highlights
H.G.Muller [Mon, 21 Mar 2016 19:24:06 +0000 (20:24 +0100)]
Fix exposure of square highlights

The exposure of highlighted squares assumed the line gap was 1 pixel,
and thus failed for wider grid lines.

4 years agoFix built-in Lion move
H.G.Muller [Mon, 21 Mar 2016 12:16:46 +0000 (13:16 +0100)]
Fix built-in Lion move

The 3-leg patch had uncovered a latent bug in the built-in move generation
for Lions/Falcons/Eagles, which would qualify moves as FirstLeg even when
the kill-square was already set.

4 years agoRepair flashing of moved piece (XB)
H.G.Muller [Mon, 21 Mar 2016 11:25:02 +0000 (12:25 +0100)]
Repair flashing of moved piece (XB)

The flashing was not working (at least in GTK), because the redraw of
the square needed even processing to show something. So the draw/erase
loop that does the flashing needs to call DoEvents() to make things
visible. This however could lead to recursive processing of LeftClick,
as the press of a click-click move already enters the move and starts
the flashing, so that the release usually comes before the press
processing has finished. Which would cause it to be interpreted as
a second move identical to the first. A static flag inside LeftClick
now makes it ignore clicks during flashing, which is just what we had
to do with the release anyway. Flashing should be suppressed during
sweep-selection under-promotion.

4 years agoStreamline XBoard board drawing
H.G.Muller [Mon, 21 Mar 2016 10:33:55 +0000 (11:33 +0100)]
Streamline XBoard board drawing

XBoard was drawing in a very inefficient way. To improve efficiency
alteration of highlights will not immediately be exposed, but be
marked as damage so that a subsequent DrawPosition call will show them.
Squares touched by a to-be-erased arrow will be treated likewise.
The drawing now has three passes: repairing damage (which erases
highlights and arrow), emptying the from-square, and drawing new
pieces and highlights.

4 years agoImprove board drawing
H.G.Muller [Mon, 21 Mar 2016 10:14:54 +0000 (11:14 +0100)]
Improve board drawing

The erasing of target-square markers could lead to flashing of the
moved piece. It was also ugly when the piece was slipped under a marker.
The actual display of the marker change on erasing can now be deferred
to a later position draw, and this is used when erasing after a drag-drop
move to do it after the move was accepted (so the piece would not be
flashed on the from-square, but still displayed without marker on it
after the drop). For click-click the erasure is shown before animation
starts. A problem with showing deselection when target-square marking
was off is now also fixed.

4 years agoCleanse help texts of some common TeX escape codes
H.G.Muller [Thu, 17 Mar 2016 21:13:28 +0000 (22:13 +0100)]
Cleanse help texts of some common TeX escape codes

The TeX escapes \s-1, \s0 around all-capital words, \*(L, \*(R for
distinguishing left/right quoting, a mysterious \& and a \ in general
(e.g. for \- as forced hyphen) occur quite often in the man-page text.
They now no longer clutter the help popups.

4 years agoAlso provide help on adapter options
H.G.Muller [Thu, 17 Mar 2016 11:04:27 +0000 (12:04 +0100)]
Also provide help on adapter options

Adapters often add their own options to thoso of the engine in the
Engine Settings dialog. Polyglot, for instance, has many options,
their names all starting with "Polyglot ...". We adopt this as a
convention, so that XBoard can compare the adapter name (the name
of the program actually run, if that is different from the name
of the engine binary) with the start of the option name for which
help is requested. If there is a match it will conclude we are dealing
with an adapter option, and will consult the adapter manual (for an
option without the adapter-name prefix) instead of the engine manual.

4 years agoAlso buffer engine man page
H.G.Muller [Thu, 17 Mar 2016 10:32:02 +0000 (11:32 +0100)]
Also buffer engine man page

The path to the engine man file, and possibly its unzipped text, are now
also buffered, together with the name of the engine they are for, so that
they can be re-used when the engine has not changed.

4 years agoAlso recognize .IX lines in man file for help clicks
H.G.Muller [Wed, 16 Mar 2016 23:01:25 +0000 (00:01 +0100)]
Also recognize .IX lines in man file for help clicks

Beside .B and .SS directives, which tend to mark item headers in the
XBoard manual page, ".IX item" lines are now also recognized.
Such lines are produced by pod2man for =item directives in the .pod file.

4 years agoImplement XBetza iso modifier
H.G.Muller [Wed, 16 Mar 2016 13:40:33 +0000 (14:40 +0100)]
Implement XBetza iso modifier

An 'i' modifier on a continuation leg will force it to be of equal length
(measured in steps) as the latest sliding leg (i.e. of maximum length != 1)
before it. This is useful for defining rifle captures of sliding pieces.
On initial legs it still means the move is for virgin pieces only.

4 years agoAllow access to gzipped man files
H.G.Muller [Tue, 15 Mar 2016 14:15:29 +0000 (15:15 +0100)]
Allow access to gzipped man files

For *.gz man files we run gunzip to buffer the unzipped version in
memory. For engines this buffer is not saved, because the engine might
change. (A bit course...)

4 years agoFix reading of long man files
H.G.Muller [Tue, 15 Mar 2016 11:36:49 +0000 (12:36 +0100)]
Fix reading of long man files

The low-level read call to read from the spawned process did not
always return as many characters as we asked for, so we now use fread.

4 years agoObtain name of XBoard's man file from external command
H.G.Muller [Tue, 15 Mar 2016 10:29:35 +0000 (11:29 +0100)]
Obtain name of XBoard's man file from external command

Rather than hard-coding the path to the man file, it is now obtained
by running "man -w xboard".

4 years agoAdd routine to run daughter process and collect its output
H.G.Muller [Tue, 15 Mar 2016 10:08:04 +0000 (11:08 +0100)]
Add routine to run daughter process and collect its output

The routine BufferOutputCommand can run an arbitrary command in a
separate process, and collects its output in a buffer of the requested
size. It will kill the process when it doesn't terminate spontaneously,
and return the allocated buffer.

4 years agoUpdate es.po translation
Joshua Pettus [Wed, 23 Mar 2016 00:56:08 +0000 (20:56 -0400)]
Update es.po translation

4 years agoMark the gtk browse button for translation
Joshua Pettus [Sat, 19 Mar 2016 04:03:20 +0000 (00:03 -0400)]
Mark the gtk browse button for translation

4 years agoUpdate nl.po translation
Joshua Pettus [Fri, 18 Mar 2016 20:45:16 +0000 (16:45 -0400)]
Update nl.po translation

4 years agoUpdate fr.po translation
Joshua Pettus [Thu, 17 Mar 2016 00:58:07 +0000 (20:58 -0400)]
Update fr.po translation

4 years agoUpdate de.po translation
Joshua Pettus [Thu, 17 Mar 2016 00:56:42 +0000 (20:56 -0400)]
Update de.po translation

4 years agoUpdate zh_CN.po translation
Joshua Pettus [Wed, 16 Mar 2016 03:00:17 +0000 (23:00 -0400)]
Update zh_CN.po translation

4 years agoUpdate uk.po translation
Joshua Pettus [Wed, 16 Mar 2016 02:54:36 +0000 (22:54 -0400)]
Update uk.po translation

4 years agoconfigure.ac: add pangocairo to list of needed libraries
Arun Persaud [Tue, 15 Mar 2016 02:36:44 +0000 (19:36 -0700)]
configure.ac: add pangocairo to list of needed libraries

4 years agoDisplay message on the board at startup
H.G.Muller [Mon, 14 Mar 2016 14:18:18 +0000 (15:18 +0100)]
Display message on the board at startup

Drawing the board in the first second of running will display a short
message on top of it, to alert the user to the help-click possibility.

4 years agoFix expansion of ~~ in OSX App
H.G.Muller [Mon, 14 Mar 2016 14:07:08 +0000 (15:07 +0100)]
Fix expansion of ~~ in OSX App

The ~~ expansion was still using the configured DATADIR rather than
the dynamic one.

4 years agoPrint dynamic Datadir/Mandir on --show-config
H.G.Muller [Mon, 14 Mar 2016 12:59:02 +0000 (13:59 +0100)]
Print dynamic Datadir/Mandir on --show-config

Instead of printing the directories from the congigure process,
we print those actually in force, so that the info is valid in the
OSX App (which changes it) too.

4 years agoUse dataDir/manDir variables always
H.G.Muller [Sun, 13 Mar 2016 22:25:11 +0000 (23:25 +0100)]
Use dataDir/manDir variables always

The DATADIR and MANDIR string constants obtained from the configure
process are now stored in variables, which are then used everywhere
instead of them. The OSX App overwrites these variables, so the
directory location can be made dynamic.