Previously it only set the startwithwindows, checkforupdats and
autmaticallyreportusage values in firstrun if the flag was true.
It was only true if the argument was passed to the install executable on
the command line. However, it is valid to treat its non existance on the
command line as false for these 3 values.
This opens up the Delphi IDE with the correct KEYMAN_ROOT environment,
which allows for debugging. This is very helpful when working with
multiple worktrees, and also helps to avoid editing a project in the
wrong tree.
The process is quite confusing. The options from the setup install
options will only resualt in a command line option being past through
to firstrun if it is true. If is false the options will not be passed
through. Therefore if this is the first installation once when the
Keyman Configuration is opened it will show the default option
configured in utilkeymanoptions.pas, in kmcomapi. This result of all
this was a user would deselect the option in setup. When they opened
configuration it was set to true.
Check updates meaning has slightly changed it is now automatic updates
and it will now check, download and when possible start the install.
Previously it just meant a check for upates was made and notified
the user of updates.
Fixes:#13114
All but one references and calls to OnlineUpdateCheck where removed
this is the first step towards removing these units completley.
HttpServer.App.OnlineUpdate.pas is still calling this so the code will
remain untill removed.
While .kvk includes a font color field, it is essentially unused. There
was also some sort of support provided for font style in the KeymanWeb
keyboard compiler, but this was never streamed into .kvk or .kvks files,
so was always a no-op.
Thus, this PR removes any semblance of support for font style and color
from the .kvk and .kvks readers and writers. When we write the font
color field which is present in .kvk, we always use the default
TColor.clWindowText which is what the legacy Delphi-based writer would
always have written.
Also sorted out the default font size and name in the .kvk transform
from .kvks, and in so doing cleaned up the basic.kvk and basic.js in
LDML keyboard compiler to match what we are doing in the .kmn compiler.
This makes it easier to track what is happening for errors where
otherwise we found that exception messages were being cropped; for
example, see KEYMAN-WINDOWS-X.
The error messages were being cropped because the exception handler was
in the exe module, but the exception was being raised in kmcomapi
module. When the exception was handled, the handler tested to see if
the exception object inherited from exemodule.Exception, but it was
inheriting from kmcomapi.Exception instead, and so it did not attempt
to load the message detail.
By adding `safecall` calling convention to `KeymanCustomisation`, we
move responsibility for handling the exception to the
`TKeymanAutoObject.SafeCallException` function, and we get full detail
for the exception.