mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-16 20:09:10 +02:00
IDE: package graph: remove unneeded dependencies
git-svn-id: trunk@40772 -
This commit is contained in:
parent
4cd89917de
commit
14405e3826
@ -73,10 +73,11 @@ type
|
||||
procedure ClearTreeData;
|
||||
procedure UpdateTransitivityTree;
|
||||
procedure UpdateButtons;
|
||||
procedure AddTransitivities(NodeCaption: string; ImgIndex: integer;
|
||||
procedure AddTransitivities(DepOwner: TObject; ImgIndex: integer;
|
||||
FirstDependency: TPkgDependency);
|
||||
function FindAlternativeRoute(Dependency, StartDependency: TPkgDependency): TFPList;
|
||||
property TVNodeChecked[TVNode: TTreeNode]: boolean read GetTVNodeChecked write SetTVNodeChecked;
|
||||
function GetDepOwnerName(DepOwner: TObject; WithVersion: boolean): string;
|
||||
public
|
||||
property Owners: TFPList read FOwners write SetOwners;
|
||||
function FetchDeletes: TObjectList; // list of TCPDNodeInfo
|
||||
@ -238,10 +239,10 @@ begin
|
||||
CurOwner:=TObject(Owners[i]);
|
||||
if CurOwner is TProject then begin
|
||||
AProject:=TProject(CurOwner);
|
||||
AddTransitivities(CPDProjectName,ImgIndexProject,AProject.FirstRequiredDependency);
|
||||
AddTransitivities(AProject,ImgIndexProject,AProject.FirstRequiredDependency);
|
||||
end else if CurOwner is TLazPackage then begin
|
||||
APackage:=TLazPackage(CurOwner);
|
||||
AddTransitivities(APackage.IDAsString,ImgIndexPackage,APackage.FirstRequiredDependency);
|
||||
AddTransitivities(APackage,ImgIndexPackage,APackage.FirstRequiredDependency);
|
||||
end;
|
||||
end;
|
||||
TransitivityTreeView.EndUpdate;
|
||||
@ -262,8 +263,8 @@ begin
|
||||
DeleteSelectedBitBtn.Enabled:=CheckCnt>0;
|
||||
end;
|
||||
|
||||
procedure TCleanPkgDepsDlg.AddTransitivities(NodeCaption: string;
|
||||
ImgIndex: integer; FirstDependency: TPkgDependency);
|
||||
procedure TCleanPkgDepsDlg.AddTransitivities(DepOwner: TObject; ImgIndex: integer;
|
||||
FirstDependency: TPkgDependency);
|
||||
var
|
||||
Dependency: TPkgDependency;
|
||||
AltRoute: TFPList;
|
||||
@ -279,7 +280,7 @@ begin
|
||||
AltRoute:=FindAlternativeRoute(Dependency,FirstDependency);
|
||||
if AltRoute<>nil then begin
|
||||
if MainTVNode=nil then begin
|
||||
MainTVNode:=TransitivityTreeView.Items.Add(nil,NodeCaption);
|
||||
MainTVNode:=TransitivityTreeView.Items.Add(nil,GetDepOwnerName(DepOwner,true));
|
||||
MainTVNode.ImageIndex:=ImgIndex;
|
||||
MainTVNode.SelectedIndex:=MainTVNode.ImageIndex;
|
||||
end;
|
||||
@ -294,7 +295,7 @@ begin
|
||||
TVNode.SelectedIndex:=TVNode.ImageIndex;
|
||||
Info:=TCPDNodeInfo.Create;
|
||||
TVNode.Data:=Info;
|
||||
Info.Owner:=NodeCaption;
|
||||
Info.Owner:=GetDepOwnerName(DepOwner,false);
|
||||
Info.Dependency:=Dependency.RequiredPackage.Name;
|
||||
MainTVNode.Expand(true);
|
||||
AltRoute.Free;
|
||||
@ -353,6 +354,19 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
function TCleanPkgDepsDlg.GetDepOwnerName(DepOwner: TObject; WithVersion: boolean
|
||||
): string;
|
||||
begin
|
||||
if DepOwner is TProject then
|
||||
Result:=CPDProjectName
|
||||
else if DepOwner is TLazPackage then begin
|
||||
if WithVersion then
|
||||
Result:=TLazPackage(DepOwner).IDAsString
|
||||
else
|
||||
Result:=TLazPackage(DepOwner).Name;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TCleanPkgDepsDlg.FetchDeletes: TObjectList;
|
||||
var
|
||||
i: Integer;
|
||||
@ -362,7 +376,7 @@ begin
|
||||
Result:=TObjectList.Create(true);
|
||||
for i:=0 to TransitivityTreeView.Items.Count-1 do begin
|
||||
TVNode:=TransitivityTreeView.Items[i];
|
||||
if TObject(TVNode.Data) is TCPDNodeInfo then begin
|
||||
if TVNodeChecked[TVNode] and (TObject(TVNode.Data) is TCPDNodeInfo) then begin
|
||||
Info:=TCPDNodeInfo(TVNode.Data);
|
||||
TVNode.Data:=nil;
|
||||
Result.Add(Info);
|
||||
|
@ -161,28 +161,34 @@ var
|
||||
i: Integer;
|
||||
Info: TCPDNodeInfo;
|
||||
Pkg: TLazPackage;
|
||||
Dependency: TPkgDependency;
|
||||
begin
|
||||
Owners:=TFPList.Create;
|
||||
ListOfNodeInfos:=nil;
|
||||
try
|
||||
if (Project1<>nil) then
|
||||
Owners.Add(Project1);
|
||||
//if (Project1<>nil) then
|
||||
// Owners.Add(Project1);
|
||||
for i:=0 to PackageGraph.Count-1 do
|
||||
Owners.Add(PackageGraph[i]);
|
||||
|
||||
if ShowCleanPkgDepDlg(Owners,true,ListOfNodeInfos)<>mrOk then exit;
|
||||
for i:=0 to ListOfNodeInfos.Count-1 do begin
|
||||
Info:=TCPDNodeInfo(ListOfNodeInfos[i]);
|
||||
debugln(['TPkgGraphExplorerDlg.CleanPkgDepsMenuItemClick ',Info.Owner,'->',Info.Dependency]);
|
||||
if Info.Owner=CPDProjectName then begin
|
||||
|
||||
end else begin
|
||||
Pkg:=PackageGraph.FindPackageWithName(Info.Owner,nil);
|
||||
if Pkg<>nil then begin
|
||||
// open package editor
|
||||
if Assigned(OnOpenPackage) then
|
||||
OnOpenPackage(Self,Pkg);
|
||||
|
||||
end;
|
||||
debugln(['TPkgGraphExplorerDlg.CleanPkgDepsMenuItemClick Pkg=',Pkg<>nil]);
|
||||
if Pkg=nil then continue;
|
||||
Dependency:=Pkg.FindDependencyByName(Info.Dependency);
|
||||
debugln(['TPkgGraphExplorerDlg.CleanPkgDepsMenuItemClick Dep=',Dependency<>nil]);
|
||||
if Dependency=nil then continue;
|
||||
// open package editor
|
||||
if Assigned(OnOpenPackage) then
|
||||
OnOpenPackage(Self,Pkg);
|
||||
// remove dependency
|
||||
PackageGraph.RemoveDependencyFromPackage(Pkg,Dependency,true);
|
||||
end;
|
||||
end;
|
||||
finally
|
||||
|
Loading…
Reference in New Issue
Block a user