Fixed the bug 520, which related to fees payable/receivable.  These two tables are separate but we need a 'rule' that you cannot use the same fee_code in both tables (in a given ledger).  If you did use the same code then our code that uses these codes in the 'motivation' area cannot work out whether it is a code for receivable or payable.  So I have added some client side manual validation that checks the fee code against the data in the other table and does standard client validation tooltip stuff on the fee code control.  Then, just in case the fee code gets added and saved to the other screen while you are editing this one there is some server side manual validation when the changes are submitted.  If the submitted data table has a conflicting fee code we throw a concurrency exception back to the client.  Since the concurrency exception message is a bit complex, I have added a further client side message to help the user understand the cause of the problem, since it is not clear that fee codes must be unique across both tables.

Also while in the code, fixed a few spelling typos in existing messages.  And removed some unused code in the client manual files (that became unnecessary some time ago when the grid events got standardised).
Fixed two small bugs.  1. Did not always clear all controls in the details panel when the grid is empty.  I had the wrong logic for recursively calling the method.  2. Did not always find the 'key control' if the key column was 'category' but the control was inside a panel named pnlCategory.  The fix was to change the order of the 'if' and 'else if'.
Merge from trunk - especially the new code generation for buttons beneath the grid.
Fixed an annoying buglet which always displayed a warning when you clicked the Preview button
Added a wiki-page-creator application for the Filter/Find page so we can track which screens need filter and how we are doing with implementing them
This is the first set of YAML files to be checked in that have the Add/Delete buttons beneath the grid.  I have not quite finished all of them.  I will finish the remainder on my next working day.  Note: As well as moving the buttons I have gone through ALL these screens checking the layout.  One or two have had some significant re-alignments.  Many of them have had the details controls made to fill the full width of the screen better.  Now that we have not got buttons on the right hand side the grid takes up the whole width.  But when the filter panel is displayed in the future it will use a similar amount of space as the buttons used to.  So the screen width is still good at whatever it was before, but we can extend the details to the right - often the control that is the 'description'.  This makes the screen look neater.  As I said, a few screens have had a major re-align because the layout manager now works a bit different compared to when the screens were first written (I remember writing a number of them!)
uncrustify
Fixed a Jenkins build error - icon file name was wrong case
This is the final set of files that have the buttons between the grid and the details rather than the right hand side.  Thi smeans that I have done all the files now in readiness for the Filter button to be added.
Just small changes to the table layout so that I could add a comment beside each screen to say that it has been tested
merge from trunk
Fixed a bug with the SourceGrid code.  The behaviour was wrong when the SHIFT key was pressed.  This showed itself in two ways.  The action of pressing the SHIFT key on its own caused a cascade of row/selection changed events (which actually meant that the selection did change simply by pressing SHIFT).  Looking back on it this, in itself, was an odd behaviour and not normal Windows.  But second the bug also meant that SHIFT+left mouse click did not work.  You could see the multiple rows being highlighted - but then they instantly reverted to a single row highlight as the cascade of SHIFT events kicked in.
Added another link (to OpenPetra shortcuts) to the standard external links.
The Driver Status setup screen was unusable when the rows specified in this csv file were inserted because the first row (not a driver) had an empty primary key value.  This was actually inserted as an empty string (so the NOT NULL) constraint was ok) but our client side validation tried to enforce not null and not empty text.  This meant that, since this was the first row in the grid and since PK values are read-only we could never get off the first row and the screen became unusable!  The csv file has been modified so that 'Not a driver' uses code 0 (zero).
The LeavingCode screen is no longer used but was still in the main menu.
These two screens failed validation on every new record because they have a non-displayed string field that cannot be empty or NULL
These two screens did not automatically populate the 'description' field with PLEASE ENTER DESCRIPTION because the field name was Desc and not Descr.  This meant that you could not click New multiple times because new records were invalid out of the box.
This screen layout was no longer working right.  In particular the radio button option texts were truncated.  These have to be set up in manual code because they contain text characters that cannot be passed in XML.  So I have modified the manual set up code so that the screen is ok now.  There is no change to the business logic.
This screen had text rather than a checkbox in the grid for the Boolean column.  As standard we now use checkboxes.
These screens all have a modified single row deletion question based on two values rather than one.
Also took the opportunity to re-do the setupCurrency screen so that creating a new record is done in the standard way like all other screens (using CreateNewACurrency).
Also GiftMotivation did not automatically create the PLEASE ENTER DESCRIPTION for the description column because its column name is Desc and not Descr.