mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-17 02:29:21 +02:00
project groups: fixed adding a project with only one build mode
git-svn-id: trunk@50481 -
This commit is contained in:
parent
d173da5a1b
commit
b0c3d87c8c
@ -2,7 +2,7 @@
|
|||||||
ToDo:
|
ToDo:
|
||||||
- update files when project/package/file changes in IDE
|
- update files when project/package/file changes in IDE
|
||||||
- update dependencies when changed in IDE
|
- update dependencies when changed in IDE
|
||||||
- update if files changed on disk
|
- update when files changed on disk
|
||||||
- show active build mode, active project
|
- show active build mode, active project
|
||||||
- upate menu items enabled state
|
- upate menu items enabled state
|
||||||
- "find" as in the Messages window
|
- "find" as in the Messages window
|
||||||
@ -18,6 +18,11 @@
|
|||||||
- save session in project group, allowing to quickly switch the active project
|
- save session in project group, allowing to quickly switch the active project
|
||||||
- load sub projects in IDE to use code navigation for files not in the active project
|
- load sub projects in IDE to use code navigation for files not in the active project
|
||||||
- find references in files
|
- find references in files
|
||||||
|
|
||||||
|
- add menu items for project for all project inspector functions.
|
||||||
|
- add menu items for package for all package editor functions.
|
||||||
|
- add root node for packages: when opening a package editor add node instead
|
||||||
|
- multiple project groups in editor
|
||||||
}
|
}
|
||||||
unit ProjectGroup;
|
unit ProjectGroup;
|
||||||
|
|
||||||
|
@ -167,10 +167,11 @@ type
|
|||||||
function CreateSectionNode(AParent: TTreeNode; Const ACaption: String; ANodeType: TNodeType): TTreeNode;
|
function CreateSectionNode(AParent: TTreeNode; Const ACaption: String; ANodeType: TNodeType): TTreeNode;
|
||||||
function CreateTargetNode(AParent: TTreeNode; ANodeType: TNodeType; aTarget: TPGCompileTarget): TTreeNode;
|
function CreateTargetNode(AParent: TTreeNode; ANodeType: TNodeType; aTarget: TPGCompileTarget): TTreeNode;
|
||||||
function CreateSubNode(AParent: TTreeNode; ANodeType: TNodeType; aParentTarget: TPGCompileTarget; aValue: string): TTreeNode;
|
function CreateSubNode(AParent: TTreeNode; ANodeType: TNodeType; aParentTarget: TPGCompileTarget; aValue: string): TTreeNode;
|
||||||
|
procedure ClearChildNodes(TVNode: TTreeNode);
|
||||||
procedure FillPackageNode(TVNode: TTreeNode; T: TPGCompileTarget);
|
procedure FillPackageNode(TVNode: TTreeNode; T: TPGCompileTarget);
|
||||||
procedure FillProjectNode(TVNode: TTreeNode; T: TPGCompileTarget);
|
procedure FillProjectNode(TVNode: TTreeNode; T: TPGCompileTarget);
|
||||||
procedure FillTargetNode(TVNode: TTreeNode; T: TPGCompileTarget);
|
procedure FillTargetNode(TVNode: TTreeNode; T: TPGCompileTarget);
|
||||||
procedure FillProjectGroupNode(AParent: TTreeNode; AProjectGroup: TProjectGroup; Out TargetNodes: TTargetNodes);
|
procedure FillProjectGroupNode(TVNode: TTreeNode; AProjectGroup: TProjectGroup; Out TargetNodes: TTargetNodes);
|
||||||
function GetNodeImageIndex(ANodeType: TNodeType; ANodeData: TPGCompileTarget ): Integer;
|
function GetNodeImageIndex(ANodeType: TNodeType; ANodeData: TPGCompileTarget ): Integer;
|
||||||
function SelectedNodeData: TNodeData;
|
function SelectedNodeData: TNodeData;
|
||||||
function SelectedTarget: TPGCompileTarget;
|
function SelectedTarget: TPGCompileTarget;
|
||||||
@ -757,7 +758,7 @@ begin
|
|||||||
begin
|
begin
|
||||||
aTarget:=FProjectGroup.AddTarget(FileName) as TIDECompileTarget;
|
aTarget:=FProjectGroup.AddTarget(FileName) as TIDECompileTarget;
|
||||||
aTarget.LoadTarget(true);
|
aTarget.LoadTarget(true);
|
||||||
if aTarget.BuildModeCount>0 then begin
|
if aTarget.BuildModeCount>1 then begin
|
||||||
aMode:=aTarget.BuildModes[0];
|
aMode:=aTarget.BuildModes[0];
|
||||||
aMode.Compile:=true;
|
aMode.Compile:=true;
|
||||||
// ToDo: implement changed notification
|
// ToDo: implement changed notification
|
||||||
@ -1195,6 +1196,31 @@ begin
|
|||||||
InitTVNode(Result,'',ND);
|
InitTVNode(Result,'',ND);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TProjectGroupEditorForm.ClearChildNodes(TVNode: TTreeNode);
|
||||||
|
|
||||||
|
procedure FreeChildrenNodeData(aTVNode: TTreeNode);
|
||||||
|
var
|
||||||
|
i: Integer;
|
||||||
|
ChildNode: TTreeNode;
|
||||||
|
begin
|
||||||
|
if aTVNode=nil then exit;
|
||||||
|
for i:=0 to aTVNode.Count-1 do
|
||||||
|
begin
|
||||||
|
ChildNode:=aTVNode[i];
|
||||||
|
if ChildNode.Data<>nil then
|
||||||
|
begin
|
||||||
|
TObject(ChildNode.Data).Free;
|
||||||
|
ChildNode.Data:=nil;
|
||||||
|
end;
|
||||||
|
FreeChildrenNodeData(ChildNode);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
begin
|
||||||
|
FreeChildrenNodeData(TVNode);
|
||||||
|
TVNode.DeleteChildren;
|
||||||
|
end;
|
||||||
|
|
||||||
function TProjectGroupEditorForm.DisplayFileName(aTarget: TPGCompileTarget
|
function TProjectGroupEditorForm.DisplayFileName(aTarget: TPGCompileTarget
|
||||||
): string;
|
): string;
|
||||||
var
|
var
|
||||||
@ -1356,34 +1382,35 @@ begin
|
|||||||
Localize;
|
Localize;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TProjectGroupEditorForm.FillProjectGroupNode(AParent: TTreeNode;
|
procedure TProjectGroupEditorForm.FillProjectGroupNode(TVNode: TTreeNode;
|
||||||
AProjectGroup: TProjectGroup; out TargetNodes: TTargetNodes);
|
AProjectGroup: TProjectGroup; out TargetNodes: TTargetNodes);
|
||||||
Const
|
Const
|
||||||
TNT: Array[Boolean] of TNodeType = (ntTarget,ntRemovedTarget);
|
TNT: Array[Boolean] of TNodeType = (ntTarget,ntRemovedTarget);
|
||||||
Var
|
Var
|
||||||
T: TPGCompileTarget;
|
T: TPGCompileTarget;
|
||||||
TTN,TN: TTreeNode;
|
aTargetsNode,TN: TTreeNode;
|
||||||
I: Integer;
|
I: Integer;
|
||||||
begin
|
begin
|
||||||
TVPG.BeginUpdate;
|
TVPG.BeginUpdate;
|
||||||
try
|
try
|
||||||
TTN:=CreateSectionNode(AParent,lisNodeTargets,ntTargets);
|
ClearChildNodes(TVNode);
|
||||||
TargetNodes[False]:=TTN;
|
aTargetsNode:=CreateSectionNode(TVNode,lisNodeTargets,ntTargets);
|
||||||
TargetNodes[True]:=CreateSectionNode(AParent,lisNodeRemovedTargets,ntTargets);
|
TargetNodes[False]:=aTargetsNode;
|
||||||
|
TargetNodes[True]:=CreateSectionNode(TVNode,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:=CreateTargetNode(TargetNodes[T.Removed],TNT[T.Removed],T);
|
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 aTargetsNode.Count-1 do
|
||||||
begin
|
begin
|
||||||
TN:=TTN.Items[i];
|
TN:=aTargetsNode.Items[i];
|
||||||
FillTargetNode(TN,TargetFromNode(TN));
|
FillTargetNode(TN,TargetFromNode(TN));
|
||||||
end;
|
end;
|
||||||
AParent.Expand(False);
|
TVNode.Expand(False);
|
||||||
TargetNodes[False].Expand(False);
|
TargetNodes[False].Expand(False);
|
||||||
TargetNodes[True].Expand(False);
|
TargetNodes[True].Expand(False);
|
||||||
finally
|
finally
|
||||||
@ -1420,6 +1447,8 @@ Var
|
|||||||
begin
|
begin
|
||||||
TVPG.BeginUpdate;
|
TVPG.BeginUpdate;
|
||||||
try
|
try
|
||||||
|
ClearChildNodes(TVNode);
|
||||||
|
|
||||||
// buildmodes
|
// buildmodes
|
||||||
if T.BuildModeCount>1 then
|
if T.BuildModeCount>1 then
|
||||||
begin
|
begin
|
||||||
@ -1454,6 +1483,7 @@ Var
|
|||||||
begin
|
begin
|
||||||
TVPG.BeginUpdate;
|
TVPG.BeginUpdate;
|
||||||
try
|
try
|
||||||
|
ClearChildNodes(TVNode);
|
||||||
PF[False]:=CreateSectionNode(TVNode,lisNodeFiles,ntFiles);
|
PF[False]:=CreateSectionNode(TVNode,lisNodeFiles,ntFiles);
|
||||||
PF[True]:=nil; //CreateNode(TVNode,lisNodeRemovedFiles,ntFiles,Nil,AProjectGroup);
|
PF[True]:=nil; //CreateNode(TVNode,lisNodeRemovedFiles,ntFiles,Nil,AProjectGroup);
|
||||||
for i:=0 to T.FileCount-1 do
|
for i:=0 to T.FileCount-1 do
|
||||||
@ -1471,6 +1501,7 @@ Var
|
|||||||
begin
|
begin
|
||||||
TVPG.BeginUpdate;
|
TVPG.BeginUpdate;
|
||||||
try
|
try
|
||||||
|
ClearChildNodes(TVNode);
|
||||||
If T=Nil then
|
If T=Nil then
|
||||||
T:=TargetFromNode(TVNode);
|
T:=TargetFromNode(TVNode);
|
||||||
if T=Nil then
|
if T=Nil then
|
||||||
|
Loading…
Reference in New Issue
Block a user