mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-22 11:19:26 +02:00
Make TProject own an instance of IDEOptions instead of inheriting from it.
git-svn-id: trunk@45802 -
This commit is contained in:
parent
11731e7aa8
commit
2fc0b188b7
@ -104,7 +104,6 @@ type
|
||||
TAbstractIDEEnvironmentOptions = class(TAbstractIDEOptions);
|
||||
TAbstractIDEHelpOptions = class(TAbstractIDEEnvironmentOptions);
|
||||
|
||||
TAbstractIDEProjectOptions = class(TAbstractIDEOptions);
|
||||
TAbstractIDEPackageOptions = class(TAbstractIDEOptions);
|
||||
TAbstractIDECompilerOptions = class(TAbstractIDEOptions);
|
||||
|
||||
|
@ -368,7 +368,7 @@ type
|
||||
petUnit
|
||||
);
|
||||
|
||||
TLazProject = class(TAbstractIDEProjectOptions)
|
||||
TLazProject = class(TPersistent)
|
||||
private
|
||||
FCleanOutputFileMask: string;
|
||||
FCleanSourcesFileMask: string;
|
||||
@ -388,6 +388,7 @@ type
|
||||
procedure SetFPDocPaths(const AValue: string);
|
||||
procedure SetUseAppBundle(AValue: Boolean);
|
||||
protected
|
||||
FIDEOptions: TAbstractIDEOptions; //actually TProjectIDEOptions;
|
||||
FLazCompilerOptions: TLazCompilerOptions;
|
||||
FFlags: TProjectFlags;
|
||||
FResources: TObject;
|
||||
|
@ -2661,7 +2661,7 @@ procedure TBuildManager.SetBuildTargetProject1(Quiet: boolean;
|
||||
begin
|
||||
FBuildTarget:=Project1;
|
||||
if FBuildTarget<>nil then
|
||||
TProject(FBuildTarget).AddHandlerDestroy(@OnProjectDestroy);
|
||||
TProject(FBuildTarget).IDEOptions.AddHandlerDestroy(@OnProjectDestroy);
|
||||
SetBuildTarget('','','',ScanFPCSrc,Quiet);
|
||||
end;
|
||||
|
||||
|
@ -246,7 +246,7 @@ procedure TProjectApplicationOptionsFrame.ReadSettings(AOptions: TAbstractIDEOpt
|
||||
var
|
||||
AStream: TStream;
|
||||
begin
|
||||
FProject := AOptions as TProject;
|
||||
FProject := (AOptions as TProjectIDEOptions).Project;
|
||||
with FProject do
|
||||
begin
|
||||
TitleEdit.Text := Title;
|
||||
@ -273,7 +273,7 @@ procedure TProjectApplicationOptionsFrame.WriteSettings(AOptions: TAbstractIDEOp
|
||||
var
|
||||
AStream: TStream;
|
||||
begin
|
||||
with AOptions as TProject do
|
||||
with (AOptions as TProjectIDEOptions).Project {AOptions as TProject} do
|
||||
begin
|
||||
Title := TitleEdit.Text;
|
||||
if fIconChanged then
|
||||
@ -298,7 +298,7 @@ end;
|
||||
|
||||
class function TProjectApplicationOptionsFrame.SupportedOptionsClass: TAbstractIDEOptionsClass;
|
||||
begin
|
||||
Result := TProject;
|
||||
Result := TProjectIDEOptions;
|
||||
end;
|
||||
|
||||
initialization
|
||||
|
@ -192,7 +192,7 @@ end;
|
||||
|
||||
procedure TProjectFormsOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions);
|
||||
var
|
||||
Project: TProject absolute AOptions;
|
||||
Project: TProject;
|
||||
|
||||
procedure FillAutoCreateFormsListbox;
|
||||
var
|
||||
@ -257,23 +257,24 @@ var
|
||||
end;
|
||||
|
||||
begin
|
||||
Project := (AOptions as TProjectIDEOptions).Project;
|
||||
FillAutoCreateFormsListbox;
|
||||
FillAvailFormsListBox;
|
||||
|
||||
FormsAutoCreateNewFormsCheckBox.Checked := Project.AutoCreateForms;
|
||||
end;
|
||||
|
||||
procedure TProjectFormsOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions);
|
||||
var
|
||||
Project: TProject absolute AOptions;
|
||||
Project: TProject;
|
||||
begin
|
||||
Project := (AOptions as TProjectIDEOptions).Project;
|
||||
Project.AutoCreateForms := FormsAutoCreateNewFormsCheckBox.Checked;
|
||||
Project.TmpAutoCreatedForms := FormsAutoCreatedListBox.Items;
|
||||
end;
|
||||
|
||||
class function TProjectFormsOptionsFrame.SupportedOptionsClass: TAbstractIDEOptionsClass;
|
||||
begin
|
||||
Result := TProject;
|
||||
Result := TProjectIDEOptions;
|
||||
end;
|
||||
|
||||
initialization
|
||||
|
@ -85,7 +85,7 @@ end;
|
||||
|
||||
procedure TProjectI18NOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions);
|
||||
begin
|
||||
FProject := AOptions as TProject;
|
||||
FProject := (AOptions as TProjectIDEOptions).Project;
|
||||
with FProject do
|
||||
begin
|
||||
POOutDirEdit.Text := POOutputDirectory;
|
||||
@ -97,7 +97,7 @@ end;
|
||||
|
||||
procedure TProjectI18NOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions);
|
||||
begin
|
||||
with AOptions as TProject do
|
||||
with (AOptions as TProjectIDEOptions).Project do
|
||||
begin
|
||||
POOutputDirectory := POOutDirEdit.Text;
|
||||
EnableI18N := EnableI18NCheckBox.Checked;
|
||||
@ -107,7 +107,7 @@ end;
|
||||
|
||||
class function TProjectI18NOptionsFrame.SupportedOptionsClass: TAbstractIDEOptionsClass;
|
||||
begin
|
||||
Result := TProject;
|
||||
Result := TProjectIDEOptions;
|
||||
end;
|
||||
|
||||
initialization
|
||||
|
@ -120,7 +120,7 @@ end;
|
||||
|
||||
procedure TProjectFPDocOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions);
|
||||
begin
|
||||
with AOptions as TProject do begin
|
||||
with (AOptions as TProjectIDEOptions).Project do begin
|
||||
SplitString(FPDocPaths, ';', PathsListBox.Items, True);
|
||||
if FPDocPackageName='' then
|
||||
FPDocPackageNameEdit.Text:=lisDefaultPlaceholder
|
||||
@ -131,7 +131,7 @@ end;
|
||||
|
||||
procedure TProjectFPDocOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions);
|
||||
begin
|
||||
with AOptions as TProject do begin
|
||||
with (AOptions as TProjectIDEOptions).Project do begin
|
||||
FPDocPaths := StringListToText(PathsListBox.Items, ';', True);
|
||||
FPDocPackageName:=GetFPDocPkgNameEditValue;
|
||||
end;
|
||||
@ -139,7 +139,7 @@ end;
|
||||
|
||||
class function TProjectFPDocOptionsFrame.SupportedOptionsClass: TAbstractIDEOptionsClass;
|
||||
begin
|
||||
Result := TProject;
|
||||
Result := TProjectIDEOptions;
|
||||
end;
|
||||
|
||||
initialization
|
||||
|
@ -74,7 +74,7 @@ end;
|
||||
|
||||
procedure TProjectMiscOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions);
|
||||
begin
|
||||
with AOptions as TProject do
|
||||
with (AOptions as TProjectIDEOptions).Project do
|
||||
begin
|
||||
MainUnitIsPascalSourceCheckBox.Checked := (pfMainUnitIsPascalSource in Flags);
|
||||
MainUnitHasUsesSectionForAllUnitsCheckBox.Checked := (pfMainUnitHasUsesSectionForAllUnits in Flags);
|
||||
@ -100,7 +100,7 @@ end;
|
||||
|
||||
procedure TProjectMiscOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions);
|
||||
var
|
||||
Project: TProject absolute AOptions;
|
||||
Project: TProject;
|
||||
NewFlags: TProjectFlags;
|
||||
|
||||
procedure SetProjectFlag(AFlag: TProjectFlag; AValue: Boolean);
|
||||
@ -112,6 +112,7 @@ var
|
||||
end;
|
||||
|
||||
begin
|
||||
Project := (AOptions as TProjectIDEOptions).Project;
|
||||
NewFlags := Project.Flags;
|
||||
SetProjectFlag(pfMainUnitIsPascalSource,
|
||||
MainUnitIsPascalSourceCheckBox.Checked);
|
||||
@ -139,7 +140,7 @@ end;
|
||||
|
||||
class function TProjectMiscOptionsFrame.SupportedOptionsClass: TAbstractIDEOptionsClass;
|
||||
begin
|
||||
Result := TProject;
|
||||
Result := TProjectIDEOptions;
|
||||
end;
|
||||
|
||||
initialization
|
||||
|
@ -185,13 +185,12 @@ end;
|
||||
|
||||
procedure TResourcesOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions);
|
||||
var
|
||||
Project: TProject absolute AOptions;
|
||||
List: TResourceList;
|
||||
I: Integer;
|
||||
begin
|
||||
FProject := Project;
|
||||
FProject := (AOptions as TProjectIDEOptions).Project;
|
||||
lbResources.Items.Clear;
|
||||
List := Project.ProjResources.UserResources.List;
|
||||
List := FProject.ProjResources.UserResources.List;
|
||||
lbResources.Items.BeginUpdate;
|
||||
try
|
||||
for I := 0 to List.Count - 1 do
|
||||
@ -204,9 +203,10 @@ end;
|
||||
|
||||
procedure TResourcesOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions);
|
||||
var
|
||||
Project: TProject absolute AOptions;
|
||||
Project: TProject;
|
||||
I: Integer;
|
||||
begin
|
||||
Project := (AOptions as TProjectIDEOptions).Project;
|
||||
Project.ProjResources.UserResources.List.Clear;
|
||||
for I := 0 to lbResources.Items.Count - 1 do
|
||||
Project.ProjResources.UserResources.List.AddResource(lbResources.Items[I].Caption,
|
||||
@ -215,7 +215,7 @@ end;
|
||||
|
||||
class function TResourcesOptionsFrame.SupportedOptionsClass: TAbstractIDEOptionsClass;
|
||||
begin
|
||||
Result := TProject;
|
||||
Result := TProjectIDEOptions;
|
||||
end;
|
||||
|
||||
initialization
|
||||
|
@ -88,9 +88,9 @@ end;
|
||||
|
||||
procedure TProjectSaveOptionsFrame.ReadSettings(AOptions: TAbstractIDEOptions);
|
||||
begin
|
||||
if not (AOptions is TProject) then exit;
|
||||
fProject:=TProject(AOptions);
|
||||
with AOptions as TProject do
|
||||
if not (AOptions is TProjectIDEOptions) then exit;
|
||||
fProject:=(AOptions as TProjectIDEOptions).Project;
|
||||
with fProject do
|
||||
begin
|
||||
SaveClosedUnitInfoCheckBox.Checked := (pfSaveClosedUnits in Flags);
|
||||
SaveOnlyProjectUnitInfoCheckBox.Checked := (pfSaveOnlyProjectUnits in Flags);
|
||||
@ -104,8 +104,8 @@ procedure TProjectSaveOptionsFrame.WriteSettings(AOptions: TAbstractIDEOptions);
|
||||
var
|
||||
AFlags: TProjectFlags;
|
||||
begin
|
||||
if not (AOptions is TProject) then exit;
|
||||
with AOptions as TProject do
|
||||
if not (AOptions is TProjectIDEOptions) then exit;
|
||||
with (AOptions as TProjectIDEOptions).Project do
|
||||
begin
|
||||
AFlags := Flags;
|
||||
if SaveClosedUnitInfoCheckBox.Checked then
|
||||
@ -132,7 +132,7 @@ end;
|
||||
|
||||
class function TProjectSaveOptionsFrame.SupportedOptionsClass: TAbstractIDEOptionsClass;
|
||||
begin
|
||||
Result := TProject;
|
||||
Result := TProjectIDEOptions;
|
||||
end;
|
||||
|
||||
initialization
|
||||
|
@ -170,7 +170,7 @@ var
|
||||
i: integer;
|
||||
Attr: TProjectVersionAttribute;
|
||||
begin
|
||||
FVersionInfo := (AOptions as TProject).ProjResources.VersionInfo;
|
||||
FVersionInfo := (AOptions as TProjectIDEOptions).Project.ProjResources.VersionInfo;
|
||||
|
||||
UseVersionInfoCheckBox.Checked := FVersionInfo.UseVersionInfo;
|
||||
MajorVersionSpinEdit.Value := FVersionInfo.MajorVersionNr;
|
||||
@ -212,7 +212,7 @@ var
|
||||
t: TProjectVersionStringTable;
|
||||
attrs: TProjectVersionAttributes;
|
||||
begin
|
||||
VersionInfo := (AOptions as TProject).ProjResources.VersionInfo;
|
||||
VersionInfo := (AOptions as TProjectIDEOptions).Project.ProjResources.VersionInfo;
|
||||
VersionInfo.UseVersionInfo := UseVersionInfoCheckBox.Checked;
|
||||
VersionInfo.AutoIncrementBuild := AutomaticallyIncreaseBuildCheckBox.Checked;
|
||||
VersionInfo.MajorVersionNr := MajorVersionSpinEdit.Value;
|
||||
@ -240,7 +240,7 @@ end;
|
||||
|
||||
class function TProjectVersionInfoOptionsFrame.SupportedOptionsClass: TAbstractIDEOptionsClass;
|
||||
begin
|
||||
Result := TProject;
|
||||
Result := TProjectIDEOptions;
|
||||
end;
|
||||
|
||||
initialization
|
||||
|
17
ide/main.pp
17
ide/main.pp
@ -425,8 +425,7 @@ type
|
||||
procedure OnLoadIDEOptions(Sender: TObject; AOptions: TAbstractIDEOptions);
|
||||
procedure OnSaveIDEOptions(Sender: TObject; AOptions: TAbstractIDEOptions);
|
||||
procedure DoOpenIDEOptions(AEditor: TAbstractIDEOptionsEditorClass;
|
||||
ACaption: String;
|
||||
AOptionsFilter: array of TAbstractIDEOptionsClass;
|
||||
ACaption: String; AOptionsFilter: array of TAbstractIDEOptionsClass;
|
||||
ASettings: TIDEOptionsEditorSettings); override;
|
||||
|
||||
procedure DoEnvironmentOptionsBeforeRead(Sender: TObject);
|
||||
@ -4238,7 +4237,7 @@ procedure TMainIDE.mnuProjectOptionsClicked(Sender: TObject);
|
||||
begin
|
||||
if Project1=nil then exit;
|
||||
DoOpenIDEOptions(nil, Format(dlgProjectOptionsFor, [Project1.GetTitleOrName]),
|
||||
[TAbstractIDEProjectOptions, TProjectCompilerOptions], []);
|
||||
[TProjectIDEOptions, TProjectCompilerOptions], []);
|
||||
end;
|
||||
|
||||
function TMainIDE.UpdateProjectPOFile(AProject: TProject): TModalResult;
|
||||
@ -5004,7 +5003,7 @@ begin
|
||||
//debugln(['TMainIDE.DoProjectOptionsBeforeRead ',DbgSName(Sender)]);
|
||||
ActiveSrcEdit:=nil;
|
||||
BeginCodeTool(ActiveSrcEdit, ActiveUnitInfo, []);
|
||||
AProject:=TProject(Sender);
|
||||
AProject:=(Sender as TProjectIDEOptions).Project;
|
||||
AProject.BackupSession;
|
||||
AProject.BackupBuildModes;
|
||||
AProject.UpdateExecutableType;
|
||||
@ -5013,7 +5012,7 @@ end;
|
||||
|
||||
procedure TMainIDE.DoProjectOptionsAfterWrite(Sender: TObject; Restore: boolean);
|
||||
var
|
||||
AProject: TProject absolute Sender;
|
||||
AProject: TProject;
|
||||
aFilename: String;
|
||||
|
||||
function GetTitle: String;
|
||||
@ -5099,6 +5098,7 @@ var
|
||||
|
||||
begin
|
||||
//debugln(['TMainIDE.DoProjectOptionsAfterWrite ',DbgSName(Sender),' Restore=',Restore]);
|
||||
AProject:=(Sender as TProjectIDEOptions).Project;
|
||||
if not Restore then
|
||||
begin
|
||||
SetTitle;
|
||||
@ -6189,8 +6189,8 @@ begin
|
||||
Result.OnSaveUnitSessionInfo:=@OnSaveProjectUnitSessionInfo;
|
||||
Result.OnGetTestDirectory:=@OnProjectGetTestDirectory;
|
||||
Result.OnChangeProjectInfoFile:=@OnProjectChangeInfoFile;
|
||||
Result.OnBeforeRead:=@DoProjectOptionsBeforeRead;
|
||||
Result.OnAfterWrite:=@DoProjectOptionsAfterWrite;
|
||||
Result.IDEOptions.OnBeforeRead:=@DoProjectOptionsBeforeRead;
|
||||
Result.IDEOptions.OnAfterWrite:=@DoProjectOptionsAfterWrite;
|
||||
end;
|
||||
|
||||
function TMainIDE.DoNewProject(ProjectDesc: TProjectDescriptor): TModalResult;
|
||||
@ -9279,8 +9279,7 @@ begin
|
||||
Owners.Free;
|
||||
end;
|
||||
end;
|
||||
if FilenameIsAbsolute(CodeToolsOpts.IndentationFileName)
|
||||
then
|
||||
if FilenameIsAbsolute(CodeToolsOpts.IndentationFileName) then
|
||||
AddFile(CodeToolsOpts.IndentationFileName);
|
||||
end;
|
||||
|
||||
|
@ -725,6 +725,19 @@ type
|
||||
property SessionMatrixOptions: TBuildMatrixOptions read FSessionMatrixOptions;
|
||||
end;
|
||||
|
||||
{ TProjectIDEOptions }
|
||||
|
||||
TProjectIDEOptions = class(TAbstractIDEOptions)
|
||||
private
|
||||
FProject: TProject;
|
||||
public
|
||||
constructor Create(AProject: TProject);
|
||||
destructor Destroy; override;
|
||||
class function GetInstance: TAbstractIDEOptions; override;
|
||||
class function GetGroupCaption: string; override;
|
||||
property Project: TProject read FProject;
|
||||
end;
|
||||
|
||||
{ TProject }
|
||||
|
||||
TEndUpdateProjectEvent =
|
||||
@ -819,6 +832,7 @@ type
|
||||
function GetFirstPartOfProject: TUnitInfo;
|
||||
function GetFirstUnitWithComponent: TUnitInfo;
|
||||
function GetFirstUnitWithEditorIndex: TUnitInfo;
|
||||
function GetIDEOptions: TProjectIDEOptions;
|
||||
function GetMainFilename: String;
|
||||
function GetMainUnitInfo: TUnitInfo;
|
||||
function GetProjResources: TProjectResources;
|
||||
@ -904,8 +918,6 @@ type
|
||||
public
|
||||
constructor Create(ProjectDescription: TProjectDescriptor); override;
|
||||
destructor Destroy; override;
|
||||
class function GetInstance: TAbstractIDEOptions; override;
|
||||
class function GetGroupCaption: string; override;
|
||||
procedure Clear; override;
|
||||
procedure BeginUpdate(Change: boolean);
|
||||
procedure EndUpdate;
|
||||
@ -1098,6 +1110,7 @@ type
|
||||
property FirstRequiredDependency: TPkgDependency read FFirstRequiredDependency;
|
||||
property FirstUnitWithComponent: TUnitInfo read GetFirstUnitWithComponent;
|
||||
property FirstUnitWithEditorIndex: TUnitInfo read GetFirstUnitWithEditorIndex;
|
||||
property IDEOptions: TProjectIDEOptions read GetIDEOptions;
|
||||
property JumpHistory: TProjectJumpHistory read FJumpHistory write FJumpHistory;
|
||||
property LastCompilerFileDate: integer read FLastCompilerFileDate
|
||||
write FLastCompilerFileDate;
|
||||
@ -2623,6 +2636,29 @@ begin
|
||||
end;
|
||||
|
||||
|
||||
{ TProjectIDEOptions }
|
||||
|
||||
constructor TProjectIDEOptions.Create(AProject: TProject);
|
||||
begin
|
||||
inherited Create;
|
||||
FProject := AProject;
|
||||
end;
|
||||
|
||||
destructor TProjectIDEOptions.Destroy;
|
||||
begin
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
class function TProjectIDEOptions.GetInstance: TAbstractIDEOptions;
|
||||
begin
|
||||
Result := Project1.IDEOptions;
|
||||
end;
|
||||
|
||||
class function TProjectIDEOptions.GetGroupCaption: string;
|
||||
begin
|
||||
Result := dlgProjectOptions;
|
||||
end;
|
||||
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
TProject Class
|
||||
@ -2661,6 +2697,7 @@ begin
|
||||
FSourceDirectories:=TFileReferenceList.Create;
|
||||
FSourceDirectories.OnChanged:=@SourceDirectoriesChanged;
|
||||
UpdateProjectDirectory;
|
||||
FIDEOptions:=TProjectIDEOptions.Create(Self);
|
||||
FPublishOptions:=TPublishProjectOptions.Create(Self);
|
||||
FRunParameters:=TRunParamsOptions.Create;
|
||||
Title := '';
|
||||
@ -2692,6 +2729,7 @@ begin
|
||||
FreeThenNil(FJumpHistory);
|
||||
FreeThenNil(FSourceDirectories);
|
||||
FreeThenNil(FPublishOptions);
|
||||
FreeThenNil(FIDEOptions);
|
||||
FreeThenNil(FRunParameters);
|
||||
FreeThenNil(FDefineTemplates);
|
||||
|
||||
@ -3775,16 +3813,6 @@ begin
|
||||
TProjectXPManifest(ProjResources[TProjectXPManifest]).UseManifest:=AValue;
|
||||
end;
|
||||
|
||||
class function TProject.GetInstance: TAbstractIDEOptions;
|
||||
begin
|
||||
Result := Project1;
|
||||
end;
|
||||
|
||||
class function TProject.GetGroupCaption: string;
|
||||
begin
|
||||
Result := dlgProjectOptions;
|
||||
end;
|
||||
|
||||
function TProject.UnitCount:integer;
|
||||
begin
|
||||
Result:=FUnitList.Count;
|
||||
@ -4134,6 +4162,11 @@ begin
|
||||
Result:=fFirst[uilWithEditorIndex];
|
||||
end;
|
||||
|
||||
function TProject.GetIDEOptions: TProjectIDEOptions;
|
||||
begin
|
||||
Result := TProjectIDEOptions(FIDEOptions);
|
||||
end;
|
||||
|
||||
function TProject.GetMainUnitInfo: TUnitInfo;
|
||||
begin
|
||||
if (MainUnitID>=0) and (MainUnitID<UnitCount) then
|
||||
@ -7316,7 +7349,7 @@ begin
|
||||
end;
|
||||
|
||||
initialization
|
||||
RegisterIDEOptionsGroup(GroupProject, TProject);
|
||||
RegisterIDEOptionsGroup(GroupProject, TProjectIDEOptions);
|
||||
RegisterIDEOptionsGroup(GroupCompiler, TProjectCompilerOptions);
|
||||
|
||||
end.
|
||||
|
Loading…
Reference in New Issue
Block a user