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

View File

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

View File

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

View File

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