mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-17 03:49:30 +02:00
project groups: started loading build modes
git-svn-id: trunk@50428 -
This commit is contained in:
parent
71bb489d46
commit
42f2cc6200
@ -28,10 +28,13 @@ type
|
||||
|
||||
TIDECompileTarget = class(TPGCompileTarget)
|
||||
private
|
||||
FBuildModes: TObjectList;
|
||||
FFiles: TStringList;
|
||||
FRequiredPackages: TObjectList; // list of TPGDependency
|
||||
function CompileUsingLazBuild(const AAction: TPGTargetAction): TPGActionResult;
|
||||
protected
|
||||
function GetBuildModeCount: integer; override;
|
||||
function GetBuildModes(Index: integer): TPGBuildMode; override;
|
||||
function GetFileCount: integer; override;
|
||||
function GetFiles(Index: integer): string; override;
|
||||
function GetRequiredPackageCount: integer; override;
|
||||
@ -724,6 +727,7 @@ begin
|
||||
Target:=AddTarget(TargetFileName);
|
||||
if pgloLoadRecursively in Options then
|
||||
(Target as TIDECompileTarget).LoadTarget(true);
|
||||
// ToDo: load buildmode flags
|
||||
end
|
||||
else if (pgloRemoveInvalid in Options) then
|
||||
begin
|
||||
@ -835,6 +839,8 @@ procedure TIDECompileTarget.UnLoadTarget;
|
||||
begin
|
||||
if (FProjectGroup<>nil) and not (Self is TRootProjectGroupTarget) then
|
||||
FreeAndNil(FProjectGroup);
|
||||
if FBuildModes<>nil then
|
||||
FreeAndNil(FBuildModes);
|
||||
if FFiles<>nil then
|
||||
FreeAndNil(FFiles);
|
||||
if FRequiredPackages<>nil then
|
||||
@ -916,6 +922,19 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
function TIDECompileTarget.GetBuildModeCount: integer;
|
||||
begin
|
||||
if FBuildModes=nil then
|
||||
Result:=0
|
||||
else
|
||||
Result:=FBuildModes.Count;
|
||||
end;
|
||||
|
||||
function TIDECompileTarget.GetBuildModes(Index: integer): TPGBuildMode;
|
||||
begin
|
||||
Result:=TPGBuildMode(FBuildModes[Index]);
|
||||
end;
|
||||
|
||||
function TIDECompileTarget.GetFileCount: integer;
|
||||
begin
|
||||
if FFiles=nil then
|
||||
@ -1007,12 +1026,13 @@ var
|
||||
ProjFile: TLazProjectFile;
|
||||
PkgList: TFPList;
|
||||
Pkg: TIDEPackage;
|
||||
PkgName, Path, SubPath, CurFilename, BaseDir: String;
|
||||
PkgName, Path, SubPath, CurFilename, BaseDir, BuildMode: String;
|
||||
xml: TXMLConfig;
|
||||
begin
|
||||
if FFiles<>nil then exit; // already loaded
|
||||
|
||||
debugln(['TIDECompileTarget.LoadProject ',Filename]);
|
||||
//debugln(['TIDECompileTarget.LoadProject ',Filename]);
|
||||
FBuildModes:=TObjectList.Create(True);
|
||||
FFiles:=TStringList.Create;
|
||||
FRequiredPackages:=TObjectList.Create(True);
|
||||
|
||||
@ -1070,6 +1090,17 @@ begin
|
||||
if PkgName='' then continue;
|
||||
FRequiredPackages.Add(TPGDependency.Create(PkgName));
|
||||
end;
|
||||
|
||||
// load build modes
|
||||
Path:='ProjectOptions/BuildModes/';
|
||||
Cnt:=xml.GetValue(Path+'Count',0);
|
||||
for i:=1 to Cnt do begin
|
||||
SubPath:=Path+'Item'+IntToStr(i)+'/';
|
||||
BuildMode:=xml.GetValue(SubPath+'Name','');
|
||||
// ToDo: load/store compile in lpg
|
||||
if BuildMode<>'' then
|
||||
FBuildModes.Add(TPGBuildMode.Create(BuildMode,false));
|
||||
end;
|
||||
end;
|
||||
finally
|
||||
xml.Free;
|
||||
|
@ -18,26 +18,29 @@ uses
|
||||
LazLogger, ProjectGroupStrConst, ProjectGroup;
|
||||
|
||||
type
|
||||
TNodeType = (ntUnknown,
|
||||
ntProjectGroup,
|
||||
ntTargets,
|
||||
ntRemovedTargets,
|
||||
ntTarget,
|
||||
ntRemovedTarget,
|
||||
ntFiles,
|
||||
ntFile,
|
||||
//ntRemovedFiles,
|
||||
//ntRemovedFile,
|
||||
ntDependencies,
|
||||
ntDependency
|
||||
//ntRemovedDependencies,
|
||||
//ntRemovedDependency
|
||||
);
|
||||
TNodeType = (
|
||||
ntUnknown,
|
||||
ntProjectGroup,
|
||||
ntTargets,
|
||||
ntRemovedTargets,
|
||||
ntTarget,
|
||||
ntRemovedTarget,
|
||||
ntBuildModes,
|
||||
ntBuildMode,
|
||||
ntFiles,
|
||||
ntFile,
|
||||
//ntRemovedFiles,
|
||||
//ntRemovedFile,
|
||||
ntDependencies,
|
||||
ntDependency
|
||||
//ntRemovedDependencies,
|
||||
//ntRemovedDependency
|
||||
);
|
||||
|
||||
TNodeData = class(TObject)
|
||||
NodeType: TNodeType;
|
||||
Target, ParentTarget: TPGCompileTarget;
|
||||
Value: string; // ntFile = Filename, ntDependency = PkgName
|
||||
Value: string; // ntFile = Filename, ntDependency = PkgName, ntBuildMode = BuildMode name
|
||||
end;
|
||||
TTargetNodes = Array[Boolean] of TTreeNode;
|
||||
|
||||
@ -208,6 +211,8 @@ var
|
||||
NIRemovedTargetProject : integer = 3;
|
||||
NIRemovedTargetPackage : integer = 4;
|
||||
NIRemovedTargetProjectGroup: integer = 5;
|
||||
NIBuildModes : integer = 16;
|
||||
NIBuildMode : integer = 17;
|
||||
NIFiles : integer = 16;
|
||||
NIFile : integer = 17;
|
||||
//NIRemovedFiles : integer = 18;
|
||||
@ -540,7 +545,6 @@ begin
|
||||
PG.Perform(ND.Target,taOpen);
|
||||
end;
|
||||
end;
|
||||
ntFiles: ;
|
||||
ntFile:
|
||||
begin
|
||||
// open file in source editor
|
||||
@ -844,7 +848,8 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
function TProjectGroupEditorForm.GetNodeIndex(ANodeType: TNodeType; ANodeData: TPGCompileTarget): Integer;
|
||||
function TProjectGroupEditorForm.GetNodeIndex(ANodeType: TNodeType;
|
||||
ANodeData: TPGCompileTarget): Integer;
|
||||
begin
|
||||
Case ANodeType of
|
||||
ntProjectGroup: Result:=NIProjectGroup;
|
||||
@ -862,6 +867,8 @@ begin
|
||||
ttPackage: Result:=NIRemovedTargetPackage;
|
||||
ttProjectGroup: Result:=NIRemovedTargetProjectGroup;
|
||||
end;
|
||||
ntBuildModes: Result:=NIBuildModes;
|
||||
ntBuildMode: Result:=NIBuildMode;
|
||||
ntFiles: Result:=NIFiles;
|
||||
ntFile: Result:=NIFile;
|
||||
//ntRemovedFiles: Result:=NIRemovedFiles;
|
||||
@ -1187,16 +1194,25 @@ end;
|
||||
procedure TProjectGroupEditorForm.FillProjectNode(AParent: TTreeNode;
|
||||
T: TPGCompileTarget);
|
||||
Var
|
||||
PF,PD: TTargetNodes;
|
||||
FileNodes,DepNodes: TTargetNodes;
|
||||
i: Integer;
|
||||
BuildModeNode: TTreeNode;
|
||||
begin
|
||||
TVPG.BeginUpdate;
|
||||
try
|
||||
PF[False]:=CreateSectionNode(AParent,lisNodeFiles,ntFiles);
|
||||
PF[True]:=nil; //CreateNode(AParent,lisNodeRemovedFiles,ntFiles,Nil,AProjectGroup);
|
||||
// buildmodes
|
||||
if T.BuildModeCount>0 then begin
|
||||
BuildModeNode:=CreateSectionNode(AParent,lisNodeBuildModes,ntBuildModes);
|
||||
for i:=0 to T.BuildModeCount-1 do
|
||||
CreateSubNode(BuildModeNode,ntBuildMode,T,T.BuildModes[i].Name);
|
||||
end;
|
||||
// files
|
||||
FileNodes[False]:=CreateSectionNode(AParent,lisNodeFiles,ntFiles);
|
||||
FileNodes[True]:=nil; //CreateNode(AParent,lisNodeRemovedFiles,ntFiles,Nil,AProjectGroup);
|
||||
for i:=0 to T.FileCount-1 do
|
||||
CreateSubNode(PF[False],ntFile,T,T.Files[i]);
|
||||
ShowDependencies(AParent,T,PD);
|
||||
CreateSubNode(FileNodes[False],ntFile,T,T.Files[i]);
|
||||
// dependencies
|
||||
ShowDependencies(AParent,T,DepNodes);
|
||||
// TODO: Build mode info Not available ?
|
||||
finally
|
||||
TVPG.EndUpdate;
|
||||
|
@ -37,6 +37,14 @@ Type
|
||||
|
||||
TProjectGroup = class;
|
||||
|
||||
{ TPGBuildMode }
|
||||
|
||||
TPGBuildMode = class
|
||||
Name: string;
|
||||
Compile: boolean;
|
||||
constructor Create(const aName: string; aCompile: boolean);
|
||||
end;
|
||||
|
||||
{ TPGDependency }
|
||||
|
||||
TPGDependency = class
|
||||
@ -57,6 +65,8 @@ Type
|
||||
FParent: TPGCompileTarget;
|
||||
FProjectGroup: TProjectGroup;
|
||||
function GetAllowedActions: TPGTargetActions; virtual; // By default, return all allowed actions for target type.
|
||||
function GetBuildModeCount: integer; virtual; abstract;
|
||||
function GetBuildModes(Index: integer): TPGBuildMode; virtual; abstract;
|
||||
function GetFileCount: integer; virtual; abstract;
|
||||
function GetFiles(Index: integer): string; virtual; abstract;
|
||||
function GetRequiredPackageCount: integer; virtual; abstract;
|
||||
@ -85,6 +95,8 @@ Type
|
||||
property AllowedActions: TPGTargetActions Read GetAllowedActions;
|
||||
//
|
||||
property ProjectGroup: TProjectGroup read FProjectGroup; // set if TargetType is ttProjectGroup
|
||||
property BuildModes[Index: integer]: TPGBuildMode read GetBuildModes;
|
||||
property BuildModeCount: integer read GetBuildModeCount;
|
||||
property Files[Index: integer]: string read GetFiles;
|
||||
property FileCount: integer read GetFileCount;
|
||||
property RequiredPackages[Index: integer]: TPGDependency read GetRequiredPackages;
|
||||
@ -226,6 +238,14 @@ begin
|
||||
Result:=AAction in [taCompile,taCompileClean];
|
||||
end;
|
||||
|
||||
{ TPGBuildMode }
|
||||
|
||||
constructor TPGBuildMode.Create(const aName: string; aCompile: boolean);
|
||||
begin
|
||||
Name:=aName;
|
||||
Compile:=aCompile;
|
||||
end;
|
||||
|
||||
{ TPGDependency }
|
||||
|
||||
constructor TPGDependency.Create(const aPkgName: string);
|
||||
|
@ -49,6 +49,7 @@ Resourcestring
|
||||
lisProjectGroup = 'Project group %s';
|
||||
lisNodeTargets = 'Targets';
|
||||
lisNodeRemovedTargets = 'Removed targets';
|
||||
lisNodeBuildModes = 'Build Modes';
|
||||
lisNodeFiles = 'Files';
|
||||
lisNodeRemovedFiles = 'Removed files';
|
||||
lisNodeDependencies = 'Dependencies';
|
||||
|
Loading…
Reference in New Issue
Block a user