IDEIntf: added 12x12 images, IDE: messages: icons for message types
git-svn-id: trunk@19452 -
7
.gitattributes
vendored
@ -3351,12 +3351,19 @@ images/splash_logo.png -text svneol=unset#image/png
|
||||
images/splash_logo.xpm -text svneol=native#image/x-xpixmap
|
||||
images/splash_source/cheetah.jpg -text svneol=unset#image/jpeg
|
||||
images/splash_source/paw.png -text svneol=unset#image/png
|
||||
images/states/quickfix12x12.png -text
|
||||
images/states/small/state_small_error.png -text svneol=unset#image/png
|
||||
images/states/small/state_small_fatal.png -text svneol=unset#image/png
|
||||
images/states/small/state_small_hint.png -text svneol=unset#image/png
|
||||
images/states/small/state_small_information.png -text svneol=unset#image/png
|
||||
images/states/small/state_small_note.png -text svneol=unset#image/png
|
||||
images/states/small/state_small_warning.png -text svneol=unset#image/png
|
||||
images/states/state12x12_error.png -text
|
||||
images/states/state12x12_fatal.png -text
|
||||
images/states/state12x12_hint.png -text
|
||||
images/states/state12x12_information.png -text
|
||||
images/states/state12x12_note.png -text
|
||||
images/states/state12x12_warning.png -text
|
||||
images/states/state_circular_reference.png -text svneol=unset#image/png
|
||||
images/states/state_error.png -text svneol=unset#image/png
|
||||
images/states/state_fatal.png -text svneol=unset#image/png
|
||||
|
@ -228,7 +228,7 @@ var
|
||||
+' Error: '
|
||||
+ErrorMessage;
|
||||
debugln('WriteLFMErrors ',Msg);
|
||||
OnOutput(Msg,Dir,-1);
|
||||
OnOutput(Msg,Dir,-1,nil);
|
||||
end;
|
||||
|
||||
procedure WriteCodeToolsError;
|
||||
@ -254,7 +254,7 @@ var
|
||||
+' Error: '
|
||||
+CurError.ErrorMessage;
|
||||
debugln('WriteLFMErrors ',Msg);
|
||||
OnOutput(Msg,Dir,-1);
|
||||
OnOutput(Msg,Dir,-1,nil);
|
||||
CurError:=CurError.NextError;
|
||||
end;
|
||||
end;
|
||||
|
12
ide/main.pp
@ -11076,7 +11076,7 @@ var MaxMessages: integer;
|
||||
Filename, SearchedFilename: string;
|
||||
LogCaretXY: TPoint;
|
||||
TopLine: integer;
|
||||
MsgType: TErrorType;
|
||||
MsgType: TFPCErrorType;
|
||||
SrcEdit: TSourceEditor;
|
||||
OpenFlags: TOpenFlags;
|
||||
CurMsg, CurDir: string;
|
||||
@ -11091,8 +11091,7 @@ begin
|
||||
Index:=0;
|
||||
while (Index<MaxMessages) do begin
|
||||
CurMsg:=MessagesView.VisibleItems[Index].Msg;
|
||||
if (TheOutputFilter.GetSourcePosition(
|
||||
CurMsg,Filename,LogCaretXY,MsgType)) then
|
||||
if ParseFPCMessage(CurMsg,Filename,LogCaretXY,MsgType) then
|
||||
begin
|
||||
if MsgType in [etError,etFatal,etPanic] then break;
|
||||
end;
|
||||
@ -11107,7 +11106,7 @@ begin
|
||||
|
||||
// default: jump to source position
|
||||
MessagesView.GetVisibleMessageAt(Index,CurMsg,CurDir);
|
||||
if TheOutputFilter.GetSourcePosition(CurMsg,Filename,LogCaretXY,MsgType)
|
||||
if ParseFPCMessage(CurMsg,Filename,LogCaretXY,MsgType)
|
||||
then begin
|
||||
if (not FilenameIsAbsolute(Filename)) and (CurDir<>'') then begin
|
||||
// the directory was just hidden, re-append it
|
||||
@ -11173,7 +11172,7 @@ var
|
||||
CurMsg: String;
|
||||
Filename: string;
|
||||
LogCaretXY: TPoint;
|
||||
MsgType: TErrorType;
|
||||
MsgType: TFPCErrorType;
|
||||
OldIndex: integer;
|
||||
RoundCount: Integer;
|
||||
begin
|
||||
@ -11201,8 +11200,7 @@ begin
|
||||
|
||||
// check if it is an error
|
||||
CurMsg:=MessagesView.VisibleItems[Index].Msg;
|
||||
if (TheOutputFilter.GetSourcePosition(
|
||||
CurMsg,Filename,LogCaretXY,MsgType)) then
|
||||
if (ParseFPCMessage(CurMsg,Filename,LogCaretXY,MsgType)) then
|
||||
begin
|
||||
if MsgType in [etError,etFatal,etPanic] then break;
|
||||
end;
|
||||
|
@ -118,6 +118,12 @@ type
|
||||
FLastSelectedIndex: integer;
|
||||
ImgIDNone: integer;
|
||||
ImgIDHasQuickFix: integer;
|
||||
ImgIDInformation: integer;
|
||||
ImgIDHint: integer;
|
||||
ImgIDNote: integer;
|
||||
ImgIDWarning: integer;
|
||||
ImgIDError: integer;
|
||||
ImgIDFatal: integer;
|
||||
function GetSelectedLineIndex: integer;
|
||||
procedure SetSelectedLineIndex(const AValue: integer);
|
||||
function FindNextItem(const Filename: string;
|
||||
@ -125,6 +131,7 @@ type
|
||||
procedure UpdateMsgSrcPos(Line: TLazMessageLine);
|
||||
function GetLines(Index: integer): TIDEMessageLine; override;
|
||||
procedure Changed;
|
||||
procedure SetTVNodeImage(TVNode: TTreeNode; Msg: TLazMessageLine);
|
||||
public
|
||||
ControlDocker: TLazControlDocker;
|
||||
constructor Create(TheOwner: TComponent); override;
|
||||
@ -133,8 +140,10 @@ type
|
||||
procedure EndUpdateNotification(Sender: TObject);
|
||||
procedure DeleteLine(Index: integer);
|
||||
procedure Add(const Msg, CurDir: string;
|
||||
ProgressLine, VisibleLine: boolean; OriginalIndex: integer);
|
||||
procedure AddMsg(const Msg, CurDir: string; OriginalIndex: integer); override;
|
||||
ProgressLine, VisibleLine: boolean; OriginalIndex: integer;
|
||||
Parts: TStrings);
|
||||
procedure AddMsg(const Msg, CurDir: string; OriginalIndex: integer;
|
||||
Parts: TStrings = nil); override;
|
||||
procedure AddProgress(ScanLine: TIDEScanMessageLine);
|
||||
procedure AddSeparator;
|
||||
procedure CollectLineParts(Sender: TObject; SrcLines: TIDEMessageLineList);
|
||||
@ -305,9 +314,15 @@ begin
|
||||
FLastSelectedIndex := -1;
|
||||
FQuickFixItems:=TFPList.Create;
|
||||
|
||||
ImgIDNone := IDEImages.LoadImage(16, 'state_error');
|
||||
ImgIDHasQuickFix := IDEImages.LoadImage(16, 'ce_function');
|
||||
MessageTreeView.Images:=IDEImages.Images_16;
|
||||
ImgIDNone := -1;
|
||||
ImgIDInformation := IDEImages.LoadImage(12, 'state12x12_information');
|
||||
ImgIDHint := IDEImages.LoadImage(12, 'state12x12_hint');
|
||||
ImgIDNote := IDEImages.LoadImage(12, 'state12x12_note');
|
||||
ImgIDWarning := IDEImages.LoadImage(12, 'state12x12_warning');
|
||||
ImgIDError := IDEImages.LoadImage(12, 'state12x12_error');
|
||||
ImgIDFatal := IDEImages.LoadImage(12, 'state12x12_fatal');
|
||||
ImgIDHasQuickFix := IDEImages.LoadImage(12, 'quickfix12x12');
|
||||
MessageTreeView.Images:=IDEImages.Images_12;
|
||||
|
||||
Caption := lisMenuViewMessages;
|
||||
MessageTreeView.OnAdvancedCustomDrawItem := @MessageViewDrawItem;
|
||||
@ -400,7 +415,8 @@ end;
|
||||
TMessagesView.Add
|
||||
------------------------------------------------------------------------------}
|
||||
procedure TMessagesView.Add(const Msg, CurDir: string;
|
||||
ProgressLine, VisibleLine: boolean; OriginalIndex: integer);
|
||||
ProgressLine, VisibleLine: boolean; OriginalIndex: integer;
|
||||
Parts: TStrings);
|
||||
var
|
||||
NewMsg: TLazMessageLine;
|
||||
i: integer;
|
||||
@ -432,6 +448,12 @@ begin
|
||||
NewMsg.Directory := CurDir;
|
||||
NewMsg.Position := FItems.Count-1;
|
||||
NewMsg.OriginalIndex := OriginalIndex;
|
||||
if Parts<>nil then
|
||||
begin
|
||||
if NewMsg.Parts=nil then
|
||||
NewMsg.Parts:=TStringList.Create;
|
||||
NewMsg.Parts.Assign(Parts);
|
||||
end;
|
||||
//DebugLn('TMessagesView.Add FItems.Count=',dbgs(FItems.Count),' OriginalIndex=',dbgs(OriginalIndex));
|
||||
|
||||
if VisibleLine then
|
||||
@ -449,11 +471,10 @@ begin
|
||||
// add new line
|
||||
TVNode:=MessageTreeView.Items.Add(nil,Msg);// add line
|
||||
end;
|
||||
TVNode.ImageIndex:=ImgIDNone;
|
||||
TVNode.SelectedIndex:=ImgIDNone;
|
||||
NewMsg.VisiblePosition := FVisibleItems.Count;
|
||||
FVisibleItems.Add(NewMsg);
|
||||
FLastLineIsProgress := ProgressLine;
|
||||
SetTVNodeImage(TVNode,NewMsg);
|
||||
if MessageTreeView.Items.Count>0 then
|
||||
MessageTreeView.Items.TopLvlItems[MessageTreeView.Items.Count-1].MakeVisible;
|
||||
//DebugLn(['TMessagesView.Add ',MessageTreeView.TopIndex]);
|
||||
@ -462,19 +483,20 @@ begin
|
||||
Changed;
|
||||
end;
|
||||
|
||||
procedure TMessagesView.AddMsg(const Msg, CurDir: string; OriginalIndex: integer);
|
||||
procedure TMessagesView.AddMsg(const Msg, CurDir: string; OriginalIndex: integer;
|
||||
Parts: TStrings);
|
||||
begin
|
||||
Add(Msg, CurDir, False, True, OriginalIndex);
|
||||
Add(Msg, CurDir, False, True, OriginalIndex, Parts);
|
||||
end;
|
||||
|
||||
procedure TMessagesView.AddProgress(ScanLine: TIDEScanMessageLine);
|
||||
begin
|
||||
Add(ScanLine.Line, ScanLine.WorkingDirectory, True, True,ScanLine.LineNumber);
|
||||
Add(ScanLine.Line, ScanLine.WorkingDirectory, True, True,ScanLine.LineNumber,nil);
|
||||
end;
|
||||
|
||||
procedure TMessagesView.AddSeparator;
|
||||
begin
|
||||
Add(SeparatorLine, '', False, True, -1);
|
||||
Add(SeparatorLine, '', False, True, -1, nil);
|
||||
end;
|
||||
|
||||
procedure TMessagesView.CollectLineParts(Sender: TObject;
|
||||
@ -646,8 +668,7 @@ begin
|
||||
begin
|
||||
TVNode:=MessageTreeView.Items.Add(nil,Line.Msg);
|
||||
end;
|
||||
TVNode.ImageIndex:=ImgIDNone;
|
||||
TVNode.SelectedIndex:=ImgIDNone;
|
||||
SetTVNodeImage(TVNode,Line);
|
||||
end;
|
||||
while MessageTreeView.Items.Count > FVisibleItems.Count do
|
||||
MessageTreeView.Items.TopLvlItems[MessageTreeView.Items.Count - 1].Free;
|
||||
@ -1206,6 +1227,37 @@ begin
|
||||
IdleTimer1.AutoEnabled:=true;
|
||||
end;
|
||||
|
||||
procedure TMessagesView.SetTVNodeImage(TVNode: TTreeNode; Msg: TLazMessageLine
|
||||
);
|
||||
var
|
||||
Typ: string;
|
||||
ImgID: LongInt;
|
||||
begin
|
||||
ImgID:=ImgIDNone;
|
||||
if (lmlfHasQuickFixValid in Msg.Flags)
|
||||
and (lmlfHasQuickFix in Msg.Flags) then
|
||||
ImgID:=ImgIDHasQuickFix
|
||||
else if Msg.Parts<>nil then begin
|
||||
if Msg.Parts.Values['Stage']='FPC' then begin
|
||||
Typ:=Msg.Parts.Values['Type'];
|
||||
if Typ='Hint' then
|
||||
ImgID:=ImgIDHint
|
||||
else if Typ='Note' then
|
||||
ImgID:=ImgIDNote
|
||||
else if Typ='Warning' then
|
||||
ImgID:=ImgIDWarning
|
||||
else if Typ='Error' then
|
||||
ImgID:=ImgIDError
|
||||
else if Typ='Fatal' then
|
||||
ImgID:=ImgIDFatal
|
||||
else
|
||||
ImgID:=ImgIDInformation;
|
||||
end;
|
||||
end;
|
||||
TVNode.ImageIndex:=ImgID;
|
||||
TVNode.SelectedIndex:=TVNode.ImageIndex;
|
||||
end;
|
||||
|
||||
procedure TMessagesView.ConsistencyCheck;
|
||||
var
|
||||
i: Integer;
|
||||
|
@ -45,7 +45,7 @@ type
|
||||
|
||||
TOnOutputString = procedure(Line: TIDEScanMessageLine) of object;
|
||||
TOnAddFilteredLine = procedure(const Msg, Directory: String;
|
||||
OriginalIndex: integer) of object;
|
||||
OriginalIndex: integer; Parts: TStrings) of object;
|
||||
TOnGetIncludePath = function(const Directory: string;
|
||||
UseCache: boolean): string of object;
|
||||
|
||||
@ -60,8 +60,6 @@ type
|
||||
|
||||
TOutputMessageType = (omtNone, omtFPC, omtLinker, omtMake);
|
||||
|
||||
TErrorType = (etNone, etHint, etNote, etWarning, etError, etFatal, etPanic);
|
||||
|
||||
{ TFilteredOutputLines
|
||||
A TStringList maintaining an original index for each string.
|
||||
TOutputFilter creates an instance of this class as a result of filtering
|
||||
@ -116,7 +114,7 @@ type
|
||||
FOnEndUpdate: TNotifyEvent;
|
||||
fOnReadLine: TOnOutputString;
|
||||
fOutput: TIDEMessageLineList;
|
||||
fLastErrorType: TErrorType;
|
||||
fLastErrorType: TFPCErrorType;
|
||||
fLastMessageType: TOutputMessageType;
|
||||
fCompilingHistory: TStringList;
|
||||
fMakeDirHistory: TStringList;
|
||||
@ -133,7 +131,6 @@ type
|
||||
FAsyncOutput: TDynamicDataQueue;
|
||||
FScanners: TFPList; // list of TIDEMsgScanner
|
||||
FTool: TIDEExternalToolOptions;
|
||||
|
||||
DarwinLinkerMultiline: Boolean;
|
||||
DarwinLinkerLine : String;
|
||||
procedure DoAddFilteredLine(const s: string; OriginalIndex: integer = -1);
|
||||
@ -154,8 +151,6 @@ type
|
||||
Aborted: boolean;
|
||||
function Execute(TheProcess: TProcessUTF8; aCaller: TObject = nil;
|
||||
aTool: TIDEExternalToolOptions = nil): boolean;
|
||||
function GetSourcePosition(const Line: string; var Filename:string;
|
||||
var CaretXY: TPoint; var MsgType: TErrorType): boolean;
|
||||
procedure Clear;
|
||||
constructor Create;
|
||||
destructor Destroy; override;
|
||||
@ -178,7 +173,7 @@ type
|
||||
property FilteredLines: TFilteredOutputLines read fFilteredOutput;
|
||||
property StopExecute: boolean read FStopExecute write SetStopExecute;
|
||||
property Lines: TIDEMessageLineList read fOutput;
|
||||
property LastErrorType: TErrorType read fLastErrorType;
|
||||
property LastErrorType: TFPCErrorType read fLastErrorType;
|
||||
property LastMessageType: TOutputMessageType read fLastMessageType;
|
||||
property OnGetIncludePath: TOnGetIncludePath
|
||||
read fOnGetIncludePath write fOnGetIncludePath;
|
||||
@ -210,24 +205,10 @@ var
|
||||
TOutputFilterProcess: TProcessClass = nil;
|
||||
MessageScanners: TMessageScanners = nil;
|
||||
|
||||
const
|
||||
ErrorTypeNames : array[TErrorType] of string = (
|
||||
'None','Hint','Note','Warning','Error','Fatal','Panic'
|
||||
);
|
||||
|
||||
function ErrorTypeNameToType(const Name:string): TErrorType;
|
||||
|
||||
|
||||
implementation
|
||||
|
||||
|
||||
function ErrorTypeNameToType(const Name:string): TErrorType;
|
||||
begin
|
||||
for Result:=Succ(etNone) to High(TErrorType) do
|
||||
if CompareText(ErrorTypeNames[Result],Name)=0 then exit;
|
||||
Result:=etNone;
|
||||
end;
|
||||
|
||||
{ TOutputFilter }
|
||||
|
||||
constructor TOutputFilter.Create;
|
||||
@ -492,7 +473,7 @@ const
|
||||
AsmError = 'Error while assembling';
|
||||
var i, j, FilenameEndPos: integer;
|
||||
MsgTypeName, Filename, Msg: string;
|
||||
MsgType: TErrorType;
|
||||
MsgType: TFPCErrorType;
|
||||
SkipMessage: boolean;
|
||||
CurCompHistory: string;
|
||||
CurFilenameLen: Integer;
|
||||
@ -576,7 +557,7 @@ var i, j, FilenameEndPos: integer;
|
||||
CurrentMessageParts.Values['Stage']:='Linker'
|
||||
else
|
||||
CurrentMessageParts.Values['Stage']:='FPC';
|
||||
CurrentMessageParts.Values['Type']:=ErrorTypeNames[fLastErrorType];
|
||||
CurrentMessageParts.Values['Type']:=FPCErrorTypeNames[fLastErrorType];
|
||||
|
||||
NewLine:=copy(s,p,length(s));
|
||||
if fLastErrorType in [etPanic,etFatal] then begin
|
||||
@ -614,7 +595,7 @@ var i, j, FilenameEndPos: integer;
|
||||
DoAddFilteredLine(copy(s,p,length(s)));
|
||||
fLastErrorType:=etNote;
|
||||
CurrentMessageParts.Values['Stage']:='FPC';
|
||||
CurrentMessageParts.Values['Type']:=ErrorTypeNames[fLastErrorType];
|
||||
CurrentMessageParts.Values['Type']:=FPCErrorTypeNames[fLastErrorType];
|
||||
Result:=true;
|
||||
exit;
|
||||
end;
|
||||
@ -871,14 +852,14 @@ begin
|
||||
if (j+1>length(s)) or (s[j]<>':') or (s[j+1]<>' ') then exit;
|
||||
MessageStartPos:=j+2;
|
||||
MsgTypeName:=copy(s,i,j-i);
|
||||
for MsgType:=Succ(etNone) to High(TErrorType) do begin
|
||||
if ErrorTypeNames[MsgType]=MsgTypeName then begin
|
||||
for MsgType:=Succ(etNone) to High(TFPCErrorType) do begin
|
||||
if FPCErrorTypeNames[MsgType]=MsgTypeName then begin
|
||||
// this is a freepascal compiler message
|
||||
// -> filter message
|
||||
fLastErrorType:=MsgType;
|
||||
fLastMessageType:=omtFPC;
|
||||
CurrentMessageParts.Values['Stage']:='FPC';
|
||||
CurrentMessageParts.Values['Type']:=ErrorTypeNames[fLastErrorType];
|
||||
CurrentMessageParts.Values['Type']:=FPCErrorTypeNames[fLastErrorType];
|
||||
CurrentMessageParts.Values['Line']:=
|
||||
copy(s,LineNumberStartPos,LineNumberEndPos-LineNumberStartPos);
|
||||
CurrentMessageParts.Values['Column']:=
|
||||
@ -1020,74 +1001,6 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
function TOutputFilter.GetSourcePosition(const Line: string; var Filename:string;
|
||||
var CaretXY: TPoint; var MsgType: TErrorType): boolean;
|
||||
{ This assumes the line has one of the following formats
|
||||
<filename>(123,45) <ErrorType>: <some text>
|
||||
<filename>(123) <ErrorType>: <some text>
|
||||
<filename>(456) <ErrorType>: <some text> in line (123)
|
||||
Fatal: <some text>
|
||||
}
|
||||
var StartPos, EndPos: integer;
|
||||
begin
|
||||
Result:=false;
|
||||
if copy(Line,1,7)='Fatal: ' then begin
|
||||
Result:=true;
|
||||
Filename:='';
|
||||
MsgType:=etFatal;
|
||||
exit;
|
||||
end;
|
||||
StartPos:=1;
|
||||
// find filename
|
||||
EndPos:=StartPos;
|
||||
while (EndPos<=length(Line)) and (Line[EndPos]<>'(') do inc(EndPos);
|
||||
if EndPos>length(Line) then exit;
|
||||
FileName:=copy(Line,StartPos,EndPos-StartPos);
|
||||
// read linenumber
|
||||
StartPos:=EndPos+1;
|
||||
EndPos:=StartPos;
|
||||
while (EndPos<=length(Line)) and (Line[EndPos] in ['0'..'9']) do inc(EndPos);
|
||||
if EndPos>length(Line) then exit;
|
||||
CaretXY.X:=1;
|
||||
CaretXY.Y:=StrToIntDef(copy(Line,StartPos,EndPos-StartPos),-1);
|
||||
if Line[EndPos]=',' then begin
|
||||
// format: <filename>(123,45) <ErrorType>: <some text>
|
||||
// read column
|
||||
StartPos:=EndPos+1;
|
||||
EndPos:=StartPos;
|
||||
while (EndPos<=length(Line)) and (Line[EndPos] in ['0'..'9']) do inc(EndPos);
|
||||
if EndPos>length(Line) then exit;
|
||||
CaretXY.X:=StrToIntDef(copy(Line,StartPos,EndPos-StartPos),-1);
|
||||
// read error type
|
||||
StartPos:=EndPos+2;
|
||||
while (EndPos<=length(Line)) and (Line[EndPos]<>':') do inc(EndPos);
|
||||
if EndPos>length(Line) then exit;
|
||||
MsgType:=ErrorTypeNameToType(copy(Line,StartPos,EndPos-StartPos));
|
||||
Result:=true;
|
||||
end else if Line[EndPos]=')' then begin
|
||||
// <filename>(123) <ErrorType>: <some text>
|
||||
// <filename>(456) <ErrorType>: <some text> in line (123)
|
||||
// read error type
|
||||
StartPos:=EndPos+2;
|
||||
while (EndPos<=length(Line)) and (Line[EndPos]<>':') do inc(EndPos);
|
||||
if EndPos>length(Line) then exit;
|
||||
MsgType:=ErrorTypeNameToType(copy(Line,StartPos,EndPos-StartPos));
|
||||
// read second linenumber (more useful)
|
||||
while (EndPos<=length(Line)) and (Line[EndPos]<>'(') do inc(EndPos);
|
||||
if EndPos>length(Line) then begin
|
||||
// format: <filename>(123) <ErrorType>: <some text>
|
||||
Result:=true;
|
||||
exit;
|
||||
end;
|
||||
StartPos:=EndPos+1;
|
||||
EndPos:=StartPos;
|
||||
while (EndPos<=length(Line)) and (Line[EndPos] in ['0'..'9']) do inc(EndPos);
|
||||
if EndPos>length(Line) then exit;
|
||||
CaretXY.Y:=StrToIntDef(copy(Line,StartPos,EndPos-StartPos),-1);
|
||||
Result:=true;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TOutputFilter.IsHintForUnusedUnit(const OutputLine,
|
||||
MainSrcFile: string): boolean;
|
||||
{ recognizes hints of the form
|
||||
@ -1126,7 +1039,7 @@ begin
|
||||
fFilteredOutput.Add(s);
|
||||
fFilteredOutput.OriginalIndices[fFilteredOutput.Count-1]:=OriginalIndex;
|
||||
if Assigned(OnAddFilteredLine) then
|
||||
OnAddFilteredLine(s,fCurrentDirectory,OriginalIndex);
|
||||
OnAddFilteredLine(s,fCurrentDirectory,OriginalIndex,CurrentMessageParts);
|
||||
end;
|
||||
|
||||
procedure TOutputFilter.DoAddLastLinkerMessages(SkipLastLine: boolean);
|
||||
|
@ -33,11 +33,14 @@ type
|
||||
|
||||
TIDEImages = class
|
||||
private
|
||||
FImages_12: TCustomImageList;
|
||||
FImages_16: TCustomImageList;
|
||||
FImages_24: TCustomImageList;
|
||||
FImageNames_12: TStringList;
|
||||
FImageNames_16: TStringList;
|
||||
FImageNames_24: TStringList;
|
||||
protected
|
||||
function GetImages_12: TCustomImageList;
|
||||
function GetImages_16: TCustomImageList;
|
||||
function GetImages_24: TCustomImageList;
|
||||
public
|
||||
@ -47,6 +50,7 @@ type
|
||||
function GetImageIndex(ImageSize: Integer; ImageName: String): Integer;
|
||||
function LoadImage(ImageSize: Integer; ImageName: String): Integer;
|
||||
|
||||
property Images_12: TCustomImageList read GetImages_12;
|
||||
property Images_16: TCustomImageList read GetImages_16;
|
||||
property Images_24: TCustomImageList read GetImages_24;
|
||||
end;
|
||||
@ -60,6 +64,17 @@ var
|
||||
|
||||
{ TIDEImages }
|
||||
|
||||
function TIDEImages.GetImages_12: TCustomImageList;
|
||||
begin
|
||||
if FImages_12 = nil then
|
||||
begin
|
||||
FImages_12 := TImageList.Create(nil);
|
||||
FImages_12.Width := 12;
|
||||
FImages_12.Height := 12;
|
||||
end;
|
||||
Result := FImages_12;
|
||||
end;
|
||||
|
||||
function TIDEImages.GetImages_16: TCustomImageList;
|
||||
begin
|
||||
if FImages_16 = nil then
|
||||
@ -84,8 +99,9 @@ end;
|
||||
|
||||
constructor TIDEImages.Create;
|
||||
begin
|
||||
FImages_16 := nil;
|
||||
FImages_24 := nil;
|
||||
FImageNames_12 := TStringList.Create;
|
||||
FImageNames_12.Sorted := True;
|
||||
FImageNames_12.Duplicates := dupIgnore;
|
||||
FImageNames_16 := TStringList.Create;
|
||||
FImageNames_16.Sorted := True;
|
||||
FImageNames_16.Duplicates := dupIgnore;
|
||||
@ -96,10 +112,12 @@ end;
|
||||
|
||||
destructor TIDEImages.Destroy;
|
||||
begin
|
||||
FImages_16.Free;
|
||||
FImages_24.Free;
|
||||
FImageNames_16.Free;
|
||||
FImageNames_24.Free;
|
||||
FreeAndNil(FImages_12);
|
||||
FreeAndNil(FImages_16);
|
||||
FreeAndNil(FImages_24);
|
||||
FreeAndNil(FImageNames_12);
|
||||
FreeAndNil(FImageNames_16);
|
||||
FreeAndNil(FImageNames_24);
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
@ -108,6 +126,7 @@ var
|
||||
List: TStringList;
|
||||
begin
|
||||
case ImageSize of
|
||||
12: List := FImageNames_12;
|
||||
16: List := FImageNames_16;
|
||||
24: List := FImageNames_24;
|
||||
else
|
||||
@ -132,6 +151,11 @@ begin
|
||||
if Result <> -1 then Exit;
|
||||
|
||||
case ImageSize of
|
||||
12:
|
||||
begin
|
||||
List := Images_12; // make sure we have a list
|
||||
Names := FImageNames_12;
|
||||
end;
|
||||
16:
|
||||
begin
|
||||
List := Images_16; // make sure we have a list
|
||||
|
@ -239,7 +239,7 @@ type
|
||||
function GetLines(Index: integer): TIDEMessageLine; virtual; abstract;
|
||||
public
|
||||
procedure Clear; virtual; abstract;
|
||||
procedure AddMsg(const Msg, CurDir: string; OriginalIndex: integer); virtual; abstract;
|
||||
procedure AddMsg(const Msg, CurDir: string; OriginalIndex: integer; Parts: TStrings = nil); virtual; abstract;
|
||||
property Lines[Index: integer]: TIDEMessageLine read GetLines; default;
|
||||
function LinesCount: integer; virtual; abstract;
|
||||
procedure BeginBlock(ClearOldBlocks: Boolean = true); virtual; abstract;
|
||||
@ -259,6 +259,18 @@ function RegisterIDEMsgQuickFix(const Name, Caption, RegExpr: string;
|
||||
|
||||
procedure RegisterIDEMsgScanner(Item: TIDEMsgScannerType);
|
||||
|
||||
type
|
||||
TFPCErrorType = (etNone, etHint, etNote, etWarning, etError, etFatal, etPanic);
|
||||
|
||||
const
|
||||
FPCErrorTypeNames : array[TFPCErrorType] of string = (
|
||||
'None','Hint','Note','Warning','Error','Fatal','Panic'
|
||||
);
|
||||
|
||||
function FPCErrorTypeNameToType(const Name:string): TFPCErrorType;
|
||||
function ParseFPCMessage(const Line: string; out Filename:string;
|
||||
out CaretXY: TPoint; out MsgType: TFPCErrorType): boolean;
|
||||
|
||||
implementation
|
||||
|
||||
procedure RegisterIDEMsgQuickFix(Item: TIDEMsgQuickFixItem);
|
||||
@ -286,6 +298,87 @@ begin
|
||||
IDEMsgScanners.RegisterType(Item);
|
||||
end;
|
||||
|
||||
function FPCErrorTypeNameToType(const Name: string): TFPCErrorType;
|
||||
begin
|
||||
for Result:=Succ(etNone) to High(TFPCErrorType) do
|
||||
if CompareText(FPCErrorTypeNames[Result],Name)=0 then exit;
|
||||
Result:=etNone;
|
||||
end;
|
||||
|
||||
function ParseFPCMessage(const Line: string; out Filename: string; out
|
||||
CaretXY: TPoint; out MsgType: TFPCErrorType): boolean;
|
||||
{ This assumes the line has one of the following formats
|
||||
<filename>(123,45) <ErrorType>: <some text>
|
||||
<filename>(123) <ErrorType>: <some text>
|
||||
<filename>(456) <ErrorType>: <some text> in line (123)
|
||||
Fatal: <some text>
|
||||
}
|
||||
var StartPos, EndPos: integer;
|
||||
begin
|
||||
Result:=false;
|
||||
if copy(Line,1,7)='Fatal: ' then begin
|
||||
Result:=true;
|
||||
Filename:='';
|
||||
MsgType:=etFatal;
|
||||
exit;
|
||||
end;
|
||||
if copy(Line,1,7)='Panic: ' then begin
|
||||
Result:=true;
|
||||
Filename:='';
|
||||
MsgType:=etPanic;
|
||||
exit;
|
||||
end;
|
||||
StartPos:=1;
|
||||
// find filename
|
||||
EndPos:=StartPos;
|
||||
while (EndPos<=length(Line)) and (Line[EndPos]<>'(') do inc(EndPos);
|
||||
if EndPos>length(Line) then exit;
|
||||
FileName:=copy(Line,StartPos,EndPos-StartPos);
|
||||
// read linenumber
|
||||
StartPos:=EndPos+1;
|
||||
EndPos:=StartPos;
|
||||
while (EndPos<=length(Line)) and (Line[EndPos] in ['0'..'9']) do inc(EndPos);
|
||||
if EndPos>length(Line) then exit;
|
||||
CaretXY.X:=1;
|
||||
CaretXY.Y:=StrToIntDef(copy(Line,StartPos,EndPos-StartPos),-1);
|
||||
if Line[EndPos]=',' then begin
|
||||
// format: <filename>(123,45) <ErrorType>: <some text>
|
||||
// read column
|
||||
StartPos:=EndPos+1;
|
||||
EndPos:=StartPos;
|
||||
while (EndPos<=length(Line)) and (Line[EndPos] in ['0'..'9']) do inc(EndPos);
|
||||
if EndPos>length(Line) then exit;
|
||||
CaretXY.X:=StrToIntDef(copy(Line,StartPos,EndPos-StartPos),-1);
|
||||
// read error type
|
||||
StartPos:=EndPos+2;
|
||||
while (EndPos<=length(Line)) and (Line[EndPos]<>':') do inc(EndPos);
|
||||
if EndPos>length(Line) then exit;
|
||||
MsgType:=FPCErrorTypeNameToType(copy(Line,StartPos,EndPos-StartPos));
|
||||
Result:=true;
|
||||
end else if Line[EndPos]=')' then begin
|
||||
// <filename>(123) <ErrorType>: <some text>
|
||||
// <filename>(456) <ErrorType>: <some text> in line (123)
|
||||
// read error type
|
||||
StartPos:=EndPos+2;
|
||||
while (EndPos<=length(Line)) and (Line[EndPos]<>':') do inc(EndPos);
|
||||
if EndPos>length(Line) then exit;
|
||||
MsgType:=FPCErrorTypeNameToType(copy(Line,StartPos,EndPos-StartPos));
|
||||
// read second linenumber (more useful)
|
||||
while (EndPos<=length(Line)) and (Line[EndPos]<>'(') do inc(EndPos);
|
||||
if EndPos>length(Line) then begin
|
||||
// format: <filename>(123) <ErrorType>: <some text>
|
||||
Result:=true;
|
||||
exit;
|
||||
end;
|
||||
StartPos:=EndPos+1;
|
||||
EndPos:=StartPos;
|
||||
while (EndPos<=length(Line)) and (Line[EndPos] in ['0'..'9']) do inc(EndPos);
|
||||
if EndPos>length(Line) then exit;
|
||||
CaretXY.Y:=StrToIntDef(copy(Line,StartPos,EndPos-StartPos),-1);
|
||||
Result:=true;
|
||||
end;
|
||||
end;
|
||||
|
||||
{ TIDEMsgQuickFixItem }
|
||||
|
||||
function TIDEMsgQuickFixItem.GetCaption: string;
|
||||
|
@ -8079,6 +8079,180 @@ LazarusResources.Add('menu_view_unit_info','PNG',[
|
||||
+'l'#132'&'#233#207#21#200'q4'#245'U'#249#156'h'#172#228#15#159'8+'#215#137
|
||||
+#209'Hq'#0#0#0#0'IEND'#174'B`'#130
|
||||
]);
|
||||
LazarusResources.Add('state12x12_error','PNG',[
|
||||
#137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#12#0#0#0#12#8#6#0#0#0'Vu\'#231#0#0
|
||||
+#0#1'sRGB'#0#174#206#28#233#0#0#0#6'bKGD'#0#255#0#255#0#255#160#189#167#147#0
|
||||
+#0#0#9'pHYs'#0#0#11#19#0#0#11#19#1#0#154#156#24#0#0#0#7'tIME'#7#217#4#15#13
|
||||
+#21'$Wh'#192'G'#0#0#1#220'IDAT('#207#141#142#205'KTQ'#0'G'#207#189#239#141
|
||||
+#230#140#243#225#216#136#201#132'Q'#134#16#140#171#192'E'#155#2#7#13#135#178
|
||||
+'E-'#146#22#213'&w'#173#250#7'l'#219#178'EK'#219#247'-'#132'('#18#20#129#139
|
||||
+'"'#16#146'B'#195'2'#6'GgD'#223#188'7'#243'>'#238#187#183#133#217#186#223#242
|
||||
+'p'#14#252#0#8#31#206#240#191#179#131#217'{'#248#174#251#15#248#15#166'+'#164
|
||||
+'3SZ'#202#30#21#248#205#168'Q'#158''#252#234#141#0#179'}'#167','#196#145'h'
|
||||
+'f'#239#246#5#17'O'#195#227#3#227'V'#190#7#217':@'''#179#248#219'5'#194#159
|
||||
+#235'Kq'#216#154'.>y'#187'#'#143#130'v'#160#231#212#224#217#241#142'B'#222'H'
|
||||
+#223#213#214#200#133'X'#182#155'qj'#160#223'$'#134'KcQd'#230'~'#205#140#217
|
||||
+#18#160'y'#255'z%'#236'=1ag'#211'&ZY'#22#198'H'#153#24'-[q'#132#213#254#176
|
||||
+','#146#249'^'#172#226#153#9'g'#219#153#148#0'*'#213'}'#205#238'+'#160'7'#191
|
||||
+#27#141#133'1'#135'OulP'#177#196'_['#163#171#191#136#238'JM'#29#6#144#151#24
|
||||
+#162'z'#221'hc'#163#154#222'a`,b%'#8'j'#187#136'X'#255#245#128#208#245#28#21
|
||||
+#25'H'#230'P'#190'B'#237#237#225''#250'H'#180''#128'j'#5#136#238#28'*6'#4
|
||||
+#174#235'H'#0#175'V}'#230'lnb'#157#28#146'Q'#179'El'''#233','#157'G'#181'C"?'
|
||||
+#164'sh'#152#198#143'ox;'#181#23#2#224'2'#136'G7/.dFF'#203#233'\'#1'c'#131
|
||||
+'8'#214#0#28';u'#154#198#238'o'#182#222'/,'#186#222'A'#197#2'X'#7'n'#15'f'#22
|
||||
+#188#234#214'H'#168#197'Pb'#160#136'Hva'#178'Yj'#235'_'#169#174#188'['#242
|
||||
+#156#250#173'+'#159#235#142#0'X'#173#148'Di~'#213',^*'#218#29#170'c'#210#206
|
||||
+#244'\5'#9';'#23#181'Zn'#187#190#243#210#213#193#252#141'/'#251#225#235's)'
|
||||
+#241#7'T2'#232'0'#206#184#226#152#0#0#0#0'IEND'#174'B`'#130
|
||||
]);
|
||||
LazarusResources.Add('state12x12_fatal','PNG',[
|
||||
#137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#12#0#0#0#12#8#6#0#0#0'Vu\'#231#0#0
|
||||
+#0#1'sRGB'#0#174#206#28#233#0#0#0#6'bKGD'#0#255#0#255#0#255#160#189#167#147#0
|
||||
+#0#0#9'pHYs'#0#0#11#19#0#0#11#19#1#0#154#156#24#0#0#0#7'tIME'#7#217#4#15#13
|
||||
+#29'&q'#191'+c'#0#0#1#229'IDAT('#207'u'#142';kSa'#0'@'#207'}'#228'K'#154#246
|
||||
+'j5M'#155#18#197#197#193#201'A-'#190'@'#196#185#191#192'EG''A'#16#7#17#28#186
|
||||
+'*XJAg'''#133#214#197'M'#165'E'#20'D)'#136'HQ'#164'M'#172'`r'#147#154#222#220
|
||||
+#231#151#239'>>'''#187'y'#214#195#129'C'#186#189'h'#164#219#139'&'#255'!}'
|
||||
+#205'i'#0#173#207#27#197';0'#254#9#181#245#232#138'e'#26#215#204#170#222#160
|
||||
+'R'#188#252#180'z'#251#207#201#217#226#186'mr<O'#233'i'#205#243#202'<'#223
|
||||
+#247#3#189#179#184#28#197#249#141#174'W2'#167#28#149#14#221#13'='#150#188#21
|
||||
+#245#201'c'#168#254'6'#153#234#220'M'#210#137#165#253#149#223#187#244'l'#11
|
||||
+#243#197'Z?{'#182'^'#148'j'#246#150#168#31#158#128'h'#182#16#161'CIq'#169'v5'
|
||||
+#148#22#192#205';'#15#166'?~'#233'<<:S'#154#10#194#216'x'#186#242#158'Q'#229
|
||||
+#148'q'#132#15'8'#217#166'1LL'#22'^'#213#157'['#247'j+6@'#179#150#205'GQ'#245
|
||||
+#196#194#227#207'Z&'#177#145'*'#197#238#208'd'#245#235#28#7#141#29#250#193#1
|
||||
+'~'#197#227'3'#29'o'#231#178#13'0'#24'xg'#167#235'S'#140'W'#171':'#137#19#227
|
||||
+#226#133'9'#134'Q'#202#214#160'A!'#5#174'WP-'#27#140#153#225'9'#27'`8'#244#14
|
||||
+#149#203#130'F'#163#161#155#205'&{{{'#132'aH'#18#133#4#225#136'B'#197'H]F'
|
||||
+#142#212#164#13#224#251#254#166'm'#219'DQdH)'#201#243#28')%I'#146#144'$1y^'
|
||||
+#160#165'B)'#245#205#4#232't:k'#221'n'#23#173#181#25#4#129#246'<'#15#223#247
|
||||
+#9#130#128'8N'#176'm'#155'^'#175#135#239#251#235#22'@'#187#221#254'iY'#214','
|
||||
+'pF'#8'aH)I'#211#148'<'#207#17'B'#208#239#247'i'#181'ZO'#180#214#203#150#227
|
||||
+'8('#165#16'B'#188'q]7'#202#178'lFk-F'#163'QIJ'#25#187#174#251#163#221'n/'#21
|
||||
+'Eq'#31'H'#255#2#135#19#14#185#202#182'('#10#0#0#0#0'IEND'#174'B`'#130
|
||||
]);
|
||||
LazarusResources.Add('state12x12_hint','PNG',[
|
||||
#137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#12#0#0#0#12#8#6#0#0#0'Vu\'#231#0#0
|
||||
+#0#1'sRGB'#0#174#206#28#233#0#0#0#6'bKGD'#0#255#0#255#0#255#160#189#167#147#0
|
||||
+#0#0#9'pHYs'#0#0#11#19#0#0#11#19#1#0#154#156#24#0#0#0#7'tIME'#7#217#4#15#13
|
||||
+#30#11#31'M$'#213#0#0#1#168'IDAT('#207#141#145'MHTa'#20#134#159#239#187'3"N9'
|
||||
+'Ci'#228#228#24'-'#138#198'M'#224#174'@p'#21'4'#181#149#25'hUAD'#17#4#213'&,'
|
||||
+'Rd'#238'J'#3#137'0'#17'Z'#212#133#8#138'~@'#7#250'QkQ'#137';'#133#156#130'Z'
|
||||
+'h'#13#225#24'^'#154'Ig'#188#243#157#22#227#220#162'Z'#244#194#129#195#249'y'
|
||||
+#207'9'#239'!igH'#217#25#197' '#149#206'@*'#253'W'#177#245#15#243#225#23#167
|
||||
+#236'L"'#214#180'i8'#28#170#139#25#17'Om'#228#180'V'#214#247#213#245#149#15
|
||||
+'_'#220#139#247'{'#18#163'>'#235#249#145'W_W'#10'%'#17#17#241'D'#196'3"'#229
|
||||
+#138'H'#169'"'#226#254#240#164#207'ykv'#159#184#29#13#0#16#191#186'5'#214#28
|
||||
+#218#22#14#213#241'q'#201'Ck'#197'z'#5'<'#3#133'5C{4'#200#222#214#136'j'#217
|
||||
+#18#218'Um0'#2#128#0#229#10'hS'#245#181'R'#8#10#207#248''''#136#6' '#219#187
|
||||
+#188#152'/.'#187#197'2{'#182#7#216#217'd'#17'n'#176'('#150#161'%'#18'@'#140
|
||||
+#199#251#207'.K'#238#234'BM'#1'i;'#144#156#155#253#148#239'z'#243'.'#183'yf>'
|
||||
+'W'#136#183'6'#6#227#209'z'#149#255#230'rwb'#158#169#185#220#233#215#215#186
|
||||
+#159'W'#181#245#17#15#2#180#159't'#14#223#28#155#149'{S'#217'R2='#254#176#243
|
||||
+#194#131'}'#0#189'w'#166'7T=8'#196#217#27#147#26#224'P'#207#163#200#153#235
|
||||
+#147'3'#231#134'_:;'#142#222#218'_'#163#234's'#166'5m'#151'~'#251#162']'#157
|
||||
+'t|'#240'Yc'#226#242#227#142'Z'#188#187',xl'#224#169#2'85'#244#226#143#215
|
||||
+#219#191#214's&'#178#214#145'+O,'#128'dz'#220#207#253#4'lF'#169#217#3#210#216
|
||||
+#10#0#0#0#0'IEND'#174'B`'#130
|
||||
]);
|
||||
LazarusResources.Add('state12x12_information','PNG',[
|
||||
#137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#12#0#0#0#12#8#6#0#0#0'Vu\'#231#0#0
|
||||
+#0#1'sRGB'#0#174#206#28#233#0#0#0#6'bKGD'#0#255#0#255#0#255#160#189#167#147#0
|
||||
+#0#0#9'pHYs'#0#0#11#19#0#0#11#19#1#0#154#156#24#0#0#0#7'tIME'#7#217#4#15#13
|
||||
+#30'4'#169'+'#9#232#0#0#1#236'IDAT('#207#141#144#205'K'#211'a'#0#199'?'#207
|
||||
+#179#141'9'#157'NN'#231#11'Ct6'#195'(2;'#137#151#4'Kp'#161']'#234#16'A'#20
|
||||
+#157#163''#161'C'#29#130#160'Ku."'#162'W'#168#139'$'#209#193#222#14'F'#164
|
||||
+#205#212#202#176'Y'#206'm'#186'7]'#191#151#231#247'tr'#231'>'#199'/'#159#239
|
||||
+#229#3#192#196#173'$'#255#139#247#248#205'yV'#230'S'#213'a'#232#218#167'D'
|
||||
+#179'_L:'#202'i'#178']UZ/'#236'<'#153#191'<'#245#28#174'j'#227#228'C!'#170
|
||||
+#226#245'dk'#16#235#206'@'#135#239'X<\'#139'r\'#16'0'#183#150#231#221'Rvz'
|
||||
+#245'W'#254#244#198#189'S'#27#158#221'C'#223#209#243#143'Fbuc'#253#145'Z'#157
|
||||
+'.'#152'Z'#185#218'-Tl'#189''''#18#20'F'#141#140'e6'#138#251#255#4#142'<'#144
|
||||
+#0#135#175'|H'#28#140#248#198#186#141#26#253':'#153#21'J)yv'#164#203#131'P'
|
||||
+#158#247'K'#25#17#235#12'1'#184#215#24#139'Gj'#198'%@c@'#158#136#183#212#241
|
||||
+'5U'#208#218#181#177'l'#155#31#233'2'#21#211#196'U&'#11#171'9'#250'{'#194#180
|
||||
+#248#153#148#0'N'#197'4'#132#212'lnW'#180'i'#153#128'b'#160#199' '#232#147'X'
|
||||
+#166#195'Vq'#27'/'#26#143#182#12#9'`Zf'#209'V'#138#128'O'#226#216#10#180#6' '
|
||||
+#224#149#152';'#21#252'h'#254'*'#7#165#236#162#4'H'#167#11#143#231'~f'#232'n'
|
||||
+#171#151'B'#185#196#219#235'IeJ'#244#182#5#209#182'E'#180'=D'#242'K'#138#220
|
||||
+'V'#241#233'nV1x'#238#254#212#232'P'#215'hg{'#3#179#201#20#217'\'#153'P'#192
|
||||
+#203#190#190#14#210#217'<o^}|'#249'}f9Q'#205#170#245#240#212#250'f'#254#128
|
||||
+#240#232#222#254#222#8#241'h#'#225'p'#3#11#139')f'#223'~'#158#206','#255'>'
|
||||
+#179#190'r'#187'('#0#130#195'7Dy'#230#162'nn'#189#228'm>'#20#29'oi'#242'Ox'
|
||||
+#177#26#29'W'#151's'#155#165'g'#165#197'o/'#214'V'#239'Z'#173'}'#23#196'?Q'
|
||||
+#137#224#231'J'#17#25#202#0#0#0#0'IEND'#174'B`'#130
|
||||
]);
|
||||
LazarusResources.Add('state12x12_note','PNG',[
|
||||
#137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#12#0#0#0#12#8#6#0#0#0'Vu\'#231#0#0
|
||||
+#0#1'sRGB'#0#174#206#28#233#0#0#0#6'bKGD'#0#255#0#255#0#255#160#189#167#147#0
|
||||
+#0#0#9'pHYs'#0#0#11#19#0#0#11#19#1#0#154#156#24#0#0#0#7'tIME'#7#217#4#15#13
|
||||
+#31#28#133#133#144'S'#0#0#1'IDAT('#207#149#145#207'j'#19'Q'#28#133#191#219
|
||||
+';I'''#197#16#26#164'"'#130#237#174' u'#217'G'#168#11'7'#197#226#202'M'#31
|
||||
+#196#173'K'#241'!'#250#2'.'#180#130#212''''#16#193#10#182#130'('#193#218#210
|
||||
+'h*'#25#147#204#204#157#251#231#247'sa*'#186#244#219#159#243#29'8'#164#193#11
|
||||
+#195'`'#0'T'#149#176#183'i'#143'w'#223#208#0'S '#0'%P'#1#3'`'#247#14#172#190
|
||||
+#212#244';P'#30'X'#249#30#171#148#164#173#201''''#141#1#141#30'M'#14'B'#141
|
||||
+#164'`'#227#232#131'o'#142#158#246#0'8'#4#27#6#7#250'7'#162#255'2y'#245'P'
|
||||
+#223'^!'#207#0#134#192'zY$S'#29#219'T~TP'#163#226'@'#26'$'#140#177#189#13#146
|
||||
+'+'#146'$'#200#152'o'#213#212#160'L'#209'tn@'#208'0A'#194#12#241'C'#22#242'.'
|
||||
+#26'JB='#15'('#16'&'#223#224#162'E,N@'#192#228'`'#22#5#21#15#8#26'+'#18#176#0
|
||||
+#176#190#5'~tD'#250'9'#161#179'z'#15#147']%'#142#207'1:Cc'#1#226#16'_'#227
|
||||
+#152#27':9'#24'k'#169'?='#199#216#11#178#229#27#248#241#8'q'#5#234'N'#145'P '
|
||||
+#161'B/'#13'{'#207' '#235#174#216#165'['#219'L'#15#247'q_'#222#211#234'o'#210
|
||||
+'Z'#217#162'u}'#155#172#191#129#198#169#141#151#199'}'#190#143#237#238#236'T'
|
||||
+'fi'#185#29''#12'R'#152#156#209#238#175'a'#178'E'#180')Q)'#173'?}'#231'g'
|
||||
+#175#235#222#159#167'O'#30#221#204#135'O'#190'r'#237#1#132#14#156'='#6'7ol'
|
||||
+#128#181#187'p{_'#221'/'#245'W'#242#219'g_7='#0#0#0#0'IEND'#174'B`'#130
|
||||
]);
|
||||
LazarusResources.Add('state12x12_warning','PNG',[
|
||||
#137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#12#0#0#0#12#8#6#0#0#0'Vu\'#231#0#0
|
||||
+#0#1'sRGB'#0#174#206#28#233#0#0#0#6'bKGD'#0#255#0#255#0#255#160#189#167#147#0
|
||||
+#0#0#9'pHYs'#0#0#11#19#0#0#11#19#1#0#154#156#24#0#0#0#7'tIME'#7#217#4#15#13
|
||||
+#31'; '#143'%8'#0#0#1#208'IDAT('#207'u'#143'OH'#147'q'#24#199'?'#239'o'#203
|
||||
+'?cm'#6#145#147'$'#163#197#234'0'#219#236#175#129#8']'#130' H'#202'X'#30#130
|
||||
+#130'NQ'#208'%'#162'S'#135'N'#209#173'"'#179'K1Hd'#29#178#131#211#131't'#177
|
||||
+'<'#20#154#132#29#150#209#218#212#218#180#173'e'#211#182#247#253#189#239#211
|
||||
+#161'B;'#248#129#231#242'|'#159#239#247#203#3'kX'#28#237#160#240'*'#230'Z'
|
||||
+#187#251'6vF'#177#30#243'C'#7#1'X'#24#137#180#228#147#145''''#249#225'H'#0' '
|
||||
+'7'#20']'#223#244''''#245#228#200#210#135#7#146#31'='#30#7#16#17#3#224's'
|
||||
+#235#234'Qn'#248#128#2#152#237'w'#29'-'#189#187')""'#133#215'W%'#253#200#223
|
||||
+#9#144'M'#180#173#182#228#146#237#198#170#177#227#141#249#227#189#152#197#1
|
||||
+#219#252#254'V2'#137#253'/'#255'i3}'#155#141#255'x'#22#186#188#252').'#229
|
||||
+#249#164#158#234#221')'#229#236#128#148#166'{%'#213#215't'#17#224'c<'#236'fn'
|
||||
+'p'#159#1#144#186'E`q'#236#194#172#216'E)L'#158#182''''#239#237#149#194'D'
|
||||
+#183#163'WR'#146'y'#222'37~'#142#0#128'j'#238#154#16#0#239#174#182#219#158
|
||||
+#237#221#205'NeZ+'#151#161#234#26'6b[eC*/l_'#232#212'V'#223#158#166'k'#0'.'
|
||||
+#128#153#187'D'#189#161#158#251#190#221'g1'#191#220'Q`'#130'QO'#141#199#192
|
||||
+#208'i'#229#217'v'#130#242#215'B{W'#205#212#160#2#240#236'8v'#195#27':'#143
|
||||
+'U|'#234#136#206#160#171'?1'#151'r('#151#6#187#136#181#240#144#198'C1'#252
|
||||
+#225#214#235#238#244#227#134#241#186'@'#231'a'#183'g'#11#246'rP)'#255'%'#234
|
||||
+'7'#185#241#182'(lS#'#142#3'N'#149'Zo'#16'_'#240'H'#204#200'&'#194'W'#196#240
|
||||
+'D'#29'm7'#138'Sk'#137#13#182#214#232'_'#22#186'b'#254#29#7'k'#165#180#193
|
||||
+#169'V'#242#191#1#197'D'#213'Z'#128#171#150#191#0#0#0#0'IEND'#174'B`'#130
|
||||
]);
|
||||
LazarusResources.Add('quickfix12x12','PNG',[
|
||||
#137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#12#0#0#0#12#8#6#0#0#0'Vu\'#231#0#0
|
||||
+#0#1'sRGB'#0#174#206#28#233#0#0#0#6'bKGD'#0#255#0#255#0#255#160#189#167#147#0
|
||||
+#0#0#9'pHYs'#0#0#11#19#0#0#11#19#1#0#154#156#24#0#0#0#7'tIME'#7#217#4#16#8#3
|
||||
+#18#138#251'e+'#0#0#1#141'IDAT('#207#133#142#191'O'#19'a'#28#135#159#187'^R['
|
||||
+#139#191'R'#175#134#19#6#23'cj'#226#1'n'#14#232'T7F;'#178#168#169#147#245'O0'
|
||||
+'qpjb'#28#24#24'tf'#147#137'8i@c'#12#162'u0'#181#12#180'5m'#207#250'^'#129
|
||||
+#203'!pw'#239#215#205#128#196#240#204#207''''#159#199#224#31#194#149')'#11'8'
|
||||
+#7#209'&"%'#224#171'$'#219'J'#208#140'Lw'#2#139#163'X'#144#220'E'#199#158'a'
|
||||
+#141#204' '#251#139':'#138'.'#128#188#2'>'#31#25#156#188#177#186#27'.'#23#3
|
||||
+'3W|j'#164#243#25#189#231'M'#242#187#253#29#225#25#128'q(g'#249#234#4':zbd'
|
||||
+#198'o'#249'2yb+Lci'#159#139#185#181'$'#222#250#240#26#137#239#155#7#7':'#25
|
||||
+#214'E'#7#243'K'#31#141#161#175']'#156#137'G'#236'D9'#140#180#19#19#199'_HP'
|
||||
+#135#147#146'}w'#225#253#216#131#149#245#252#249#155#167#18'~z/'#185'tv'#155
|
||||
+#248#215#155#8#205'('#194#153#212'A'#191#17#220#190#179#161#236#202#143#174
|
||||
+'g'#174#173#190#219#155#26#251#182'S'#204'j'#179#235#175#19'G'#247'N'#207
|
||||
+#208#251#251'P.'#151'g'#179#217'l'#173#211#233#160#148#194#206#180#31'O'#143
|
||||
+#15'/'#235#128#5#132'Q'#17#242'@'#223#2'('#149'J'#179#182'm'#215#26#141#6#158
|
||||
+#231#161#148#170#190#157#27'>'#151#132#235#192#134#8'>'#144#2'0*'#149#202'C'
|
||||
+#211'4k'#205'f'#147'~'#191#191#217#235#245#170#131#193#224#5#255#193't'#28
|
||||
+#167#230#186'.a'#24'r'#156#12#144'*'#20#10#215#234#245#250#149'n'#183'[m'#181
|
||||
+'Zs'#28#195#31'2B'#189#242#195'u'#215#179#0#0#0#0'IEND'#174'B`'#130
|
||||
]);
|
||||
LazarusResources.Add('state_circular_reference','PNG',[
|
||||
#137'PNG'#13#10#26#10#0#0#0#13'IHDR'#0#0#0#16#0#0#0#16#8#4#0#0#0#181#250'7'
|
||||
+#234#0#0#0#4'gAMA'#0#0#175#200'7'#5#138#233#0#0#0#25'tEXtSoftware'#0'Adobe I'
|
||||
|
@ -110,6 +110,13 @@ menu/menu_view_todo.png
|
||||
menu/menu_view_toggle_form_unit.png
|
||||
menu/menu_view_units.png
|
||||
menu/menu_view_unit_info.png
|
||||
states/state12x12_error.png
|
||||
states/state12x12_fatal.png
|
||||
states/state12x12_hint.png
|
||||
states/state12x12_information.png
|
||||
states/state12x12_note.png
|
||||
states/state12x12_warning.png
|
||||
states/quickfix12x12.png
|
||||
states/state_circular_reference.png
|
||||
states/state_error.png
|
||||
states/state_fatal.png
|
||||
@ -216,4 +223,4 @@ codetoolsdefines/da_ifdef.png
|
||||
codetoolsdefines/da_ifndef.png
|
||||
codetoolsdefines/da_undefine.png
|
||||
codetoolsdefines/da_undefineall.png
|
||||
codetoolsdefines/da_undefinerecurse.png
|
||||
codetoolsdefines/da_undefinerecurse.png
|
||||
|
BIN
images/states/quickfix12x12.png
Normal file
After Width: | Height: | Size: 525 B |
BIN
images/states/state12x12_error.png
Normal file
After Width: | Height: | Size: 604 B |
BIN
images/states/state12x12_fatal.png
Normal file
After Width: | Height: | Size: 613 B |
BIN
images/states/state12x12_hint.png
Normal file
After Width: | Height: | Size: 552 B |
BIN
images/states/state12x12_information.png
Normal file
After Width: | Height: | Size: 620 B |
BIN
images/states/state12x12_note.png
Normal file
After Width: | Height: | Size: 511 B |
BIN
images/states/state12x12_warning.png
Normal file
After Width: | Height: | Size: 592 B |