ide: notify IDE about the change when compiler messages options are changed (bug #0018409)

git-svn-id: trunk@28957 -
This commit is contained in:
paul 2011-01-11 09:59:13 +00:00
parent 013f06f128
commit 794576d48f

View File

@ -383,6 +383,8 @@ type
private private
fItems : TFPList; fItems : TFPList;
fHash : array of array of TCompilerMessageConfig; fHash : array of array of TCompilerMessageConfig;
FChangeStamp: int64;
FOnChanged : TNotifyEvent;
protected protected
fUsedMsgFile : string; fUsedMsgFile : string;
fUpdating : Integer; fUpdating : Integer;
@ -402,6 +404,10 @@ type
function GetCount: Integer; function GetCount: Integer;
function GetErrorNames(errtype: TFPCErrorType): string; function GetErrorNames(errtype: TFPCErrorType): string;
property ChangeStamp: int64 read FChangeStamp;
procedure IncreaseChangeStamp;
property OnChanged: TNotifyEvent read FOnChanged write FOnChanged;
public public
constructor Create; constructor Create;
destructor Destroy; override; destructor Destroy; override;
@ -418,6 +424,7 @@ type
procedure SetDefault(KeepIgnored: Boolean=true); virtual; procedure SetDefault(KeepIgnored: Boolean=true); virtual;
function GetParams(MsgIndex: Integer; var prms: array of string; out PrmCount: Integer): Integer; virtual; function GetParams(MsgIndex: Integer; var prms: array of string; out PrmCount: Integer): Integer; virtual;
function Equals(Obj: TObject): boolean; override;
property Msg[i: Integer]: TCompilerMessageConfig read GetMsgConfig; property Msg[i: Integer]: TCompilerMessageConfig read GetMsgConfig;
property MsgByIndex[AIndex: Integer]: TCompilerMessageConfig read GetMsgConfigByIndex; property MsgByIndex[AIndex: Integer]: TCompilerMessageConfig read GetMsgConfigByIndex;
@ -1015,6 +1022,7 @@ begin
fExecuteAfter.OnChanged:=@OnItemChanged; fExecuteAfter.OnChanged:=@OnItemChanged;
fBuildMacros := TIDEBuildMacros.Create(Self); fBuildMacros := TIDEBuildMacros.Create(Self);
FCompilerMessages:=TCompilerMessagesList.Create; FCompilerMessages:=TCompilerMessagesList.Create;
FCompilerMessages.OnChanged:=@OnItemChanged;
Clear; Clear;
end; end;
@ -4157,10 +4165,17 @@ begin
Result := FErrorNames[errtype]; Result := FErrorNames[errtype];
end; end;
procedure TCompilerMessagesList.IncreaseChangeStamp;
begin
CTIncreaseChangeStamp64(FChangeStamp);
if assigned(OnChanged) then OnChanged(Self);
end;
constructor TCompilerMessagesList.Create; constructor TCompilerMessagesList.Create;
begin begin
inherited Create; inherited Create;
fItems := TFPList.Create; FChangeStamp:=CTInvalidChangeStamp;
fItems := TFPList.Create;
end; end;
destructor TCompilerMessagesList.Destroy; destructor TCompilerMessagesList.Destroy;
@ -4189,6 +4204,8 @@ var
m : TCompilerMessageConfig; m : TCompilerMessageConfig;
err : TFPCErrorType; err : TFPCErrorType;
begin begin
if Equals(Src) then
Exit;
BeginUpdate; BeginUpdate;
try try
Clear; Clear;
@ -4207,7 +4224,8 @@ begin
for err := Low(err) to High(err) do FErrorNames[err] := Src.FErrorNames[err]; for err := Low(err) to High(err) do FErrorNames[err] := Src.FErrorNames[err];
finally finally
EndUpdate; EndUpdate;
end; end;
IncreaseChangeStamp;
end; end;
procedure TCompilerMessagesList.BeginUpdate; procedure TCompilerMessagesList.BeginUpdate;
@ -4643,6 +4661,25 @@ begin
end; end;
function TCompilerMessagesList.Equals(Obj: TObject): boolean;
var
ObjList: TCompilerMessagesList absolute Obj;
i: integer;
begin
Result := inherited Equals(Obj);
if not Result and (Obj is TCompilerMessagesList) then
begin
Result := ObjList.Count = Count;
if Result then
for i := 0 to Count - 1 do
if Msg[i].Ignored <> ObjList.Msg[i].Ignored then
begin
Result := False;
Exit;
end;
end;
end;
{ TCompilerMessageConfig } { TCompilerMessageConfig }
constructor TCompilerMessageConfig.Create(AOwner: TCompilerMessagesList); constructor TCompilerMessageConfig.Create(AOwner: TCompilerMessagesList);