xboard.git
7 years agoPort chat boxes to XBoard
H.G. Muller [Sun, 15 Apr 2012 20:53:24 +0000 (22:53 +0200)]
Port chat boxes to XBoard

A new menu item Open Chat Window is added to the View menu. It opens a
window that can handle 5 chats. A row of buttons on top selects which is
the foreground chat partner, to which we type, and whose incoming messages
will be displayed in the memo. The leftmost 'button' is not really a button,
but a text edit, and the active partner is displayed there (so it can be
altered). Selecting another chat partner through a button, moves that partner
to the text-edit, and reshuffles the buttons. Incoming messages in a chat
that is not foreground make the corresponding button color orange.

7 years agoAllow chaining of single-line text-edits to top
H.G. Muller [Mon, 16 Apr 2012 18:27:08 +0000 (20:27 +0200)]
Allow chaining of single-line text-edits to top

For the benefit of the chat window, a text-edit plus leading description
can now also be chained to the top edge of a dialog. The chaining of the
(degenerate) multi-line ICS Input Box and Move Type-In was entirely to the
bottom, which has now been corrected.

7 years agoAdd logo widgets in main board window
H.G. Muller [Thu, 12 Apr 2012 07:30:24 +0000 (09:30 +0200)]
Add logo widgets in main board window

New options -logoSize and -logoDir are added. The former enables logo display,
when non-zero and not too big. The latter is used by -autoLogo. The options
 -firstLogo and -secondLogo also work. Problem is that the clock height
is larger than the logo height, and for now a nasty trick in GenericPopUp
is used to position the next element (message field) w.r.t. the clocks,
rather than the last element of the row above (the logo): in case of a
SAME_ROW Graph element, 'last' is kept at the previous element.

7 years agoFix crash on time forfeit with -st option
H.G. Muller [Thu, 19 Apr 2012 08:48:41 +0000 (10:48 +0200)]
Fix crash on time forfeit with -st option

When fixed time per move was set from the command line, the time-control
strings were not set. This let to a crash when an engine forfeited.
The GetTimeQuota function is now made resistant to a NULL pointer here.

7 years agoSolve WinBoard name clashes, fix zippy-analyze menu graying
H.G. Muller [Thu, 19 Apr 2012 08:39:12 +0000 (10:39 +0200)]
Solve WinBoard name clashes, fix zippy-analyze menu graying

Some of the function names used in the refactored X11 front-end collided
with Windows system names from winboard.h, or with names of internal routines
in WinBoard front-end files (so they could not be declared in frontend.h).
These were renamed. Some prototypes in engineoutput.h contained X11 types,
and they were moved to xboard.h.
  In addition, two menu-item names were corrected to two-part names.

7 years agoOffer primitive paging in file browser
H.G. Muller [Wed, 18 Apr 2012 10:00:43 +0000 (12:00 +0200)]
Offer primitive paging in file browser

If there are more than 1000 files that would have to be displayed,
the number will be limited to 999, and a 'next page' entry will appear
at the bottom. Clicking that will give you the next group.
 This is an emergency measure only, as it interferes with sorting
(grouping is based on order inside the directory, i.e. kind of arbitrary,
and sorting is only done within a group.) There is no such thing for the
folder list yet. There is no way to go back to a previous page, other
than closing and re-opening the browser, or selecting another file type.

7 years agoAdd pixmap as file type known to browser
H.G. Muller [Wed, 18 Apr 2012 09:16:58 +0000 (11:16 +0200)]
Add pixmap as file type known to browser

Users can browse for a pixmap to set the board texture.

7 years agoFix warning about signedness
H.G. Muller [Tue, 17 Apr 2012 13:45:27 +0000 (15:45 +0200)]
Fix warning about signedness

Note: the promoChar in ExcludeMoves was explicitly defined to make
sure the kludge promoChar = -1 for indicating best move works. But it
should be equivalent to casting the promoChar to (signed char) just
before the comparison.

7 years agoFix warnings about character index
H.G. Muller [Tue, 17 Apr 2012 13:44:15 +0000 (15:44 +0200)]
Fix warnings about character index

7 years agoMove ManProc to xboard.c
H.G. Muller [Tue, 17 Apr 2012 13:37:53 +0000 (15:37 +0200)]
Move ManProc to xboard.c

It calls ManInner, which requires X11 data types, even if the values are NULL.

7 years agoMove FileNamePopUp to dialogs.c
H.G. Muller [Tue, 17 Apr 2012 13:27:21 +0000 (15:27 +0200)]
Move FileNamePopUp to dialogs.c

7 years agoFix readout of numeric combobox
H.G. Muller [Tue, 17 Apr 2012 13:15:03 +0000 (15:15 +0200)]
Fix readout of numeric combobox

As currently no numeric comboboxes are used, this bug was silent.

7 years agoShuffle prototypes to correct header, or add them there
H.G. Muller [Tue, 17 Apr 2012 13:10:54 +0000 (15:10 +0200)]
Shuffle prototypes to correct header, or add them there

7 years agoFix MenuNameToItem
H.G. Muller [Tue, 17 Apr 2012 12:15:15 +0000 (14:15 +0200)]
Fix MenuNameToItem

This function could crash when called with ann argument that did not
contain a period, while the idea was that it should handle this as if the
item is in noMenu (for user-specified key binding to non-menu funtions).

7 years agoFix click-click under-promotion animation save
H.G. Muller [Mon, 16 Apr 2012 17:43:03 +0000 (19:43 +0200)]
Fix click-click under-promotion animation save

7 years agoDefine TOPLEVEL in winboard.c
H.G. Muller [Tue, 17 Apr 2012 09:02:39 +0000 (11:02 +0200)]
Define TOPLEVEL in winboard.c

7 years agoAdd two new strings to WinBoard language file
H.G. Muller [Tue, 17 Apr 2012 08:59:33 +0000 (10:59 +0200)]
Add two new strings to WinBoard language file

7 years agoFix second-engine variant test
H.G. Muller [Tue, 17 Apr 2012 08:51:02 +0000 (10:51 +0200)]
Fix second-engine variant test

The test whether the second engine supports the selected variant took place
before the second engine was loaded, thus always coming to the conclusion
that the variant was not supported, and aborting the TwoMachines command.
The test is now moved to after second-engine loading (but before its
initialization, where non-supporting would become a fatal error).

7 years agoFix clearing of ICS input box after send
H.G. Muller [Mon, 16 Apr 2012 10:11:09 +0000 (12:11 +0200)]
Fix clearing of ICS input box after send

7 years agoenable -Wall -Wno-parentheses for all compilers that understand them
Arun Persaud [Tue, 17 Apr 2012 02:08:10 +0000 (19:08 -0700)]
enable -Wall -Wno-parentheses for all compilers that understand them

7 years agoRemove 5 unused variables from zippy code
Byrial Jensen [Mon, 16 Apr 2012 11:18:37 +0000 (13:18 +0200)]
Remove 5 unused variables from zippy code

7 years agoRemove unused static function ShowTC
Byrial Jensen [Mon, 16 Apr 2012 11:14:06 +0000 (13:14 +0200)]
Remove unused static function ShowTC

7 years agoRemove unused static function MenuBarSelect
Byrial Jensen [Mon, 16 Apr 2012 11:10:58 +0000 (13:10 +0200)]
Remove unused static function MenuBarSelect

7 years agoRemove unused variable first_entry from function find_key
Byrial Jensen [Mon, 16 Apr 2012 11:07:01 +0000 (13:07 +0200)]
Remove unused variable first_entry from function find_key

7 years agoRemove unused variable tm from function SaveGamePGN
Byrial Jensen [Mon, 16 Apr 2012 11:01:09 +0000 (13:01 +0200)]
Remove unused variable tm from function SaveGamePGN

7 years agoRemove unused variable delayedKing from function QuickScan
Byrial Jensen [Mon, 16 Apr 2012 10:56:46 +0000 (12:56 +0200)]
Remove unused variable delayedKing from function QuickScan

7 years agoRemove unused variable pdown from function UserMoveEvent
Byrial Jensen [Mon, 16 Apr 2012 10:52:57 +0000 (12:52 +0200)]
Remove unused variable pdown from function UserMoveEvent

7 years agoChange some double literals to floats.
Byrial Jensen [Sun, 15 Apr 2012 02:25:59 +0000 (04:25 +0200)]
Change some double literals to floats.

To avoid unnecessary implicit promotions of float variables to double.

7 years agoRemove debug printf
H.G. Muller [Sun, 15 Apr 2012 09:12:02 +0000 (11:12 +0200)]
Remove debug printf

7 years agoTranslate "NPS" also in engine output window
Byrial Jensen [Sat, 14 Apr 2012 20:43:03 +0000 (22:43 +0200)]
Translate "NPS" also in engine output window

7 years agoremoved unused variables (-Wunused-variable)
Arun Persaud [Sat, 14 Apr 2012 23:19:34 +0000 (16:19 -0700)]
removed unused variables (-Wunused-variable)

7 years agoadded m4 directory to search path for aclocal. As suggested by Michel Van den Bergh
Arun Persaud [Sat, 14 Apr 2012 22:37:05 +0000 (15:37 -0700)]
added m4 directory to search path for aclocal. As suggested by Michel Van den Bergh

7 years agoFix Eval Graph scale in drop games
H.G. Muller [Sat, 14 Apr 2012 21:21:56 +0000 (23:21 +0200)]
Fix Eval Graph scale in drop games

7 years agoFix ArrowDamage out-of-bounds access on drop moves
H.G. Muller [Sat, 14 Apr 2012 21:16:29 +0000 (23:16 +0200)]
Fix ArrowDamage out-of-bounds access on drop moves

7 years agoImplement automatic partner observe
H.G. Muller [Sat, 14 Apr 2012 19:33:49 +0000 (21:33 +0200)]
Implement automatic partner observe

Starting a game, or starting to observe one, now automatically issues a
'pobserve' command if dual-board is switched on, so that the partner game
will pop up in the secondary board (assuming it is bughouse).
 The secondary board now displays the players in the title. (This (lightly)
breaks WinBoard again.) When the primary game ends, the secondary board
closes automatically. Initial sizing of the board is repaired, and now uses
the actual current board size, rather than the initial size of the main board.

7 years agoFix crash due to empty PV
H.G. Muller [Sat, 14 Apr 2012 13:43:30 +0000 (15:43 +0200)]
Fix crash due to empty PV

Reception of a stat01 command before the first PV could cause a crash,
as apparently the parser cannot handle this.

7 years agoSuppress testing for availability in bughouse drops
H.G. Muller [Sat, 14 Apr 2012 11:27:48 +0000 (13:27 +0200)]
Suppress testing for availability in bughouse drops

Give up on testing legality of bughouse drop moves; this only causes problems,
because the move list sent by the ICS is not accompanied by holdings updates.
So XBoard parses it thinking the holdings are empty, making every drop move
an ImpossibleMove. Bughouse can only be played on ICS, and we might as well
trust the ICS that it will only pass us legal moves. A user should not be
able to enter illegal drops; unavailable pieces cannot be grabbed from the
holdings, and typing is diverted to the ICS directly (which would reject the
illegal drop without XBoard even knowing about it).
  Also improve switching to bh/zh, based on drop move in initial board.

7 years agoFix some compile errors / warnings
H.G. Muller [Sat, 14 Apr 2012 07:11:22 +0000 (09:11 +0200)]
Fix some compile errors / warnings

7 years agoFix promotionPopDown on new move entry
H.G. Muller [Fri, 13 Apr 2012 17:06:17 +0000 (19:06 +0200)]
Fix promotionPopDown on new move entry

The promotion popup is non-modal, and old XBoard versions popped it down
as soon as the user clicked the board, so he could just enter a new move
to abort the promotion. This was broken in the new version, because the code
to do the PopDown and abort in HandleUserMove had not been ported.

7 years agoUse in-place sweep-selection for click-click under-promotion
H.G. Muller [Fri, 13 Apr 2012 16:38:51 +0000 (18:38 +0200)]
Use in-place sweep-selection for click-click under-promotion

With detour under-promotion a piece cycles through all possible choices
during backwards dragging. But in a click-click move there is no dragging.
This used to be solved by letting the second click start a drag event of
the default promotion choice, which you could accept by immediately
releasing the mouse button, or drag around to change it first.
 The dragging in this case seemed a little unnatural, because the to-square
was already indicated by the down-click. So it has been changed now to the
promo choice appearing on the down-clicked to-square, followed by
EditPosition-like sweep-selection on that square when one wants to under-
promote. The move is always accepted no matter where the up-click takes
place, except when it takes place on the from-square (which offers a last-
resort abort possibiliy).
 Note that click-click promotion is essential in variants where it is not
obvious from the from-square alone that a promotion is imminent, but where
it depends on the to-square. (Such as Shogi.) There drag-drop detour under-
promotion is not possible.

7 years agoImprove arrow drawing
H.G. Muller [Fri, 13 Apr 2012 14:05:16 +0000 (16:05 +0200)]
Improve arrow drawing

The arrow is now erased together with the border highlights, by marking
the damage it did, and then doing a selected redraw of the board to let
the damaged square be re-drawn. Highlights of a previous move are now
cleared on the down-click that selects a new piece, so there never is an
arrow to infavorably interact with animation of dragging.

7 years agoAlso do selective redraw with showTargetSquares on
H.G. Muller [Fri, 13 Apr 2012 12:57:15 +0000 (14:57 +0200)]
Also do selective redraw with showTargetSquares on

The XBoard DrawPosition now also keeps track of the previous marker state,
and redraws squares for which thi shas changed. As a result, the routine
MarkTargetSquares does no longer have to force to complete redraw.
(Breaks WinBoard?)

7 years agoFix click-click sweep promotions to empty square
H.G. Muller [Thu, 12 Apr 2012 22:33:28 +0000 (00:33 +0200)]
Fix click-click sweep promotions to empty square

These did not work, because DragPieceBegin would fail on an EmptySquare.

7 years agoMove clearing of target squares to after drag end
H.G. Muller [Thu, 12 Apr 2012 21:58:41 +0000 (23:58 +0200)]
Move clearing of target squares to after drag end

A dragged piece that would partly overshoot its destination into a square
with a marker would effectively protect that marker from erasing, when the
erasing was done before the piece was released, because redrawal after the
move only would draw the target square. (Unlike erasing, which forces a full
redraw.)

7 years agoFix double promotion popup
H.G. Muller [Thu, 12 Apr 2012 21:49:27 +0000 (23:49 +0200)]
Fix double promotion popup

Only the up-click of a click-click move gives a promotion popup now.

7 years agoFix promotion popup
H.G. Muller [Thu, 12 Apr 2012 21:32:28 +0000 (23:32 +0200)]
Fix promotion popup

The new GenericPopUp did not like it if the first button had 'SAME_ROW' set.

7 years agoAllow clearing of marker dots in any mode
H.G. Muller [Thu, 12 Apr 2012 15:28:32 +0000 (17:28 +0200)]
Allow clearing of marker dots in any mode

There might already be dots when you change to a mode where there should
be none, and you don't want them to stay on forever in that case...

7 years agoFix redraw of secondary board on flipping view
H.G. Muller [Thu, 12 Apr 2012 15:00:55 +0000 (17:00 +0200)]
Fix redraw of secondary board on flipping view

7 years agoLet clocks of secondary board count down
H.G. Muller [Thu, 12 Apr 2012 08:30:21 +0000 (10:30 +0200)]
Let clocks of secondary board count down

The back-end now remembers what is the active clock, and the time left on it.
This is then decremented and updated together with the clocks of your own
game, using the partnerUp flag to divert the clock display to the secondary.

7 years agoFix 3 forgotten symbolic widget references
H.G. Muller [Thu, 12 Apr 2012 07:47:43 +0000 (09:47 +0200)]
Fix 3 forgotten symbolic widget references

7 years agoAdd sound files to browser menu
H.G. Muller [Wed, 11 Apr 2012 17:24:36 +0000 (19:24 +0200)]
Add sound files to browser menu

7 years agoAdd New Directory button to file browser
H.G. Muller [Wed, 11 Apr 2012 11:04:24 +0000 (13:04 +0200)]
Add New Directory button to file browser

7 years agoDetect engine exit during startup
H.G. Muller [Wed, 11 Apr 2012 07:54:51 +0000 (09:54 +0200)]
Detect engine exit during startup

The case where engine startup failure does not result in a fatal protocol
message, like "No such file", but where it simply exits, is now also covered.

7 years agoSuppress popup for fatal error after tellusererror
H.G. Muller [Tue, 10 Apr 2012 20:55:07 +0000 (22:55 +0200)]
Suppress popup for fatal error after tellusererror

For cooperating better with Polyglot, and allowing more to-the-point
error messaging, the (awful) default message will be suppressed if the
dying engine already provided an explanation for its demise to the user.

7 years agoFix Engine Output icon heights in international versions
H.G. Muller [Tue, 10 Apr 2012 18:28:45 +0000 (20:28 +0200)]
Fix Engine Output icon heights in international versions

The text in a label option could not be an empty string, or it would be
'translated' to something of enormous size. So it is set to a space now.

7 years agoFix internationalization
H.G. Muller [Tue, 10 Apr 2012 18:21:56 +0000 (20:21 +0200)]
Fix internationalization

The internationalization was broken by moving the XtSetLanguageProc
to behind 'bindtextdomain'.

7 years agoMake reference to board widgets symbolic
H.G. Muller [Tue, 10 Apr 2012 18:03:46 +0000 (20:03 +0200)]
Make reference to board widgets symbolic

7 years agoDon't strip path from engine name if directory given
H.G. Muller [Tue, 10 Apr 2012 16:39:25 +0000 (18:39 +0200)]
Don't strip path from engine name if directory given

7 years agoFix vertical chaining of Buttons and browser ListBoxes
H.G. Muller [Tue, 10 Apr 2012 15:54:33 +0000 (17:54 +0200)]
Fix vertical chaining of Buttons and browser ListBoxes

7 years agoFix auto-play
H.G. Muller [Tue, 10 Apr 2012 13:53:47 +0000 (15:53 +0200)]
Fix auto-play

The 'narrow search' modification had broken auto-play, because all selected
games were marked as matching position 0, so that they would all start in
thr opening position.

7 years agoupdated po/pot files
H.G. Muller [Tue, 10 Apr 2012 11:30:44 +0000 (13:30 +0200)]
updated po/pot files

7 years agonew version number for developer release
H.G. Muller [Tue, 10 Apr 2012 09:54:50 +0000 (11:54 +0200)]
new version number for developer release

7 years agoUpdate POTFILES.in
H.G. Muller [Tue, 10 Apr 2012 11:22:40 +0000 (13:22 +0200)]
Update POTFILES.in

7 years agoFix Makefile EXTRA_DIST
H.G. Muller [Tue, 10 Apr 2012 11:21:33 +0000 (13:21 +0200)]
Fix Makefile EXTRA_DIST

7 years agoUse Ctrl key in EditPosition mode to copy pieces refactor
H.G. Muller [Mon, 2 Apr 2012 15:53:40 +0000 (17:53 +0200)]
Use Ctrl key in EditPosition mode to copy pieces

7 years agoFix bug in FRC castling for position search
H.G. Muller [Wed, 28 Mar 2012 21:51:28 +0000 (23:51 +0200)]
Fix bug in FRC castling for position search

In FRC it is essential that both pieces are taken off the board before
any of them is put back, lest they obliterate each other.

7 years agoFix bug on loading engine
H.G. Muller [Wed, 28 Mar 2012 10:25:20 +0000 (12:25 +0200)]
Fix bug on loading engine

A newly loaded engine was put at the end of the game, rather than at the
current position, (which is required in EditGame mode).

7 years agoAdd 'Narrow' function to position search
H.G. Muller [Fri, 6 Apr 2012 15:02:21 +0000 (17:02 +0200)]
Add 'Narrow' function to position search

7 years agoReorganize main() a bit
H.G. Muller [Fri, 6 Apr 2012 08:52:45 +0000 (10:52 +0200)]
Reorganize main() a bit

The font stuff goes into a separate routine, and the X11 stuff is
moved backwards as far as possible.

7 years agoGive the dual-board option a separate board window
H.G. Muller [Wed, 4 Apr 2012 19:55:50 +0000 (21:55 +0200)]
Give the dual-board option a separate board window

The second board window pops up whenever an alien board is received
during your game. Moves in it are highlighted by an arrow, irrespective
of the 'Highlight with Arrow' setting. The clocks are displayed, but do
not count down.

7 years agoPort engine grouping to Match Options dialog
H.G. Muller [Thu, 5 Apr 2012 09:23:03 +0000 (11:23 +0200)]
Port engine grouping to Match Options dialog

7 years agoChange default directory in Load Engine to "."
H.G. Muller [Thu, 5 Apr 2012 13:18:25 +0000 (15:18 +0200)]
Change default directory in Load Engine to "."

7 years agoPort grouping to XBoard Load Engine
H.G. Muller [Thu, 5 Apr 2012 08:49:56 +0000 (10:49 +0200)]
Port grouping to XBoard Load Engine
Add highlight to Load Engine grouping

7 years agoFix default file types for browse buttons
H.G. Muller [Fri, 6 Apr 2012 15:19:33 +0000 (17:19 +0200)]
Fix default file types for browse buttons

7 years agoNew browser
H.G. Muller [Tue, 3 Apr 2012 07:14:44 +0000 (09:14 +0200)]
New browser

Redo file browser with GenericPopUp

This had to solve quite some problems, because it wanted to use a ComboBox
option while a transient dialog could be up, was a non-engine dialog
while an engine dialog is up, and XRaiseWindow does not work properly.
  Sorting is done alphabetically, or for digit groups by numeric value.

7 years agoUse ListBox in stead of ComboBox in Match-Options dialog
H.G. Muller [Mon, 2 Apr 2012 12:43:24 +0000 (14:43 +0200)]
Use ListBox in stead of ComboBox in Match-Options dialog

7 years agoUse ListBox in stead of ComboBox in Load Engine dialog
H.G. Muller [Mon, 2 Apr 2012 12:09:15 +0000 (14:09 +0200)]
Use ListBox in stead of ComboBox in Load Engine dialog

Make Load Engine listbox sensitive to double-clicking

7 years agoAdd message about enabling in New Variant dialog
H.G. Muller [Mon, 26 Mar 2012 15:06:33 +0000 (17:06 +0200)]
Add message about enabling in New Variant dialog

7 years agoMove LoadGamePopUp to menus.c
H.G. Muller [Sat, 31 Mar 2012 18:27:20 +0000 (20:27 +0200)]
Move LoadGamePopUp to menus.c

7 years agoMove DisplayMessage to dialogs.c
H.G. Muller [Sat, 31 Mar 2012 18:25:22 +0000 (20:25 +0200)]
Move DisplayMessage to dialogs.c

Use the wrapper SetWidgetLabel to make it back-end.

7 years agoFix switching debug option during session.
H.G. Muller [Sat, 31 Mar 2012 13:23:30 +0000 (15:23 +0200)]
Fix switching debug option during session.

Switching on debug mode during the session did not create the requested
debug file.

7 years agoCorrect texi file for use of .Xresources
H.G. Muller [Sat, 31 Mar 2012 13:22:57 +0000 (15:22 +0200)]
Correct texi file for use of .Xresources

7 years agoFix recent-engines menu
H.G. Muller [Mon, 2 Apr 2012 17:19:30 +0000 (19:19 +0200)]
Fix recent-engines menu

A new primitive to create an item in a given menu was added to do this.

7 years agoSwitch back two two-part menu names
H.G. Muller [Sat, 31 Mar 2012 08:54:22 +0000 (10:54 +0200)]
Switch back two two-part menu names

The menu code is again completely changed; a handle field is added
to the MenuItem tables to store the widget for the item, and this info
is used to alter sensitivity or marking. MenuToNr is replaced by
MenuNameToItem, which looks up the two-level name directly in the
menu tables. Put all currently unused MenuProcs in noMenu table,
so they are available for key binding through the new method.

7 years agoRedo main board window with generic popup
H.G. Muller [Sat, 24 Mar 2012 17:36:44 +0000 (18:36 +0100)]
Redo main board window with generic popup

Some of the improvements in GenericPopUp (committed earlier) were added
especiall for this (menu and box Option types), and the commits that used
them to make a fully functional board, listed below, were collapsed into
this one.

This uses the new box and menu features of the Generic popup.
Make option table shadow board consistent with refactor
Do main menus in shadow board
 The board made by GenericPopUp now also has (functional) menus. The Expose
 callback now also uses the new format (passing coordinates).
Use BoxEnd callback to decide about smallLayout
 The shadow board now dynamically decides whether it should use smallLayout
 positioning of the title-in-window widget, using a callback in the BoxEnd
 option for the menu bar: If no reasonable amount of space is left behind
 the menu bar, the title is forced under the clocks (smallLayout).
Do some mouse handling on shadow board
 Only button 1 events for now. We have to keep track if the button is down!
Connect button 3 to shadow board
 For now only for piece and PV manipulation: no context menus yet
Symbolic reference in option formatting
choice <-> textValue xboard.c
Improve expose callback shadow board
Implement context menus of shadow board
 This uses the new generic PopUp option
TopLevel xboard.c
Make mock-up board available through menu item
Make clocks of shadow board sensitive to clicking
Make button bar of shadow board operational
 The back-end Event functions are specified as user callbacks directly;
 this is not very clean, as they are parameterless, but called with an int
 argument. This should have no bad consequences, though.
Switch to using shadow board as main board
 The menu marking and enabling had to b switched off for this, as it
 only worked on the old menus. Remove HandleUserMove.
Deleting of unused shell variables, clocks to dialogs.c
Move BoardPopUp to dialogs.c
 This required passing on fome front-end vars as parameters, and returning
 apointer to the option list, to make the handles available in xboard.c.
Simplify InitDrawingSizes
 Now that all widgets of the main window are properly chained, there is
 no need to resize them when the board format changes: setting a new width
 for the shell suffices.
Cleanup some unused Xt Args

7 years agoRemove unnecessary menu unmarking for Edit Tags
H.G. Muller [Sat, 31 Mar 2012 08:53:46 +0000 (10:53 +0200)]
Remove unnecessary menu unmarking for Edit Tags

7 years agoSplit sync-after options in Match dialog into checkbox + label
H.G. Muller [Thu, 29 Mar 2012 17:09:34 +0000 (19:09 +0200)]
Split sync-after options in Match dialog into checkbox + label

Now the checkbox texts are highlighted on hovering, we don't want the
explanatory text behind it to be highlighted with it.

7 years agoMake variant-unsupported-by-second error non-fatal
H.G. Muller [Mon, 26 Mar 2012 15:12:33 +0000 (17:12 +0200)]
Make variant-unsupported-by-second error non-fatal

7 years agoRedo Eval Graph with generic popup
H.G. Muller [Fri, 23 Mar 2012 19:06:15 +0000 (20:06 +0100)]
Redo Eval Graph with generic popup

The Graph option of the GenericPopUp is used to implement the Eval Graph.
Compared to the previous implementation, which was drawing directly in the
form widget, the new one has one extra widget layer, but that did not
affect the code anywhere. Adapt eval title to width of eval graph.

7 years agoRedo Engine Output window with generic popup
H.G. Muller [Fri, 23 Mar 2012 14:17:14 +0000 (15:17 +0100)]
Redo Engine Output window with generic popup

A new file nengineoutput.c holds the X-independent code. This makes use
of new capablities of GenerciPopup, for having Label widgets on same row,
stacking panes after a Break, and chaining Label and Text widgets.

7 years agoRedo Game List with generic popup
H.G. Muller [Wed, 21 Mar 2012 22:00:05 +0000 (23:00 +0100)]
Redo Game List with generic popup

Check in ngamelist.c
Redo Game List with generic popup
 The X-independent code (i.e. almost all) is moved to a new file
 ngamelist.c.
Make button in Game List to pop up Game List Options
Fix scrolling game list
Fix popup of existing Game List after loading file
Wheel-scroll game list
Symbolic reference game list
TopLevel game list
Put format flags with listbox options

7 years agoRedo Game List Options with generic popup
H.G. Muller [Wed, 21 Mar 2012 16:58:27 +0000 (17:58 +0100)]
Redo Game List Options with generic popup

7 years agoAdd -dialogColor and -buttonColor options
H.G. Muller [Thu, 5 Apr 2012 19:56:52 +0000 (21:56 +0200)]
Add -dialogColor and -buttonColor options

These only override system defaults if they are non-empty strings.

7 years agoAdd -topLevel option
H.G. Muller [Wed, 28 Mar 2012 13:52:01 +0000 (15:52 +0200)]
Add -topLevel option

This persistent Boolean option determines if the auxiliary windows
(Game List, Move List, Engine Output, Eval Graph, Tags and Comment)
use top-level shells (with their own icon on the task bar, and
independently closable). Other dialogs will always use transient shells.
(Also he modal Error and Promotion dialogs, for which the modality
presumably only serves to pop them down without special attention.)
A control for this was added in the General Options dialog.

7 years agoRedo ErrorPopUp with generic dialog
H.G. Muller [Tue, 20 Mar 2012 14:30:00 +0000 (15:30 +0100)]
Redo ErrorPopUp with generic dialog

<Enter> keeps popping down error popup.Multiple Error popups remeain tricky;
add comment to describe problem with multiple ErrorPopUps.

7 years agoRedo PromotionPopUp with generic dialog
H.G. Muller [Tue, 20 Mar 2012 09:22:46 +0000 (10:22 +0100)]
Redo PromotionPopUp with generic dialog

The dialog is no longer modal.

7 years agoRedo AskQuestion dialog with generic popup
H.G. Muller [Mon, 19 Mar 2012 20:56:48 +0000 (21:56 +0100)]
Redo AskQuestion dialog with generic popup

7 years agoMajor refactoring of GenericPopUp
H.G. Muller [Mon, 19 Mar 2012 20:55:58 +0000 (21:55 +0100)]
Major refactoring of GenericPopUp

Allow more transient dialogs in GenericPopUp
Remove grab from promotion popup
Fix other generic popup over transient popup
 To use the generic dialog generator for 'asynchronous' popups (Ask Qustion
 or Error popup caused by engine), the currentOptions setting has to be
 restored for the combo and checkbox callbacks of the transient to still
 work after the asynchronous dialog returns. Note that only transient dialogs
 can have check and combo controls.
Make generic calcel button suppressible
 Also #define some more symbols for Option.min flags,
 and move them to dialogs.h.
Change TypeInProc to general OK handler
 The move type-in now has its own option list, to distinguish it from
 the ICS input box, and give it its own OK handler. Rather than having
 the translation for <Enter> on the text widget call TypeInEvent directly,
 we let it call GenericCallback, which calls GenericReadout, which calls
 the OK proc, which does the job.
  To be able to call GenericCallback from the TypeInProc, the recognition
 of OK and cancel buttons had to be changed. This because it was too difficult
 to arrange the calling widget had label OK or cancell. So these buttons are
 no longer recognized by name, but by the option number passed as client data.
 (This solves the problem that a user could not make buttons named 'cancel'
 or 'OK'.)
Make Cancel button optional
Fix closing multiple popups of same kind
 The GenericCallback figures out its own shell, so all buttons of
 multiple dialogs keep working. External calls to PopDown only work
 on the lastcreated instance of that kind, though (including those from
 the Delete Window button, which can do 'cross-closing'). shellUp is now
 a counter, and PopDowns are only prevented when it reaches 0 or the
 current shell does not exist. (To know this, PopDown now resets shells[n]
 to NULL when is shell is destroyed.
  Beware of double PopDowns (through OK procs); they wreck the system.
Fix Delete Window button of multipe ErrorPopUps
 The action routine for handling the Delete Window now pays attention
 to the shell widget that the system passes to it, and temporarily
 replaces shells[n] by it to let PopDown act on the proper instance.
Add ListBox dialog type to GenericPopUp
Fix vert sizing of ListBox
Put listbox widgets in viewport
Put listbox in viewport
Improved xoptions.c support for focussing and listboxes
Fix OK-row button positioning
Let GenericPopUp take parent and modality as arguments
 This makes the code a bit more explicit and less kludgy. It also becomes
 possible to call the same dialog (e.g. Load Options) from the main menu
 and from another dialog (e.g. the Game List).
Support scroll function for generic popup listboxes
Fix scrolling
Move HighlightWithScroll to xoptions.c
Change scroll algorithm
Add mouse-wheel scroll to generic list boxes
Implement tabbing between text edits
Implement same-row text labels in generic dialog
Allow labels to specify their chaining in generic popup
 The opt.min variable is used to specify the chaining: 0xF0 are the bits
 for (left, right) chaining of the left side (0xC0) and right side (0x30).
 The 0xC bits determine top or bottom chaining of the entire label.
 Without anything spcified (0), the chaining is XtRubber.
 TextBox options can also specify top-chaining of their top. All this was
 needed to allow decent implementation of the Engine Output window with
 the generic popup. (Although tags and comment popup ca benefit from the
 latter feature.)
Let GenericPopUp support a Graph option
 The Graph option results in an area where one can draw something. It is
 positioned / chained similar to Label options. A handler for expose events
 can be specified in the textValue field of the option.
Implement box widgets and menu buttons in GenericPopup
 To enhance the capabilities of GenericPopUp such that it could create the
 main window, it needs to be able tha packaging of controls into a box widget
 (for mennu and button bar). Menu buttons are also required elements
 (although they do look a lot like comboboxes?) Option types BoxBegin and
 BoxEnd can now be used to bracket a group of controls that will be put
 in a box widget. (Cannot be used recursively!) The positioning of the box
 is similar to that of a Label, and is specified in the BogBegin option.
  The code to shrink the menu buttons to fit is also incorporated, to act
 on any box widget: if the BoxBegin option specifies a width, the elements
 in it are shrunk to meet the requirement. Otherwise the box just gets the
 size of the sum of its children (plus spacings).
  Label options can now specify a font, casted into their textValue field.
 (This is needed to get the proper size for the clock widgets.)
Implement callback in BoxEnd options
 BoxEnd is a pseudo-option, to trigger packing the preceeding ones in
 an earlier-opened box widget. In the process it calculates the size of
 the box widget (and trims it if a size was specified for it in the
 corresponding BoxBegin). The Option.target field of BoxEnd is now
 interpreted as a callback, which can be use to take decisions based
 on the determined size for the remaining options in the list, before
 these are processed b GenericPopUp.
Refactor xoptions.c
 Make a subroutine to set args shared by almost all widgets. Swap meaning
 of '1'-bit in option.min flag of Break option, to be consistent with
 SAME_ROW interpretation in other option types.
Make option tables consistent with refactored GenericPopUp
 The flag for stacking in the Break option needed to be inverted, and
 the BoardPopUp needed to pass the font in another field. Better use was
 made of the improved chaining options too.
Improve Graph-option event handling
 The user-supplied callback now gets 3 arguments passed: the event type
 (0 = pointer motion, 1...5 button press, -1...-5 release, 10 = expose),
 and two coordinates. For ouse events these are the pointer (x,y), while
 for expose events they are the window size (w,h). The callback is now
 specified in the option.target field of the Graph option.
Store engine options in malloc'ed memory
 The Option.name field has been re-declared as (char*),  from (char[MSG_SIZ]).
 There are still MSG_SIZ chars allocated irrespective of actual size, because
 the field is also supposed to store the textValue, which can be changed by
 the user. But at least it means that unused options of the generous list
 now don't waste much space. (And the prparated Option tables in dialogs.c
 will shrink by a large factor as well.)
Improve GenericPopUp ComboBox handling.
 The dialog type is now passed to the combobox callback as well, and this is
 used to really figure out what option it is called for.
Allow numeric comboboxes
 When no list of strings is given in Option.choice, the target is assumed
 to be (int), and the number of the slected entry is stored there. Also
 adapts the Label options that act as fillers to the new method for making
 dummies (namely NULL in the Option.name field).
Put comboCallback in Option struct
 Rather than having a general comboCallback variable for the entire current
 dialog, each ComboBox option can now specify its own callback in the
 target field of the option: the COMBO_CALLBACK bit of Option.min indicates
 whether the target is a variable to be set or a callback. The callback can
 still fetch the choice from the values array.
Allow generic CreateComboPopup also to do main menus
 An extra parameter to CreateComboPopup determines if the menu texts
 should be taken from a list of strings (the old method with engine-
 supplied choices), or from a menu table of MenuItems. It can now also
 recognize "----" as a menu break, and keeps margins (for the marking).
Make subroutine for determining curren combo selection
Various fixes to GenericPopUp
Delete one border-width setting
Fix max nr of args in GenerocPopUp
Fix button release events of Graph options
Fix generic Graph callback pointer motion coordinates
Make all format referencing in Option tables symbolic
Let Option.choice define menu texts, rather than Option.textValue
 This is more logical than ussing textValue for it, because choice already
 has the correct (char**) type, while textValue was (char*), and needed
 casting everywhere. Note that for engine options, the fields were the
 same anyway, so no back-end change was required. The textValue now
 contains the (casted) list of actual string values, where these are
 needed. (But for numeric and function menus they aren't.)
Add PopUp Option type
 An new pseudo-Option is defined, to add a popup menu to a previous Graph
 option. The actual popping up is done by the expose handler.
 The function XUngrabPointer is the key to success here. A PopUp option
 specifies a callback for handling the selection from the menu, which will
 be called with the option number, exacty as with ComboBox options.
Update option explanation in dialogs.h
Make Spin and CheckBox callbacks pass dialog number
 No longer rely on 'currentOptions' for getting the option belonging to
 the callback, but get it out of the dialogOptions array indexed by dialog
 type. This way things cannot be messed up by an asynchrounous error popup.
 It also means that it is now save for non-modal dialogs to use these options.
Use button widget for text behind checkbox
Let listboxes use general formatting hints
Let GenericPopUp option always finish last pane after Break
Allow LisBox to specify select callback in Option.textValue
Use double-click to trigger ListBox callback
Make ListBox callback re-entrant
Fix multi-line Label options
Separate CreateMenuItem out from CreateComboPopup
Chain checkbox texts entirely left
Allow a user-specified callback to Label options
 This is needed to implement the clocks. Let the CheckBox callback handle
 it. For now ther is no distinction between different mouse buttons.

7 years agoPrevent double PopDowns
H.G. Muller [Wed, 21 Mar 2012 10:15:01 +0000 (11:15 +0100)]
Prevent double PopDowns

Some DialogOK functions ordered an early PopDown themselves. This,
however, resulted in PopDown being called twice when they returned TRUE.
This interfered with the new system for allowing multiple instances of
the same dialog. So these functions are now fixed to suppress the
standard PopDown by always returning FALSE.

7 years agoSplit usounds.c and usystem.c from xboard.c
H.G. Muller [Tue, 20 Mar 2012 18:10:50 +0000 (19:10 +0100)]
Split usounds.c and usystem.c from xboard.c

X-independent code was moved to separate files. The nef file usound.c
contains the sound handling, which in XBoard is trivial, because it uses
an external player, but could be replaced by a complex one on platforms
that have to handle the sound themselves.
  The usystem.c file contains all non-X Unix-like stuff, such as fork,
pipe, system, getenv. I also contains some color parsing for the xterm
colors. This stuff could be useful on platforms that support Unix-like
system calls.