Fixes#7030.
Prevents a stack overflow / loop when the web target is removed from a
keyboard and it has already been tested on web, and the user presses the
Compile button.
When rebuilding a model, Keyman Developer would query for the
registered model, but a missing simplifyId call meant that it never
matched the model name (due to `.` vs `_`).
Picked up while reviewing code for conversion to C++. The compiler
could, in some circumstances emit garbage code for readonly groups
because we weren't testing all scenarios correctly. In practice, this
would have been rare as readonly groups don't emit characters, but it
should be fixed!
Fixes up scripts (except under /linux) to use `#!/usr/bin/env bash`
instead of `#!/bin/bash` or `#!/bin/sh` so that we don't end up with
the ancient version of bash supplied with macOS.
This became urgent with this PR, because of bash-4.xisms in
build-utils.sh, for example on line 572:
```
if [[ -v _builder_params[$e] ]]; then
```
If Server is shut down, Keyman Developer now handles this better
and offers to restart it in UI interactions, and backs out quietly
in non-UI processes.
After a demo of the Touch Layout Editor @jahorton suggested using a
"default hint" model instead of the "display hint" from the design spec.
I liked this and have reworked the design accordingly. With the default
hint model, a source for the hint text can be specified, such as the
default longpress key, or a specific flick key. This can then be
overridden on a key level.
The hint input element now shows a placeholder to indicate the default
hint for the key, and if a hint has been customised for a given key, it
is shown in green on the key cap.
Changing the default hint does not impact any customised hints.
Most dialogs in touch layout editor can now have just a Close
button with changes taking effect immediately. This helps users
visualize how the options they've chosen will work.
Moves the top toolbar to the left to make more room, and tidy it up,
and moves various controls into sub-dialogs to make them clearer.
Shortcut buttons to prepopulate the Hint property will come in a
subsequent PR.
Improves the .keyman-touch-layout clean schema and adds additional
cleanup during load and save in the Touch Layout Editor.
The compiler already does transforms for the relevant fields to the
formats that KeymanWeb is expecting (in particular, width, pad to
string).
This is preparation for adding hint data to the format as well.
* Restrucure touch layout editor to make space for additional gesture
types:
* Move control bar to right hand side
* Move key cap edits to control bar.
* Adds flick and multitap gestures:
* Adds buttons to add longpress keys, flicks or multitaps.
* Adds Unicode value boxes which mirror the key cap text box.
* Updates key width values in real time when resizing
* Maintain selected key as far as possible across layer switch, platform
switch and presentation view switch.
* Starts to split 'special' key cap icons from normal key caps.
If `-no-compiler-version` is specified, then we skip the embedding of
the `TSS_COMPILEDVERSION` and `TSS_KEYMANCOPYRIGHT` stores. This is
intended for use with regression test builds of keyboards when we want
to verify changes to the compiler.
This patch introduces the new export `SetCompilerOptions` in kmcmpdll,
which should make it easier to include new options like this in future
versions.
Adds kmdecomp to kmcomp-<version>.zip and fixes a couple of stability
issues:
* Increase buffer sizes (this fix very much a hack)
* Ensures that .bmp/.ico files are saved to correct output folder
* Disable loading sentry.dll when running on WINE
Replaces the script building kmcomp-$version.zip in TeamCity. Will be
used for more automated keyboard testing shortly.
Means kmcomp-$version.zip will be available as an artifact in all test
builds.
@keymanapp-test-bot skip
Fixes the release build where we do `nmake symbols` for developer/src,
which was failing on calls to these two sets of components. (In
windows/src, the build structure is different due to an additional layer
of folders, so we end up with no `nmake symbols` call on the common
components).