From 16bfa87121c29b09bfdadf2fdc23fc508641d7f4 Mon Sep 17 00:00:00 2001 From: mattias Date: Mon, 28 Nov 2011 15:52:52 +0000 Subject: [PATCH] IDEIntf: added IsOwnerDependingOnPkg git-svn-id: trunk@33834 - --- ideintf/packageintf.pas | 2 ++ packager/pkgmanager.pas | 30 ++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/ideintf/packageintf.pas b/ideintf/packageintf.pas index 216638760b..e6ef1f9c70 100644 --- a/ideintf/packageintf.pas +++ b/ideintf/packageintf.pas @@ -216,6 +216,8 @@ type ): TModalResult; virtual; abstract; function DoSaveAllPackages(Flags: TPkgSaveFlags): TModalResult; virtual; abstract; + function IsOwnerDependingOnPkg(AnOwner: TObject; const PkgName: string; + out DependencyOwner: TObject): boolean; virtual; abstract; function AddUnitDependenciesForComponentClasses(const UnitFilename: string; ComponentClassnames: TStrings; Quiet: boolean = false): TModalResult; virtual; abstract; diff --git a/packager/pkgmanager.pas b/packager/pkgmanager.pas index e03dd0b838..38d0388a0f 100644 --- a/packager/pkgmanager.pas +++ b/packager/pkgmanager.pas @@ -215,6 +215,8 @@ type function GetPossibleOwnersOfUnit(const UnitFilename: string; Flags: TPkgIntfOwnerSearchFlags): TFPList; override; function GetPackageOfCurrentSourceEditor(out APackage: TLazPackage): TPkgFile; + function IsOwnerDependingOnPkg(AnOwner: TObject; const PkgName: string; + out DependencyOwner: TObject): boolean; override; function AddDependencyToOwners(OwnerList: TFPList; APackage: TLazPackage; OnlyTestIfPossible: boolean = false): TModalResult; override; function DoOpenPkgFile(PkgFile: TPkgFile): TModalResult; @@ -3190,6 +3192,34 @@ begin APackage:=nil; end; +function TPkgManager.IsOwnerDependingOnPkg(AnOwner: TObject; + const PkgName: string; out DependencyOwner: TObject): boolean; +var + FirstDep: TPkgDependency; + Dep: TPkgDependency; +begin + Result:=false; + DependencyOwner:=nil; + if (AnOwner=nil) or (PkgName='') then exit; + if AnOwner is TProject then + FirstDep:=TProject(AnOwner).FirstRequiredDependency + else if AnOwner is TLazPackage then begin + if CompareDottedIdentifiers(PChar(TLazPackage(AnOwner).Name), + PChar(PkgName))=0 + then begin + DependencyOwner:=AnOwner; + exit(true); + end; + FirstDep:=TLazPackage(AnOwner).FirstRequiredDependency; + end else + exit(false); + if PackageGraph=nil then exit; + Dep:=PackageGraph.FindDependencyRecursively(FirstDep,PkgName); + if Dep=nil then exit; + DependencyOwner:=Dep.Owner; + Result:=true; +end; + function TPkgManager.AddDependencyToOwners(OwnerList: TFPList; APackage: TLazPackage; OnlyTestIfPossible: boolean): TModalResult; var