lazarus/ideintf/projectresourcesintf.pas

92 lines
2.6 KiB
ObjectPascal

{
*****************************************************************************
* *
* See the file COPYING.modifiedLGPL.txt, included in this distribution, *
* for details about the copyright. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
* *
*****************************************************************************
}
unit ProjectResourcesIntf;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils;
type
TAbstractProjectResources = class;
{ TAbstractProjectResource }
TAbstractProjectResource = class
protected
FModified: boolean;
FOnModified: TNotifyEvent;
procedure SetModified(const AValue: boolean);
public
constructor Create; virtual;
procedure DoBeforeBuild(AResources: TAbstractProjectResources); virtual;
function UpdateResources(AResources: TAbstractProjectResources; const MainFilename: string): Boolean; virtual; abstract;
property Modified: boolean read FModified write SetModified;
property OnModified: TNotifyEvent read FOnModified write FOnModified;
end;
{ TAbstractProjectResources }
TAbstractProjectResources = class
protected
FMessages: TStringList;
public
constructor Create; virtual;
destructor Destroy; override;
procedure AddSystemResource(const AResource: String); virtual; abstract;
procedure AddLazarusResource(AResource: TStream;
const ResourceName, ResourceType: String); virtual; abstract;
property Messages: TStringList read FMessages;
end;
implementation
{ TAbstractProjectResource }
procedure TAbstractProjectResource.SetModified(const AValue: boolean);
begin
if FModified=AValue then exit;
FModified:=AValue;
if Assigned(OnModified) then OnModified(Self);
end;
constructor TAbstractProjectResource.Create;
begin
FModified := False;
end;
procedure TAbstractProjectResource.DoBeforeBuild(AResources: TAbstractProjectResources);
begin
// nothing
end;
{ TAbstractProjectResources }
constructor TAbstractProjectResources.Create;
begin
FMessages := TStringList.Create;
end;
destructor TAbstractProjectResources.Destroy;
begin
FreeAndNil(FMessages);
inherited Destroy;
end;
end.