Fixes#5238.
The Details and Build tabs have fixed positional content in the Keyboard
Editor, Model Editor, and Package Editor. Sizing the window too small
can cause content to be outside the bounds of the tab. This patch moves
these tabs into scrollboxes (except for Details tabs on Keyboard and
Model editors, which were already in scrollboxes). The remaining tabs
have resizable content. The tabs will still become fairly unusable if
they become too small, but this should be less of a problem than before.
The sample keyboards included with Keyman Developer were decidedly
unhelpful. Removing them and instead we should point users to the
Keyboards repo in the future.
Fixes#6363.
Fixes#2803.
The new basic project template will now include a default icon,
generated either from the first BCP 47 tag, or else from the first 3
letters of the filename of the keyboard.
The icon will not be included if the keyboard does not target desktop
platforms, as web/touch do not currently support the icon.
Fixes#4719.
kmlmp no longer assumes '../source/' for paths. It works with paths
relative to the source file. This makes it more compatible with any
valid source .kps file, as well as making current working directory
irrelevant.
Also adds corresponding tests for building .kmp and verifying file
layout.
Fixes#7529.
We must always use the US base layout for the debugger, as positional
keyboards are not affected by the active Windows system keyboard. This
fix ensures that the behaviour in the debugger matches what the user
experiences in Keyman for Windows.
Note that this does not address support for mnemonic layouts, tracked in
issue #1074.
Fixes#7506.
In the keyboard debugger, we need to mask out LControl when AltGr is
pressed by the user, because Windows will generate LControl + AltGr for
European layouts.
Note: have also hidden the System Keyboard debug setting in this commit,
given it is not currently implemented; see #1225.
A follow-up issue is #7529.
Fixes#7419.
If the user attempts to add an invalid graphic (e.g. a .png file saved
with a .ico extension), Keyman Developer will no longer crash when
trying to load the file.
Note that while the keyboard will still compile with an invalid graphic,
Keyman for Windows will refuse to install it. I have not tested other
platform handling of such a situation.
Fixes#7425.
In the layout editor, the "Select Key" dialog was being shown sometimes
when using shortcuts such as Ctrl+V. The reason this happened was that
the shortcut handler in Delphi was capturing the keydown of the V key,
so the Ctrl event handler never saw it. Then, if you pressed Ctrl+V, and
released the Ctrl key before releasing the V key (which often happens
when you press a shortcut rapidly), the Ctrl event handler would receive
notification of the Ctrl key release and trigger the "Select Key"
dialog.
This fix shifts the Ctrl key event handler out of the keyboard editor
and into the top-level application events handler -- this is the best
place where we can preview key events before they are passed to the
shortcut handler and controls for processing.
This necessitated adding a general `ControlKeyPressedAndReleased` event
function to the TIKE editor base class. This is currently only used by
`UfrmKeymanWizard` and `UfrmOSKEditor`.
I noted that the OSK editor did not currently support the Ctrl key
event to select a new key. As a part of this fix, I added support for
this, to bring it into line with the Layout Editor and the Touch Layout
Editor.
Compiles a LDML keyboard .xml down to a KeymanWeb .js file. Currently
only supports some metadata.
Next step is to generate touch layout data, then to embed the binary kmx
data.
Fixes#7408.
For kmc*.cmd, enables source maps. If you are running kmc from node on
your own system, you may need to enable source maps in other ways.
Note that error reports should be going through to Sentry, and source
maps should already be used for those.
Relates to #4324 (but slightly orthogonal.)
We wanted some message classes to be handled in the lexical model editor
more cleanly, including drill-down to line of error. A few changes
required to make this work well:
1. Parse error messages from kmlmc. This is not perfect but works while
the two projects are kept in sync, which they always are for Keyman
Developer. Note that at this stage, .ts warnings are not captured in
this parser, as they are generated by tsc.
2. Drill-down in Wordlist Editor Frame to find line of error
3. Model editor reports ownership of .tsv files so they can be loaded
4. In case of model editor not open (e.g. building from project view),
the TSV standalone editor was not displaying the frame, so it never
actually worked.
5. If the text editor had never loaded, then FindError was effectively
a no-op; adds code to seek to error line after page load finishes.
6. Ensures that if we attempt to seek an error in a sub-file owned by
an editor (e.g. .tsv owned by .model.ts, .kvks owned by .kmn), that
the parent editor will be focused first. Does not verify all paths
here, just the tsv one.