mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-10 14:36:09 +02:00
project groups: consistent filename in projectgroup and its target
git-svn-id: trunk@50388 -
This commit is contained in:
parent
9d10346a71
commit
8fa20c95fa
@ -46,13 +46,13 @@ type
|
|||||||
// 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
|
||||||
// the root projectgroup.
|
// the root projectgroup.
|
||||||
|
|
||||||
{ TProjectGroupTarget }
|
{ TRootProjectGroupTarget }
|
||||||
|
|
||||||
TProjectGroupTarget = class(TIDECompileTarget)
|
TRootProjectGroupTarget = class(TIDECompileTarget)
|
||||||
protected
|
protected
|
||||||
procedure SetTargetType(AValue: TPGTargetType); override;
|
procedure SetTargetType(AValue: TPGTargetType); override;
|
||||||
public
|
public
|
||||||
constructor Create(aParent: TPGCompileTarget);
|
constructor Create(aOwner: TProjectGroup);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
TTargetEvent = procedure(Sender: TObject; Target: TPGCompileTarget) of object;
|
TTargetEvent = procedure(Sender: TObject; Target: TPGCompileTarget) of object;
|
||||||
@ -504,19 +504,21 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TProjectGroupTarget }
|
{ TRootProjectGroupTarget }
|
||||||
|
|
||||||
procedure TProjectGroupTarget.SetTargetType(AValue: TPGTargetType);
|
procedure TRootProjectGroupTarget.SetTargetType(AValue: TPGTargetType);
|
||||||
begin
|
begin
|
||||||
if (AValue<>ttProjectGroup) then
|
if (AValue<>ttProjectGroup) then
|
||||||
Raise Exception.Create(lisErronlyProjectGroupAllowed);
|
Raise Exception.Create(lisErronlyProjectGroupAllowed);
|
||||||
inherited SetTargetType(AValue);
|
inherited SetTargetType(AValue);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
constructor TProjectGroupTarget.Create(aParent: TPGCompileTarget);
|
constructor TRootProjectGroupTarget.Create(aOwner: TProjectGroup);
|
||||||
begin
|
begin
|
||||||
inherited Create(aParent);
|
inherited Create(nil);
|
||||||
TargetType:=ttProjectGroup;
|
TargetType:=ttProjectGroup;
|
||||||
|
FProjectGroup:=aOwner;
|
||||||
|
Filename:=ProjectGroup.FileName;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TIDEProjectGroup }
|
{ TIDEProjectGroup }
|
||||||
@ -553,7 +555,7 @@ constructor TIDEProjectGroup.Create(aCompileTarget: TIDECompileTarget);
|
|||||||
begin
|
begin
|
||||||
inherited Create;
|
inherited Create;
|
||||||
if aCompileTarget=nil then begin
|
if aCompileTarget=nil then begin
|
||||||
FCompileTarget:=TProjectGroupTarget.Create(nil);
|
FCompileTarget:=TRootProjectGroupTarget.Create(Self);
|
||||||
end else begin
|
end else begin
|
||||||
FCompileTarget:=aCompileTarget;
|
FCompileTarget:=aCompileTarget;
|
||||||
end;
|
end;
|
||||||
@ -773,6 +775,8 @@ end;
|
|||||||
|
|
||||||
procedure TIDECompileTarget.UnLoadTarget;
|
procedure TIDECompileTarget.UnLoadTarget;
|
||||||
begin
|
begin
|
||||||
|
if FProjectGroup<>nil then
|
||||||
|
FreeAndNil(FProjectGroup);
|
||||||
if FFiles<>nil then
|
if FFiles<>nil then
|
||||||
FreeAndNil(FFiles);
|
FreeAndNil(FFiles);
|
||||||
if FRequiredPackages<>nil then
|
if FRequiredPackages<>nil then
|
||||||
@ -1002,7 +1006,7 @@ begin
|
|||||||
if AAction=taOpen then
|
if AAction=taOpen then
|
||||||
ProjectGroupManager.LoadProjectGroup(FileName,[])
|
ProjectGroupManager.LoadProjectGroup(FileName,[])
|
||||||
else
|
else
|
||||||
Result:=ProjectGroup.PerformFrom(0,AAction);
|
Result:=ParentProjectGroup.PerformFrom(0,AAction);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TIDECompileTarget.PerformAction(AAction: TPGTargetAction): TPGActionResult;
|
function TIDECompileTarget.PerformAction(AAction: TPGTargetAction): TPGActionResult;
|
||||||
|
@ -37,8 +37,8 @@ type
|
|||||||
|
|
||||||
TNodeData = class(TObject)
|
TNodeData = class(TObject)
|
||||||
NodeType: TNodeType;
|
NodeType: TNodeType;
|
||||||
Target: TPGCompileTarget;
|
Target, ParentTarget: TPGCompileTarget;
|
||||||
ProjectGroup: TProjectGroup; // projectgroup to which target belongs
|
Value: string; // ntFile = Filename, ntDependency = PkgName
|
||||||
end;
|
end;
|
||||||
TTargetNodes = Array[Boolean] of TTreeNode;
|
TTargetNodes = Array[Boolean] of TTreeNode;
|
||||||
|
|
||||||
@ -136,7 +136,7 @@ type
|
|||||||
procedure SetEventCallBacks(AProjectGroup: TProjectGroup);
|
procedure SetEventCallBacks(AProjectGroup: TProjectGroup);
|
||||||
// Some helpers
|
// Some helpers
|
||||||
procedure SetProjectGroup(AValue: TProjectGroup);
|
procedure SetProjectGroup(AValue: TProjectGroup);
|
||||||
procedure ShowDependencies(AParent: TTreeNode; AProjectGroup: TProjectGroup; T: TPGCompileTarget; Out PD: TTargetNodes);
|
procedure ShowDependencies(AParent: TTreeNode; T: TPGCompileTarget; Out PD: TTargetNodes);
|
||||||
procedure ShowFileName;
|
procedure ShowFileName;
|
||||||
procedure Perform(ATargetAction: TPGTargetAction);
|
procedure Perform(ATargetAction: TPGTargetAction);
|
||||||
function GetActiveTarget: TPGCompileTarget;
|
function GetActiveTarget: TPGCompileTarget;
|
||||||
@ -144,17 +144,20 @@ 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(aTarget: TPGCompileTarget): string;
|
||||||
|
function DisplayFileName(Node: TTreeNode): string;
|
||||||
function DisplayFileName(NodeData: TNodeData): string;
|
function DisplayFileName(NodeData: TNodeData): string;
|
||||||
function CreateNode(AParent: TTreeNode; Const ACaption: String; ANodeType: TNodeType; ANodeData: TPGCompileTarget; AProjectGroup: TProjectGroup): TTreeNode;
|
function CreateSectionNode(AParent: TTreeNode; Const ACaption: String; ANodeType: TNodeType): TTreeNode;
|
||||||
function CreateNode(AParent: TTreeNode; ANodeType: TNodeType; ANodeData: TPGCompileTarget; AProjectGroup: TProjectGroup): TTreeNode;
|
function CreateTargetNode(AParent: TTreeNode; ANodeType: TNodeType; aTarget: TPGCompileTarget): TTreeNode;
|
||||||
procedure FillPackageNode(AParent: TTreeNode; AProjectGroup: TProjectGroup; T: TPGCompileTarget);
|
function CreateSubNode(AParent: TTreeNode; ANodeType: TNodeType; aParentTarget: TPGCompileTarget; aValue: string): TTreeNode;
|
||||||
procedure FillProjectNode(AParent: TTreeNode; AProjectGroup: TProjectGroup; T: TPGCompileTarget);
|
procedure FillPackageNode(AParent: TTreeNode; T: TPGCompileTarget);
|
||||||
procedure FillTargetNode(AParent: TTreeNode; AProjectGroup: TProjectGroup; T: TPGCompileTarget);
|
procedure FillProjectNode(AParent: TTreeNode; T: TPGCompileTarget);
|
||||||
|
procedure FillTargetNode(AParent: TTreeNode; T: TPGCompileTarget);
|
||||||
procedure FillProjectGroupNode(AParent: TTreeNode; AProjectGroup: TProjectGroup; Out TargetNodes: TTargetNodes);
|
procedure FillProjectGroupNode(AParent: TTreeNode; AProjectGroup: TProjectGroup; Out TargetNodes: TTargetNodes);
|
||||||
function GetNodeIndex(ANodeType: TNodeType; ANodeData: TPGCompileTarget ): Integer;
|
function GetNodeIndex(ANodeType: TNodeType; ANodeData: TPGCompileTarget ): Integer;
|
||||||
function SelectedNodeData: TNodeData;
|
function SelectedNodeData: TNodeData;
|
||||||
function SelectedTarget: TPGCompileTarget;
|
function SelectedTarget: TPGCompileTarget;
|
||||||
|
function GetTVNodeFilename(TVNode: TTreeNode): string;
|
||||||
function SelectedNodeType: TPGCompileTarget;
|
function SelectedNodeType: TPGCompileTarget;
|
||||||
procedure UpdateIDEMenuCommandFromAction(Sender: TObject; Item: TIDEMenuCommand);
|
procedure UpdateIDEMenuCommandFromAction(Sender: TObject; Item: TIDEMenuCommand);
|
||||||
procedure UpdateStatusBarTargetCount;
|
procedure UpdateStatusBarTargetCount;
|
||||||
@ -352,31 +355,33 @@ procedure TProjectGroupEditorForm.ATargetEarlierExecute(Sender: TObject);
|
|||||||
Var
|
Var
|
||||||
T: TNodeData;
|
T: TNodeData;
|
||||||
I,J: Integer;
|
I,J: Integer;
|
||||||
|
PG: TProjectGroup;
|
||||||
begin
|
begin
|
||||||
T:=SelectedNodeData;
|
T:=SelectedNodeData;
|
||||||
If not Assigned(T) then
|
if (T=nil) or (T.Target=nil) then
|
||||||
exit;
|
exit;
|
||||||
I:=T.ProjectGroup.IndexOfTarget(T.Target);
|
PG:=T.Target.ParentProjectGroup;
|
||||||
|
if PG=nil then exit;
|
||||||
|
I:=PG.IndexOfTarget(T.Target);
|
||||||
J:=I-1;
|
J:=I-1;
|
||||||
if J>=0 then
|
if J>=0 then
|
||||||
T.ProjectGroup.ExchangeTargets(I,J);
|
PG.ExchangeTargets(I,J);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TProjectGroupEditorForm.ATargetEarlierUpdate(Sender: TObject);
|
procedure TProjectGroupEditorForm.ATargetEarlierUpdate(Sender: TObject);
|
||||||
Var
|
Var
|
||||||
T: TNodeData;
|
T: TNodeData;
|
||||||
I: Integer;
|
I: Integer;
|
||||||
B: Boolean;
|
PG: TProjectGroup;
|
||||||
begin
|
begin
|
||||||
I:=-1;
|
I:=-1;
|
||||||
T:=SelectedNodeData;
|
T:=SelectedNodeData;
|
||||||
B:=Assigned(T) and (T.NodeType=ntTarget) and Assigned(T.Target);
|
if (T=nil) or (T.Target=nil) then
|
||||||
If B then
|
exit;
|
||||||
begin
|
PG:=T.Target.ParentProjectGroup;
|
||||||
I:=T.ProjectGroup.IndexOfTarget(T.Target)-1;
|
if PG=nil then exit;
|
||||||
B:=(I>=0)
|
I:=PG.IndexOfTarget(T.Target);
|
||||||
end;
|
(Sender as TAction).Enabled:=I>0;
|
||||||
(Sender as TAction).Enabled:=B;
|
|
||||||
UpdateIDEMenuCommandFromAction(Sender,cmdTargetEarlier);
|
UpdateIDEMenuCommandFromAction(Sender,cmdTargetEarlier);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -384,30 +389,32 @@ procedure TProjectGroupEditorForm.ATargetLaterExecute(Sender: TObject);
|
|||||||
Var
|
Var
|
||||||
T: TNodeData;
|
T: TNodeData;
|
||||||
I,J: Integer;
|
I,J: Integer;
|
||||||
|
PG: TProjectGroup;
|
||||||
begin
|
begin
|
||||||
T:=SelectedNodeData;
|
T:=SelectedNodeData;
|
||||||
If Not Assigned(T) then
|
if (T=nil) or (T.Target=nil) then
|
||||||
exit;
|
exit;
|
||||||
I:=T.ProjectGroup.IndexOfTarget(T.Target);
|
PG:=T.Target.ParentProjectGroup;
|
||||||
|
if PG=nil then exit;
|
||||||
|
I:=PG.IndexOfTarget(T.Target);
|
||||||
J:=I+1;
|
J:=I+1;
|
||||||
if (J<T.ProjectGroup.TargetCount) then
|
if (J<PG.TargetCount) then
|
||||||
T.ProjectGroup.ExchangeTargets(I,J);
|
PG.ExchangeTargets(I,J);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TProjectGroupEditorForm.ATargetLaterUpdate(Sender: TObject);
|
procedure TProjectGroupEditorForm.ATargetLaterUpdate(Sender: TObject);
|
||||||
Var
|
Var
|
||||||
T: TNodeData;
|
T: TNodeData;
|
||||||
I: Integer;
|
I: Integer;
|
||||||
B: Boolean;
|
PG: TProjectGroup;
|
||||||
begin
|
begin
|
||||||
T:=SelectedNodeData;
|
T:=SelectedNodeData;
|
||||||
B:=Assigned(T) and (T.NodeType=ntTarget) and Assigned(T.Target);
|
if (T=nil) or (T.Target=nil) then
|
||||||
if B then
|
exit;
|
||||||
begin
|
PG:=T.Target.ParentProjectGroup;
|
||||||
I:=T.ProjectGroup.IndexOfTarget(T.Target)+1;
|
if PG=nil then exit;
|
||||||
B:=(I<T.ProjectGroup.TargetCount);
|
I:=PG.IndexOfTarget(T.Target);
|
||||||
end;
|
(Sender as TAction).Enabled:=I+1<PG.TargetCount;
|
||||||
(Sender as TAction).Enabled:=B;
|
|
||||||
UpdateIDEMenuCommandFromAction(Sender,cmdTargetLater);
|
UpdateIDEMenuCommandFromAction(Sender,cmdTargetLater);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -434,7 +441,7 @@ begin
|
|||||||
while TVNode<>nil do begin
|
while TVNode<>nil do begin
|
||||||
NodeData:=TNodeData(TVNode.Data);
|
NodeData:=TNodeData(TVNode.Data);
|
||||||
if NodeData is TNodeData then begin
|
if NodeData is TNodeData then begin
|
||||||
if NodeData.Target<>nil then begin
|
if NodeData.NodeType in [ntTarget] then begin
|
||||||
TVNode.Text:=DisplayFileName(NodeData);
|
TVNode.Text:=DisplayFileName(NodeData);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -495,26 +502,45 @@ end;
|
|||||||
procedure TProjectGroupEditorForm.TVPGDblClick(Sender: TObject);
|
procedure TProjectGroupEditorForm.TVPGDblClick(Sender: TObject);
|
||||||
Var
|
Var
|
||||||
ND: TNodeData;
|
ND: TNodeData;
|
||||||
|
aFilename: String;
|
||||||
begin
|
begin
|
||||||
ND:=SelectedNodeData;
|
ND:=SelectedNodeData;
|
||||||
if (ND<>nil) and (ND.NodeType<>ntTarget) then
|
debugln(['TProjectGroupEditorForm.TVPGDblClick ',DbgSName(Sender),' ',TVPG.Selected.Text,' ',ND<>nil]);
|
||||||
|
if ND=nil then exit;
|
||||||
|
case ND.NodeType of
|
||||||
|
ntUnknown: ;
|
||||||
|
ntProjectGroup: ;
|
||||||
|
ntTargets: ;
|
||||||
|
ntRemovedTargets: ;
|
||||||
|
ntTarget: ;
|
||||||
|
ntRemovedTarget: ;
|
||||||
|
ntFiles: ;
|
||||||
|
ntFile:
|
||||||
|
begin
|
||||||
|
aFilename:=GetTVNodeFilename(TVPG.Selected);
|
||||||
|
debugln(['TProjectGroupEditorForm.TVPGDblClick File=',aFilename]);
|
||||||
|
if aFilename='' then exit;
|
||||||
|
LazarusIDE.DoOpenEditorFile(aFilename,-1,-1,[ofAddToRecent]);
|
||||||
|
end;
|
||||||
|
ntDependencies: ;
|
||||||
|
ntDependency: ;
|
||||||
|
end;
|
||||||
|
{if (ND<>nil) and (ND.NodeType<>ntTarget) then
|
||||||
begin
|
begin
|
||||||
ND.ProjectGroup.ActivateTarget(ND.Target);
|
ND.ProjectGroup.ActivateTarget(ND.Target);
|
||||||
if (ND.ProjectGroup<>FProjectGroup) then // No callback, fake it.
|
if (ND.ProjectGroup<>FProjectGroup) then // No callback, fake it.
|
||||||
OnTargetActivated(ND.ProjectGroup,ND.Target);
|
OnTargetActivated(ND.ProjectGroup,ND.Target);
|
||||||
end;
|
end;}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TProjectGroupEditorForm.OnTargetAdded(Sender: TObject;
|
procedure TProjectGroupEditorForm.OnTargetAdded(Sender: TObject;
|
||||||
Target: TPGCompileTarget);
|
Target: TPGCompileTarget);
|
||||||
Var
|
Var
|
||||||
PG: TProjectGroup;
|
|
||||||
N: TTreeNode;
|
N: TTreeNode;
|
||||||
begin
|
begin
|
||||||
PG:=Sender as TProjectGroup;
|
|
||||||
// ToDo: use of FTargetNodes is wrong if PG<>FProjectGroup
|
// ToDo: use of FTargetNodes is wrong if PG<>FProjectGroup
|
||||||
N:=CreateNode(FTargetNodes[False],ntTarget,Target,PG);
|
N:=CreateTargetNode(FTargetNodes[False],ntTarget,Target);
|
||||||
FillTargetNode(N,PG,Target);
|
FillTargetNode(N,Target);
|
||||||
TVPG.Selected:=N;
|
TVPG.Selected:=N;
|
||||||
UpdateStatusBarTargetCount;
|
UpdateStatusBarTargetCount;
|
||||||
end;
|
end;
|
||||||
@ -522,14 +548,12 @@ end;
|
|||||||
procedure TProjectGroupEditorForm.OnTargetDeleted(Sender: TObject;
|
procedure TProjectGroupEditorForm.OnTargetDeleted(Sender: TObject;
|
||||||
Target: TPGCompileTarget);
|
Target: TPGCompileTarget);
|
||||||
Var
|
Var
|
||||||
PG: TProjectGroup;
|
|
||||||
N: TTreeNode;
|
N: TTreeNode;
|
||||||
begin
|
begin
|
||||||
PG:=Sender as TProjectGroup;
|
|
||||||
N:=FindNodeFromTarget(Target);
|
N:=FindNodeFromTarget(Target);
|
||||||
TVPG.Items.Delete(N);
|
TVPG.Items.Delete(N);
|
||||||
// ToDo: The use of FTargetNodes is not correct when PG<>FProjectGroup
|
// ToDo: The use of FTargetNodes is not correct when PG<>FProjectGroup
|
||||||
CreateNode(FTargetNodes[True],ntRemovedTarget,Target,PG);
|
CreateTargetNode(FTargetNodes[True],ntRemovedTarget,Target);
|
||||||
TVPG.Selected:=FProjectGroupTVNode;
|
TVPG.Selected:=FProjectGroupTVNode;
|
||||||
UpdateStatusBarTargetCount;
|
UpdateStatusBarTargetCount;
|
||||||
end;
|
end;
|
||||||
@ -537,20 +561,20 @@ end;
|
|||||||
procedure TProjectGroupEditorForm.OnTargetActivated(Sender: TObject;
|
procedure TProjectGroupEditorForm.OnTargetActivated(Sender: TObject;
|
||||||
Target: TPGCompileTarget);
|
Target: TPGCompileTarget);
|
||||||
Var
|
Var
|
||||||
NC,NA: TTreeNode;
|
OldActiveTVNode,NewActiveTVNode: TTreeNode;
|
||||||
N: String;
|
N: String;
|
||||||
begin
|
begin
|
||||||
NC:=FindNodeFromTarget(FActiveTarget);
|
OldActiveTVNode:=FindNodeFromTarget(FActiveTarget);
|
||||||
NA:=FindNodeFromTarget(Target);
|
NewActiveTVNode:=FindNodeFromTarget(Target);
|
||||||
if (NC<>NA) then
|
if (OldActiveTVNode<>NewActiveTVNode) then
|
||||||
begin
|
begin
|
||||||
if Assigned(NC) then
|
if Assigned(OldActiveTVNode) then
|
||||||
NC.StateIndex:=-1;
|
OldActiveTVNode.StateIndex:=-1;
|
||||||
If Assigned(NA) then
|
if Assigned(NewActiveTVNode) then
|
||||||
NA.StateIndex:=NSIActive;
|
NewActiveTVNode.StateIndex:=NSIActive;
|
||||||
FActiveTarget:=Target;
|
FActiveTarget:=Target;
|
||||||
end;
|
end;
|
||||||
N:=DisplayFileName(FProjectGroup,ntTarget,Target.FileName);
|
N:=DisplayFileName(Target);
|
||||||
SBPG.Panels[piActiveTarget].Text:=Format(lisActiveTarget,[N]);
|
SBPG.Panels[piActiveTarget].Text:=Format(lisActiveTarget,[N]);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -622,12 +646,12 @@ end;
|
|||||||
|
|
||||||
procedure TProjectGroupEditorForm.ATargetActivateExecute(Sender: TObject);
|
procedure TProjectGroupEditorForm.ATargetActivateExecute(Sender: TObject);
|
||||||
Var
|
Var
|
||||||
T: TNodeData;
|
ND: TNodeData;
|
||||||
begin
|
begin
|
||||||
T:=SelectedNodeData;
|
ND:=SelectedNodeData;
|
||||||
if not (Assigned(T) and Assigned(T.Target) and Assigned(T.ProjectGroup)) then
|
if (ND=nil) or (ND.Target=nil) then
|
||||||
exit;
|
exit;
|
||||||
T.ProjectGroup.ActivateTarget(T.Target);
|
ND.Target.ParentProjectGroup.ActivateTarget(ND.Target);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TProjectGroupEditorForm.ATargetCompileCleanExecute(Sender: TObject);
|
procedure TProjectGroupEditorForm.ATargetCompileCleanExecute(Sender: TObject);
|
||||||
@ -653,11 +677,11 @@ end;
|
|||||||
|
|
||||||
procedure TProjectGroupEditorForm.Perform(ATargetAction: TPGTargetAction);
|
procedure TProjectGroupEditorForm.Perform(ATargetAction: TPGTargetAction);
|
||||||
Var
|
Var
|
||||||
T: TNodeData;
|
ND: TNodeData;
|
||||||
begin
|
begin
|
||||||
T:=SelectedNodeData;
|
ND:=SelectedNodeData;
|
||||||
if Assigned(T) and Assigned(T.Target) and Assigned(T.ProjectGroup) then
|
if (ND=nil) or (ND.Target=nil) then exit;
|
||||||
T.ProjectGroup.Perform(T.Target,ATargetAction);
|
ND.Target.ParentProjectGroup.Perform(ND.Target,ATargetAction);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TProjectGroupEditorForm.ATargetCompileExecute(Sender: TObject);
|
procedure TProjectGroupEditorForm.ATargetCompileExecute(Sender: TObject);
|
||||||
@ -808,6 +832,20 @@ begin
|
|||||||
Result:=Nil;
|
Result:=Nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function TProjectGroupEditorForm.GetTVNodeFilename(TVNode: TTreeNode): string;
|
||||||
|
var
|
||||||
|
ND: TNodeData;
|
||||||
|
begin
|
||||||
|
Result:='';
|
||||||
|
if (TVNode=nil) then exit;
|
||||||
|
ND:=TNodeData(TVNode.Data);
|
||||||
|
if (ND.Target<>nil) then
|
||||||
|
exit(ND.Target.Filename);
|
||||||
|
case ND.NodeType of
|
||||||
|
ntFile: Result:=ND.Value;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
function TProjectGroupEditorForm.SelectedNodeType: TPGCompileTarget;
|
function TProjectGroupEditorForm.SelectedNodeType: TPGCompileTarget;
|
||||||
Var
|
Var
|
||||||
N: TNodeData;
|
N: TNodeData;
|
||||||
@ -840,70 +878,90 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TProjectGroupEditorForm.CreateNode(AParent: TTreeNode;
|
function TProjectGroupEditorForm.CreateSectionNode(AParent: TTreeNode;
|
||||||
const ACaption: String; ANodeType: TNodeType; ANodeData: TPGCompileTarget;
|
const ACaption: String; ANodeType: TNodeType): TTreeNode;
|
||||||
AProjectGroup: TProjectGroup): TTreeNode;
|
|
||||||
Var
|
Var
|
||||||
ND: TNodeData;
|
ND: TNodeData;
|
||||||
begin
|
begin
|
||||||
Result:=TVPG.Items.AddChild(AParent,ACaption);
|
|
||||||
ND:=TNodeData.Create;
|
ND:=TNodeData.Create;
|
||||||
ND.NodeType:=ANodeType;
|
ND.NodeType:=ANodeType;
|
||||||
ND.ProjectGroup:=AProjectGroup;
|
Result:=TVPG.Items.AddChild(AParent,ACaption);
|
||||||
ND.Target:=ANodeData;
|
|
||||||
InitTVNode(Result,'',ND);
|
InitTVNode(Result,'',ND);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TProjectGroupEditorForm.CreateNode(AParent: TTreeNode;
|
function TProjectGroupEditorForm.CreateTargetNode(AParent: TTreeNode;
|
||||||
ANodeType: TNodeType; ANodeData: TPGCompileTarget;
|
ANodeType: TNodeType; aTarget: TPGCompileTarget): TTreeNode;
|
||||||
AProjectGroup: TProjectGroup): TTreeNode;
|
|
||||||
var
|
var
|
||||||
ND: TNodeData;
|
ND: TNodeData;
|
||||||
begin
|
begin
|
||||||
ND:=TNodeData.Create;
|
ND:=TNodeData.Create;
|
||||||
ND.NodeType:=ANodeType;
|
ND.NodeType:=ANodeType;
|
||||||
ND.ProjectGroup:=AProjectGroup;
|
ND.Target:=aTarget;
|
||||||
ND.Target:=ANodeData;
|
if aTarget<>nil then
|
||||||
|
ND.ParentTarget:=aTarget.Parent;
|
||||||
Result:=TVPG.Items.AddChild(AParent,DisplayFileName(ND));
|
Result:=TVPG.Items.AddChild(AParent,DisplayFileName(ND));
|
||||||
InitTVNode(Result,'',ND);
|
InitTVNode(Result,'',ND);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TProjectGroupEditorForm.DisplayFileName(AProjectGroup: TProjectGroup;
|
function TProjectGroupEditorForm.CreateSubNode(AParent: TTreeNode;
|
||||||
NodeType: TNodeType; AFileName: String): String;
|
ANodeType: TNodeType; aParentTarget: TPGCompileTarget; aValue: string
|
||||||
Var
|
): TTreeNode;
|
||||||
PGBaseDir: String;
|
var
|
||||||
|
ND: TNodeData;
|
||||||
|
aCaption: String;
|
||||||
begin
|
begin
|
||||||
if Assigned(AProjectGroup) then
|
ND:=TNodeData.Create;
|
||||||
PGBaseDir:=ExtractFilePath(AProjectGroup.FileName)
|
ND.NodeType:=ANodeType;
|
||||||
|
ND.ParentTarget:=aParentTarget;
|
||||||
|
ND.Value:=aValue;
|
||||||
|
aCaption:=aValue;
|
||||||
|
if ANodeType=ntFile then
|
||||||
|
aCaption:=CreateRelativePath(aCaption,ExtractFilePath(aParentTarget.Filename));
|
||||||
|
Result:=TVPG.Items.AddChild(AParent,aCaption);
|
||||||
|
InitTVNode(Result,'',ND);
|
||||||
|
end;
|
||||||
|
|
||||||
|
function TProjectGroupEditorForm.DisplayFileName(aTarget: TPGCompileTarget
|
||||||
|
): string;
|
||||||
|
var
|
||||||
|
BaseDir: String;
|
||||||
|
begin
|
||||||
|
Result:='';
|
||||||
|
if aTarget=nil then exit('?');
|
||||||
|
if aTarget.Parent<>nil then
|
||||||
|
BaseDir:=ExtractFilePath(aTarget.Parent.Filename)
|
||||||
else
|
else
|
||||||
PGBaseDir:='';
|
BaseDir:='';
|
||||||
if (PGBaseDir<>'') then begin
|
Result:=aTarget.Filename;
|
||||||
//if CompareFilenames(PGBaseDir,AFileName)=0 then
|
if Result='' then
|
||||||
// exit(ExtractFileName(aFilename));
|
Result:='?'
|
||||||
Result:=ExtractRelativePath(PGBaseDir,AFileName);
|
else
|
||||||
//debugln(['TProjectGroupEditorForm.DisplayFileName PGBaseDir="',PGBaseDir,'" File="',AFileName,'" "',Result,'"']);
|
Result:=CreateRelativePath(Result,BaseDir);
|
||||||
end else
|
end;
|
||||||
Result:=AFileName;
|
|
||||||
if NodeType<>ntFile then
|
function TProjectGroupEditorForm.DisplayFileName(Node: TTreeNode): string;
|
||||||
Result:=ChangeFileExt(Result,'');
|
begin
|
||||||
|
Result:='';
|
||||||
|
if (Node=nil) or (Node.Data=nil) then exit;
|
||||||
|
Result:=DisplayFileName(TNodeData(Node.Data));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TProjectGroupEditorForm.DisplayFileName(NodeData: TNodeData): string;
|
function TProjectGroupEditorForm.DisplayFileName(NodeData: TNodeData): string;
|
||||||
var
|
var
|
||||||
aFilename: String;
|
BaseDir: String;
|
||||||
begin
|
begin
|
||||||
if NodeData.Target=nil then
|
Result:='';
|
||||||
aFilename:=''
|
if NodeData.ParentTarget<>nil then
|
||||||
else begin
|
BaseDir:=ExtractFilePath(NodeData.ParentTarget.Filename)
|
||||||
aFilename:=NodeData.Target.Filename;
|
else
|
||||||
if (aFilename='') then begin
|
BaseDir:='';
|
||||||
if NodeData.Target is TProjectGroupTarget then
|
if NodeData.Target<>nil then
|
||||||
aFilename:=NodeData.ProjectGroup.FileName
|
Result:=NodeData.Target.Filename;
|
||||||
else
|
debugln(['TProjectGroupEditorForm.DisplayFileName ',dbgs(NodeData.NodeType),' BaseDir=',BaseDir,' File=',Result]);
|
||||||
aFilename:='?';
|
if Result='' then
|
||||||
end;
|
Result:='?'
|
||||||
end;
|
else
|
||||||
Result:=DisplayFileName(NodeData.ProjectGroup,NodeData.NodeType,aFilename);
|
Result:=CreateRelativePath(Result,BaseDir);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TProjectGroupEditorForm.ShowFileName;
|
procedure TProjectGroupEditorForm.ShowFileName;
|
||||||
@ -917,25 +975,25 @@ begin
|
|||||||
if (N='') then
|
if (N='') then
|
||||||
Caption:=lisNewProjectGroup
|
Caption:=lisNewProjectGroup
|
||||||
else
|
else
|
||||||
Caption:=Format(LisProjectGroup,[DisplayFileName(FprojectGroup,ntProjectGroup,N)]);
|
Caption:=Format(LisProjectGroup,[DisplayFileName(FProjectGroup.CompileTarget)]);
|
||||||
if Assigned(FProjectGroupTVNode) then
|
if Assigned(FProjectGroupTVNode) then
|
||||||
if FProjectGroup<>nil then
|
FProjectGroupTVNode.Text:=DisplayFileName(FProjectGroupTVNode);
|
||||||
FProjectGroupTVNode.Text:=DisplayFileName(FProjectGroup,ntProjectGroup,FProjectGroup.FileName);
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TProjectGroupEditorForm.FindNodeFromTarget(ATarget: TPGCompileTarget): TTreeNode;
|
function TProjectGroupEditorForm.FindNodeFromTarget(ATarget: TPGCompileTarget): TTreeNode;
|
||||||
Var
|
Var
|
||||||
I: Integer;
|
I: Integer;
|
||||||
begin
|
begin
|
||||||
I:=0;
|
|
||||||
Result:=Nil;
|
Result:=Nil;
|
||||||
|
if ATarget=nil then exit;
|
||||||
|
I:=0;
|
||||||
While (Result=Nil) and (I<TVPG.Items.Count) do
|
While (Result=Nil) and (I<TVPG.Items.Count) do
|
||||||
begin
|
begin
|
||||||
Result:=TVPG.Items[I];
|
Result:=TVPG.Items[I];
|
||||||
If Not (Assigned(Result.Data) and (TNodeData(Result.Data).Target=ATarget)) then
|
If Not (Assigned(Result.Data) and (TNodeData(Result.Data).Target=ATarget)) then
|
||||||
Result:=Nil;
|
Result:=Nil;
|
||||||
Inc(I);
|
Inc(I);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TProjectGroupEditorForm.ShowProjectGroup;
|
procedure TProjectGroupEditorForm.ShowProjectGroup;
|
||||||
@ -950,9 +1008,8 @@ begin
|
|||||||
FTargetNodes[False]:=Nil;
|
FTargetNodes[False]:=Nil;
|
||||||
FTargetNodes[True]:=Nil;
|
FTargetNodes[True]:=Nil;
|
||||||
if FProjectGroup<>nil then begin
|
if FProjectGroup<>nil then begin
|
||||||
FProjectGroupTVNode:=CreateNode(Nil,
|
FProjectGroupTVNode:=CreateTargetNode(Nil,
|
||||||
DisplayFileName(FProjectGroup,ntProjectGroup,FProjectGroup.FileName),
|
ntProjectGroup,ProjectGroup.CompileTarget);
|
||||||
ntProjectGroup,ProjectGroup.CompileTarget,FProjectGroup);
|
|
||||||
FillProjectGroupNode(FProjectGroupTVNode,FProjectGroup,FTargetNodes);
|
FillProjectGroupNode(FProjectGroupTVNode,FProjectGroup,FTargetNodes);
|
||||||
N:=FindNodeFromTarget(FActiveTarget);
|
N:=FindNodeFromTarget(FActiveTarget);
|
||||||
if (N=Nil) then
|
if (N=Nil) then
|
||||||
@ -988,21 +1045,21 @@ Var
|
|||||||
begin
|
begin
|
||||||
TVPG.BeginUpdate;
|
TVPG.BeginUpdate;
|
||||||
try
|
try
|
||||||
TTN:=CreateNode(AParent,lisNodeTargets,ntTargets,Nil,AProjectGroup);
|
TTN:=CreateSectionNode(AParent,lisNodeTargets,ntTargets);
|
||||||
TargetNodes[False]:=TTN;
|
TargetNodes[False]:=TTN;
|
||||||
TargetNodes[True]:=CreateNode(AParent,lisNodeRemovedTargets,ntTargets,Nil,AProjectGroup);
|
TargetNodes[True]:=CreateSectionNode(AParent,lisNodeRemovedTargets,ntTargets);
|
||||||
// 2 Passes: one to show all nodes, one to fill them with target-specific data.
|
// 2 Passes: one to show all nodes, one to fill them with target-specific data.
|
||||||
// Display all nodes
|
// Display all nodes
|
||||||
For I:=0 to AProjectGroup.TargetCount-1 do
|
For I:=0 to AProjectGroup.TargetCount-1 do
|
||||||
begin
|
begin
|
||||||
T:=AProjectGroup.Targets[i];
|
T:=AProjectGroup.Targets[i];
|
||||||
TN:=CreateNode(TargetNodes[T.Removed],TNT[T.Removed],T,AProjectGroup);
|
TN:=CreateTargetNode(TargetNodes[T.Removed],TNT[T.Removed],T);
|
||||||
end;
|
end;
|
||||||
// Fill all nodes.
|
// Fill all nodes.
|
||||||
For I:=0 to TTN.Count-1 do
|
For I:=0 to TTN.Count-1 do
|
||||||
begin
|
begin
|
||||||
TN:=TTN.Items[i];
|
TN:=TTN.Items[i];
|
||||||
FillTargetNode(TN,AProjectGroup,TargetFromNode(TN));
|
FillTargetNode(TN,TargetFromNode(TN));
|
||||||
end;
|
end;
|
||||||
AParent.Expand(False);
|
AParent.Expand(False);
|
||||||
TargetNodes[False].Expand(False);
|
TargetNodes[False].Expand(False);
|
||||||
@ -1013,40 +1070,38 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TProjectGroupEditorForm.ShowDependencies(AParent: TTreeNode;
|
procedure TProjectGroupEditorForm.ShowDependencies(AParent: TTreeNode;
|
||||||
AProjectGroup: TProjectGroup; T: TPGCompileTarget; out PD: TTargetNodes);
|
T: TPGCompileTarget; out PD: TTargetNodes);
|
||||||
Var
|
Var
|
||||||
i: Integer;
|
i: Integer;
|
||||||
Pkg: TIDEPackage;
|
Pkg: TIDEPackage;
|
||||||
PkgName: String;
|
PkgName: String;
|
||||||
begin
|
begin
|
||||||
PD[False]:=CreateNode(AParent,lisNodeDependencies,ntDependencies,Nil,AProjectGroup);
|
PD[False]:=CreateSectionNode(AParent,lisNodeDependencies,ntDependencies);
|
||||||
PD[True]:=nil; //CreateNode(AParent,lisNodeRemovedDependencies,ntRemovedDependencies,Nil,AProjectGroup);
|
PD[True]:=nil; //CreateNode(AParent,lisNodeRemovedDependencies,ntRemovedDependencies,Nil,AProjectGroup);
|
||||||
For i:=0 to T.RequiredPackageCount-1 do
|
For i:=0 to T.RequiredPackageCount-1 do
|
||||||
begin
|
begin
|
||||||
PkgName:=T.RequiredPackages[i].PackageName;
|
PkgName:=T.RequiredPackages[i].PackageName;
|
||||||
Pkg:=PackageEditingInterface.FindPackageWithName(PkgName);
|
Pkg:=PackageEditingInterface.FindPackageWithName(PkgName);
|
||||||
if Pkg<>nil then begin
|
if Pkg<>nil then
|
||||||
CreateNode(PD[False],Pkg.Name,ntDependency,Nil,AProjectGroup);
|
PkgName:=Pkg.Name;
|
||||||
end else begin
|
CreateSubNode(PD[False],ntDependency,T,Pkg.Name);
|
||||||
CreateNode(PD[False],PKgName,ntDependency,Nil,AProjectGroup);
|
|
||||||
end;
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TProjectGroupEditorForm.FillProjectNode(AParent: TTreeNode; AProjectGroup: TProjectGroup; T: TPGCompileTarget);
|
procedure TProjectGroupEditorForm.FillProjectNode(AParent: TTreeNode;
|
||||||
|
T: TPGCompileTarget);
|
||||||
Var
|
Var
|
||||||
PF,PD: TTargetNodes;
|
PF,PD: TTargetNodes;
|
||||||
I: Integer;
|
i: Integer;
|
||||||
begin
|
begin
|
||||||
TVPG.BeginUpdate;
|
TVPG.BeginUpdate;
|
||||||
try
|
try
|
||||||
PF[False]:=CreateNode(AParent,lisNodeFiles,ntFiles,Nil,AProjectGroup);
|
PF[False]:=CreateSectionNode(AParent,lisNodeFiles,ntFiles);
|
||||||
PF[True]:=nil; //CreateNode(AParent,lisNodeRemovedFiles,ntFiles,Nil,AProjectGroup);
|
PF[True]:=nil; //CreateNode(AParent,lisNodeRemovedFiles,ntFiles,Nil,AProjectGroup);
|
||||||
// TODO Ideally, we can show removed files
|
// TODO Ideally, we can show removed files
|
||||||
For I:=0 to T.FileCount-1 do
|
for i:=0 to T.FileCount-1 do
|
||||||
CreateNode(PF[False],DisplayFileName(AProjectGroup,
|
CreateSubNode(PF[False],ntFile,T,T.Files[i]);
|
||||||
ntFile,T.Files[i]),ntFile,Nil,AProjectGroup);
|
ShowDependencies(AParent,T,PD);
|
||||||
ShowDependencies(AParent,AProjectGroup,T,PD);
|
|
||||||
// TODO: Build mode info Not available ?
|
// TODO: Build mode info Not available ?
|
||||||
finally
|
finally
|
||||||
TVPG.EndUpdate;
|
TVPG.EndUpdate;
|
||||||
@ -1054,27 +1109,26 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TProjectGroupEditorForm.FillPackageNode(AParent: TTreeNode;
|
procedure TProjectGroupEditorForm.FillPackageNode(AParent: TTreeNode;
|
||||||
AProjectGroup: TProjectGroup; T: TPGCompileTarget);
|
T: TPGCompileTarget);
|
||||||
Var
|
Var
|
||||||
PF,PD: TTargetNodes;
|
PF,PD: TTargetNodes;
|
||||||
I: Integer;
|
i: Integer;
|
||||||
begin
|
begin
|
||||||
TVPG.BeginUpdate;
|
TVPG.BeginUpdate;
|
||||||
try
|
try
|
||||||
PF[False]:=CreateNode(AParent,lisNodeFiles,ntFiles,Nil,AProjectGroup);
|
PF[False]:=CreateSectionNode(AParent,lisNodeFiles,ntFiles);
|
||||||
PF[True]:=nil; //CreateNode(AParent,lisNodeRemovedFiles,ntFiles,Nil,AProjectGroup);
|
PF[True]:=nil; //CreateNode(AParent,lisNodeRemovedFiles,ntFiles,Nil,AProjectGroup);
|
||||||
// ToDo Ideally, we can show removed files
|
// ToDo Ideally, we can show removed files
|
||||||
For I:=0 to T.FileCount-1 do
|
for i:=0 to T.FileCount-1 do
|
||||||
CreateNode(PF[False],DisplayFileName(AProjectGroup,
|
CreateSubNode(PF[False],ntFile,T,T.Files[i]);
|
||||||
ntFile,T.Files[i]),ntFile,Nil,AProjectGroup);
|
ShowDependencies(AParent,T,PD);
|
||||||
ShowDependencies(AParent,AProjectGroup,T,PD);
|
|
||||||
finally
|
finally
|
||||||
TVPG.EndUpdate;
|
TVPG.EndUpdate;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TProjectGroupEditorForm.FillTargetNode(AParent: TTreeNode;
|
procedure TProjectGroupEditorForm.FillTargetNode(AParent: TTreeNode;
|
||||||
AProjectGroup: TProjectGroup; T: TPGCompileTarget);
|
T: TPGCompileTarget);
|
||||||
Var
|
Var
|
||||||
PN: TTargetNodes;
|
PN: TTargetNodes;
|
||||||
begin
|
begin
|
||||||
@ -1085,9 +1139,9 @@ begin
|
|||||||
if T=Nil then
|
if T=Nil then
|
||||||
exit;
|
exit;
|
||||||
Case T.TargetType of
|
Case T.TargetType of
|
||||||
ttProject: FillProjectNode(AParent,AProjectGroup,T);
|
ttProject: FillProjectNode(AParent,T);
|
||||||
ttPackage: FillPackageNode(AParent,AProjectGroup,T);
|
ttPackage: FillPackageNode(AParent,T);
|
||||||
ttProjectGroup: FillProjectgroupNode(AParent,T.ProjectGroup,PN);
|
ttProjectGroup: FillProjectgroupNode(AParent,T.ParentProjectGroup,PN);
|
||||||
end;
|
end;
|
||||||
finally
|
finally
|
||||||
TVPG.EndUpdate;
|
TVPG.EndUpdate;
|
||||||
|
@ -54,6 +54,7 @@ Type
|
|||||||
FRemoved: boolean;
|
FRemoved: boolean;
|
||||||
protected
|
protected
|
||||||
FParent: TPGCompileTarget;
|
FParent: TPGCompileTarget;
|
||||||
|
FParentProjectGroup: TProjectGroup;
|
||||||
FProjectGroup: TProjectGroup;
|
FProjectGroup: TProjectGroup;
|
||||||
function GetAllowedActions: TPGTargetActions; virtual; // By default, return all allowed actions for target type.
|
function GetAllowedActions: TPGTargetActions; virtual; // By default, return all allowed actions for target type.
|
||||||
function GetFileCount: integer; virtual; abstract;
|
function GetFileCount: integer; virtual; abstract;
|
||||||
@ -77,7 +78,8 @@ Type
|
|||||||
// Currently allowed actions.
|
// Currently allowed actions.
|
||||||
property AllowedActions: TPGTargetActions Read GetAllowedActions;
|
property AllowedActions: TPGTargetActions Read GetAllowedActions;
|
||||||
//
|
//
|
||||||
property ProjectGroup: TProjectGroup Read FProjectGroup; // set if TargetType is ttProjectGroup
|
property ParentProjectGroup: TProjectGroup Read FParentProjectGroup;
|
||||||
|
property ProjectGroup: TProjectGroup read FProjectGroup; // set if TargetType is ttProjectGroup
|
||||||
property Files[Index: integer]: string read GetFiles;
|
property Files[Index: integer]: string read GetFiles;
|
||||||
property FileCount: integer read GetFileCount;
|
property FileCount: integer read GetFileCount;
|
||||||
property RequiredPackages[Index: integer]: TPGDependency read GetRequiredPackages;
|
property RequiredPackages[Index: integer]: TPGDependency read GetRequiredPackages;
|
||||||
@ -264,6 +266,8 @@ begin
|
|||||||
if FFileName=AValue then Exit;
|
if FFileName=AValue then Exit;
|
||||||
FFileName:=AValue;
|
FFileName:=AValue;
|
||||||
IncreaseChangeStamp;
|
IncreaseChangeStamp;
|
||||||
|
if CompileTarget<>nil then
|
||||||
|
CompileTarget.Filename:=Filename;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TProjectGroup.GetModified: Boolean;
|
function TProjectGroup.GetModified: Boolean;
|
||||||
@ -442,6 +446,8 @@ begin
|
|||||||
if FFileName=AValue then Exit;
|
if FFileName=AValue then Exit;
|
||||||
FFileName:=AValue;
|
FFileName:=AValue;
|
||||||
TargetType:=TargetTypeFromExtenstion(ExtractFileExt(AValue));
|
TargetType:=TargetTypeFromExtenstion(ExtractFileExt(AValue));
|
||||||
|
if ProjectGroup<>nil then
|
||||||
|
ProjectGroup.FileName:=Filename;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TPGCompileTarget.SetRemoved(const AValue: boolean);
|
procedure TPGCompileTarget.SetRemoved(const AValue: boolean);
|
||||||
|
Loading…
Reference in New Issue
Block a user