mirror of
https://github.com/keymanapp/keyman.git
synced 2026-10-13 01:17:29 +00:00
* Keyman for Windows 10.0 Open Source * Squashed 'windows/src/ext/jedi/jedi/' content from commit f444ad2 git-subtree-dir: windows/src/ext/jedi/jedi git-subtree-split: f444ad2da4693851e523f1ea6bd541f701904c24 * Squashed 'windows/src/ext/jedi/jcl/' content from commit d63d3c9fd git-subtree-dir: windows/src/ext/jedi/jcl git-subtree-split: d63d3c9fd9ff84efdd8159084ec6a60313644243 * Squashed 'windows/src/ext/jedi/jvcl/' content from commit bee19f3b4 git-subtree-dir: windows/src/ext/jedi/jvcl git-subtree-split: bee19f3b46909fde2fa92c06cd2706f41d99f6c3 * Add required .res files * Add required .res files * Add docbook files (forced) * Add required libxslt * Add required jedi files * Add installation files * Tweak .gitignore for open * CI * Remove KMW from Developer source (#122) * Remove KMW from Developer source (copies during build) * Remove KMW from Developer source (copies during build) * Remove KMW from Developer source (copies during build) * Fixup release build and copy license, readme from kmw during build * Remove obsolete build help documentation * Keyman Engine 10 on Windows regression for shift states (#129) * Improve #128 -- cleaner debug messages * Fixes #127, shift state now resets correctly; and more work for #128 * Fixes #130 (#131)
65 lines
1.6 KiB
ObjectPascal
65 lines
1.6 KiB
ObjectPascal
unit KeymanDesktopShell;
|
|
|
|
interface
|
|
|
|
type
|
|
TKeymanDesktopShell = class
|
|
class function RunKeymanConfiguration(params: string = ''): Boolean;
|
|
class function IsTextEditorVisible: Boolean; static;
|
|
class function OpenHelp(topic: string): Boolean;
|
|
private
|
|
class function GetRootPath: string;
|
|
class function GetRootDir: string;
|
|
class function GetShellPath: string;
|
|
end;
|
|
|
|
implementation
|
|
|
|
uses
|
|
System.SysUtils,
|
|
Winapi.Windows,
|
|
|
|
KeymanPaths,
|
|
utilexecute;
|
|
|
|
class function TKeymanDesktopShell.GetRootDir: string;
|
|
begin
|
|
Result := ExcludeTrailingPathDelimiter(TKeymanPaths.KeymanDesktopInstallPath);
|
|
end;
|
|
|
|
class function TKeymanDesktopShell.GetRootPath: string;
|
|
begin
|
|
Result := IncludeTrailingPathDelimiter(GetRootDir);
|
|
end;
|
|
|
|
class function TKeymanDesktopShell.GetShellPath: string;
|
|
begin
|
|
Result := TKeymanPaths.KeymanDesktopInstallPath(TKeymanPaths.S_KMShell);
|
|
end;
|
|
|
|
class function TKeymanDesktopShell.RunKeymanConfiguration(params: string = ''): Boolean;
|
|
begin
|
|
Result := TUtilExecute.Shell(0, GetShellPath, GetRootPath, params);
|
|
end;
|
|
|
|
const
|
|
STextEditorClassName = 'TfrmTextEditor'; // I4265
|
|
|
|
class function TKeymanDesktopShell.IsTextEditorVisible: Boolean;
|
|
begin
|
|
Result := FindWindow(STextEditorClassName, nil) <> 0;
|
|
end;
|
|
|
|
class function TKeymanDesktopShell.OpenHelp(topic: string): Boolean;
|
|
var
|
|
cleantopic: WideString;
|
|
i: Integer;
|
|
begin
|
|
cleantopic := '';
|
|
for i := 1 to Length(topic) do
|
|
if CharInSet(topic[i], ['a'..'z','A'..'Z','0'..'9','_','/','\','-']) then // I3310
|
|
cleantopic := cleantopic + topic[i]; // I3310
|
|
Result := RunKeymanConfiguration('-h '+cleantopic);
|
|
end;
|
|
|
|
end.
|