152 lines
5.4 KiB
ObjectPascal
152 lines
5.4 KiB
ObjectPascal
|
|
unit ConfigurationBase;
|
||
|
|
|
||
|
|
interface
|
||
|
|
|
||
|
|
uses
|
||
|
|
SysUtils, Classes, DelphiData, ConfigOptions;
|
||
|
|
|
||
|
|
type
|
||
|
|
TPersonalityOptions = class;
|
||
|
|
|
||
|
|
TConfiguration = class(TPersistent)
|
||
|
|
protected
|
||
|
|
function GetName: string; virtual; abstract;
|
||
|
|
function GetVersionStr: string; virtual; abstract;
|
||
|
|
public
|
||
|
|
function SupportsPersonality(Personality: TIDEPersonality): Boolean; virtual; abstract;
|
||
|
|
function IsUpToDate(IDE: TDelphiIDE): Boolean; virtual; abstract;
|
||
|
|
function CreateOptionsFor(Personality: TIDEPersonality): TPersonalityOptions; virtual; abstract;
|
||
|
|
|
||
|
|
property Name: string read GetName;
|
||
|
|
property VersionStr: string read GetVersionStr;
|
||
|
|
end;
|
||
|
|
|
||
|
|
TCompileOptions = class(TPersistent)
|
||
|
|
private
|
||
|
|
FDebug: Boolean;
|
||
|
|
FBuild: Boolean;
|
||
|
|
FDeveloperInstall: Boolean;
|
||
|
|
FMapFiles: Boolean;
|
||
|
|
FRegisterPackages: Boolean;
|
||
|
|
FContinueOnError: Boolean;
|
||
|
|
FDetailedCompilation: Boolean;
|
||
|
|
published
|
||
|
|
property Build: Boolean read FBuild write FBuild; // -B
|
||
|
|
property Debug: Boolean read FDebug write FDebug; // compile with -$D and -$D-
|
||
|
|
property DeveloperInstall: Boolean read FDeveloperInstall write FDeveloperInstall; // source paths => search paths
|
||
|
|
property MapFiles: Boolean read FMapFiles write FMapFiles;
|
||
|
|
property RegisterPackages: Boolean read FRegisterPackages write FRegisterPackages;
|
||
|
|
property ContinueOnError: Boolean read FContinueOnError write FContinueOnError; // do not stop on errors
|
||
|
|
property DetailedCompilation: Boolean read FDetailedCompilation write FDetailedCompilation;
|
||
|
|
end;
|
||
|
|
|
||
|
|
TPersonalityOptions = class(TPersistent)
|
||
|
|
private
|
||
|
|
FBplDirectory: string;
|
||
|
|
FDcpDirectory: string;
|
||
|
|
FPersonality: TIDEPersonality;
|
||
|
|
FInstall: Boolean;
|
||
|
|
FWasInstalled: Boolean;
|
||
|
|
FTabNames: TStrings;
|
||
|
|
FHppDirectory: string;
|
||
|
|
FCompileOptions: TCompileOptions;
|
||
|
|
protected
|
||
|
|
procedure SetWasInstalled(Value: Boolean);
|
||
|
|
procedure SetInstall(const Value: Boolean); virtual;
|
||
|
|
public
|
||
|
|
constructor Create(APersonality: TIDEPersonality);
|
||
|
|
destructor Destroy; override;
|
||
|
|
|
||
|
|
function GetTabOptions(Index: Integer): TOptionList; virtual;
|
||
|
|
property TabNames: TStrings read FTabNames;
|
||
|
|
|
||
|
|
property Personality: TIDEPersonality read FPersonality;
|
||
|
|
property Install: Boolean read FInstall write SetInstall;
|
||
|
|
property WasInstalled: Boolean read FWasInstalled;
|
||
|
|
published
|
||
|
|
property BplDirectory: string read FBplDirectory write FBplDirectory;
|
||
|
|
property DcpDirectory: string read FDcpDirectory write FDcpDirectory;
|
||
|
|
property HppDirectory: string read FHppDirectory write FHppDirectory;
|
||
|
|
|
||
|
|
property CompileOptions: TCompileOptions read FCompileOptions;
|
||
|
|
end;
|
||
|
|
|
||
|
|
var
|
||
|
|
Configuration: TConfiguration = nil;
|
||
|
|
|
||
|
|
implementation
|
||
|
|
|
||
|
|
uses
|
||
|
|
InstallerConsts;
|
||
|
|
|
||
|
|
{ TPersonalityOptions }
|
||
|
|
|
||
|
|
constructor TPersonalityOptions.Create(APersonality: TIDEPersonality);
|
||
|
|
begin
|
||
|
|
inherited Create;
|
||
|
|
FTabNames := TStringList.Create;
|
||
|
|
TStringList(FTabNames).Duplicates := dupError;
|
||
|
|
FPersonality := APersonality;
|
||
|
|
FBplDirectory := Personality.BplDir;
|
||
|
|
FDcpDirectory := Personality.DcpDir;
|
||
|
|
FCompileOptions := TCompileOptions.Create;
|
||
|
|
FInstall := False;
|
||
|
|
|
||
|
|
TabNames.Add(RsDirectories);
|
||
|
|
TabNames.Add(RsCompileOptions);
|
||
|
|
end;
|
||
|
|
|
||
|
|
destructor TPersonalityOptions.Destroy;
|
||
|
|
begin
|
||
|
|
FCompileOptions.Free;
|
||
|
|
FTabNames.Free;
|
||
|
|
inherited Destroy;
|
||
|
|
end;
|
||
|
|
|
||
|
|
function TPersonalityOptions.GetTabOptions(Index: Integer): TOptionList;
|
||
|
|
begin
|
||
|
|
case Index of
|
||
|
|
0: // Directories
|
||
|
|
begin
|
||
|
|
Result := TOptionList.Create;
|
||
|
|
Result.Add(TOptionDirectoryEdit.Create(Self, 'BplDirectory', RsBplDirectoryCaption, RsBplDirectoryHint)); // do not localize
|
||
|
|
Result.Add(TOptionDirectoryEdit.Create(Self, 'DcpDirectory', RsDcpDirectoryCaption, RsDcpDirectoryHint)); // do not localize
|
||
|
|
{if (Personality is TCppPersonality) or (Personality is TDelphiCppPersonality) then
|
||
|
|
Result.Add(TOptionDirectoryEdit.Create(Self, 'HppDirectory', RsHppDirectoryCaption, RsHppDirectoryHint)); // do not localize}
|
||
|
|
end;
|
||
|
|
1: // Compile Options
|
||
|
|
begin
|
||
|
|
Result := TOptionList.Create;
|
||
|
|
Result.Add(TOptionCheckBox.Create(CompileOptions, 'Build', RsBuildCaption, RsBuildHint)); // do not localize
|
||
|
|
Result.Add(TOptionCheckBox.Create(CompileOptions, 'Debug', RsDebugCaption, RsDebugHint)); // do not localize
|
||
|
|
Result.Add(TOptionCheckBox.Create(CompileOptions, 'MapFiles', RsMapFilesCaption, RsMapFilesHint)); // do not localize
|
||
|
|
Result.Add(TOptionSpacer.Create);
|
||
|
|
Result.Add(TOptionCheckBox.Create(CompileOptions, 'DeveloperInstall', RsDeveloperInstallCaption, RsDeveloperInstallHint)); // do not localize
|
||
|
|
Result.Add(TOptionCheckBox.Create(CompileOptions, 'RegisterPackages', RsRegisterPackagesCaption, RsRegisterPackagesHint)); // do not localize
|
||
|
|
Result.Add(TOptionSpacer.Create);
|
||
|
|
Result.Add(TOptionCheckBox.Create(CompileOptions, 'ContinueOnError', RsContinueOnErrorCaption, RsContinueOnErrorHint)); // do not localize
|
||
|
|
Result.Add(TOptionCheckBox.Create(CompileOptions, 'DetailedCompilation', RsDetailedCompilationCaption, RsDetailedCompilationHint)); // do not localize
|
||
|
|
end;
|
||
|
|
else
|
||
|
|
Result := nil;
|
||
|
|
end;
|
||
|
|
end;
|
||
|
|
|
||
|
|
procedure TPersonalityOptions.SetInstall(const Value: Boolean);
|
||
|
|
begin
|
||
|
|
FInstall := Value;
|
||
|
|
end;
|
||
|
|
|
||
|
|
procedure TPersonalityOptions.SetWasInstalled(Value: Boolean);
|
||
|
|
begin
|
||
|
|
FWasInstalled := Value;
|
||
|
|
Install := Value;
|
||
|
|
end;
|
||
|
|
|
||
|
|
initialization
|
||
|
|
|
||
|
|
finalization
|
||
|
|
FreeAndNil(Configuration);
|
||
|
|
|
||
|
|
end.
|