mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-16 20:49:30 +02:00
IDE: started new external tools
git-svn-id: trunk@42230 -
This commit is contained in:
parent
aa37def788
commit
7335961add
6
.gitattributes
vendored
6
.gitattributes
vendored
@ -4949,6 +4949,12 @@ ide/emptymethodsdlg.pas svneol=native#text/plain
|
||||
ide/encloseselectiondlg.lfm svneol=native#text/plain
|
||||
ide/encloseselectiondlg.pas svneol=native#text/pascal
|
||||
ide/environmentopts.pp svneol=native#text/pascal
|
||||
ide/etfpcmsgparser.pas svneol=native#text/plain
|
||||
ide/etmakemsgparser.pas svneol=native#text/plain
|
||||
ide/etmessageframe.lfm svneol=native#text/plain
|
||||
ide/etmessageframe.pas svneol=native#text/plain
|
||||
ide/etquickfixes.pas svneol=native#text/plain
|
||||
ide/etsrceditmarks.pas svneol=native#text/plain
|
||||
ide/examplemanager.lfm svneol=native#text/plain
|
||||
ide/examplemanager.pas svneol=native#text/plain
|
||||
ide/extractprocdlg.lfm svneol=native#text/plain
|
||||
|
File diff suppressed because it is too large
Load Diff
1706
ide/etfpcmsgparser.pas
Normal file
1706
ide/etfpcmsgparser.pas
Normal file
File diff suppressed because it is too large
Load Diff
344
ide/etmakemsgparser.pas
Normal file
344
ide/etmakemsgparser.pas
Normal file
@ -0,0 +1,344 @@
|
||||
{
|
||||
***************************************************************************
|
||||
* *
|
||||
* This source is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This code 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. See the GNU *
|
||||
* General Public License for more details. *
|
||||
* *
|
||||
* A copy of the GNU General Public License is available on the World *
|
||||
* Wide Web at <http://www.gnu.org/copyleft/gpl.html>. You can also *
|
||||
* obtain it by writing to the Free Software Foundation, *
|
||||
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||
* *
|
||||
***************************************************************************
|
||||
|
||||
Author: Mattias Gaertner
|
||||
|
||||
Abstract:
|
||||
Parser for GNU 'make' output.
|
||||
}
|
||||
unit etMakeMsgParser;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, IDEExternToolIntf, CodeToolsStructs, KeywordFuncLists,
|
||||
LazFileUtils, FileUtil;
|
||||
|
||||
const
|
||||
MakeMsgIDEnteringDirectory = 1;
|
||||
MakeMsgIDLeavingDirectory = 2;
|
||||
|
||||
type
|
||||
|
||||
{ TIDEMakeParser
|
||||
Parse lines of 'make' tool. Finding the current directory is needed by other parsers. }
|
||||
|
||||
TIDEMakeParser = class(TMakeParser)
|
||||
protected
|
||||
fIsFileExecutable: TFilenameToPointerTree;
|
||||
function IsFileExecutable(const Filename: string): boolean;
|
||||
public
|
||||
DirectoryStack: TStrings;
|
||||
DefaultDirectory: string;
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
destructor Destroy; override;
|
||||
procedure Init; override;
|
||||
procedure ReadLine(Line: string; OutputIndex: integer; var Handled: boolean); override;
|
||||
class function DefaultSubTool: string; override;
|
||||
class function Priority: integer; override;
|
||||
end;
|
||||
|
||||
function CompStr(const SubStr: string; p: PChar): boolean;
|
||||
function CompStrI(const SubStr: string; p: PChar): boolean;
|
||||
function FindSubStrI(const SubStr: string; p: PChar): PChar;
|
||||
function GetString(p: PChar; MaxLen: integer): string;
|
||||
function Str2Integer(p: PChar; const Default: integer): integer;
|
||||
function ReadDecimal(var p: PChar): boolean;
|
||||
function ReadNumberWithThousandSep(var p: PChar): boolean;
|
||||
function ReadChar(var p: PChar; c: char): boolean; inline;
|
||||
function ReadString(var p: PChar; const Find: string): boolean; inline;
|
||||
|
||||
procedure RegisterMakeParser;
|
||||
|
||||
implementation
|
||||
|
||||
function CompStr(const SubStr: string; p: PChar): boolean;
|
||||
var
|
||||
s: PChar;
|
||||
begin
|
||||
Result:=false;
|
||||
if (SubStr='') or (p=nil) then exit;
|
||||
s:=PChar(SubStr);
|
||||
while (s^<>#0) and (p^=s^) do begin
|
||||
inc(p);
|
||||
inc(s);
|
||||
end;
|
||||
Result:=s^=#0;
|
||||
end;
|
||||
|
||||
function CompStrI(const SubStr: string; p: PChar): boolean;
|
||||
var
|
||||
s: PChar;
|
||||
begin
|
||||
Result:=false;
|
||||
if (SubStr='') or (p=nil) then exit;
|
||||
s:=PChar(SubStr);
|
||||
while (s^<>#0) and (UpChars[p^]=UpChars[s^]) do begin
|
||||
inc(p);
|
||||
inc(s);
|
||||
end;
|
||||
Result:=s^=#0;
|
||||
end;
|
||||
|
||||
function FindSubStrI(const SubStr: string; p: PChar): PChar;
|
||||
var
|
||||
s: PChar;
|
||||
begin
|
||||
Result:=nil;
|
||||
if (SubStr='') or (p=nil) then exit;
|
||||
s:=PChar(SubStr);
|
||||
while p^<>#0 do begin
|
||||
if (UpChars[p^]=UpChars[s^]) and CompStrI(SubStr,p) then begin
|
||||
Result:=p;
|
||||
exit;
|
||||
end;
|
||||
inc(p);
|
||||
end;
|
||||
end;
|
||||
|
||||
function GetString(p: PChar; MaxLen: integer): string;
|
||||
var
|
||||
e: PChar;
|
||||
len: Integer;
|
||||
begin
|
||||
e:=p;
|
||||
len:=0;
|
||||
while (e^<>#0) and (len<MaxLen) do begin
|
||||
inc(e);
|
||||
inc(len);
|
||||
end;
|
||||
SetLength(Result,len);
|
||||
if len>0 then
|
||||
System.Move(p^,Result[1],len);
|
||||
end;
|
||||
|
||||
function Str2Integer(p: PChar; const Default: integer): integer;
|
||||
var
|
||||
Negated: Boolean;
|
||||
i: int64;
|
||||
begin
|
||||
i:=0;
|
||||
if p^='-' then begin
|
||||
Negated:=true;
|
||||
inc(p);
|
||||
end else
|
||||
Negated:=false;
|
||||
while p^ in ['0'..'9'] do begin
|
||||
i:=i*10+ord(p^)-ord('0');
|
||||
if (i>High(Result)) then begin
|
||||
Result:=Default;
|
||||
exit;
|
||||
end;
|
||||
inc(p);
|
||||
end;
|
||||
Result:=i;
|
||||
if Negated then
|
||||
Result:=-Result;
|
||||
end;
|
||||
|
||||
function ReadDecimal(var p: PChar): boolean;
|
||||
var
|
||||
OldP: PChar;
|
||||
begin
|
||||
OldP:=p;
|
||||
while p^ in ['0'..'9'] do inc(p);
|
||||
Result:=(OldP<p) and (p-OldP<10);
|
||||
end;
|
||||
|
||||
function ReadNumberWithThousandSep(var p: PChar): boolean;
|
||||
var
|
||||
OldP: PChar;
|
||||
begin
|
||||
OldP:=p;
|
||||
repeat
|
||||
case p^ of
|
||||
'0'..'9': ;
|
||||
'.':
|
||||
if p=OldP then exit(false)
|
||||
else if p[1]='.' then exit(false);
|
||||
else break;
|
||||
end;
|
||||
inc(p);
|
||||
until false;
|
||||
Result:=(OldP<p) and (p-OldP<20);
|
||||
end;
|
||||
|
||||
function ReadChar(var p: PChar; c: char): boolean;
|
||||
begin
|
||||
Result:=p^=c;
|
||||
if Result then inc(p);
|
||||
end;
|
||||
|
||||
function ReadString(var p: PChar; const Find: string): boolean;
|
||||
begin
|
||||
Result:=CompStr(Find,p);
|
||||
if Result then inc(p,length(Find));
|
||||
end;
|
||||
|
||||
procedure RegisterMakeParser;
|
||||
begin
|
||||
ExternalToolList.RegisterParser(TIDEMakeParser);
|
||||
end;
|
||||
|
||||
{ TIDEMakeParser }
|
||||
|
||||
function TIDEMakeParser.IsFileExecutable(const Filename: string): boolean;
|
||||
var
|
||||
p: Pointer;
|
||||
begin
|
||||
p:=fIsFileExecutable[Filename];
|
||||
if p=Pointer(Self) then
|
||||
Result:=true
|
||||
else if p=Pointer(fIsFileExecutable) then
|
||||
Result:=false
|
||||
else begin
|
||||
Result:=FileIsExecutable(Filename);
|
||||
if Result then
|
||||
fIsFileExecutable[Filename]:=Pointer(Self)
|
||||
else
|
||||
fIsFileExecutable[Filename]:=Pointer(fIsFileExecutable);
|
||||
end;
|
||||
end;
|
||||
|
||||
constructor TIDEMakeParser.Create(AOwner: TComponent);
|
||||
begin
|
||||
inherited Create(AOwner);
|
||||
fIsFileExecutable:=TFilenameToPointerTree.Create(false);
|
||||
end;
|
||||
|
||||
destructor TIDEMakeParser.Destroy;
|
||||
begin
|
||||
FreeAndNil(fIsFileExecutable);
|
||||
FreeAndNil(DirectoryStack);
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
procedure TIDEMakeParser.Init;
|
||||
begin
|
||||
DefaultDirectory:=Tool.WorkerDirectory;
|
||||
inherited Init;
|
||||
end;
|
||||
|
||||
procedure TIDEMakeParser.ReadLine(Line: string; OutputIndex: integer;
|
||||
var Handled: boolean);
|
||||
{ returns true, if it is a make/gmake message
|
||||
Examples for make messages:
|
||||
make[1]: Entering directory `<filename>'
|
||||
make[1]: Leaving directory `<filename>'
|
||||
make[1]: *** [<filename>] Killed
|
||||
make <command>
|
||||
/bin/cp <options>
|
||||
}
|
||||
const
|
||||
EnterDirPattern = ']: Entering directory `';
|
||||
LeavingDirPattern = ']: Leaving directory `';
|
||||
MakeMsgPattern = ']: *** [';
|
||||
var
|
||||
MsgLine: TMessageLine;
|
||||
p: PChar;
|
||||
Filename, Dir: string;
|
||||
Run: PChar;
|
||||
begin
|
||||
if Line='' then exit;
|
||||
p:=PChar(Line);
|
||||
if ReadString(p,'make[') or ReadString(p,'make.exe[') then begin
|
||||
Handled:=true;
|
||||
|
||||
MsgLine:=CreateMsgLine(OutputIndex);
|
||||
MsgLine.SubTool:=SubToolMake;
|
||||
MsgLine.Urgency:=mluVerbose;
|
||||
MsgLine.Msg:=Line;
|
||||
|
||||
while not (p^ in [']',#0]) do inc(p);
|
||||
if ReadString(p,EnterDirPattern) then begin
|
||||
// entering directory
|
||||
MsgLine.MsgID:=MakeMsgIDEnteringDirectory;
|
||||
if DefaultDirectory='' then DefaultDirectory:=Tool.WorkerDirectory;
|
||||
if (Tool.WorkerDirectory<>'') then begin
|
||||
if (DirectoryStack=nil) then DirectoryStack:=TStringList.Create;
|
||||
DirectoryStack.Add(Tool.WorkerDirectory);
|
||||
end;
|
||||
Dir:=p;
|
||||
if (Dir<>'') and (Dir[length(Dir)]='''') then
|
||||
Dir:=copy(Dir,1,length(Dir)-1);
|
||||
Tool.WorkerDirectory:=p;
|
||||
end else if ReadString(p,LeavingDirPattern) then begin
|
||||
// leaving directory
|
||||
MsgLine.MsgID:=MakeMsgIDLeavingDirectory;
|
||||
if (DirectoryStack<>nil) and (DirectoryStack.Count>0) then begin
|
||||
Tool.WorkerDirectory:=DirectoryStack[DirectoryStack.Count-1];
|
||||
DirectoryStack.Delete(DirectoryStack.Count-1);
|
||||
end else begin
|
||||
// leaving what directory?
|
||||
Tool.WorkerDirectory:=DefaultDirectory;
|
||||
end;
|
||||
end else if ReadString(p,MakeMsgPattern) then begin
|
||||
MsgLine.Msg:=p-1;
|
||||
end;
|
||||
AddMsgLine(MsgLine);
|
||||
exit;
|
||||
end else if ReadString(p,'make ') then begin
|
||||
// e.g. make --assume-new=lazbuild.lpr lazbuild
|
||||
Handled:=true;
|
||||
|
||||
MsgLine:=CreateMsgLine(OutputIndex);
|
||||
MsgLine.SubTool:=SubToolMake;
|
||||
MsgLine.Urgency:=mluVerbose;
|
||||
MsgLine.Msg:=Line;
|
||||
AddMsgLine(MsgLine);
|
||||
exit;
|
||||
end;
|
||||
|
||||
if not (p^ in [#0,' ',#9]) then begin
|
||||
// check for command <option>
|
||||
Run:=p;
|
||||
while not (Run^ in [' ',#9,#0]) do inc(Run);
|
||||
if Run^<>#0 then begin
|
||||
SetLength(Filename,Run-p);
|
||||
System.Move(p^,Filename[1],length(Filename));
|
||||
Filename:=TrimFilename(Filename);
|
||||
if FilenameIsAbsolute(Filename)
|
||||
and ((GetExeExt='') or (ExtractFileExt(Filename)=GetExeExt))
|
||||
and IsFileExecutable(Filename) then begin
|
||||
Handled:=true;
|
||||
MsgLine:=CreateMsgLine(OutputIndex);
|
||||
MsgLine.SubTool:=SubToolMake;
|
||||
MsgLine.Urgency:=mluVerbose;
|
||||
MsgLine.Msg:=Line;
|
||||
AddMsgLine(MsgLine);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
class function TIDEMakeParser.DefaultSubTool: string;
|
||||
begin
|
||||
Result:=SubToolMake;
|
||||
end;
|
||||
|
||||
class function TIDEMakeParser.Priority: integer;
|
||||
begin
|
||||
Result:=SubToolMakePriority;
|
||||
end;
|
||||
|
||||
end.
|
||||
|
592
ide/etmessageframe.lfm
Normal file
592
ide/etmessageframe.lfm
Normal file
@ -0,0 +1,592 @@
|
||||
object MessagesFrame: TMessagesFrame
|
||||
Left = 0
|
||||
Height = 106
|
||||
Top = 0
|
||||
Width = 444
|
||||
ClientHeight = 106
|
||||
ClientWidth = 444
|
||||
LCLVersion = '1.1'
|
||||
TabOrder = 0
|
||||
DesignLeft = 297
|
||||
DesignTop = 171
|
||||
object SearchPanel: TPanel
|
||||
Left = 0
|
||||
Height = 27
|
||||
Top = 79
|
||||
Width = 444
|
||||
Align = alBottom
|
||||
AutoSize = True
|
||||
ClientHeight = 27
|
||||
ClientWidth = 444
|
||||
TabOrder = 0
|
||||
object SearchEdit: TEdit
|
||||
AnchorSideLeft.Control = HideSearchSpeedButton
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
Left = 34
|
||||
Height = 25
|
||||
Top = 1
|
||||
Width = 200
|
||||
BorderSpacing.Left = 10
|
||||
Constraints.MinWidth = 200
|
||||
OnChange = SearchEditChange
|
||||
OnEnter = SearchEditEnter
|
||||
OnExit = SearchEditExit
|
||||
TabOrder = 0
|
||||
Text = 'SearchEdit'
|
||||
end
|
||||
object SearchNextSpeedButton: TSpeedButton
|
||||
AnchorSideLeft.Control = SearchEdit
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = SearchEdit
|
||||
AnchorSideBottom.Control = SearchEdit
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 234
|
||||
Height = 25
|
||||
Top = 1
|
||||
Width = 23
|
||||
Anchors = [akTop, akLeft, akBottom]
|
||||
Flat = True
|
||||
Glyph.Data = {
|
||||
36040000424D3604000000000000360000002800000010000000100000000100
|
||||
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00256929C4216425C9FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF002D7533CF488F4DFF458C4AFF2265
|
||||
26D1FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF003C8A430638833ED9519957FF79C07EFF76BF7CFF468D
|
||||
4BFF236627DB20622306FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF0042924AB83D8C45F765AD6CFF7DC282FF7AC180FF4B92
|
||||
50FF276D2CF7246828BBFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF0043944B384E9A55FF81C587FF7EC385FF317A
|
||||
36FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0045954CFF85C78CFF82C689FF3682
|
||||
3DFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A9E53FF8ACA91FF87C98EFF3C8A
|
||||
43FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0050A659FF8ECC95FF8BCB93FF4292
|
||||
4AFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0056AD5FFF93CF9AFF90CE98FF489A
|
||||
50FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005BB465FF96D29FFF94D09CFF4EA2
|
||||
57FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005FBB6AFF9AD4A3FF98D3A1FF53AA
|
||||
5DFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0063C06FFF9ED6A7FF9CD4A5FF59B2
|
||||
63FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0066C572FFA2D8ABFFA0D7A9FF5DB8
|
||||
68FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0068C774FF67C673FF65C270FF62BE
|
||||
6DFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
|
||||
}
|
||||
OnClick = SearchNextSpeedButtonClick
|
||||
ShowHint = True
|
||||
ParentShowHint = False
|
||||
end
|
||||
object SearchPrevSpeedButton: TSpeedButton
|
||||
AnchorSideLeft.Control = SearchNextSpeedButton
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
AnchorSideTop.Control = SearchNextSpeedButton
|
||||
AnchorSideBottom.Control = SearchNextSpeedButton
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 257
|
||||
Height = 25
|
||||
Top = 1
|
||||
Width = 23
|
||||
Anchors = [akTop, akLeft, akBottom]
|
||||
Flat = True
|
||||
Glyph.Data = {
|
||||
36040000424D3604000000000000360000002800000010000000100000000100
|
||||
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00286E2DFF256929FF216425FF1E60
|
||||
22FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF002D7533FF74BD7AFF72BD78FF2265
|
||||
26FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00337D39FF79C07EFF76BF7CFF266B
|
||||
2BFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0039853FFF7DC282FF7AC180FF2B72
|
||||
30FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF003F8D46FF81C587FF7EC385FF317A
|
||||
36FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0045954CFF85C78CFF82C689FF3682
|
||||
3DFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF004A9E53FF8ACA91FF87C98EFF3C8A
|
||||
43FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0050A659FF8ECC95FF8BCB93FF4292
|
||||
4AFFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0056AD5FFF93CF9AFF90CE98FF489A
|
||||
50FFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF005BB465FF96D29FFF94D09CFF5DAC
|
||||
65FF499C5238FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF0065C371BB62BF6EF779C683FF9AD4A3FF98D3A1FF7DC3
|
||||
86FF4FA458F74A9E53B8FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF0068C7740666C472DB7CCA87FF9ED6A7FF9CD4A5FF73C0
|
||||
7DFF55AC5ED950A65906FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0066C572D17ECA88FF7BC885FF5DB8
|
||||
68CFFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0067C673C965C270C4FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
|
||||
}
|
||||
OnClick = SearchPrevSpeedButtonClick
|
||||
ShowHint = True
|
||||
ParentShowHint = False
|
||||
end
|
||||
object HideSearchSpeedButton: TSpeedButton
|
||||
AnchorSideLeft.Control = SearchPanel
|
||||
AnchorSideTop.Control = SearchPanel
|
||||
AnchorSideBottom.Control = SearchPanel
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 1
|
||||
Height = 25
|
||||
Top = 1
|
||||
Width = 23
|
||||
Anchors = [akTop, akLeft, akBottom]
|
||||
Flat = True
|
||||
Glyph.Data = {
|
||||
36040000424D3604000000000000360000002800000010000000100000000100
|
||||
2000000000000004000064000000640000000000000000000000FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00806D5EFF7C614CFF806249FF816249FF816249FF816249FF816249FF8362
|
||||
48FF816348FF816249FF7C614CFF806D5EFFFFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF007C614CFFE6CCB4FFD1B69CFFD2B59AFFD1B398FFD2B295FFCBAB8EFFCBA9
|
||||
8CFFC8A689FFC6A389FFDCBDA4FF7E614CFFFFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF007C614CFFEED4BCFFEDD2B8FFEFD2B7FFEDCFB4FFEFCFB2FFEECEB1FFF1CF
|
||||
B2FFF0CEB1FFEFCCB2FFEBCCB3FF7E614CFFFFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00806D5EFF7C614CFF806249FF816249FF816249FF826449FF816348FF8362
|
||||
48FF836248FF84624AFF7E614CFF806D5EFFFFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00
|
||||
}
|
||||
OnClick = HideSearchSpeedButtonClick
|
||||
ShowHint = True
|
||||
ParentShowHint = False
|
||||
end
|
||||
end
|
||||
object ImageList1: TImageList
|
||||
left = 97
|
||||
top = 25
|
||||
Bitmap = {
|
||||
4C69070000001000000010000000FFFFFF00FFFFFF00FFFFFF0091DEFB0391DE
|
||||
FB0FFFFFFF00FFFFFF00FFFFFF0000C1FE12FFFFFF0000BDFD6000BAFC1200B7
|
||||
FB0F00B4FA09FFFFFF00FFFFFF00FFFFFF00FFFFFF0091DEFB2E91DEFBE791DE
|
||||
FBBF8FDDFB958FDDFB428DDDFB0200BFFD3C00BCFDA800B9FCC300B6FB8D00B3
|
||||
F9C0FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0091DEFB8B91DEFBC290DD
|
||||
FBFA8FD6F1EA8DD1EBF463D3FAFF4B9EBAF501B9FAFE41C8FEFF28B8FCFF00AF
|
||||
F8C600ACF76600A8F521FFFFFF00FFFFFF00FFFFFF0091DEFB6190DCF9F887BA
|
||||
CDF78B8D8EFF98AEB7FF80D4F4FF22C0F8FF43CBFEFF4DC2FFFF3FB0FFFF15A5
|
||||
FAFF00A7F56CFFFFFF00FFFFFF00FFFFFF00FFFFFF008D95986E89CDE7FF8FDC
|
||||
F9FF677479FF6C6C6CFF5F9CB2FF09B5F6FF28BDFCFF44B6FFFF36A3FFFF109E
|
||||
F9FF0795DBD6009EF218FFFFFF00FFFFFF0083838334787878E4727E82FF8BD1
|
||||
EBFF788083FF323232FF858585FF717E83FF03ADF4FF01A9F4FF0EA1F8FF268F
|
||||
C3FF2E2E2ED529292934FFFFFF00FFFFFF007D7D7D80929292FF505050FF7777
|
||||
77FF5D5D5DFF232323FF6B6B6BFF53859BFF457E98FF228DBFFF3C6E87FF2A7F
|
||||
AFFF4A4F53FF1F1F1F80FFFFFF00FFFFFF00777777C0929292FF656565FF3232
|
||||
32FF282828FF676767FF797979FF6D6D6DFF616161FF44687AFF4E5051FF4D4D
|
||||
4DFF545454FF191919C0FFFFFF00FFFFFF006F6F6FED909090FF7D7D7DFF7D7D
|
||||
7DFF7B7B7BFF767676FF6E6E6EFF626262FF595959FF4F4F4FFF484848FF4444
|
||||
44FF545454FF141414EDFFFFFF00FFFFFF00646464ED808080FF717171FF6F6F
|
||||
6FFF6C6C6CFF676767FF606060FF575757FF4F4F4FFF474747FF414141FF3D3D
|
||||
3DFF4B4B4BFF101010EDFFFFFF00FFFFFF005B5B5BC0707070FF696969FF6161
|
||||
61FF5D5D5DFF5A5A5AFF545454FF4C4C4CFF454545FF3F3F3FFF393939FF3B3B
|
||||
3BFF3D3D3DFF0C0C0CC0FFFFFF00FFFFFF004F4F4F80616161FF626262FF5656
|
||||
56FF515151FF4D4D4DFF484848FF424242FF3D3D3DFF373737FF343434FF3C3C
|
||||
3CFF2A2A2AFF09090980FFFFFF00FFFFFF00404040343B3B3BD5626262FF5454
|
||||
54FF484848FF434343FF3F3F3FFF3A3A3AFF353535FF313131FF373737FF3C3C
|
||||
3CFF090909D507070734FFFFFF00FFFFFF00FFFFFF00313131672C2C2CF15656
|
||||
56FF4C4C4CFF414141FF393939FF353535FF353535FF393939FF3A3A3AFF0909
|
||||
09F106060667FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00232323671E1E
|
||||
1ED53A3A3AFF454545FF474747FF424242FF373737FF262626FF070707D50505
|
||||
0567FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF001A1A
|
||||
1A34131313800F0F0FC00C0C0CED0A0A0AED080808C00606068005050534FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF006A85
|
||||
FC236984FA7D6782F9DB6580F7F3637EF5F3617CF3DB5F7AF17D5D77EF23FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF006984FA536882
|
||||
F9E66E83EEFF92A6F4FFA0B4F8FFA0B4F8FF91A6F3FF687DE9FF5973EBE65671
|
||||
E953FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF006883F9536681F8F48497
|
||||
F1FFA9BDFBFF8AA3F8FF6B89F6FF6B89F6FF89A2F8FFA8BCFAFF7F92ECFF526C
|
||||
E4F44F69E253FFFFFF00FFFFFF00FFFFFF006781F822657FF6E58397F0FFA9BD
|
||||
FBFF6382F5FF6382F5FFFFFFFFFFFFFFFFFF617EF3FF607CF3FFA6B9F9FF7B8D
|
||||
EAFF4A64DEE54862DB22FFFFFF00FFFFFF00637EF57E6C81ECFFA9BDFBFF6382
|
||||
F5FF6281F5FF6280F4FFFFFFFFFFFFFFFFFF5F7AF1FF5F78F0FF5D76EFFFA5B5
|
||||
F8FF5D70DDFF435DD77EFFFFFF00FFFFFF005F7AF1DB91A6F3FF88A1F8FF6280
|
||||
F4FF617EF3FF607CF3FFFFFFFFFFFFFFFFFF5D76EFFF5C73EEFF5B70ECFF8293
|
||||
F1FF8998ECFF3E58D2DBFFFFFF00FFFFFF005B76EDF6A1B6F8FF6784F4FF607C
|
||||
F3FF5F7AF1FF5F78F0FFFFFFFFFFFFFFFFFF5B70ECFF5A6EEBFF596CEAFF5F6F
|
||||
E9FF9BA8F1FF3A53CEF6FFFFFF00FFFFFF005771E9F6A0B3F7FF6580F2FF5F78
|
||||
F0FF5D76EFFF5C73EEFFD3D9FAFFFFFFFFFF596CEAFF5869E8FF5767E7FF5D6C
|
||||
E7FF99A5F1FF354FCAF6FFFFFF00FFFFFF00526DE5DB8E9FF0FF8499F4FF5C73
|
||||
EEFF5B70ECFF5A6EEBFF909DF1FFA6AFF3FF5767E7FF5665E6FF5562E5FF7D89
|
||||
EBFF8591E7FF314AC6DBFFFFFF00FFFFFF004E68E17E6073E0FFA4B3F7FF5A6E
|
||||
EBFF596CEAFF5869E8FFFFFFFFFFFFFFFFFF5562E5FF5461E3FF535FE2FF9FA9
|
||||
F2FF5061D1FF2D46C27EFFFFFF00FFFFFF004963DC224660DAE57888E6FFA3B0
|
||||
F5FF5767E7FF5665E6FF8992EDFF8892ECFF535FE2FF525DE1FF9FA9F2FF6F7D
|
||||
DDFF2B44C0E52942BE22FFFFFF00FFFFFF00FFFFFF00425CD5533F59D3F47584
|
||||
E3FFA1ACF4FF7F8BECFF5C67E4FF5B66E3FF7D87EAFF9FA8F1FF6F7CDDFF2943
|
||||
BFF42741BD53FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF003A54CF533852
|
||||
CCE65264D4FF8490E7FF95A0EEFF959FEDFF838EE5FF4C5DCEFF2841BDE6263F
|
||||
BB53FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00334D
|
||||
C823314BC67D2F48C4DB2C46C2F32A44C0F32842BEDB2640BC7D243EBA23FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF003DBFEC033CBCEBD43ABAEAC339B8E803FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF003CBCEB9585D4F1FF82D1F0FF37B5E769FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF003CBCEB123ABAE9F2F1FAFDFFD5EFFAFF35B2E6ED33AFE412FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF003AB9E9B494D8F2FFF3FCFEFFE7FAFEFF8FD3F0FF31ACE396FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF003AB9
|
||||
E93038B7E8FDF9FDFFFF94E9F9FF9EEBFAFFECFAFEFF2FA9E1FC2DA6E030FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0038B7
|
||||
E8D4A9DFF4FFEDF9FDFF3EA3D6FF3EA3D6FFD4F5FCFFA2D7F1FF2BA3DEC3FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0038B6E85A71C8
|
||||
EDFFF9FEFFFF5EDCF4FF3EA2D5FF3EA2D5FF5CD9F4FFEDFBFEFF68BBE5FF269C
|
||||
DB5AFFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0038B6E80C36B4E6ECC8EA
|
||||
F7FFE6FAFDFF5DDAF4FF3DA1D5FF3DA1D5FF57D7F2FFC7F3FCFFC0E3F4FF2499
|
||||
D9E42296D80CFFFFFF00FFFFFF00FFFFFF00FFFFFF0036B3E6AA8CD2F0FFEAFB
|
||||
FEFF94E6F8FF5CDAF4FF47B1DDFF3DA1D5FF56D7F2FF5CDBF5FFDEF8FDFF7DC0
|
||||
E7FF1D8ED487FFFFFF00FFFFFF00FFFFFF0036B3E62434B1E5FBF3FBFEFFC3F2
|
||||
FBFF5CDCF6FF5CDAF4FF64DFF6FF57CBEBFF55D6F2FF54D9F5FF94E7F8FFE3F4
|
||||
FBFF1787D0F91380CD24FFFFFF00FFFFFF0034B0E5CA9DD7F1FFE7F9FDFF8BE5
|
||||
F8FF5ADBF6FF5BDAF4FF3DA1D5FF3DA1D5FF54D6F2FF52D8F5FF50D6F4FFD8F6
|
||||
FCFF88BFE5FF0E79C9B4FFFFFF0034B0E54B62BFE8FFF4FCFEFFB5EFFAFF58DA
|
||||
F5FF58DAF5FF57D8F3FF58D7F2FF58D6F2FF57D9F4FF51D8F5FF4ED7F4FF62DA
|
||||
F6FFEAFBFEFF4493D2FF066DC34B31ADE3E3BEE3F5FFF4FCFEFFEFFBFEFFEEFB
|
||||
FEFFEEFBFEFFEFFCFEFFEFFCFEFFEFFBFEFFEEFBFEFFEDFBFEFFEDFBFEFFECFB
|
||||
FEFFF2FCFEFFABCEEBFF0368C1D82FAAE2A22DA7E0FF2BA4DFFF29A1DDFF279E
|
||||
DCFF259BDAFF2398D9FF2093D6FF1B8CD3FF1685CFFF117ECCFF0D77C9FF0971
|
||||
C6FF066CC3FF0368C1FF0064BFA2FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
00000101E2000101E3000101E200000000000000000000000000000000000000
|
||||
00000000000000000000000000000000000001B3CC8101B3CCAB01B3CCAB01B3
|
||||
CCAB01B3CCAB01B3CCAB01B3CCAB01B3CCAB01B3CCAB01B3CCAB01B3CCAB01B3
|
||||
CC3C1FB1D70001B3CC00000000000000000001B1CAAD9CEFFBFF8FEBF9FF8DEA
|
||||
F8FF8AE9F8FF85E7F6FF7CE3F3FF74E0F0FF6FDDEEFF6FDDEEFF4DC4D5FF01B1
|
||||
CAAD01B1CA3D01B1CA00000000000000000001AFC8AE95EDFBFF7EE6F7FF7CE5
|
||||
F6FF7BE4F5FF79E3F4FF75E0F1FF70DBECFF6AD7E8FF67D5E6FF45BCCDFFBBF6
|
||||
FFFF01AFC8AE01AFC83E000000000000000001ADC6AF97EDFBFF7FE7F8FF7EE6
|
||||
F7FF7CE5F6FF7BE4F5FF79E3F4FF75E0F1FF70DBECFF6AD7E8FF37AEBFFF37AE
|
||||
BFFF37AEBFFF0194ACBF000000000000000001AAC3B199EEFCFF81E9FAFF7FE7
|
||||
F8FF7EE6F7FF7CE5F6FF7BE4F5FF79E3F4FF75E0F1FF70DBECFF6AD7E8FF67D5
|
||||
E6FF6FDDEEFF01AAC3B1000000000000000001A7C0B39BEFFDFF82EAFBFF81E9
|
||||
FAFF7FE7F8FF7EE6F7FF7CE5F6FF7BE4F5FF79E3F4FF75E0F1FF70DBECFF6AD7
|
||||
E8FF6FDDEEFF01A7C0B3000000000000000001A4BCB59DF0FDFF84EBFCFF82EA
|
||||
FBFF81E9FAFF7FE7F8FF7EE6F7FF7CE5F6FF7BE4F5FF79E3F4FF75E0F1FF70DB
|
||||
ECFF74E0F0FF01A4BCB5000000000000000001A1B9B79EF1FEFF85ECFDFF84EB
|
||||
FCFF82EAFBFF81E9FAFF7FE7F8FF7EE6F7FF7CE5F6FF7BE4F5FF79E3F4FF75E0
|
||||
F1FF7CE3F3FF01A1B9B70000000000000000019EB5B9A0F1FFFF86ECFDFF85EC
|
||||
FDFF84EBFCFF82EAFBFF81E9FAFF7FE7F8FF7EE6F7FF7CE5F6FF7BE4F5FF79E3
|
||||
F4FF85E7F6FF019EB5B90000000000000000019AB2BBA1F2FFFF87EDFEFF86EC
|
||||
FDFF85ECFDFF84EBFCFF82EAFBFF81E9FAFF7FE7F8FF7EE6F7FF7CE5F6FF7BE4
|
||||
F5FF8AE9F8FF019AB2BB00000000000000000091A8C1AFF4FFFFA1F2FFFFA0F1
|
||||
FFFF9EF1FEFF9CF0FDFF9BEFFDFF99EEFCFF97EDFBFF95EDFBFF92ECFAFF90EA
|
||||
F9FF96ECFAFF0091A8C1000000000000000000869D9600859CC900859CC90085
|
||||
9CC900859CC900859CC900859CC900859CC900859CC900859CC900859CC90085
|
||||
9CC900859CC900869D9600000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00B8875812B88758A5B887
|
||||
58F9B88758FFB88758FFB88758FFB88758FFB88758FFB88758FFB88758FFB887
|
||||
58BAB8875824FFFFFF00FFFFFF00FFFFFF00FFFFFF00B88758B1DAC1A9FFFDFC
|
||||
FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFC9
|
||||
B4FFB88758DBB8875806FFFFFF00FFFFFF00B887580CB88758FCFEFEFDFFFEF6
|
||||
F0FFFEF2E9FFFEF1E6FFFEEFE4FFFEEEE1FFFEECDEFFFDEADBFFFDEADCFFFFFF
|
||||
FFFFC7A07BFFB8875836FFFFFF00FFFFFF00B887581EC0956CFFFFFFFFFFFEF1
|
||||
E8FFFEF0E6FFFEEFE3FFFEEDE0FFFEECDDFFFDEADBFFFDE8D7FFFDE6D5FFFFFF
|
||||
FFFFCDAA89FFB887584BFFFFFF00FFFFFF00B887581EC0956CFFFFFFFFFFFEF0
|
||||
E5FFFEEEE2FFFEEDE0FFFEEBDDFFFDE9DAFFFDE8D7FFFDE6D4FFFDE4D1FFFFFF
|
||||
FFFFCDAA89FFB887584BFFFFFF00FFFFFF00B887580CB88758FCFEFEFDFFFEF2
|
||||
E9FFFEECDFFFFDEBDCFFFDE9D9FFFDE7D6FFFDE6D3FFFDE4D0FFFCE4D1FFFFFF
|
||||
FFFFC8A27DFFB8875839FFFFFF00FFFFFF00FFFFFF00B88758B1DAC1A9FFFEFE
|
||||
FDFFFFFFFFFFFFFFFFFFFFFFFFFFFEEEE2FFFDE3D0FFFEF2E9FFFFFFFFFFDFC9
|
||||
B4FFB88758DBB8875809FFFFFF00FFFFFF00FFFFFF00B8875812B88758A5B887
|
||||
58FCB88758FFB88758FFD5B89DFFFFFFFFFFFFFFFFFFF8F3EFFFD5B89DFFB887
|
||||
58D3B8875824FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00B88758DCF5EEE7FFD5B89DFFB88758F7B887587DFFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00B887588DD4B699FFB88758F4B8875871FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00B8875822B88758DEB8875864FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00D898
|
||||
5223D4964D7DD2924CDBCD8C45F3CB8B41F3C98B40DBC78B407DC5873D23FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00D6974F53D191
|
||||
49E6D0A06AFFE0BFA0FFE3C5AEFFE3C5AEFFDFBC9FFFC89762FFBD7D35E6BC7E
|
||||
3553FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00D4964D53CF8D47F4D9B2
|
||||
8CFFE6CDB8FFE0BA9DFFD7AB85FFD6A982FFD9B391FFE1C2ABFFD4AE86FFB16B
|
||||
35F4B16F3553FFFFFF00FFFFFF00FFFFFF00D2934C22CE8E47E5D9B28CFFE6CA
|
||||
B3FFD6A97DFFD1A579FFE2C4A8FFE1C3A8FFD0A276FFD1A477FFDDBDA2FFD0AC
|
||||
85FFAB6635E5A9653522FFFFFF00FFFFFF00CE91477ECD9C68FFE7CBB4FFD4A5
|
||||
7AFFD0A077FFCF9E74FFFBF8F5FFFBF8F5FFCB9E71FFCB9D71FFCDA177FFDFC0
|
||||
A5FFB98A5BFFA45C347EFFFFFF00FFFFFF00CB8E41DBE0BC9FFFDBB393FFCFA0
|
||||
75FFCD9E72FFCB9C71FFDDBFA3FFDDBFA2FFC5996BFFC5996BFFC4986BFFD1AB
|
||||
85FFD8BA97FF9E5635DBFFFFFF00FFFFFF00C5853BF6E4C9B0FFD0A37AFFCC9D
|
||||
71FFC79A6CFFC5986BFFFFFFFFFFFFFFFEFFC39669FFC19468FFC29468FFC398
|
||||
6DFFDFC5ABFF955334F6FFFFFF00FFFFFF00BF7E35F6E3C7AFFFD0A276FFC599
|
||||
6BFFC4976AFFC49669FFEEE0D4FFFBF7F4FFBF9066FFBE8F65FFBE8F64FFBE92
|
||||
69FFDFC6AAFF925034F6FFFFFF00FFFFFF00BC7E35DBDBBC9CFFD5AD89FFC798
|
||||
6CFFC39569FFC19367FFEDDFD3FFFAF7F4FFBB8B63FFB98A63FFB88A62FFC59D
|
||||
78FFD2B893FF905135DBFFFFFF00FFFFFF00B878357EBF915EFFE0C2A8FFC596
|
||||
6CFFC29169FFE1CBB8FFFEFDFCFFFFFFFEFFEADCD0FFB4855EFFB3855EFFD4B5
|
||||
99FFAE7B56FF8F51357EFFFFFF00FFFFFF00AF703522AB6935E5CFAA81FFDABC
|
||||
A2FFBE9166FFBA8C62FFB7895FFFB3845EFFB1835DFFB0835CFFCDAA8DFFC6A5
|
||||
79FF895034E589503522FFFFFF00FFFFFF00FFFFFF00A76234539F5533F4CBA7
|
||||
7DFFD8BB9FFFC39C77FFB68A62FFB48660FFBE9672FFD1B397FFC5A377FF844F
|
||||
35F489503553FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF009F5634539955
|
||||
34E6B28057FFD5B793FFDBC3A6FFDAC3A6FFD2B490FFAB7A52FF864F34E68850
|
||||
3553FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF009754
|
||||
35239453347D925234DB8A5034F3884F34F3895035DB8950357D84503623FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF0069452100694521006945210069452100694521006945210069452100FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00EA84
|
||||
6220EC866487EC8664D0EC8664F5EC8664F5EC8664D0EC866487EA8462206945
|
||||
2100FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00DF7A5860E384
|
||||
64EBEFB7A4FFFAE4DDFFFEF9F7FFFEF9F7FFFAE4DDFFEFB7A4FFE38464EBDF7A
|
||||
586069452100FFFFFF00FFFFFF00FFFFFF00FFFFFF00CF6B4960D77F61F9F6E3
|
||||
DCFFFCFCFCFFFBFBFBFFFBFBFBFFFBFBFBFFFBFBFBFFFCFCFCFFF6E3DCFFD77F
|
||||
61F9CF6B4960FFFFFF00FFFFFF00FFFFFF00BF5C3A20C56747EBF2DFD9FFF8F8
|
||||
F8FFF7F7F7FFC15D3BFFC15D3BFFC15D3BFFC15D3BFFE9D0C8FFF8F8F8FFF2DF
|
||||
D9FFC56747EBBF5C3A20FFFFFF00FFFFFF00B34F2D87D49D8AFFF5F5F5FFF3F3
|
||||
F3FFF3F3F3FFDAA998FFDAA998FFCF8E78FFB34F2DFFD3A190FFF3F3F3FFF5F5
|
||||
F5FFD49C89FFB34F2D87FFFFFF00FFFFFF00AB4624D0EAD5CDFFF0F0F0FFF0F0
|
||||
F0FFF0F0F0FFEBEBEBFFE0E0E0FFC89C8DFFAB4624FFBD8A79FFCECECEFFD2D1
|
||||
D1FFDCC7C0FFAB4624D0FFFFFF00FFFFFF00AD4422F5F4EFEDFFEEEEEEFFEAEA
|
||||
EAFFDCDBDBFFD3D1D1FFC7A69CFFAE4725FFC1735AFFDEDCDCFFD2D0D0FFD2D0
|
||||
D0FFDFD8D7FFAD4422F5FFFFFF00FFFFFF00B74826F5F4EEEDFFE7E5E5FFDAD6
|
||||
D6FFD8D4D4FFD8D4D4FFB74826FFB74826FFE3DFDFFFD8D4D4FFD8D4D4FFD8D4
|
||||
D4FFE1D8D6FFB74826F5FFFFFF00FFFFFF00C5502ED0EAD0C8FFE1DADAFFE0D9
|
||||
D9FFE0D9D9FFE0D9D9FFF1EDEDFFF1EDEDFFE0D9D9FFE0D9D9FFE0D9D9FFE0D9
|
||||
D9FFE1C4BDFFC5502ED0FFFFFF00FFFFFF00D6593787E59D8AFFEAE2E2FFE7DF
|
||||
DFFFE7DFDFFFE7DFDFFFD65937FFD65937FFE7DFDFFFE7DFDFFFE7DFDFFFE8E0
|
||||
E0FFE19784FFD6593787FFFFFF00FFFFFF00E3603E20E66A4AEBF3D3CDFFF0E5
|
||||
E5FFEFE4E4FFEFE4E4FFE5613FFFE5613FFFEFE4E4FFEFE4E4FFEFE4E4FFEFCD
|
||||
C7FFE66A4AEBE3603E20FFFFFF00FFFFFF00FFFFFF00EE664460EF7659F9F7D4
|
||||
CEFFF7E9E9FFF7E8E8FFFCF4F4FFFCF4F4FFF7E8E8FFF7E9E9FFF6D1CAFFEF76
|
||||
58F9EE664460FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00EE664460EF6F
|
||||
4FEBF5A28FFFFAD1CAFFFCE7E5FFFCE6E5FFF9D1C9FFF4A18EFFEF6E4EEBEE66
|
||||
4460FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00EE66
|
||||
4420EE664487EE6644D0EE6644F5EE6644F5EE6644D0EE664487EE664420FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF006945210069452100FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00
|
||||
}
|
||||
end
|
||||
object MsgCtrlPopupMenu: TPopupMenu
|
||||
OnPopup = MsgCtrlPopupMenuPopup
|
||||
OnClose = MsgCtrlPopupMenuClose
|
||||
left = 240
|
||||
top = 25
|
||||
object QuickFixesMenuItem: TMenuItem
|
||||
Caption = 'QuickFixesMenuItem'
|
||||
end
|
||||
object FindMenuItem: TMenuItem
|
||||
Caption = 'FindMenuItem'
|
||||
OnClick = FindMenuItemClick
|
||||
end
|
||||
object HideSeparatorMenuItem: TMenuItem
|
||||
Caption = '-'
|
||||
end
|
||||
object HideMsgOfTypeMenuItem: TMenuItem
|
||||
Caption = 'HideMsgOfTypeMenuItem'
|
||||
OnClick = HideMsgOfTypeMenuItemClick
|
||||
end
|
||||
object UnhideMsgTypeMenuItem: TMenuItem
|
||||
Caption = 'UnhideMsgTypeMenuItem'
|
||||
object UnhideMsgTypeSeparatorMenuItem: TMenuItem
|
||||
Caption = '-'
|
||||
end
|
||||
object ClearHideMsgTypesMenuItem: TMenuItem
|
||||
Caption = 'ClearHideMsgTypesMenuItem'
|
||||
OnClick = ClearHideMsgTypesMenuItemClick
|
||||
end
|
||||
end
|
||||
object HideBelowMenuItem: TMenuItem
|
||||
Caption = 'HideBelowMenuItem'
|
||||
object HideWarningsMenuItem: TMenuItem
|
||||
AutoCheck = True
|
||||
Caption = 'HideWarningsMenuItem'
|
||||
GroupIndex = 1
|
||||
RadioItem = True
|
||||
OnClick = HideUrgencyMenuItemClick
|
||||
end
|
||||
object HideNotesMenuItem: TMenuItem
|
||||
AutoCheck = True
|
||||
Caption = 'HideNotesMenuItem'
|
||||
GroupIndex = 1
|
||||
RadioItem = True
|
||||
OnClick = HideUrgencyMenuItemClick
|
||||
end
|
||||
object HideHintsMenuItem: TMenuItem
|
||||
AutoCheck = True
|
||||
Caption = 'HideHintsMenuItem'
|
||||
GroupIndex = 1
|
||||
RadioItem = True
|
||||
OnClick = HideUrgencyMenuItemClick
|
||||
end
|
||||
object HideVerboseMenuItem: TMenuItem
|
||||
AutoCheck = True
|
||||
Caption = 'HideVerboseMenuItem'
|
||||
GroupIndex = 1
|
||||
RadioItem = True
|
||||
OnClick = HideUrgencyMenuItemClick
|
||||
end
|
||||
object HideDebugMenuItem: TMenuItem
|
||||
AutoCheck = True
|
||||
Caption = 'HideDebugMenuItem'
|
||||
GroupIndex = 1
|
||||
RadioItem = True
|
||||
OnClick = HideUrgencyMenuItemClick
|
||||
end
|
||||
object HideNoneMenuItem: TMenuItem
|
||||
AutoCheck = True
|
||||
Caption = 'HidenoneMenuItem'
|
||||
GroupIndex = 1
|
||||
RadioItem = True
|
||||
OnClick = HideUrgencyMenuItemClick
|
||||
end
|
||||
end
|
||||
object HideHintsWithoutPosMenuItem: TMenuItem
|
||||
AutoCheck = True
|
||||
Caption = 'HideHintsWithoutPosMenuItem'
|
||||
Checked = True
|
||||
OnClick = HideHintsWithoutPosMenuItemClick
|
||||
end
|
||||
object SwitchFilterMenuItem: TMenuItem
|
||||
Caption = 'SwitchFilterMenuItem'
|
||||
object FilterSeparatorMenuItem: TMenuItem
|
||||
Caption = '-'
|
||||
end
|
||||
object AddFilterMenuItem: TMenuItem
|
||||
Caption = 'AddFilterMenuItem'
|
||||
OnClick = AddFilterMenuItemClick
|
||||
end
|
||||
end
|
||||
object CopySeparatorMenuItem: TMenuItem
|
||||
Caption = '-'
|
||||
end
|
||||
object CopyMenuItem: TMenuItem
|
||||
Caption = 'CopyMenuItem'
|
||||
object CopyFilenameMenuItem: TMenuItem
|
||||
Caption = 'CopyFilenameMenuItem'
|
||||
OnClick = CopyFilenameMenuItemClick
|
||||
end
|
||||
object CopyMsgMenuItem: TMenuItem
|
||||
Caption = 'CopyMsgMenuItem'
|
||||
OnClick = CopyMsgMenuItemClick
|
||||
end
|
||||
object CopyShownMenuItem: TMenuItem
|
||||
Caption = 'CopyShownMenuItem'
|
||||
OnClick = CopyShownMenuItemClick
|
||||
end
|
||||
object CopyAllMenuItem: TMenuItem
|
||||
Caption = 'CopyAllMenuItem'
|
||||
OnClick = CopyAllMenuItemClick
|
||||
end
|
||||
end
|
||||
object SaveToFileMenuItem: TMenuItem
|
||||
Caption = 'SaveToFileMenuItem'
|
||||
object SaveAllToFileMenuItem: TMenuItem
|
||||
Caption = 'SaveAllToFileMenuItem'
|
||||
OnClick = SaveAllToFileMenuItemClick
|
||||
end
|
||||
object SaveShownToFileMenuItem: TMenuItem
|
||||
Caption = 'SaveShownToFileMenuItem'
|
||||
OnClick = SaveShownToFileMenuItemClick
|
||||
end
|
||||
end
|
||||
object StyleSeparatorMenuItem: TMenuItem
|
||||
Caption = '-'
|
||||
end
|
||||
object FilenameStyleMenuItem: TMenuItem
|
||||
Caption = 'FilenameStyleMenuItem'
|
||||
object FileStyleShortMenuItem: TMenuItem
|
||||
AutoCheck = True
|
||||
Caption = 'FileStyleShortMenuItem'
|
||||
GroupIndex = 2
|
||||
RadioItem = True
|
||||
OnClick = FileStyleMenuItemClick
|
||||
end
|
||||
object FileStyleRelativeMenuItem: TMenuItem
|
||||
AutoCheck = True
|
||||
Caption = 'FileStyleRelativeMenuItem'
|
||||
GroupIndex = 2
|
||||
RadioItem = True
|
||||
OnClick = FileStyleMenuItemClick
|
||||
end
|
||||
object FileStyleFullMenuItem: TMenuItem
|
||||
AutoCheck = True
|
||||
Caption = 'FileStyleFullMenuItem'
|
||||
GroupIndex = 2
|
||||
RadioItem = True
|
||||
OnClick = FileStyleMenuItemClick
|
||||
end
|
||||
end
|
||||
object TranslateMenuItem: TMenuItem
|
||||
AutoCheck = True
|
||||
Caption = 'TranslateMenuItem'
|
||||
OnClick = TranslateMenuItemClick
|
||||
end
|
||||
object ShowIDMenuItem: TMenuItem
|
||||
AutoCheck = True
|
||||
Caption = 'ShowIDMenuItem'
|
||||
OnClick = ShowIDMenuItemClick
|
||||
end
|
||||
object InfoSeparatorMenuItem: TMenuItem
|
||||
Caption = '-'
|
||||
end
|
||||
object AboutToolMenuItem: TMenuItem
|
||||
Caption = 'AboutToolMenuItem'
|
||||
OnClick = AboutToolMenuItemClick
|
||||
end
|
||||
end
|
||||
end
|
3524
ide/etmessageframe.pas
Normal file
3524
ide/etmessageframe.pas
Normal file
File diff suppressed because it is too large
Load Diff
314
ide/etquickfixes.pas
Normal file
314
ide/etquickfixes.pas
Normal file
@ -0,0 +1,314 @@
|
||||
{
|
||||
***************************************************************************
|
||||
* *
|
||||
* This source is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This code 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. See the GNU *
|
||||
* General Public License for more details. *
|
||||
* *
|
||||
* A copy of the GNU General Public License is available on the World *
|
||||
* Wide Web at <http://www.gnu.org/copyleft/gpl.html>. You can also *
|
||||
* obtain it by writing to the Free Software Foundation, *
|
||||
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||
* *
|
||||
***************************************************************************
|
||||
|
||||
Author: Mattias Gaertner
|
||||
|
||||
Abstract:
|
||||
Standard Quick Fixes - small tools to fix (compiler) messages.
|
||||
}
|
||||
unit etQuickFixes;
|
||||
|
||||
{$mode objfpc}{$H+}
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Classes, SysUtils, IDEExternToolIntf, Menus, CodeToolManager, CodeCache,
|
||||
LazLogger, AvgLvlTree, LazFileUtils;
|
||||
|
||||
type
|
||||
|
||||
{ TQuickFix_Hide }
|
||||
|
||||
TQuickFix_Hide = class(TMsgQuickFix)
|
||||
public
|
||||
function IsApplicable(Msg: TMessageLine): boolean;
|
||||
procedure CreateMenuItems(Fixes: TMsgQuickFixes); override;
|
||||
procedure QuickFix(Fixes: TMsgQuickFixes; Msg: TMessageLine); override;
|
||||
end;
|
||||
|
||||
{ TIDEQuickFixes }
|
||||
|
||||
TIDEQuickFixes = class(TMsgQuickFixes)
|
||||
private
|
||||
FParentMenuItem: TMenuItem;
|
||||
fMenuItemToInfo: TPointerToPointerTree; // TMenuItem to TMenuItemInfo
|
||||
procedure MenuItemClick(Sender: TObject);
|
||||
public
|
||||
constructor Create(aOwner: TComponent); override;
|
||||
destructor Destroy; override;
|
||||
procedure OnPopupMenu(aParentMenuItem: TMenuItem);
|
||||
procedure SetMsgLines(aMsg: TMessageLine);
|
||||
procedure AddMsgLine(aMsg: TMessageLine);
|
||||
procedure ClearLines;
|
||||
function AddMenuItem(Fix: TMsgQuickFix; Msg: TMessageLine; aCaption: string;
|
||||
aTag: PtrInt=0): TMenuItem; override;
|
||||
property ParentMenuItem: TMenuItem read FParentMenuItem write FParentMenuItem;
|
||||
end;
|
||||
|
||||
var
|
||||
IDEQuickFixes: TIDEQuickFixes = nil;
|
||||
|
||||
implementation
|
||||
|
||||
type
|
||||
TMenuItemInfo = class
|
||||
public
|
||||
MenuItem: TMenuItem;
|
||||
Fix: TMsgQuickFix;
|
||||
Msg: TMessageLine;
|
||||
end;
|
||||
|
||||
{ TQuickFix_Hide }
|
||||
|
||||
procedure TQuickFix_Hide.QuickFix(Fixes: TMsgQuickFixes; Msg: TMessageLine);
|
||||
var
|
||||
Code: TCodeBuffer;
|
||||
|
||||
procedure Fix(CurMsg: TMessageLine);
|
||||
var
|
||||
p: integer;
|
||||
aFilename: String;
|
||||
begin
|
||||
aFilename:=CurMsg.GetFullFilename;
|
||||
if (Code=nil) or (CompareFilenames(aFilename,Code.Filename)<>0) then begin
|
||||
Code:=CodeToolBoss.LoadFile(aFilename,true,false);
|
||||
if Code=nil then begin
|
||||
DebugLn(['TQuickFix_Hide.MenuItemClick ']);
|
||||
// ToDo: IDEMessageDialog
|
||||
exit;
|
||||
end;
|
||||
end;
|
||||
Code.LineColToPosition(CurMsg.Line,CurMsg.Column,p);
|
||||
if p<1 then begin
|
||||
DebugLn(['TQuickFix_Hide failed because invalid line, column']);
|
||||
{IDEMessageDialog(lisCCOErrorCaption,
|
||||
Format(lisInvalidLineColumnInMessage, [LineEnding, Msg.Msg]),
|
||||
mtError, [mbCancel]);}
|
||||
exit;
|
||||
end;
|
||||
|
||||
debugln(['TQuickFix_Hide.MenuItemClick ',Code.Filename,' ',CurMsg.Line,',',CurMsg.Column]);
|
||||
Code.Insert(p,'{%H-}');
|
||||
CurMsg.Flags:=CurMsg.Flags+[mlfHiddenByIDEDirectiveValid,mlfHiddenByIDEDirective];
|
||||
CurMsg.MarkFixed;
|
||||
end;
|
||||
|
||||
var
|
||||
Tree: TAvgLvlTree;
|
||||
Node: TAvgLvlTreeNode;
|
||||
i: Integer;
|
||||
begin
|
||||
Tree:=TAvgLvlTree.Create(@CompareMsgLinesSrcPos);
|
||||
try
|
||||
// get all messages to hide and sort them for position
|
||||
if Msg=nil then begin
|
||||
for i:=0 to Fixes.LineCount-1 do begin
|
||||
Msg:=Fixes.Lines[i];
|
||||
if not IsApplicable(Msg) then continue;
|
||||
Tree.Add(Msg);
|
||||
end;
|
||||
end else if IsApplicable(Msg) then
|
||||
Tree.Add(Msg);
|
||||
if Tree.Count=0 then exit;
|
||||
|
||||
{if not LazarusIDE.BeginCodeTools then begin
|
||||
DebugLn(['TQuickFix_Hide failed because IDE busy']);
|
||||
exit;
|
||||
end;}
|
||||
|
||||
// insert marks beginning with the highest line,column
|
||||
Code:=nil;
|
||||
Node:=Tree.FindHighest;
|
||||
while Node<>nil do begin
|
||||
Msg:=TMessageLine(Node.Data);
|
||||
Fix(Msg);
|
||||
Node:=Node.Precessor;
|
||||
end;
|
||||
finally
|
||||
Tree.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
function TQuickFix_Hide.IsApplicable(Msg: TMessageLine): boolean;
|
||||
begin
|
||||
Result:=false;
|
||||
if (Msg.Urgency>=mluError)
|
||||
or (Msg.Line<1) or (Msg.Column<1)
|
||||
or (mlfHiddenByIDEDirective in Msg.Flags)
|
||||
or (Msg.GetFullFilename='') then exit;
|
||||
Result:=true;
|
||||
end;
|
||||
|
||||
procedure TQuickFix_Hide.CreateMenuItems(Fixes: TMsgQuickFixes);
|
||||
var
|
||||
Msg: TMessageLine;
|
||||
i: Integer;
|
||||
List: TFPList;
|
||||
aCaption: String;
|
||||
aFilename: String;
|
||||
MultiFile: Boolean;
|
||||
begin
|
||||
List:=TFPList.Create;
|
||||
try
|
||||
MultiFile:=false;
|
||||
aFilename:='';
|
||||
for i:=0 to Fixes.LineCount-1 do begin
|
||||
Msg:=Fixes.Lines[i];
|
||||
if not IsApplicable(Msg) then continue;
|
||||
if aFilename='' then
|
||||
aFilename:=Msg.GetFullFilename
|
||||
else if CompareFilenames(aFilename,Msg.GetFullFilename)<>0 then
|
||||
MultiFile:=true;
|
||||
List.Add(Msg);
|
||||
end;
|
||||
if List.Count=0 then exit;
|
||||
if List.Count>1 then
|
||||
Fixes.AddMenuItem(Self,nil,'Hide all hints and warnings by inserting IDE directives {%H-}');
|
||||
|
||||
for i:=0 to List.Count-1 do begin
|
||||
Msg:=TMessageLine(List[i]);
|
||||
if MultiFile then
|
||||
aCaption:=Msg.GetShortFilename
|
||||
else
|
||||
aCaption:='';
|
||||
if List.Count>1 then
|
||||
aCaption+='('+IntToStr(Msg.Line)+','+IntToStr(Msg.Column)+')';
|
||||
if aCaption<>'' then
|
||||
aCaption:='Hide message at '+aCaption+' by inserting IDE directive {%H-}'
|
||||
else
|
||||
aCaption:='Hide message by inserting IDE directive {%H-}';
|
||||
Fixes.AddMenuItem(Self,Msg,aCaption);
|
||||
end;
|
||||
finally
|
||||
List.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
{ TIDEQuickFixes }
|
||||
|
||||
procedure TIDEQuickFixes.MenuItemClick(Sender: TObject);
|
||||
var
|
||||
i: Integer;
|
||||
Info: TMenuItemInfo;
|
||||
ListsMsgLines: TFPList;
|
||||
MsgLines: TMessageLines;
|
||||
begin
|
||||
Info:=TMenuItemInfo(fMenuItemToInfo[Sender]);
|
||||
if Info=nil then exit;
|
||||
try
|
||||
Info.Fix.QuickFix(Self,Info.Msg);
|
||||
finally
|
||||
ListsMsgLines:=TFPList.Create;
|
||||
try
|
||||
for i:=0 to LineCount-1 do begin
|
||||
MsgLines:=Lines[i].Lines;
|
||||
if ListsMsgLines.IndexOf(MsgLines)>=0 then continue;
|
||||
ListsMsgLines.Add(MsgLines);
|
||||
end;
|
||||
for i:=0 to ListsMsgLines.Count-1 do
|
||||
TMessageLines(ListsMsgLines[i]).ApplyFixedMarks;
|
||||
finally
|
||||
ListsMsgLines.Free;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
constructor TIDEQuickFixes.Create(aOwner: TComponent);
|
||||
begin
|
||||
inherited Create(aOwner);
|
||||
IDEQuickFixes:=Self;
|
||||
MsgQuickFixes:=Self;
|
||||
fMenuItemToInfo:=TPointerToPointerTree.Create;
|
||||
|
||||
// init standard quickfixes
|
||||
IDEQuickFixes.RegisterQuickFix(TQuickFix_Hide.Create(nil));
|
||||
end;
|
||||
|
||||
destructor TIDEQuickFixes.Destroy;
|
||||
begin
|
||||
FreeAndNil(fMenuItemToInfo);
|
||||
MsgQuickFixes:=nil;
|
||||
IDEQuickFixes:=nil;
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
procedure TIDEQuickFixes.OnPopupMenu(aParentMenuItem: TMenuItem);
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
ParentMenuItem:=aParentMenuItem;
|
||||
try
|
||||
if LineCount=0 then exit;
|
||||
for i:=0 to Count-1 do
|
||||
Items[i].CreateMenuItems(Self);
|
||||
finally
|
||||
ParentMenuItem:=nil;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TIDEQuickFixes.SetMsgLines(aMsg: TMessageLine);
|
||||
begin
|
||||
ClearLines;
|
||||
if aMsg<>nil then
|
||||
fMsg.Add(aMsg);
|
||||
end;
|
||||
|
||||
procedure TIDEQuickFixes.AddMsgLine(aMsg: TMessageLine);
|
||||
begin
|
||||
if (aMsg<>nil) and (fMsg.IndexOf(aMsg)<0) then
|
||||
fMsg.Add(aMsg);
|
||||
end;
|
||||
|
||||
procedure TIDEQuickFixes.ClearLines;
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
fMenuItemToInfo.Clear;
|
||||
for i:=ComponentCount-1 downto 0 do
|
||||
if Components[i] is TMenuItem then
|
||||
Components[i].Free;
|
||||
fMsg.Clear;
|
||||
end;
|
||||
|
||||
function TIDEQuickFixes.AddMenuItem(Fix: TMsgQuickFix; Msg: TMessageLine;
|
||||
aCaption: string; aTag: PtrInt): TMenuItem;
|
||||
var
|
||||
Info: TMenuItemInfo;
|
||||
begin
|
||||
if (Fix=nil) then
|
||||
raise Exception.Create('missing Fix');
|
||||
if (aCaption='') then
|
||||
raise Exception.Create('missing Caption');
|
||||
if (ParentMenuItem.Count>50) then exit(nil);
|
||||
Result:=TMenuItem.Create(Self);
|
||||
Info:=TMenuItemInfo.Create;
|
||||
Info.MenuItem:=Result;
|
||||
Info.Fix:=Fix;
|
||||
Info.Msg:=Msg;
|
||||
fMenuItemToInfo[Result]:=Info;
|
||||
Result.Caption:=aCaption;
|
||||
Result.Tag:=aTag;
|
||||
Result.OnClick:=@MenuItemClick;
|
||||
ParentMenuItem.Add(Result);
|
||||
end;
|
||||
|
||||
end.
|
||||
|
1073
ide/etsrceditmarks.pas
Normal file
1073
ide/etsrceditmarks.pas
Normal file
File diff suppressed because it is too large
Load Diff
@ -66,7 +66,7 @@
|
||||
<PackageName Value="SynEdit"/>
|
||||
</Item7>
|
||||
</RequiredPackages>
|
||||
<Units Count="103">
|
||||
<Units Count="108">
|
||||
<Unit0>
|
||||
<Filename Value="lazarus.pp"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
@ -784,6 +784,32 @@
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="ConvertDelphi"/>
|
||||
</Unit102>
|
||||
<Unit103>
|
||||
<Filename Value="etfpcmsgparser.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="etFPCMsgParser"/>
|
||||
</Unit103>
|
||||
<Unit104>
|
||||
<Filename Value="etmakemsgparser.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="etMakeMsgParser"/>
|
||||
</Unit104>
|
||||
<Unit105>
|
||||
<Filename Value="etmessageframe.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<HasResources Value="True"/>
|
||||
<UnitName Value="etMessageFrame"/>
|
||||
</Unit105>
|
||||
<Unit106>
|
||||
<Filename Value="etquickfixes.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="etQuickFixes"/>
|
||||
</Unit106>
|
||||
<Unit107>
|
||||
<Filename Value="etsrceditmarks.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="etSrcEditMarks"/>
|
||||
</Unit107>
|
||||
</Units>
|
||||
</ProjectOptions>
|
||||
<CompilerOptions>
|
||||
|
Loading…
Reference in New Issue
Block a user