mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-22 02:39:23 +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;
|
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
|
||||||
|
@ -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
|
||||||
|
@ -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);
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user