implemented: showing only existing packages on add requirement

git-svn-id: trunk@5303 -
This commit is contained in:
mattias 2004-03-13 15:28:58 +00:00
parent c8eb8cb399
commit 9991e30723
4 changed files with 21 additions and 15 deletions

View File

@ -158,7 +158,7 @@ begin
end; end;
// check if required package exists // check if required package exists
if not PackageGraph.DependencyExists(NewDependency,fpfSearchPackageEverywhere) if not PackageGraph.DependencyExists(NewDependency,fpfSearchAllExisting)
then begin then begin
MessageDlg(lisProjAddPackageNotFound, MessageDlg(lisProjAddPackageNotFound,
Format(lisProjAddTheDependencyWasNotFound, ['"', NewDependency.AsString, Format(lisProjAddTheDependencyWasNotFound, ['"', NewDependency.AsString,
@ -494,7 +494,7 @@ var
sl: TStringList; sl: TStringList;
begin begin
fPackages.Clear; fPackages.Clear;
PackageGraph.IteratePackages(fpfSearchPackageEverywhere,@OnIteratePackages); PackageGraph.IteratePackages(fpfSearchAllExisting,@OnIteratePackages);
sl:=TStringList.Create; sl:=TStringList.Create;
ANode:=fPackages.FindLowest; ANode:=fPackages.FindLowest;
while ANode<>nil do begin while ANode<>nil do begin

View File

@ -391,7 +391,7 @@ begin
end; end;
// check if required package exists // check if required package exists
if not PackageGraph.DependencyExists(NewDependency,fpfSearchPackageEverywhere) if not PackageGraph.DependencyExists(NewDependency,fpfSearchAllExisting)
then begin then begin
MessageDlg(lisProjAddPackageNotFound, MessageDlg(lisProjAddPackageNotFound,
Format(lisA2PNoPackageFoundForDependencyPleaseChooseAnExisting, ['"', Format(lisA2PNoPackageFoundForDependencyPleaseChooseAnExisting, ['"',
@ -1828,7 +1828,7 @@ var
sl: TStringList; sl: TStringList;
begin begin
fPackages.Clear; fPackages.Clear;
PackageGraph.IteratePackages(fpfSearchPackageEverywhere,@OnIteratePackages); PackageGraph.IteratePackages(fpfSearchAllExisting,@OnIteratePackages);
sl:=TStringList.Create; sl:=TStringList.Create;
ANode:=fPackages.FindLowest; ANode:=fPackages.FindLowest;
while ANode<>nil do begin while ANode<>nil do begin

View File

@ -90,7 +90,7 @@ type
Dependency: TPkgDependency): TPackageLink; Dependency: TPkgDependency): TPackageLink;
function FindLinkWithPackageIDInTree(LinkTree: TAVLTree; function FindLinkWithPackageIDInTree(LinkTree: TAVLTree;
APackageID: TLazPackageID): TPackageLink; APackageID: TLazPackageID): TPackageLink;
procedure IteratePackagesInTree(LinkTree: TAVLTree; procedure IteratePackagesInTree(MustExist: boolean; LinkTree: TAVLTree;
Event: TIteratePackagesEvent); Event: TIteratePackagesEvent);
procedure SetModified(const AValue: boolean); procedure SetModified(const AValue: boolean);
public public
@ -109,7 +109,7 @@ type
function FindLinkWithPkgName(const PkgName: string): TPackageLink; function FindLinkWithPkgName(const PkgName: string): TPackageLink;
function FindLinkWithDependency(Dependency: TPkgDependency): TPackageLink; function FindLinkWithDependency(Dependency: TPkgDependency): TPackageLink;
function FindLinkWithPackageID(APackageID: TLazPackageID): TPackageLink; function FindLinkWithPackageID(APackageID: TLazPackageID): TPackageLink;
procedure IteratePackages(Event: TIteratePackagesEvent); procedure IteratePackages(MustExist: boolean; Event: TIteratePackagesEvent);
procedure AddUserLink(APackage: TLazPackage); procedure AddUserLink(APackage: TLazPackage);
procedure RemoveLink(APackageID: TLazPackageID); procedure RemoveLink(APackageID: TLazPackageID);
public public
@ -525,14 +525,17 @@ begin
Result:=nil; Result:=nil;
end; end;
procedure TPackageLinks.IteratePackagesInTree(LinkTree: TAVLTree; procedure TPackageLinks.IteratePackagesInTree(MustExist: boolean;
Event: TIteratePackagesEvent); LinkTree: TAVLTree; Event: TIteratePackagesEvent);
var var
ANode: TAVLTreeNode; ANode: TAVLTreeNode;
PkgLink: TPackageLink;
begin begin
ANode:=LinkTree.FindLowest; ANode:=LinkTree.FindLowest;
while ANode<>nil do begin while ANode<>nil do begin
Event(TPackageLink(ANode.Data)); PkgLink:=TPackageLink(ANode.Data);
if (not MustExist) or FileExists(PkgLink.Filename) then
Event(PkgLink);
ANode:=LinkTree.FindSuccessor(ANode); ANode:=LinkTree.FindSuccessor(ANode);
end; end;
end; end;
@ -566,10 +569,11 @@ begin
Result:=FindLinkWithPackageIDInTree(FGlobalLinks,APackageID); Result:=FindLinkWithPackageIDInTree(FGlobalLinks,APackageID);
end; end;
procedure TPackageLinks.IteratePackages(Event: TIteratePackagesEvent); procedure TPackageLinks.IteratePackages(MustExist: boolean;
Event: TIteratePackagesEvent);
begin begin
IteratePackagesInTree(FUserLinks,Event); IteratePackagesInTree(MustExist,FUserLinks,Event);
IteratePackagesInTree(FGlobalLinks,Event); IteratePackagesInTree(MustExist,FGlobalLinks,Event);
end; end;
procedure TPackageLinks.AddUserLink(APackage: TLazPackage); procedure TPackageLinks.AddUserLink(APackage: TLazPackage);

View File

@ -56,14 +56,16 @@ type
fpfSearchInPckgsWithEditor, fpfSearchInPckgsWithEditor,
fpfSearchInLoadedPkgs, fpfSearchInLoadedPkgs,
fpfSearchInPkgLinks, fpfSearchInPkgLinks,
fpfPkgLinkMustExist, // check if .pkg file exists
fpfIgnoreVersion fpfIgnoreVersion
); );
TFindPackageFlags = set of TFindPackageFlag; TFindPackageFlags = set of TFindPackageFlag;
const const
fpfSearchPackageEverywhere = fpfSearchEverywhere =
[fpfSearchInInstalledPckgs,fpfSearchInAutoInstallPckgs, [fpfSearchInInstalledPckgs,fpfSearchInAutoInstallPckgs,
fpfSearchInPckgsWithEditor,fpfSearchInPkgLinks,fpfSearchInLoadedPkgs]; fpfSearchInPckgsWithEditor,fpfSearchInPkgLinks,fpfSearchInLoadedPkgs];
fpfSearchAllExisting = fpfSearchEverywhere+[fpfPkgLinkMustExist];
type type
TPkgAddedEvent = procedure(APackage: TLazPackage) of object; TPkgAddedEvent = procedure(APackage: TLazPackage) of object;
@ -1802,7 +1804,7 @@ begin
if Dependency.LoadPackageResult=lprUndefined then begin if Dependency.LoadPackageResult=lprUndefined then begin
BeginUpdate(false); BeginUpdate(false);
// search compatible package in opened packages // search compatible package in opened packages
ANode:=FindNodeOfDependency(Dependency,fpfSearchPackageEverywhere); ANode:=FindNodeOfDependency(Dependency,fpfSearchEverywhere);
if (ANode<>nil) then begin if (ANode<>nil) then begin
Dependency.RequiredPackage:=TLazPackage(ANode.Data); Dependency.RequiredPackage:=TLazPackage(ANode.Data);
Dependency.LoadPackageResult:=lprSuccess; Dependency.LoadPackageResult:=lprSuccess;
@ -1964,7 +1966,7 @@ begin
end; end;
// iterate in package links // iterate in package links
if (fpfSearchInPkgLinks in Flags) then begin if (fpfSearchInPkgLinks in Flags) then begin
PkgLinks.IteratePackages(Event); PkgLinks.IteratePackages(fpfPkgLinkMustExist in Flags,Event);
end; end;
end; end;