diff --git a/windows/src/developer/TIKE/Tike.dpr b/windows/src/developer/TIKE/Tike.dpr
index 74f2525e67..62f0ea5f71 100644
--- a/windows/src/developer/TIKE/Tike.dpr
+++ b/windows/src/developer/TIKE/Tike.dpr
@@ -269,7 +269,8 @@ uses
Keyman.Developer.System.HttpServer.AppSource in 'http\Keyman.Developer.System.HttpServer.AppSource.pas',
Keyman.UI.FontUtils in '..\..\global\delphi\general\Keyman.UI.FontUtils.pas',
Keyman.Developer.System.TouchLayoutToVisualKeyboardConverter in '..\kmconvert\Keyman.Developer.System.TouchLayoutToVisualKeyboardConverter.pas',
- Keyman.Developer.System.Project.kmnProjectFileAction in 'project\Keyman.Developer.System.Project.kmnProjectFileAction.pas';
+ Keyman.Developer.System.Project.kmnProjectFileAction in 'project\Keyman.Developer.System.Project.kmnProjectFileAction.pas',
+ Keyman.Developer.System.Project.kpsProjectFileAction in 'project\Keyman.Developer.System.Project.kpsProjectFileAction.pas';
{$R *.RES}
{$R ICONS.RES}
diff --git a/windows/src/developer/TIKE/Tike.dproj b/windows/src/developer/TIKE/Tike.dproj
index 749a484457..65854aceb4 100644
--- a/windows/src/developer/TIKE/Tike.dproj
+++ b/windows/src/developer/TIKE/Tike.dproj
@@ -510,6 +510,7 @@
+
Cfg_2
diff --git a/windows/src/developer/TIKE/project/Keyman.Developer.System.Project.kpsProjectFile.pas b/windows/src/developer/TIKE/project/Keyman.Developer.System.Project.kpsProjectFile.pas
index ec114699b5..580ad84263 100644
--- a/windows/src/developer/TIKE/project/Keyman.Developer.System.Project.kpsProjectFile.pas
+++ b/windows/src/developer/TIKE/project/Keyman.Developer.System.Project.kpsProjectFile.pas
@@ -42,7 +42,6 @@ uses
Xml.XMLIntf,
KPSFile,
- Keyman.Developer.System.Project.ProjectLog,
Keyman.Developer.System.Project.ProjectFile,
Keyman.Developer.System.Project.ProjectFiles,
Keyman.Developer.System.Project.ProjectFileType;
@@ -58,7 +57,6 @@ type
function GetOutputFilename: string;
function GetTargetFilename: string;
function GetTargetInstallerFilename: string;
- procedure SelfMessage(Sender: TObject; msg: string; State: TProjectLogState); // I4706
protected
function GetRelativeOrder: Integer; override;
procedure GetFileParameters; override;
@@ -66,10 +64,6 @@ type
procedure Load(node: IXMLNode; LoadState: Boolean); override; // I4698
procedure Save(node: IXMLNode; SaveState: Boolean); override; // I4698
- function CompilePackageInstaller(APack: TKPSFile; FSilent: Boolean): Boolean;
- function CompilePackage(APack: TKPSFile; FSilent: Boolean): Boolean;
- function Clean: Boolean;
-
property WarnAsError: Boolean read FWarnAsError write FWarnAsError; // I4706
property OutputFilename: string read GetOutputFilename;
@@ -84,100 +78,14 @@ implementation
uses
System.Variants,
- Winapi.ShellApi,
- Winapi.Windows,
Keyman.Developer.System.Project.Project,
-
- CompilePackage,
- CompilePackageInstaller,
- PackageInfo,
- utilexecute;
+ PackageInfo;
{-------------------------------------------------------------------------------
- TkmnProjectFile -
-------------------------------------------------------------------------------}
-function TkpsProjectFile.CompilePackage(APack: TKPSFile; FSilent: Boolean): Boolean;
-var
- pack: TKPSFile;
-begin
- HasCompileWarning := False; // I4706
- if APack = nil then
- begin
- pack := TKPSFile.Create;
- pack.FileName := FileName;
- pack.LoadXML;
- end
- else
- pack := APack;
-
- try
- try
- Result := DoCompilePackage(pack, SelfMessage, FSilent, TargetFilename);
- if HasCompileWarning and (WarnAsError or OwnerProject.Options.CompilerWarningsAsErrors) then // I4706
- Result := False;
-
- if Result then
- Log(plsInfo, '''' + FileName + ''' compiled successfully to '''+TargetFileName+'''.')
- else
- begin
- if FileExists(TargetFilename) then
- System.SysUtils.DeleteFile(TargetFilename);
- Log(plsError, '''' + FileName + ''' was not compiled successfully.');
- end;
- except
- on E:Exception do
- begin
- Log(plsError, E.Message);
- Result := False;
- end;
- end;
-
- finally
- if APack = nil then
- pack.Free;
- end;
-end;
-
-function TkpsProjectFile.CompilePackageInstaller(APack: TKPSFile; FSilent: Boolean): Boolean;
-var
- pack: TKPSFile;
-begin
- HasCompileWarning := False; // I4706
-
- if APack = nil then
- begin
- pack := TKPSFile.Create;
- pack.FileName := FileName;
- pack.LoadXML;
- end
- else
- pack := APack;
-
- try
- try
- Result := DoCompilePackageInstaller(pack, SelfMessage, FSilent, '', TargetInstallerFilename, False);
- if HasCompileWarning and (WarnAsError or OwnerProject.Options.CompilerWarningsAsErrors) then // I4706
- Result := False;
-
- if Result
- then Log(plsInfo, '''' + FileName + ''' compiled successfully.')
- else Log(plsError, '''' + FileName + ''' was not compiled successfully.');
- except
- on E:Exception do
- begin
- Log(plsError, E.Message);
- Result := False;
- end;
- end;
-
- finally
- if APack = nil then
- pack.Free;
- end;
-end;
-
procedure TkpsProjectFile.GetFileParameters;
var
i: Integer;
@@ -262,20 +170,6 @@ begin
if FHeader_Version <> '' then node.AddChild('Version').NodeValue := FHeader_Version;
end;
-procedure TkpsProjectFile.SelfMessage(Sender: TObject; msg: string; State: TProjectLogState); // I4706
-begin
- if State = plsWarning then
- HasCompileWarning := True;
- Log(State, msg);
-end;
-
-function TkpsProjectFile.Clean: Boolean;
-begin
- CleanFile(OutputFileName);
- CleanFile(TargetInstallerFilename); // I4737
- Result := True;
-end;
-
initialization
RegisterProjectFileType('.kps', TkpsProjectFile);
end.
diff --git a/windows/src/developer/TIKE/project/Keyman.Developer.System.Project.kpsProjectFileAction.pas b/windows/src/developer/TIKE/project/Keyman.Developer.System.Project.kpsProjectFileAction.pas
new file mode 100644
index 0000000000..3b4603127f
--- /dev/null
+++ b/windows/src/developer/TIKE/project/Keyman.Developer.System.Project.kpsProjectFileAction.pas
@@ -0,0 +1,130 @@
+unit Keyman.Developer.System.Project.kpsProjectFileAction;
+
+interface
+
+uses
+ System.SysUtils,
+
+ Keyman.Developer.System.Project.kpsProjectFile,
+ Keyman.Developer.System.Project.ProjectFile,
+ Keyman.Developer.System.Project.ProjectFiles,
+ Keyman.Developer.System.Project.ProjectFileType,
+ Keyman.Developer.System.Project.ProjectLog,
+ KPSFile;
+
+type
+ TkpsProjectFileAction = class(TkpsProjectFile)
+ private
+ procedure SelfMessage(Sender: TObject; msg: string; State: TProjectLogState); // I4706
+
+ public
+ function CompilePackageInstaller(APack: TKPSFile; FSilent: Boolean): Boolean;
+ function CompilePackage(APack: TKPSFile; FSilent: Boolean): Boolean;
+ function Clean: Boolean;
+ end;
+
+implementation
+
+uses
+ CompilePackage,
+ CompilePackageInstaller,
+ PackageInfo,
+ utilexecute;
+
+function TkpsProjectFileAction.CompilePackage(APack: TKPSFile; FSilent: Boolean): Boolean;
+var
+ pack: TKPSFile;
+begin
+ HasCompileWarning := False; // I4706
+ if APack = nil then
+ begin
+ pack := TKPSFile.Create;
+ pack.FileName := FileName;
+ pack.LoadXML;
+ end
+ else
+ pack := APack;
+
+ try
+ try
+ Result := DoCompilePackage(pack, SelfMessage, FSilent, TargetFilename);
+ if HasCompileWarning and (WarnAsError or OwnerProject.Options.CompilerWarningsAsErrors) then // I4706
+ Result := False;
+
+ if Result then
+ Log(plsInfo, '''' + FileName + ''' compiled successfully to '''+TargetFileName+'''.')
+ else
+ begin
+ if FileExists(TargetFilename) then
+ System.SysUtils.DeleteFile(TargetFilename);
+ Log(plsError, '''' + FileName + ''' was not compiled successfully.');
+ end;
+ except
+ on E:Exception do
+ begin
+ Log(plsError, E.Message);
+ Result := False;
+ end;
+ end;
+
+ finally
+ if APack = nil then
+ pack.Free;
+ end;
+end;
+
+function TkpsProjectFileAction.CompilePackageInstaller(APack: TKPSFile; FSilent: Boolean): Boolean;
+var
+ pack: TKPSFile;
+begin
+ HasCompileWarning := False; // I4706
+
+ if APack = nil then
+ begin
+ pack := TKPSFile.Create;
+ pack.FileName := FileName;
+ pack.LoadXML;
+ end
+ else
+ pack := APack;
+
+ try
+ try
+ Result := DoCompilePackageInstaller(pack, SelfMessage, FSilent, '', TargetInstallerFilename, False);
+ if HasCompileWarning and (WarnAsError or OwnerProject.Options.CompilerWarningsAsErrors) then // I4706
+ Result := False;
+
+ if Result
+ then Log(plsInfo, '''' + FileName + ''' compiled successfully.')
+ else Log(plsError, '''' + FileName + ''' was not compiled successfully.');
+ except
+ on E:Exception do
+ begin
+ Log(plsError, E.Message);
+ Result := False;
+ end;
+ end;
+
+ finally
+ if APack = nil then
+ pack.Free;
+ end;
+end;
+
+function TkpsProjectFileAction.Clean: Boolean;
+begin
+ CleanFile(OutputFileName);
+ CleanFile(TargetInstallerFilename); // I4737
+ Result := True;
+end;
+
+procedure TkpsProjectFileAction.SelfMessage(Sender: TObject; msg: string; State: TProjectLogState); // I4706
+begin
+ if State = plsWarning then
+ HasCompileWarning := True;
+ Log(State, msg);
+end;
+
+initialization
+ RegisterProjectFileType('.kps', TkpsProjectFileAction);
+end.
diff --git a/windows/src/developer/TIKE/project/Keyman.Developer.UI.Project.kpsProjectFileUI.pas b/windows/src/developer/TIKE/project/Keyman.Developer.UI.Project.kpsProjectFileUI.pas
index 309c5f5061..49064d1dcf 100644
--- a/windows/src/developer/TIKE/project/Keyman.Developer.UI.Project.kpsProjectFileUI.pas
+++ b/windows/src/developer/TIKE/project/Keyman.Developer.UI.Project.kpsProjectFileUI.pas
@@ -26,7 +26,7 @@ uses
Keyman.Developer.System.Project.ProjectFile,
Keyman.Developer.UI.Project.ProjectFilesUI,
Keyman.Developer.UI.Project.ProjectFileUI,
- Keyman.Developer.System.Project.kpsProjectFile;
+ Keyman.Developer.System.Project.kpsProjectFileAction;
type
TkpsProjectFileUI = class(TOpenableProjectFileUI)
@@ -42,12 +42,12 @@ type
function CompilePackageInstaller(FSilent: Boolean): Boolean;
function GetPack: TKPSFile;
- function GetProjectFile: TkpsProjectFile;
+ function GetProjectFile: TkpsProjectFileAction;
function TestPackageState(FCompiledName: string; FSilent: Boolean): Boolean;
public
function DoAction(action: TProjectFileAction; FSilent: Boolean): Boolean; override;
procedure BuildMenu(Menu: TPopupMenu); override;
- property ProjectFile: TkpsProjectFile read GetProjectFile;
+ property ProjectFile: TkpsProjectFileAction read GetProjectFile;
end;
implementation
@@ -129,9 +129,9 @@ begin
else Result := nil;
end;
-function TkpsProjectFileUI.GetProjectFile: TkpsProjectFile;
+function TkpsProjectFileUI.GetProjectFile: TkpsProjectFileAction;
begin
- Result := FOwner as TkpsProjectFile;
+ Result := FOwner as TkpsProjectFileAction;
end;
function TkpsProjectFileUI.InstallPackage: Boolean;
@@ -248,5 +248,5 @@ begin
end;
initialization
- RegisterProjectFileUIType(TkpsProjectFile, TkpsProjectFileUI);
+ RegisterProjectFileUIType(TkpsProjectFileAction, TkpsProjectFileUI);
end.
diff --git a/windows/src/developer/kmcomp/kccompileproject.pas b/windows/src/developer/kmcomp/kccompileproject.pas
index 057d22eba4..0b8a506d1a 100644
--- a/windows/src/developer/kmcomp/kccompileproject.pas
+++ b/windows/src/developer/kmcomp/kccompileproject.pas
@@ -29,7 +29,7 @@ uses
System.SysUtils,
Keyman.Developer.System.Project.kmnProjectFileAction,
- Keyman.Developer.System.Project.kpsProjectFile,
+ Keyman.Developer.System.Project.kpsProjectFileAction,
Keyman.Developer.System.Project.ProjectLog,
Keyman.Developer.System.Project.ProjectFile;
@@ -51,7 +51,7 @@ var
i: Integer;
Found: Boolean;
kmn: TkmnProjectFileAction;
- kps: TkpsProjectFile;
+ kps: TkpsProjectFileAction;
function Matches(AFile: TProjectFile; AClass: TProjectFileClass): Boolean;
begin
@@ -84,9 +84,9 @@ begin
end;
for i := 0 to Files.Count - 1 do
- if Matches(Files[i], TkpsProjectFile) then
+ if Matches(Files[i], TkpsProjectFileAction) then
begin
- kps := Files[i] as TkpsProjectFile;
+ kps := Files[i] as TkpsProjectFileAction;
kps.WarnAsError := AWarnAsError;
if AClean then
begin
@@ -97,15 +97,6 @@ begin
Found := True;
end;
-(* if HasKPPFile and not AClean then
- for i := 0 to Files.Count - 1 do
- if Matches(Files[i], TkpsProjectFile) then
- begin
- kps := Files[i] as TkpsProjectFile;
- kps.WarnAsError := AWarnAsError;
- if not kps.CompilePackageInstaller(nil, False) then Exit;
- Found := True;
- end;*)
finally
Free;
end;
diff --git a/windows/src/developer/kmcomp/kmcomp.dpr b/windows/src/developer/kmcomp/kmcomp.dpr
index 933416defb..7961ced7a7 100644
--- a/windows/src/developer/kmcomp/kmcomp.dpr
+++ b/windows/src/developer/kmcomp/kmcomp.dpr
@@ -104,7 +104,9 @@ uses
Keyman.System.Standards.BCP47SuppressScriptRegistry in '..\..\global\delphi\standards\Keyman.System.Standards.BCP47SuppressScriptRegistry.pas',
Keyman.System.Standards.LibPalasoAllTagsRegistry in '..\..\global\delphi\standards\Keyman.System.Standards.LibPalasoAllTagsRegistry.pas',
Keyman.System.CanonicalLanguageCodeUtils in '..\..\global\delphi\general\Keyman.System.CanonicalLanguageCodeUtils.pas',
- TextFileFormat in '..\TIKE\main\TextFileFormat.pas';
+ TextFileFormat in '..\TIKE\main\TextFileFormat.pas',
+ Keyman.Developer.System.Project.kmnProjectFileAction in '..\TIKE\project\Keyman.Developer.System.Project.kmnProjectFileAction.pas',
+ Keyman.Developer.System.Project.kpsProjectFileAction in '..\TIKE\project\Keyman.Developer.System.Project.kpsProjectFileAction.pas';
{$R icons.RES}
{$R version.res}
diff --git a/windows/src/developer/kmcomp/kmcomp.dproj b/windows/src/developer/kmcomp/kmcomp.dproj
index 7a71db621a..df5c58eaee 100644
--- a/windows/src/developer/kmcomp/kmcomp.dproj
+++ b/windows/src/developer/kmcomp/kmcomp.dproj
@@ -207,6 +207,8 @@
+
+
Cfg_2
Base