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