mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-10 08:28:14 +02:00
implemented: showing only existing packages on add requirement
git-svn-id: trunk@5303 -
This commit is contained in:
parent
c8eb8cb399
commit
9991e30723
@ -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
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user