mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-10-23 17:42:25 +02:00
IDEIntf: added GetRequiredPackages
git-svn-id: trunk@40280 -
This commit is contained in:
parent
e473991184
commit
fe54d0ba55
@ -454,6 +454,12 @@ begin
|
||||
while AVLNode<>nil do begin
|
||||
Group:=TUGGroup(AVLNode.Data);
|
||||
Graph.GetNode(Group.Name,true);
|
||||
if Group.Name=GroupPrefixProject then begin
|
||||
// project
|
||||
|
||||
end else begin
|
||||
|
||||
end;
|
||||
AVLNode:=Groups.Groups.FindSuccessor(AVLNode);
|
||||
end;
|
||||
GroupsLvlGraph.EndUpdate;
|
||||
|
@ -50,6 +50,7 @@ uses
|
||||
ComCtrls, DividerBevel, DefineTemplates,
|
||||
// IDEIntf
|
||||
LazIDEIntf, IDEMsgIntf, IDEHelpIntf, IDEImagesIntf, IDEWindowIntf, IDEDialogs,
|
||||
PackageIntf,
|
||||
// IDE
|
||||
LazarusIDEStrConsts, TransferMacros, LazConf, IDEProcs, DialogProcs, MainBar,
|
||||
InputHistory, ExtToolDialog, ExtToolEditDlg, EnvironmentOpts,
|
||||
@ -1094,7 +1095,8 @@ begin
|
||||
InhTreeView.BeginUpdate;
|
||||
LazDir:=EnvironmentOptions.GetParsedLazarusDirectory;
|
||||
try
|
||||
PackageGraph.GetAllRequiredPackages(PackageGraph.FirstAutoInstallDependency,PkgList);
|
||||
PackageGraph.GetAllRequiredPackages(nil,
|
||||
PackageGraph.FirstAutoInstallDependency,PkgList,[pirSkipDesignTimeOnly]);
|
||||
|
||||
// add detail nodes
|
||||
if PkgList<>nil then
|
||||
|
@ -2101,7 +2101,7 @@ function TBuildManager.OnGetBuildMacroValues(Options: TBaseCompilerOptions;
|
||||
if FirstDependency=nil then exit;
|
||||
List:=nil;
|
||||
try
|
||||
PackageGraph.GetAllRequiredPackages(FirstDependency,List);
|
||||
PackageGraph.GetAllRequiredPackages(nil,FirstDependency,List);
|
||||
if List=nil then exit;
|
||||
for i:=0 to List.Count-1 do begin
|
||||
// add values of build macros of used package
|
||||
|
@ -33,7 +33,7 @@ uses
|
||||
// codetools
|
||||
CodeToolManager, DirectoryCacher, CodeToolsStructs,
|
||||
// IDEIntf
|
||||
IDEDialogs, IDEImagesIntf,
|
||||
IDEDialogs, IDEImagesIntf, PackageIntf,
|
||||
// IDE
|
||||
PackageDefs, PackageSystem, InputHistory, LazarusIDEStrConsts, Project,
|
||||
DialogProcs, IDEProcs;
|
||||
@ -343,7 +343,8 @@ var
|
||||
begin
|
||||
List:=nil;
|
||||
try
|
||||
PackageGraph.GetAllRequiredPackages(FProject.FirstRequiredDependency,List);
|
||||
PackageGraph.GetAllRequiredPackages(nil,FProject.FirstRequiredDependency,
|
||||
List,[pirSkipDesignTimeOnly]);
|
||||
if List=nil then exit;
|
||||
for i:=0 to List.Count-1 do begin
|
||||
Pkg:=TLazPackage(List[i]);
|
||||
@ -363,7 +364,8 @@ var
|
||||
begin
|
||||
List:=nil;
|
||||
try
|
||||
PackageGraph.GetAllRequiredPackages(FProject.FirstRequiredDependency,List);
|
||||
PackageGraph.GetAllRequiredPackages(nil,FProject.FirstRequiredDependency,
|
||||
List);
|
||||
if List=nil then exit;
|
||||
for i:=0 to List.Count-1 do begin
|
||||
Pkg:=TLazPackage(List[i]);
|
||||
|
@ -38,6 +38,7 @@ uses
|
||||
CodeToolsStructs,
|
||||
// IDEIntf
|
||||
ProjectIntf, MacroIntf, IDEExternToolIntf, LazIDEIntf, IDEDialogs,
|
||||
PackageIntf,
|
||||
// IDE
|
||||
Project, PackageSystem, ExtToolEditDlg, IDEProcs, EnvironmentOpts,
|
||||
LazarusIDEStrConsts, PackageDefs, CompilerOptions, TransferMacros, LazConf;
|
||||
@ -382,7 +383,7 @@ begin
|
||||
if FirstDependency=nil then exit(mrOK);
|
||||
try
|
||||
// get used packages
|
||||
PackageGraph.GetAllRequiredPackages(FirstDependency,PkgList);
|
||||
PackageGraph.GetAllRequiredPackages(nil,FirstDependency,PkgList,[pirSkipDesignTimeOnly]);
|
||||
if PkgList=nil then exit(mrOk);
|
||||
|
||||
// get search path
|
||||
|
@ -1132,7 +1132,7 @@ procedure TCodeBrowserView.WorkGatherPackages;
|
||||
begin
|
||||
List:=nil;
|
||||
try
|
||||
PackageGraph.GetAllRequiredPackages(FirstDependency,List);
|
||||
PackageGraph.GetAllRequiredPackages(nil,FirstDependency,List);
|
||||
if (List=nil) then exit;
|
||||
for i:=0 to List.Count-1 do begin
|
||||
if TObject(List[i]) is TLazPackage then
|
||||
|
@ -751,7 +751,8 @@ begin
|
||||
// search in all sub packages
|
||||
PkgList:=nil;
|
||||
try
|
||||
PackageGraph.GetAllRequiredPackages(Pkg.FirstRequiredDependency,PkgList);
|
||||
PackageGraph.GetAllRequiredPackages(nil,Pkg.FirstRequiredDependency,
|
||||
PkgList);
|
||||
if PkgList<>nil then begin
|
||||
for i:=0 to PkgList.Count-1 do begin
|
||||
SubPkg:=TLazPackage(PkgList[i]);
|
||||
|
@ -344,7 +344,7 @@ function TIDEInfoNeedBuildDlg.GetTargets(Target: string): TFPList;
|
||||
begin
|
||||
Result:=nil;
|
||||
if Main=nil then exit;
|
||||
PackageGraph.GetAllRequiredPackages(FirstDependency,Result);
|
||||
PackageGraph.GetAllRequiredPackages(nil,FirstDependency,Result);
|
||||
if Result<>nil then begin
|
||||
// PackageGraph.GetAllRequiredPackages starts with the inner nodes
|
||||
// => reverse order
|
||||
|
@ -222,7 +222,7 @@ begin
|
||||
Add(AProject.CompilerOptions);
|
||||
PkgList:=nil;
|
||||
try
|
||||
PackageGraph.GetAllRequiredPackages(AProject.FirstRequiredDependency,PkgList);
|
||||
PackageGraph.GetAllRequiredPackages(nil,AProject.FirstRequiredDependency,PkgList);
|
||||
if PkgList<>nil then begin
|
||||
for i:=0 to PkgList.Count-1 do begin
|
||||
if TObject(PkgList[i]) is TLazPackage then begin
|
||||
|
@ -5793,7 +5793,7 @@ begin
|
||||
AddPackage(APackage);
|
||||
end;
|
||||
// add all units of all used packages
|
||||
PackageGraph.GetAllRequiredPackages(FirstDependency,PkgList);
|
||||
PackageGraph.GetAllRequiredPackages(nil,FirstDependency,PkgList);
|
||||
if PkgList<>nil then
|
||||
for i:=0 to PkgList.Count-1 do
|
||||
AddPackage(TLazPackage(PkgList[i]));
|
||||
|
@ -60,7 +60,7 @@ uses
|
||||
LazarusIDEStrConsts, CompilerOptions,
|
||||
TransferMacros, EditorOptions, IDEProcs, RunParamsOpts, ProjectDefs,
|
||||
FileReferenceList, EditDefineTree, PackageDefs, PackageSystem, IDEOptionsIntf,
|
||||
SrcEditorIntf, IDEDialogs, SynEdit;
|
||||
SrcEditorIntf, IDEDialogs, PackageIntf, SynEdit;
|
||||
|
||||
type
|
||||
TUnitInfo = class;
|
||||
@ -994,7 +994,9 @@ type
|
||||
procedure MoveRequiredDependencyUp(Dependency: TPkgDependency);
|
||||
procedure MoveRequiredDependencyDown(Dependency: TPkgDependency);
|
||||
function Requires(APackage: TLazPackage; SearchRecursively: boolean): boolean;
|
||||
procedure GetAllRequiredPackages(var List: TFPList);
|
||||
procedure GetAllRequiredPackages(var List: TFPList;
|
||||
ReqFlags: TPkgIntfRequiredFlags = [];
|
||||
MinPolicy: TPackageUpdatePolicy = low(TPackageUpdatePolicy));
|
||||
procedure AddPackageDependency(const PackageName: string); override;
|
||||
|
||||
// unit dependencies
|
||||
@ -4595,10 +4597,11 @@ begin
|
||||
APackage)<>nil;
|
||||
end;
|
||||
|
||||
procedure TProject.GetAllRequiredPackages(var List: TFPList);
|
||||
procedure TProject.GetAllRequiredPackages(var List: TFPList;
|
||||
ReqFlags: TPkgIntfRequiredFlags; MinPolicy: TPackageUpdatePolicy);
|
||||
begin
|
||||
if Assigned(OnGetAllRequiredPackages) then
|
||||
OnGetAllRequiredPackages(FirstRequiredDependency,List);
|
||||
OnGetAllRequiredPackages(nil,FirstRequiredDependency,List,ReqFlags,MinPolicy);
|
||||
end;
|
||||
|
||||
procedure TProject.AddPackageDependency(const PackageName: string);
|
||||
|
@ -211,6 +211,12 @@ type
|
||||
before the package is initialized and the dependencies are resolved }
|
||||
);
|
||||
|
||||
TPkgIntfRequiredFlag = (
|
||||
pirNotRecursive,
|
||||
pirSkipDesignTimeOnly
|
||||
);
|
||||
TPkgIntfRequiredFlags = set of TPkgIntfRequiredFlag;
|
||||
|
||||
{ TPackageEditingInterface }
|
||||
|
||||
TPackageEditingInterface = class(TComponent)
|
||||
@ -231,13 +237,6 @@ 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 AddDependencyToOwners(OwnerList: TFPList; APackage: TIDEPackage;
|
||||
OnlyTestIfPossible: boolean = false): TModalResult; virtual; abstract; // mrOk or mrIgnore for already connected
|
||||
function AddUnitDependenciesForComponentClasses(const UnitFilename: string;
|
||||
ComponentClassnames: TStrings;
|
||||
Quiet: boolean = false): TModalResult; virtual; abstract;
|
||||
function GetOwnersOfUnit(const UnitFilename: string): TFPList; virtual; abstract;
|
||||
procedure ExtendOwnerListWithUsedByOwners(OwnerList: TFPList); virtual; abstract;
|
||||
function GetSourceFilesOfOwners(OwnerList: TFPList): TStrings; virtual; abstract;
|
||||
@ -248,6 +247,17 @@ type
|
||||
function GetPackageCount: integer; virtual; abstract;
|
||||
function GetPackages(Index: integer): TIDEPackage; virtual; abstract;
|
||||
function FindPackageWithName(const PkgName: string; IgnorePackage: TIDEPackage = nil): TIDEPackage; virtual; abstract;
|
||||
|
||||
// dependencies
|
||||
function IsOwnerDependingOnPkg(AnOwner: TObject; const PkgName: string;
|
||||
out DependencyOwner: TObject): boolean; virtual; abstract;
|
||||
procedure GetRequiredPackages(AnOwner: TObject; PkgList: TFPList;
|
||||
Flags: TPkgIntfRequiredFlags = []) virtual; abstract;
|
||||
function AddDependencyToOwners(OwnerList: TFPList; APackage: TIDEPackage;
|
||||
OnlyTestIfPossible: boolean = false): TModalResult; virtual; abstract; // mrOk or mrIgnore for already connected
|
||||
function AddUnitDependenciesForComponentClasses(const UnitFilename: string;
|
||||
ComponentClassnames: TStrings;
|
||||
Quiet: boolean = false): TModalResult; virtual; abstract;
|
||||
function RedirectPackageDependency(APackage: TIDEPackage): TIDEPackage; virtual; abstract;
|
||||
|
||||
// package editors
|
||||
|
@ -59,10 +59,21 @@ type
|
||||
TBasePackageEditor = class;
|
||||
TPkgDependency = class;
|
||||
|
||||
TPackageUpdatePolicy = (
|
||||
pupManually,
|
||||
pupOnRebuildingAll,
|
||||
pupAsNeeded
|
||||
);
|
||||
TPackageUpdatePolicies = set of TPackageUpdatePolicy;
|
||||
|
||||
TIteratePackagesEvent =
|
||||
procedure(APackage: TLazPackageID) of object;
|
||||
TGetAllRequiredPackagesEvent =
|
||||
procedure(FirstDependency: TPkgDependency; out List: TFPList) of object;
|
||||
procedure(APackage: TLazPackage; // if not nil then ignore FirstDependency and do not add APackage to Result
|
||||
FirstDependency: TPkgDependency;
|
||||
out List: TFPList;
|
||||
Flags: TPkgIntfRequiredFlags = [];
|
||||
MinPolicy: TPackageUpdatePolicy = low(TPackageUpdatePolicy)) of object;
|
||||
TGetDependencyOwnerDescription =
|
||||
procedure(Dependency: TPkgDependency; out Description: string) of object;
|
||||
TGetDependencyOwnerDirectory =
|
||||
@ -512,13 +523,6 @@ type
|
||||
);
|
||||
TLazPackageFlags = set of TLazPackageFlag;
|
||||
|
||||
TPackageUpdatePolicy = (
|
||||
pupManually,
|
||||
pupOnRebuildingAll,
|
||||
pupAsNeeded
|
||||
);
|
||||
TPackageUpdatePolicies = set of TPackageUpdatePolicy;
|
||||
|
||||
const
|
||||
pupAllAuto = [pupAsNeeded,pupOnRebuildingAll];
|
||||
|
||||
@ -746,7 +750,9 @@ type
|
||||
function CreateDependencyWithOwner(NewOwner: TObject;
|
||||
WithMinVersion: boolean = false): TPkgDependency;
|
||||
function Requires(APackage: TLazPackage): boolean;
|
||||
procedure GetAllRequiredPackages(var List: TFPList; WithSelf: boolean);
|
||||
procedure GetAllRequiredPackages(var List: TFPList; WithSelf: boolean;
|
||||
Flags: TPkgIntfRequiredFlags = [];
|
||||
MinPolicy: TPackageUpdatePolicy = low(TPackageUpdatePolicy));
|
||||
// components
|
||||
function IndexOfPkgComponent(PkgComponent: TPkgComponent): integer;
|
||||
function AddComponent(PkgFile: TPkgFile; const Page: string;
|
||||
@ -3582,13 +3588,14 @@ begin
|
||||
end;
|
||||
|
||||
procedure TLazPackage.GetAllRequiredPackages(var List: TFPList;
|
||||
WithSelf: boolean);
|
||||
WithSelf: boolean; Flags: TPkgIntfRequiredFlags;
|
||||
MinPolicy: TPackageUpdatePolicy);
|
||||
begin
|
||||
if Assigned(OnGetAllRequiredPackages) then
|
||||
OnGetAllRequiredPackages(FirstRequiredDependency,List);
|
||||
OnGetAllRequiredPackages(Self,FirstRequiredDependency,List,Flags,MinPolicy);
|
||||
if WithSelf then begin
|
||||
if List=nil then List:=TFPList.Create;
|
||||
if List.IndexOf(Self)<0 then;
|
||||
if List.IndexOf(Self)<0 then
|
||||
List.Insert(0,Self);
|
||||
end else if List<>nil then begin
|
||||
List.Remove(Self);
|
||||
@ -4549,9 +4556,9 @@ begin
|
||||
ANode:=Root;
|
||||
while (ANode<>nil) do begin
|
||||
Result:=TPkgPair(ANode.Data);
|
||||
Comp:=-Result.ComparePair(Pkg1,Pkg2);
|
||||
Comp:=Result.ComparePair(Pkg1,Pkg2);
|
||||
if Comp=0 then exit;
|
||||
if Comp<0 then begin
|
||||
if Comp>0 then begin
|
||||
ANode:=ANode.Left
|
||||
end else begin
|
||||
ANode:=ANode.Right
|
||||
|
@ -240,17 +240,23 @@ type
|
||||
function PackageIsNeeded(APackage: TLazPackage): boolean;
|
||||
function PackageNameExists(const PkgName: string;
|
||||
IgnorePackage: TLazPackage): boolean;
|
||||
procedure GetAllRequiredPackages(FirstDependency: TPkgDependency;
|
||||
out List: TFPList); // for single search use FindDependencyRecursively
|
||||
procedure GetConnectionsTree(FirstDependency: TPkgDependency;
|
||||
var PkgList: TFPList; var Tree: TPkgPairTree);
|
||||
function GetBrokenDependenciesWhenChangingPkgID(APackage: TLazPackage;
|
||||
const NewName: string; NewVersion: TPkgVersion): TFPList;
|
||||
procedure GetPackagesChangedOnDisk(out ListOfPackages: TStringList); // returns list of new filename and TLazPackage
|
||||
|
||||
procedure GetAllRequiredPackages(APackage: TLazPackage; // if not nil then ignore FirstDependency and do not add APackage to Result
|
||||
FirstDependency: TPkgDependency;
|
||||
out List: TFPList;
|
||||
Flags: TPkgIntfRequiredFlags = [];
|
||||
MinPolicy: TPackageUpdatePolicy = low(TPackageUpdatePolicy)
|
||||
); // for single search use FindDependencyRecursively
|
||||
function GetAutoCompilationOrder(APackage: TLazPackage;
|
||||
FirstDependency: TPkgDependency;
|
||||
SkipDesignTimePackages: boolean;
|
||||
Policy: TPackageUpdatePolicy): TFPList;
|
||||
function GetBrokenDependenciesWhenChangingPkgID(APackage: TLazPackage;
|
||||
const NewName: string; NewVersion: TPkgVersion): TFPList;
|
||||
procedure GetPackagesChangedOnDisk(out ListOfPackages: TStringList); // returns list of new filename and TLazPackage
|
||||
|
||||
procedure CalculateTopologicalLevels;
|
||||
procedure SortDependencyListTopologically(
|
||||
var FirstDependency: TPkgDependency; TopLevelFirst: boolean);
|
||||
@ -1749,7 +1755,7 @@ begin
|
||||
Result:='';
|
||||
// get all required packages
|
||||
PkgList:=nil;
|
||||
GetAllRequiredPackages(FirstDependency,PkgList);
|
||||
GetAllRequiredPackages(nil,FirstDependency,PkgList);
|
||||
if PkgList=nil then exit;
|
||||
// get all usage options
|
||||
AddOptionsList:=GetUsageOptionsList(PkgList);
|
||||
@ -1785,7 +1791,7 @@ begin
|
||||
// create auto install package list for the Lazarus uses section
|
||||
PkgList:=nil;
|
||||
try
|
||||
GetAllRequiredPackages(FirstAutoInstallDependency,PkgList);
|
||||
GetAllRequiredPackages(nil,FirstAutoInstallDependency,PkgList);
|
||||
StaticPackagesInc:='';
|
||||
if PkgList<>nil then begin
|
||||
for i:=0 to PkgList.Count-1 do begin
|
||||
@ -5265,28 +5271,36 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TLazPackageGraph.GetAllRequiredPackages(
|
||||
FirstDependency: TPkgDependency; out List: TFPList);
|
||||
procedure TLazPackageGraph.GetAllRequiredPackages(APackage: TLazPackage;
|
||||
FirstDependency: TPkgDependency; out List: TFPList;
|
||||
Flags: TPkgIntfRequiredFlags; MinPolicy: TPackageUpdatePolicy);
|
||||
// returns packages in topological order, beginning with the top level package
|
||||
|
||||
procedure GetTopologicalOrder(CurDependency: TPkgDependency);
|
||||
var
|
||||
RequiredPackage: TLazPackage;
|
||||
Dependency: TPkgDependency;
|
||||
begin
|
||||
while CurDependency<>nil do begin
|
||||
//debugln('TLazPackageGraph.GetAllRequiredPackages A ',CurDependency.AsString,' ',dbgs(ord(CurDependency.LoadPackageResult)),' ',dbgs(ord(lprSuccess)));
|
||||
if CurDependency.LoadPackageResult=lprSuccess then begin
|
||||
//debugln('TLazPackageGraph.GetAllRequiredPackages B ',CurDependency.AsString);
|
||||
RequiredPackage:=CurDependency.RequiredPackage;
|
||||
if (not (lpfVisited in RequiredPackage.Flags)) then begin
|
||||
RequiredPackage.Flags:=RequiredPackage.Flags+[lpfVisited];
|
||||
GetTopologicalOrder(RequiredPackage.FirstRequiredDependency);
|
||||
// add package to list
|
||||
if List=nil then List:=TFPList.Create;
|
||||
List.Add(RequiredPackage);
|
||||
end;
|
||||
end;
|
||||
Dependency:=CurDependency;
|
||||
CurDependency:=CurDependency.NextRequiresDependency;
|
||||
//debugln('TLazPackageGraph.GetAllRequiredPackages A ',Dependency.AsString,' ',dbgs(ord(Dependency.LoadPackageResult)),' ',dbgs(ord(lprSuccess)));
|
||||
if Dependency.LoadPackageResult<>lprSuccess then continue;
|
||||
//debugln('TLazPackageGraph.GetAllRequiredPackages B ',Dependency.AsString);
|
||||
RequiredPackage:=Dependency.RequiredPackage;
|
||||
if (lpfVisited in RequiredPackage.Flags) then
|
||||
continue; // already visited
|
||||
RequiredPackage.Flags:=RequiredPackage.Flags+[lpfVisited];
|
||||
if ord(RequiredPackage.AutoUpdate)<ord(MinPolicy) then
|
||||
continue; // skip manually updated packages
|
||||
if (pirSkipDesignTimeOnly in Flags)
|
||||
and (RequiredPackage.PackageType=lptDesignTime) then
|
||||
continue; // skip designtime (only) packages
|
||||
if not (pirNotRecursive in Flags) then
|
||||
GetTopologicalOrder(RequiredPackage.FirstRequiredDependency);
|
||||
// add package to list
|
||||
if List=nil then List:=TFPList.Create;
|
||||
List.Add(RequiredPackage);
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -5361,7 +5375,7 @@ var
|
||||
Pkg: TLazPackage;
|
||||
begin
|
||||
if Tree<>nil then Tree.FreeAndClear;
|
||||
GetAllRequiredPackages(FirstDependency,PkgList);
|
||||
GetAllRequiredPackages(nil,FirstDependency,PkgList);
|
||||
if PkgList=nil then exit;
|
||||
AddConnections(FirstDependency);
|
||||
for i:=0 to PkgList.Count-1 do begin
|
||||
|
@ -219,10 +219,6 @@ type
|
||||
Flags: TPkgIntfOwnerSearchFlags): TFPList; override;
|
||||
function GetPackageOfCurrentSourceEditor(out APackage: TIDEPackage): TPkgFile;
|
||||
function GetPackageOfSourceEditor(out APackage: TIDEPackage; ASrcEdit: TObject): TLazPackageFile; override;
|
||||
function IsOwnerDependingOnPkg(AnOwner: TObject; const PkgName: string;
|
||||
out DependencyOwner: TObject): boolean; override;
|
||||
function AddDependencyToOwners(OwnerList: TFPList; APackage: TIDEPackage;
|
||||
OnlyTestIfPossible: boolean = false): TModalResult; override;
|
||||
function DoOpenPkgFile(PkgFile: TPkgFile): TModalResult;
|
||||
function FindVirtualUnitSource(PkgFile: TPkgFile): string;
|
||||
function SearchFile(const AFilename: string;
|
||||
@ -230,8 +226,6 @@ type
|
||||
InObject: TObject): TPkgFile; override;
|
||||
function SearchUnitInDesigntimePackages(const AnUnitName: string;
|
||||
InObject: TObject): TPkgFile; override;
|
||||
function AddDependencyToUnitOwners(const OwnedFilename,
|
||||
RequiredUnitname: string): TModalResult; override;
|
||||
procedure GetPackagesChangedOnDisk(out ListOfPackages: TStringList); override;
|
||||
function RevertPackages(APackageList: TStringList): TModalResult; override;
|
||||
|
||||
@ -245,6 +239,14 @@ type
|
||||
function GetPackageCount: integer; override;
|
||||
function GetPackages(Index: integer): TIDEPackage; override;
|
||||
function FindPackageWithName(const PkgName: string; IgnorePackage: TIDEPackage = nil): TIDEPackage; override;
|
||||
function IsOwnerDependingOnPkg(AnOwner: TObject; const PkgName: string;
|
||||
out DependencyOwner: TObject): boolean; override;
|
||||
procedure GetRequiredPackages(AnOwner: TObject; PkgList: TFPList;
|
||||
Flags: TPkgIntfRequiredFlags = []) override;
|
||||
function AddDependencyToOwners(OwnerList: TFPList; APackage: TIDEPackage;
|
||||
OnlyTestIfPossible: boolean = false): TModalResult; override;
|
||||
function AddDependencyToUnitOwners(const OwnedFilename,
|
||||
RequiredUnitname: string): TModalResult; override;
|
||||
function RedirectPackageDependency(APackage: TIDEPackage): TIDEPackage; override;
|
||||
|
||||
// project
|
||||
@ -1740,7 +1742,8 @@ var
|
||||
i: Integer;
|
||||
begin
|
||||
PkgList:=nil;
|
||||
PackageGraph.GetAllRequiredPackages(PackageGraph.FirstAutoInstallDependency,PkgList);
|
||||
PackageGraph.GetAllRequiredPackages(nil,
|
||||
PackageGraph.FirstAutoInstallDependency,PkgList);
|
||||
if PkgList=nil then exit;
|
||||
for i:=0 to PkgList.Count-1 do
|
||||
if TObject(PkgList[i]) is TLazPackage then
|
||||
@ -2716,7 +2719,8 @@ begin
|
||||
exit;
|
||||
end;
|
||||
PkgList:=nil;
|
||||
PackageGraph.GetAllRequiredPackages(Project1.FirstRequiredDependency,PkgList);
|
||||
PackageGraph.GetAllRequiredPackages(nil,Project1.FirstRequiredDependency,
|
||||
PkgList);
|
||||
if PkgList=nil then exit;
|
||||
try
|
||||
for i:=0 to PkgList.Count-1 do begin
|
||||
@ -3265,6 +3269,22 @@ begin
|
||||
Result:=true;
|
||||
end;
|
||||
|
||||
procedure TPkgManager.GetRequiredPackages(AnOwner: TObject; PkgList: TFPList;
|
||||
Flags: TPkgIntfRequiredFlags);
|
||||
var
|
||||
Dependency: TPkgDependency;
|
||||
begin
|
||||
Dependency:=nil;
|
||||
if AnOwner is TProject then
|
||||
Dependency:=TProject(AnOwner).FirstRequiredDependency
|
||||
else if AnOwner is TLazPackage then
|
||||
Dependency:=TLazPackage(AnOwner).FirstRequiredDependency
|
||||
else if AnOwner=PkgBoss then
|
||||
Dependency:=PackageGraph.FirstAutoInstallDependency;
|
||||
if Dependency=nil then exit;
|
||||
PackageGraph.GetAllRequiredPackages(nil,Dependency,PkgList,Flags);
|
||||
end;
|
||||
|
||||
function TPkgManager.AddDependencyToOwners(OwnerList: TFPList;
|
||||
APackage: TIDEPackage; OnlyTestIfPossible: boolean): TModalResult;
|
||||
var
|
||||
@ -3995,7 +4015,7 @@ begin
|
||||
ADependency:=NextDependency;
|
||||
end;
|
||||
|
||||
PackageGraph.GetAllRequiredPackages(NewFirstAutoInstallDependency,PkgList);
|
||||
PackageGraph.GetAllRequiredPackages(nil,NewFirstAutoInstallDependency,PkgList);
|
||||
|
||||
// try save all modified packages
|
||||
for i:=0 to PkgList.Count-1 do begin
|
||||
@ -4134,7 +4154,7 @@ begin
|
||||
// get all required packages
|
||||
//debugln('TPkgManager.MainIDEitmPkgEditInstallPkgsClick GetAllRequiredPackages for ',DependencyListAsString(NewFirstAutoInstallDependency,pdlRequires));
|
||||
if LoadDependencyList(NewFirstAutoInstallDependency,false)<>mrOk then exit(mrCancel);
|
||||
PackageGraph.GetAllRequiredPackages(NewFirstAutoInstallDependency,PkgList);
|
||||
PackageGraph.GetAllRequiredPackages(nil,NewFirstAutoInstallDependency,PkgList);
|
||||
|
||||
// mark packages for installation
|
||||
//debugln('TPkgManager.MainIDEitmPkgEditInstallPkgsClick mark packages for installation');
|
||||
|
Loading…
Reference in New Issue
Block a user