mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-14 08:00:34 +02:00
IDE: Added TLazPackageGraph.FChangeStamp
git-svn-id: trunk@50153 -
This commit is contained in:
parent
5ec7988f47
commit
3ca8d0b170
@ -1049,19 +1049,16 @@ end;
|
|||||||
{ TPackageCommandsStamp }
|
{ TPackageCommandsStamp }
|
||||||
|
|
||||||
function TPackageCommandsStamp.Changed(AUnitInfo: TUnitInfo): Boolean;
|
function TPackageCommandsStamp.Changed(AUnitInfo: TUnitInfo): Boolean;
|
||||||
var
|
|
||||||
xPackagesChangeStamp: Int64;
|
|
||||||
begin
|
begin
|
||||||
xPackagesChangeStamp := PackageGraph.PackagesChangeStamp;
|
|
||||||
Result := not(
|
Result := not(
|
||||||
(UnitInfo = AUnitInfo)
|
(UnitInfo = AUnitInfo)
|
||||||
and (PackagesChangeStamp = xPackagesChangeStamp)
|
and (PackagesChangeStamp = PackageGraph.ChangeStamp)
|
||||||
);
|
);
|
||||||
|
|
||||||
if not Result then Exit;
|
if not Result then Exit;
|
||||||
|
|
||||||
UnitInfo := AUnitInfo;
|
UnitInfo := AUnitInfo;
|
||||||
PackagesChangeStamp := xPackagesChangeStamp;
|
PackagesChangeStamp := PackageGraph.ChangeStamp;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{ TProjectCommandsStamp }
|
{ TProjectCommandsStamp }
|
||||||
|
@ -520,6 +520,7 @@ type
|
|||||||
FAuthor: string;
|
FAuthor: string;
|
||||||
FAutoUpdate: TPackageUpdatePolicy;
|
FAutoUpdate: TPackageUpdatePolicy;
|
||||||
FFPDocPackageName: string;
|
FFPDocPackageName: string;
|
||||||
|
FOnModifySilently: TNotifyEvent;
|
||||||
FOptionsBackup: TLazPackage;
|
FOptionsBackup: TLazPackage;
|
||||||
FComponents: TFPList; // TFPList of TPkgComponent
|
FComponents: TFPList; // TFPList of TPkgComponent
|
||||||
FDefineTemplates: TLazPackageDefineTemplates;
|
FDefineTemplates: TLazPackageDefineTemplates;
|
||||||
@ -787,6 +788,7 @@ type
|
|||||||
property UserReadOnly: boolean read FUserReadOnly write SetUserReadOnly;
|
property UserReadOnly: boolean read FUserReadOnly write SetUserReadOnly;
|
||||||
property UserIgnoreChangeStamp: integer read FUserIgnoreChangeStamp
|
property UserIgnoreChangeStamp: integer read FUserIgnoreChangeStamp
|
||||||
write FUserIgnoreChangeStamp;
|
write FUserIgnoreChangeStamp;
|
||||||
|
property OnModifySilently: TNotifyEvent read FOnModifySilently write FOnModifySilently;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
PLazPackage = ^TLazPackage;
|
PLazPackage = ^TLazPackage;
|
||||||
@ -2589,6 +2591,8 @@ begin
|
|||||||
inc(FChangeStamp)
|
inc(FChangeStamp)
|
||||||
else
|
else
|
||||||
FChangeStamp:=low(FChangeStamp);
|
FChangeStamp:=low(FChangeStamp);
|
||||||
|
if Assigned(FOnModifySilently) then
|
||||||
|
FOnModifySilently(Self);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TLazPackage.SetModified(const AValue: boolean);
|
procedure TLazPackage.SetModified(const AValue: boolean);
|
||||||
|
@ -210,11 +210,11 @@ type
|
|||||||
FUpdateLock: integer;
|
FUpdateLock: integer;
|
||||||
FVerbosity: TPkgVerbosityFlags;
|
FVerbosity: TPkgVerbosityFlags;
|
||||||
FFindFileCache: TLazPackageGraphFileCache;
|
FFindFileCache: TLazPackageGraphFileCache;
|
||||||
|
FChangeStamp: Int64;
|
||||||
function CreateDefaultPackage: TLazPackage;
|
function CreateDefaultPackage: TLazPackage;
|
||||||
function GetCount: Integer;
|
function GetCount: Integer;
|
||||||
function GetPackages(Index: integer): TLazPackage;
|
function GetPackages(Index: integer): TLazPackage;
|
||||||
procedure DoDependencyChanged(Dependency: TPkgDependency);
|
procedure DoDependencyChanged(Dependency: TPkgDependency);
|
||||||
function GetPackagesChangeStamp: Int64;
|
|
||||||
procedure SetRegistrationPackage(const AValue: TLazPackage);
|
procedure SetRegistrationPackage(const AValue: TLazPackage);
|
||||||
procedure UpdateBrokenDependenciesToPackage(APackage: TLazPackage);
|
procedure UpdateBrokenDependenciesToPackage(APackage: TLazPackage);
|
||||||
function OpenDependencyWithPackageLink(Dependency: TPkgDependency;
|
function OpenDependencyWithPackageLink(Dependency: TPkgDependency;
|
||||||
@ -230,6 +230,9 @@ type
|
|||||||
var Note: string): TModalResult;
|
var Note: string): TModalResult;
|
||||||
procedure InvalidateStateFile(APackage: TLazPackage);
|
procedure InvalidateStateFile(APackage: TLazPackage);
|
||||||
procedure OnExtToolBuildStopped(Sender: TObject);
|
procedure OnExtToolBuildStopped(Sender: TObject);
|
||||||
|
procedure PkgModify(Sender: TObject);
|
||||||
|
protected
|
||||||
|
procedure IncChangeStamp;
|
||||||
public
|
public
|
||||||
constructor Create;
|
constructor Create;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
@ -443,7 +446,7 @@ type
|
|||||||
property Packages[Index: integer]: TLazPackage read GetPackages; default; // see Count for the number
|
property Packages[Index: integer]: TLazPackage read GetPackages; default; // see Count for the number
|
||||||
property UpdateLock: integer read FUpdateLock;
|
property UpdateLock: integer read FUpdateLock;
|
||||||
property Verbosity: TPkgVerbosityFlags read FVerbosity write FVerbosity;
|
property Verbosity: TPkgVerbosityFlags read FVerbosity write FVerbosity;
|
||||||
property PackagesChangeStamp: Int64 read GetPackagesChangeStamp;
|
property ChangeStamp: Int64 read FChangeStamp;
|
||||||
|
|
||||||
// base packages
|
// base packages
|
||||||
property FCLPackage: TLazPackage read FFCLPackage;
|
property FCLPackage: TLazPackage read FFCLPackage;
|
||||||
@ -917,6 +920,7 @@ begin
|
|||||||
XMLConfig:=TXMLConfig.Create(nil);
|
XMLConfig:=TXMLConfig.Create(nil);
|
||||||
NewPackage:=TLazPackage.Create;
|
NewPackage:=TLazPackage.Create;
|
||||||
NewPackage.Filename:=AFilename;
|
NewPackage.Filename:=AFilename;
|
||||||
|
NewPackage.OnModifySilently := @PkgModify;
|
||||||
Result:=LoadXMLConfigFromCodeBuffer(AFilename,XMLConfig,
|
Result:=LoadXMLConfigFromCodeBuffer(AFilename,XMLConfig,
|
||||||
Code,[lbfUpdateFromDisk,lbfRevert],ShowAbort);
|
Code,[lbfUpdateFromDisk,lbfRevert],ShowAbort);
|
||||||
if Result<>mrOk then exit;
|
if Result<>mrOk then exit;
|
||||||
@ -1115,6 +1119,7 @@ begin
|
|||||||
if FUpdateLock<=0 then RaiseException('TLazPackageGraph.EndUpdate');
|
if FUpdateLock<=0 then RaiseException('TLazPackageGraph.EndUpdate');
|
||||||
dec(FUpdateLock);
|
dec(FUpdateLock);
|
||||||
if FUpdateLock=0 then begin
|
if FUpdateLock=0 then begin
|
||||||
|
IncChangeStamp;
|
||||||
if Assigned(OnEndUpdate) then OnEndUpdate(Self,fChanged);
|
if Assigned(OnEndUpdate) then OnEndUpdate(Self,fChanged);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@ -1670,6 +1675,11 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TLazPackageGraph.PkgModify(Sender: TObject);
|
||||||
|
begin
|
||||||
|
IncChangeStamp;
|
||||||
|
end;
|
||||||
|
|
||||||
function TLazPackageGraph.DependencyExists(Dependency: TPkgDependency;
|
function TLazPackageGraph.DependencyExists(Dependency: TPkgDependency;
|
||||||
Flags: TFindPackageFlags): boolean;
|
Flags: TFindPackageFlags): boolean;
|
||||||
begin
|
begin
|
||||||
@ -1706,6 +1716,7 @@ function TLazPackageGraph.CreateNewPackage(const Prefix: string): TLazPackage;
|
|||||||
begin
|
begin
|
||||||
BeginUpdate(true);
|
BeginUpdate(true);
|
||||||
Result:=TLazPackage.Create;
|
Result:=TLazPackage.Create;
|
||||||
|
Result.OnModifySilently:=@PkgModify;
|
||||||
Result.Name:=CreateUniquePkgName(Prefix,nil);
|
Result.Name:=CreateUniquePkgName(Prefix,nil);
|
||||||
AddPackage(Result);
|
AddPackage(Result);
|
||||||
EndUpdate;
|
EndUpdate;
|
||||||
@ -1941,7 +1952,9 @@ begin
|
|||||||
AddRequiredDependency(SynEditPackage.CreateDependencyWithOwner(Result));
|
AddRequiredDependency(SynEditPackage.CreateDependencyWithOwner(Result));
|
||||||
|
|
||||||
Modified:=false;
|
Modified:=false;
|
||||||
|
OnModifySilently:=@PkgModify;
|
||||||
end;
|
end;
|
||||||
|
IncChangeStamp;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TLazPackageGraph.GetCount: Integer;
|
function TLazPackageGraph.GetCount: Integer;
|
||||||
@ -5159,20 +5172,15 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
function TLazPackageGraph.GetPackagesChangeStamp: Int64;
|
procedure TLazPackageGraph.IncChangeStamp;
|
||||||
var
|
begin
|
||||||
I: Integer;
|
if FUpdateLock = 0 then
|
||||||
xPck: TLazPackage;
|
|
||||||
begin
|
begin
|
||||||
{$push}{$R-} // range check off
|
{$push}{$R-} // range check off
|
||||||
Result := 0;
|
Inc(FChangeStamp);
|
||||||
for I := 0 to Count-1 do
|
|
||||||
begin
|
|
||||||
xPck := Packages[I];
|
|
||||||
Inc(Result, xPck.ChangeStamp);
|
|
||||||
end;
|
|
||||||
{$pop}
|
{$pop}
|
||||||
end;
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TLazPackageGraph.SortDependencyListTopologicallyOld(
|
procedure TLazPackageGraph.SortDependencyListTopologicallyOld(
|
||||||
var FirstDependency: TPkgDependency; TopLevelFirst: boolean);
|
var FirstDependency: TPkgDependency; TopLevelFirst: boolean);
|
||||||
@ -5746,6 +5754,7 @@ begin
|
|||||||
UsageOptions.UnitPath:='';
|
UsageOptions.UnitPath:='';
|
||||||
|
|
||||||
Modified:=false;
|
Modified:=false;
|
||||||
|
OnModifySilently:=@PkgModify;
|
||||||
EndUpdate;
|
EndUpdate;
|
||||||
end;
|
end;
|
||||||
AddPackage(BrokenPackage);
|
AddPackage(BrokenPackage);
|
||||||
|
Loading…
Reference in New Issue
Block a user