mirror of
https://github.com/keymanapp/keyman.git
synced 2026-08-09 02:15:32 +00:00
[Developer] Refactor TkpsProjectFile to remove actions from base data class into TkpsProjectFileAction
This commit is contained in:
parent
b4773ca324
commit
c5316da8aa
8 changed files with 149 additions and 128 deletions
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -510,6 +510,7 @@
|
|||
<DCCReference Include="..\..\global\delphi\general\Keyman.UI.FontUtils.pas"/>
|
||||
<DCCReference Include="..\kmconvert\Keyman.Developer.System.TouchLayoutToVisualKeyboardConverter.pas"/>
|
||||
<DCCReference Include="project\Keyman.Developer.System.Project.kmnProjectFileAction.pas"/>
|
||||
<DCCReference Include="project\Keyman.Developer.System.Project.kpsProjectFileAction.pas"/>
|
||||
<None Include="Profiling\AQtimeModule1.aqt"/>
|
||||
<BuildConfiguration Include="Debug">
|
||||
<Key>Cfg_2</Key>
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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}
|
||||
|
|
|
|||
|
|
@ -207,6 +207,8 @@
|
|||
<DCCReference Include="..\..\global\delphi\standards\Keyman.System.Standards.LibPalasoAllTagsRegistry.pas"/>
|
||||
<DCCReference Include="..\..\global\delphi\general\Keyman.System.CanonicalLanguageCodeUtils.pas"/>
|
||||
<DCCReference Include="..\TIKE\main\TextFileFormat.pas"/>
|
||||
<DCCReference Include="..\TIKE\project\Keyman.Developer.System.Project.kmnProjectFileAction.pas"/>
|
||||
<DCCReference Include="..\TIKE\project\Keyman.Developer.System.Project.kpsProjectFileAction.pas"/>
|
||||
<BuildConfiguration Include="Debug">
|
||||
<Key>Cfg_2</Key>
|
||||
<CfgParent>Base</CfgParent>
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue