IDE: package graph: remove unneeded dependencies

git-svn-id: trunk@40772 -
This commit is contained in:
mattias 2013-04-09 20:02:31 +00:00
parent 4cd89917de
commit 14405e3826
2 changed files with 36 additions and 16 deletions

View File

@ -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);

View File

@ -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