mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-13 14:59:11 +02:00
project groups: save as: rebase TreeView nodes
git-svn-id: trunk@50376 -
This commit is contained in:
parent
d87fdc7823
commit
0351081414
@ -42,8 +42,8 @@ type
|
|||||||
function GetProjectGroup: TProjectGroup; override;
|
function GetProjectGroup: TProjectGroup; override;
|
||||||
function PerformAction(AAction: TPGTargetAction): TPGActionResult; override;
|
function PerformAction(AAction: TPGTargetAction): TPGActionResult; override;
|
||||||
public
|
public
|
||||||
procedure LoadTarget;
|
procedure LoadTarget; virtual;
|
||||||
procedure UnLoadTarget;
|
procedure UnLoadTarget; virtual;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// Since a project group iself is also a target, we need a target to represent
|
// Since a project group iself is also a target, we need a target to represent
|
||||||
@ -56,6 +56,8 @@ type
|
|||||||
procedure SetTargetType(AValue: TPGTargetType); override;
|
procedure SetTargetType(AValue: TPGTargetType); override;
|
||||||
public
|
public
|
||||||
constructor Create(AProjectGroup: TProjectGroup);
|
constructor Create(AProjectGroup: TProjectGroup);
|
||||||
|
procedure LoadTarget; override;
|
||||||
|
procedure UnLoadTarget; override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
TTargetEvent = procedure(Sender: TObject; Target: TPGCompileTarget) of object;
|
TTargetEvent = procedure(Sender: TObject; Target: TPGCompileTarget) of object;
|
||||||
@ -432,8 +434,10 @@ begin
|
|||||||
F.Filter:=lisLazarusProjectGroup+'|*.lpg|'+lisAllFiles+'|'+AllFilesMask;
|
F.Filter:=lisLazarusProjectGroup+'|*.lpg|'+lisAllFiles+'|'+AllFilesMask;
|
||||||
F.DefaultExt:='.lpg';
|
F.DefaultExt:='.lpg';
|
||||||
Result:=F.Execute;
|
Result:=F.Execute;
|
||||||
if Result then
|
if Result then begin
|
||||||
FProjectGroup.FileName:=TrimAndExpandFilename(FileName);
|
FProjectGroup.FileName:=TrimAndExpandFilename(FileName);
|
||||||
|
|
||||||
|
end;
|
||||||
StoreIDEFileDialog(F);
|
StoreIDEFileDialog(F);
|
||||||
finally
|
finally
|
||||||
F.Free;
|
F.Free;
|
||||||
@ -483,19 +487,30 @@ begin
|
|||||||
inherited SetTargetType(AValue);
|
inherited SetTargetType(AValue);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Constructor TProjectGroupTarget.Create(AProjectGroup: TProjectGroup);
|
constructor TProjectGroupTarget.Create(AProjectGroup: TProjectGroup);
|
||||||
begin
|
begin
|
||||||
FTarget:=AProjectGroup;
|
FTarget:=AProjectGroup;
|
||||||
TargetType:=ttProjectGroup;
|
TargetType:=ttProjectGroup;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TProjectGroupTarget.LoadTarget;
|
||||||
|
begin
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TProjectGroupTarget.UnLoadTarget;
|
||||||
|
begin
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
{ TIDEProjectGroup }
|
{ TIDEProjectGroup }
|
||||||
|
|
||||||
procedure TIDEProjectGroup.SetFileName(AValue: String);
|
procedure TIDEProjectGroup.SetFileName(AValue: String);
|
||||||
begin
|
begin
|
||||||
if FileName=AValue then Exit;
|
if FileName=AValue then Exit;
|
||||||
|
debugln(['TIDEProjectGroup.SetFileName Old=',Filename,' New=',AValue]);
|
||||||
inherited SetFileName(AValue);
|
inherited SetFileName(AValue);
|
||||||
IncreaseChangeStamp;
|
debugln(['TIDEProjectGroup.SetFileName Now=',Filename]);
|
||||||
if Assigned(FOnFileNameChange) then
|
if Assigned(FOnFileNameChange) then
|
||||||
FOnFileNameChange(Self);
|
FOnFileNameChange(Self);
|
||||||
end;
|
end;
|
||||||
@ -612,7 +627,7 @@ begin
|
|||||||
TargetFileName:=XMLConfig.GetValue(Format(ARoot+'/Targets/Target%d/FileName',[i]),'');
|
TargetFileName:=XMLConfig.GetValue(Format(ARoot+'/Targets/Target%d/FileName',[i]),'');
|
||||||
TargetFileName:=TrimFilename(SetDirSeparators(TargetFileName));
|
TargetFileName:=TrimFilename(SetDirSeparators(TargetFileName));
|
||||||
if not FilenameIsAbsolute(TargetFileName) then
|
if not FilenameIsAbsolute(TargetFileName) then
|
||||||
TargetFileName:=BaseDir+TargetFileName;
|
TargetFileName:=TrimFilename(BaseDir+TargetFileName);
|
||||||
If (TargetFileName<>'') and FileExistsCached(TargetFileName) then begin
|
If (TargetFileName<>'') and FileExistsCached(TargetFileName) then begin
|
||||||
Target:=AddTarget(TargetFileName);
|
Target:=AddTarget(TargetFileName);
|
||||||
(Target as TIDECompileTarget).LoadTarget;
|
(Target as TIDECompileTarget).LoadTarget;
|
||||||
|
@ -142,8 +142,10 @@ type
|
|||||||
function FindNodeFromTarget(ATarget: TPGCompileTarget): TTreeNode;
|
function FindNodeFromTarget(ATarget: TPGCompileTarget): TTreeNode;
|
||||||
procedure FreeNodeData;
|
procedure FreeNodeData;
|
||||||
class function TargetFromNode(N: TTreeNode): TPGCompileTarget;
|
class function TargetFromNode(N: TTreeNode): TPGCompileTarget;
|
||||||
function DisplayFileName(AProjectGroup: TProjectGroup;NodeType: TNodeType; AFileName: String): String;
|
function DisplayFileName(AProjectGroup: TProjectGroup; NodeType: TNodeType; AFileName: String): String;
|
||||||
|
function DisplayFileName(NodeData: TNodeData): string;
|
||||||
function CreateNode(AParent: TTreeNode; Const ACaption: String; ANodeType: TNodeType; ANodeData: TPGCompileTarget; AProjectGroup: TProjectGroup): TTreeNode;
|
function CreateNode(AParent: TTreeNode; Const ACaption: String; ANodeType: TNodeType; ANodeData: TPGCompileTarget; AProjectGroup: TProjectGroup): TTreeNode;
|
||||||
|
function CreateNode(AParent: TTreeNode; ANodeType: TNodeType; ANodeData: TPGCompileTarget; AProjectGroup: TProjectGroup): TTreeNode;
|
||||||
procedure FillPackageNode(AParent: TTreeNode; AProjectGroup: TProjectGroup; T: TPGCompileTarget);
|
procedure FillPackageNode(AParent: TTreeNode; AProjectGroup: TProjectGroup; T: TPGCompileTarget);
|
||||||
procedure FillProjectNode(AParent: TTreeNode; AProjectGroup: TProjectGroup; T: TPGCompileTarget);
|
procedure FillProjectNode(AParent: TTreeNode; AProjectGroup: TProjectGroup; T: TPGCompileTarget);
|
||||||
procedure FillTargetNode(AParent: TTreeNode; AProjectGroup: TProjectGroup; T: TPGCompileTarget);
|
procedure FillTargetNode(AParent: TTreeNode; AProjectGroup: TProjectGroup; T: TPGCompileTarget);
|
||||||
@ -174,6 +176,8 @@ procedure CreateProjectGroupEditor(Sender: TObject; aFormName: string;
|
|||||||
var AForm: TCustomForm; DoDisableAutoSizing: boolean);
|
var AForm: TCustomForm; DoDisableAutoSizing: boolean);
|
||||||
procedure SetProjectGroupEditorCallBack;
|
procedure SetProjectGroupEditorCallBack;
|
||||||
|
|
||||||
|
function dbgs(NodeType: TNodeType): string; overload;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
{$R *.lfm}
|
{$R *.lfm}
|
||||||
@ -250,6 +254,11 @@ begin
|
|||||||
OnShowProjectGroupEditor:=@ShowProjectGroupEditor;
|
OnShowProjectGroupEditor:=@ShowProjectGroupEditor;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function dbgs(NodeType: TNodeType): string;
|
||||||
|
begin
|
||||||
|
str(NodeType,Result);
|
||||||
|
end;
|
||||||
|
|
||||||
{ TProjectGroupEditorForm }
|
{ TProjectGroupEditorForm }
|
||||||
|
|
||||||
procedure TProjectGroupEditorForm.ClearEventCallBacks(AProjectGroup: TProjectGroup);
|
procedure TProjectGroupEditorForm.ClearEventCallBacks(AProjectGroup: TProjectGroup);
|
||||||
@ -423,11 +432,32 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TProjectGroupEditorForm.DoFileNameChange(Sender: TObject);
|
procedure TProjectGroupEditorForm.DoFileNameChange(Sender: TObject);
|
||||||
|
var
|
||||||
|
TVNode: TTreeNode;
|
||||||
|
NodeData: TNodeData;
|
||||||
begin
|
begin
|
||||||
ShowFileName;
|
ShowFileName;
|
||||||
|
// ToDo: update nodes
|
||||||
|
debugln(['TProjectGroupEditorForm.DoFileNameChange START']);
|
||||||
|
TVPG.BeginUpdate;
|
||||||
|
TVNode:=TVPG.Items.GetFirstNode;
|
||||||
|
while TVNode<>nil do begin
|
||||||
|
NodeData:=TNodeData(TVNode.Data);
|
||||||
|
debugln(['TProjectGroupEditorForm.DoFileNameChange AAA1 NodeData=',DbgSName(NodeData),' Text=',TVNode.Text]);
|
||||||
|
if NodeData is TNodeData then begin
|
||||||
|
debugln(['TProjectGroupEditorForm.DoFileNameChange AAA2 NodeType=',dbgs(NodeData.NodeType),' PGFile=',NodeData.ProjectGroup.Filename,' ',NodeData.Target<>nil]);
|
||||||
|
if NodeData.Target<>nil then begin
|
||||||
|
debugln(['TProjectGroupEditorForm.DoFileNameChange AAA3 TargetFile=',NodeData.Target.Filename]);
|
||||||
|
TVNode.Text:=DisplayFileName(NodeData);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
TVNode:=TVNode.GetNext;
|
||||||
|
end;
|
||||||
|
TVPG.EndUpdate;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TProjectGroupEditorForm.UpdateIDEMenuCommandFromAction(Sender: TObject; Item: TIDEMenuCommand);
|
procedure TProjectGroupEditorForm.UpdateIDEMenuCommandFromAction(
|
||||||
|
Sender: TObject; Item: TIDEMenuCommand);
|
||||||
begin
|
begin
|
||||||
Item.Enabled:=(Sender as TAction).Enabled;
|
Item.Enabled:=(Sender as TAction).Enabled;
|
||||||
Item.Visible:=(Sender as TAction).Visible;
|
Item.Visible:=(Sender as TAction).Visible;
|
||||||
@ -497,7 +527,7 @@ begin
|
|||||||
PG:=Sender as TProjectGroup;
|
PG:=Sender as TProjectGroup;
|
||||||
(Target as TIDECompileTarget).LoadTarget;
|
(Target as TIDECompileTarget).LoadTarget;
|
||||||
// ToDo: use of FTargetNodes is wrong if PG<>FProjectGroup
|
// ToDo: use of FTargetNodes is wrong if PG<>FProjectGroup
|
||||||
N:=CreateNode(FTargetNodes[False],DisplayFileName(PG,ntTarget,Target.Filename),ntTarget,Target,PG);
|
N:=CreateNode(FTargetNodes[False],ntTarget,Target,PG);
|
||||||
FillTargetNode(N,PG,Target);
|
FillTargetNode(N,PG,Target);
|
||||||
TVPG.Selected:=N;
|
TVPG.Selected:=N;
|
||||||
UpdateStatusBarTargetCount;
|
UpdateStatusBarTargetCount;
|
||||||
@ -513,7 +543,7 @@ begin
|
|||||||
N:=FindNodeFromTarget(Target);
|
N:=FindNodeFromTarget(Target);
|
||||||
TVPG.Items.Delete(N);
|
TVPG.Items.Delete(N);
|
||||||
// MVC TOD: The use of FTargetNodes is not correct when PG<>FProjectGroup
|
// MVC TOD: The use of FTargetNodes is not correct when PG<>FProjectGroup
|
||||||
CreateNode(FTargetNodes[True],DisplayFileName(PG,ntRemovedTarget,Target.Filename),ntRemovedTarget,Target,PG);
|
CreateNode(FTargetNodes[True],ntRemovedTarget,Target,PG);
|
||||||
TVPG.Selected:=FNPG;
|
TVPG.Selected:=FNPG;
|
||||||
UpdateStatusBarTargetCount;
|
UpdateStatusBarTargetCount;
|
||||||
end;
|
end;
|
||||||
@ -828,22 +858,57 @@ begin
|
|||||||
ConfigNode(Result,'',ND);
|
ConfigNode(Result,'',ND);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TProjectGroupEditorForm.DisplayFileName(AProjectGroup: TProjectGroup;NodeType: TNodeType; AFileName: String): String;
|
function TProjectGroupEditorForm.CreateNode(AParent: TTreeNode;
|
||||||
|
ANodeType: TNodeType; ANodeData: TPGCompileTarget;
|
||||||
|
AProjectGroup: TProjectGroup): TTreeNode;
|
||||||
|
var
|
||||||
|
ND: TNodeData;
|
||||||
|
begin
|
||||||
|
ND:=TNodeData.Create;
|
||||||
|
ND.NodeType:=ANodeType;
|
||||||
|
ND.ProjectGroup:=AProjectGroup;
|
||||||
|
ND.Target:=ANodeData;
|
||||||
|
Result:=TVPG.Items.AddChild(AParent,DisplayFileName(ND));
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TProjectGroupEditorForm.DisplayFileName(AProjectGroup: TProjectGroup;
|
||||||
|
NodeType: TNodeType; AFileName: String): String;
|
||||||
Var
|
Var
|
||||||
P: String;
|
PGBaseDir: String;
|
||||||
begin
|
begin
|
||||||
if Assigned(AProjectGroup) then
|
if Assigned(AProjectGroup) then
|
||||||
P:=ExtractFilePath(AProjectGroup.FileName)
|
PGBaseDir:=ExtractFilePath(AProjectGroup.FileName)
|
||||||
else
|
|
||||||
P:='';
|
|
||||||
if (P<>'') then
|
|
||||||
Result:=ExtractRelativePath(P,AFileName)
|
|
||||||
else
|
else
|
||||||
|
PGBaseDir:='';
|
||||||
|
if (PGBaseDir<>'') then begin
|
||||||
|
//if CompareFilenames(PGBaseDir,AFileName)=0 then
|
||||||
|
// exit(ExtractFileName(aFilename));
|
||||||
|
Result:=ExtractRelativePath(PGBaseDir,AFileName);
|
||||||
|
debugln(['TProjectGroupEditorForm.DisplayFileName PGBaseDir="',PGBaseDir,'" File="',AFileName,'" "',Result,'"']);
|
||||||
|
end else
|
||||||
Result:=AFileName;
|
Result:=AFileName;
|
||||||
if not (NodeType in [ntFile, ntRemovedFile]) then
|
if not (NodeType in [ntFile, ntRemovedFile]) then
|
||||||
Result:=ChangeFileExt(Result,'');
|
Result:=ChangeFileExt(Result,'');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TProjectGroupEditorForm.DisplayFileName(NodeData: TNodeData): string;
|
||||||
|
var
|
||||||
|
aFilename: String;
|
||||||
|
begin
|
||||||
|
if NodeData.Target=nil then
|
||||||
|
aFilename:=''
|
||||||
|
else begin
|
||||||
|
aFilename:=NodeData.Target.Filename;
|
||||||
|
if (aFilename='') then begin
|
||||||
|
if NodeData.Target is TProjectGroupTarget then
|
||||||
|
aFilename:=NodeData.ProjectGroup.FileName
|
||||||
|
else
|
||||||
|
aFilename:='?';
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
Result:=DisplayFileName(NodeData.ProjectGroup,NodeData.NodeType,aFilename);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TProjectGroupEditorForm.ShowFileName;
|
procedure TProjectGroupEditorForm.ShowFileName;
|
||||||
Var
|
Var
|
||||||
N: String;
|
N: String;
|
||||||
@ -880,27 +945,32 @@ procedure TProjectGroupEditorForm.ShowProjectGroup;
|
|||||||
Var
|
Var
|
||||||
N: TTreeNode;
|
N: TTreeNode;
|
||||||
begin
|
begin
|
||||||
ShowFileName; // Needs FNPG
|
TVPG.BeginUpdate;
|
||||||
FreeNodeData;
|
try
|
||||||
TVPG.Items.Clear;
|
ShowFileName; // Needs FNPG
|
||||||
FTargetNodes[False]:=Nil;
|
FreeNodeData;
|
||||||
FTargetNodes[True]:=Nil;
|
TVPG.Items.Clear;
|
||||||
if FProjectGroup<>nil then begin
|
FTargetNodes[False]:=Nil;
|
||||||
FNPG:=CreateNode(Nil,
|
FTargetNodes[True]:=Nil;
|
||||||
DisplayFileName(FProjectGroup,ntProjectGroup,FProjectGroup.FileName),
|
if FProjectGroup<>nil then begin
|
||||||
ntProjectGroup,FProjectGroupTarget,FProjectGroup);
|
FNPG:=CreateNode(Nil,
|
||||||
FillProjectGroupNode(FNPG,FProjectGroup,FTargetNodes);
|
DisplayFileName(FProjectGroup,ntProjectGroup,FProjectGroup.FileName),
|
||||||
N:=FindNodeFromTarget(FActiveTarget);
|
ntProjectGroup,FProjectGroupTarget,FProjectGroup);
|
||||||
if (N=Nil) then
|
FillProjectGroupNode(FNPG,FProjectGroup,FTargetNodes);
|
||||||
begin
|
N:=FindNodeFromTarget(FActiveTarget);
|
||||||
FActiveTarget:=FProjectGroupTarget;
|
if (N=Nil) then
|
||||||
TVPG.Selected:=FNPG;
|
begin
|
||||||
end else
|
FActiveTarget:=FProjectGroupTarget;
|
||||||
TVPG.Selected:=N;
|
TVPG.Selected:=FNPG;
|
||||||
end else begin
|
end else
|
||||||
FNPG:=nil;
|
TVPG.Selected:=N;
|
||||||
|
end else begin
|
||||||
|
FNPG:=nil;
|
||||||
|
end;
|
||||||
|
UpdateStatusBarTargetCount;
|
||||||
|
finally
|
||||||
|
TVPG.EndUpdate;
|
||||||
end;
|
end;
|
||||||
UpdateStatusBarTargetCount;
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TProjectGroupEditorForm.UpdateShowing;
|
procedure TProjectGroupEditorForm.UpdateShowing;
|
||||||
@ -919,30 +989,30 @@ Var
|
|||||||
TTN,TN: TTreeNode;
|
TTN,TN: TTreeNode;
|
||||||
I: Integer;
|
I: Integer;
|
||||||
begin
|
begin
|
||||||
TTN:=CreateNode(AParent,lisNodeTargets,ntTargets,Nil,AProjectGroup);
|
TVPG.BeginUpdate;
|
||||||
TargetNodes[False]:=TTN;
|
try
|
||||||
TargetNodes[True]:=CreateNode(AParent,lisNodeRemovedTargets,ntTargets,Nil,AProjectGroup);
|
TTN:=CreateNode(AParent,lisNodeTargets,ntTargets,Nil,AProjectGroup);
|
||||||
// 2 Passes: one to show all nodes, one to fill them with target-specific data.
|
TargetNodes[False]:=TTN;
|
||||||
// Display all nodes
|
TargetNodes[True]:=CreateNode(AParent,lisNodeRemovedTargets,ntTargets,Nil,AProjectGroup);
|
||||||
For I:=0 to AProjectGroup.TargetCount-1 do
|
// 2 Passes: one to show all nodes, one to fill them with target-specific data.
|
||||||
begin
|
// Display all nodes
|
||||||
T:=AProjectGroup.Targets[i];
|
For I:=0 to AProjectGroup.TargetCount-1 do
|
||||||
TN:=CreateNode(TargetNodes[T.Removed],DisplayFileName(AProjectGroup,TNT[T.Removed],T.FileName),TNT[T.Removed],T,AProjectGroup);
|
begin
|
||||||
end;
|
T:=AProjectGroup.Targets[i];
|
||||||
// Fill all nodes.
|
TN:=CreateNode(TargetNodes[T.Removed],TNT[T.Removed],T,AProjectGroup);
|
||||||
For I:=0 to TTN.Count-1 do
|
|
||||||
begin
|
|
||||||
TN:=TTN.Items[i];
|
|
||||||
try
|
|
||||||
FillTargetNode(TN,AProjectGroup,TargetFromNode(TN));
|
|
||||||
except
|
|
||||||
On E: Exception do
|
|
||||||
Application.ShowException(E);
|
|
||||||
end;
|
end;
|
||||||
|
// Fill all nodes.
|
||||||
|
For I:=0 to TTN.Count-1 do
|
||||||
|
begin
|
||||||
|
TN:=TTN.Items[i];
|
||||||
|
FillTargetNode(TN,AProjectGroup,TargetFromNode(TN));
|
||||||
|
end;
|
||||||
|
AParent.Expand(False);
|
||||||
|
TargetNodes[False].Expand(False);
|
||||||
|
TargetNodes[True].Expand(False);
|
||||||
|
finally
|
||||||
|
TVPG.EndUpdate;
|
||||||
end;
|
end;
|
||||||
AParent.Expand(False);
|
|
||||||
TargetNodes[False].Expand(False);
|
|
||||||
TargetNodes[True].Expand(False);
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TProjectGroupEditorForm.ShowDependencies(AParent: TTreeNode;
|
procedure TProjectGroupEditorForm.ShowDependencies(AParent: TTreeNode;
|
||||||
@ -971,14 +1041,19 @@ Var
|
|||||||
PF,PD: TTargetNodes;
|
PF,PD: TTargetNodes;
|
||||||
I: Integer;
|
I: Integer;
|
||||||
begin
|
begin
|
||||||
PF[False]:=CreateNode(AParent,lisNodeFiles,ntFiles,Nil,AProjectGroup);
|
TVPG.BeginUpdate;
|
||||||
PF[True]:=CreateNode(AParent,lisNodeRemovedFiles,ntFiles,Nil,AProjectGroup);
|
try
|
||||||
// TODO Ideally, we can show removed files
|
PF[False]:=CreateNode(AParent,lisNodeFiles,ntFiles,Nil,AProjectGroup);
|
||||||
For I:=0 to T.FileCount-1 do
|
PF[True]:=CreateNode(AParent,lisNodeRemovedFiles,ntFiles,Nil,AProjectGroup);
|
||||||
CreateNode(PF[False],DisplayFileName(AProjectGroup,
|
// TODO Ideally, we can show removed files
|
||||||
ntFile,T.Files[i]),ntFile,Nil,AProjectGroup);
|
For I:=0 to T.FileCount-1 do
|
||||||
ShowDependencies(AParent,AProjectGroup,T,PD);
|
CreateNode(PF[False],DisplayFileName(AProjectGroup,
|
||||||
// TODO: Build mode info Not available ?
|
ntFile,T.Files[i]),ntFile,Nil,AProjectGroup);
|
||||||
|
ShowDependencies(AParent,AProjectGroup,T,PD);
|
||||||
|
// TODO: Build mode info Not available ?
|
||||||
|
finally
|
||||||
|
TVPG.EndUpdate;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TProjectGroupEditorForm.FillPackageNode(AParent: TTreeNode;
|
procedure TProjectGroupEditorForm.FillPackageNode(AParent: TTreeNode;
|
||||||
@ -987,13 +1062,18 @@ Var
|
|||||||
PF,PD: TTargetNodes;
|
PF,PD: TTargetNodes;
|
||||||
I: Integer;
|
I: Integer;
|
||||||
begin
|
begin
|
||||||
PF[False]:=CreateNode(AParent,lisNodeFiles,ntFiles,Nil,AProjectGroup);
|
TVPG.BeginUpdate;
|
||||||
PF[True]:=CreateNode(AParent,lisNodeRemovedFiles,ntFiles,Nil,AProjectGroup);
|
try
|
||||||
// ToDo Ideally, we can show removed files
|
PF[False]:=CreateNode(AParent,lisNodeFiles,ntFiles,Nil,AProjectGroup);
|
||||||
For I:=0 to T.FileCount-1 do
|
PF[True]:=CreateNode(AParent,lisNodeRemovedFiles,ntFiles,Nil,AProjectGroup);
|
||||||
CreateNode(PF[False],DisplayFileName(AProjectGroup,
|
// ToDo Ideally, we can show removed files
|
||||||
ntFile,T.Files[i]),ntFile,Nil,AProjectGroup);
|
For I:=0 to T.FileCount-1 do
|
||||||
ShowDependencies(AParent,AProjectGroup,T,PD);
|
CreateNode(PF[False],DisplayFileName(AProjectGroup,
|
||||||
|
ntFile,T.Files[i]),ntFile,Nil,AProjectGroup);
|
||||||
|
ShowDependencies(AParent,AProjectGroup,T,PD);
|
||||||
|
finally
|
||||||
|
TVPG.EndUpdate;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TProjectGroupEditorForm.FillTargetNode(AParent: TTreeNode;
|
procedure TProjectGroupEditorForm.FillTargetNode(AParent: TTreeNode;
|
||||||
@ -1001,14 +1081,19 @@ procedure TProjectGroupEditorForm.FillTargetNode(AParent: TTreeNode;
|
|||||||
Var
|
Var
|
||||||
PN: TTargetNodes;
|
PN: TTargetNodes;
|
||||||
begin
|
begin
|
||||||
If T=Nil then
|
TVPG.BeginUpdate;
|
||||||
T:=TargetFromNode(AParent);
|
try
|
||||||
if T=Nil then
|
If T=Nil then
|
||||||
exit;
|
T:=TargetFromNode(AParent);
|
||||||
Case T.TargetType of
|
if T=Nil then
|
||||||
ttProject: FillProjectNode(AParent,AProjectGroup,T);
|
exit;
|
||||||
ttPackage: FillPackageNode(AParent,AProjectGroup,T);
|
Case T.TargetType of
|
||||||
ttProjectGroup: FillProjectgroupNode(AParent,T.ProjectGroup,PN);
|
ttProject: FillProjectNode(AParent,AProjectGroup,T);
|
||||||
|
ttPackage: FillPackageNode(AParent,AProjectGroup,T);
|
||||||
|
ttProjectGroup: FillProjectgroupNode(AParent,T.ProjectGroup,PN);
|
||||||
|
end;
|
||||||
|
finally
|
||||||
|
TVPG.EndUpdate;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -219,6 +219,7 @@ end;
|
|||||||
procedure TProjectGroup.SetActiveTarget(AValue: TPGCompileTarget);
|
procedure TProjectGroup.SetActiveTarget(AValue: TPGCompileTarget);
|
||||||
begin
|
begin
|
||||||
ActivateTarget(AValue);
|
ActivateTarget(AValue);
|
||||||
|
IncreaseChangeStamp;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TProjectGroup.SetModified(AValue: Boolean);
|
procedure TProjectGroup.SetModified(AValue: Boolean);
|
||||||
@ -233,6 +234,7 @@ procedure TProjectGroup.SetFileName(AValue: String);
|
|||||||
begin
|
begin
|
||||||
if FFileName=AValue then Exit;
|
if FFileName=AValue then Exit;
|
||||||
FFileName:=AValue;
|
FFileName:=AValue;
|
||||||
|
IncreaseChangeStamp;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TProjectGroup.GetModified: Boolean;
|
function TProjectGroup.GetModified: Boolean;
|
||||||
|
Loading…
Reference in New Issue
Block a user