mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-23 09:19:40 +02:00
IDE: further migration external tools
git-svn-id: trunk@42584 -
This commit is contained in:
parent
2d4a9df1ad
commit
fa26364e98
@ -698,7 +698,7 @@ type
|
||||
RealTargetOS: string;
|
||||
RealTargetCPU: string;
|
||||
RealCompilerInPath: string; // the ppc<target> in PATH
|
||||
FullVersion: string;
|
||||
FullVersion: string; // Version.Release.Patch
|
||||
ConfigFiles: TFPCConfigFileStateList;
|
||||
UnitPaths: TStrings;
|
||||
Defines: TStringToStringTree; // macro to value
|
||||
@ -902,6 +902,8 @@ type
|
||||
property ConfigCaches: TFPCTargetConfigCaches read FConfigCaches write SetConfigCaches;
|
||||
property TestFilename: string read FTestFilename write FTestFilename; // an empty file to test the compiler, will be auto created
|
||||
property ExtraOptions: string read FExtraOptions write FExtraOptions; // additional compiler options not used as key
|
||||
function GetFPCVersion(const CompilerFilename, TargetOS, TargetCPU: string;
|
||||
UseCompiledVersionAsDefault: boolean): string;
|
||||
function FindUnitSet(const CompilerFilename, TargetOS, TargetCPU,
|
||||
Options, FPCSrcDir: string;
|
||||
CreateIfNotExists: boolean): TFPCUnitSetCache;
|
||||
@ -926,6 +928,7 @@ function GetCompiledTargetCPU: string;
|
||||
function GetDefaultCompilerFilename(const TargetCPU: string = ''; Cross: boolean = false): string;
|
||||
function GetFPCTargetOS(TargetOS: string): string;
|
||||
function GetFPCTargetCPU(TargetCPU: string): string;
|
||||
function IsFPCExecutable(const CompilerFilename: string): boolean;
|
||||
|
||||
// functions to quickly setup some defines
|
||||
function CreateDefinesInDirectories(const SourcePaths, FlagName: string
|
||||
@ -2660,6 +2663,19 @@ begin
|
||||
Result:=LowerCase(TargetCPU);
|
||||
end;
|
||||
|
||||
function IsFPCExecutable(const CompilerFilename: string): boolean;
|
||||
var
|
||||
ShortFilename: String;
|
||||
begin
|
||||
Result:=false;
|
||||
if not FilenameIsAbsolute(CompilerFilename) then exit;
|
||||
if CompareFilenames(ExtractFileExt(CompilerFilename),ExeExt)<>0 then exit;
|
||||
ShortFilename:=ExtractFileNameOnly(CompilerFilename);
|
||||
if (CompareFilenames(ShortFilename,'fpc')<>0)
|
||||
and (CompareFilenames(LeftStr(ShortFilename,3),'ppc')<>0) then exit;
|
||||
Result:=true;
|
||||
end;
|
||||
|
||||
function CreateDefinesInDirectories(const SourcePaths, FlagName: string
|
||||
): TDefineTemplate;
|
||||
var
|
||||
@ -7443,7 +7459,7 @@ begin
|
||||
if FileExistsCached(Compiler) then begin
|
||||
ExtraOptions:=GetFPCInfoCmdLineOptions(ExtraOptions);
|
||||
|
||||
// get real OS and CPU
|
||||
// get version and real OS and CPU
|
||||
InfoTypes:=[fpciTargetOS,fpciTargetProcessor,fpciFullVersion];
|
||||
Info:=RunFPCInfo(Compiler,InfoTypes,ExtraOptions);
|
||||
if ParseFPCInfo(Info,InfoTypes,Infos) then begin
|
||||
@ -8333,6 +8349,22 @@ begin
|
||||
Result:=false;
|
||||
end;
|
||||
|
||||
function TFPCDefinesCache.GetFPCVersion(const CompilerFilename, TargetOS,
|
||||
TargetCPU: string; UseCompiledVersionAsDefault: boolean): string;
|
||||
var
|
||||
CfgCache: TFPCTargetConfigCache;
|
||||
begin
|
||||
if UseCompiledVersionAsDefault then
|
||||
Result:={$I %FPCVersion%}
|
||||
else
|
||||
Result:='';
|
||||
if not IsFPCExecutable(CompilerFilename) then exit;
|
||||
CfgCache:=ConfigCaches.Find(CompilerFilename,ExtraOptions,TargetOS,TargetCPU,true);
|
||||
if not CfgCache.Update(TestFilename,ExtraOptions) then exit;
|
||||
if CfgCache.FullVersion='' then exit;
|
||||
Result:=CfgCache.FullVersion;
|
||||
end;
|
||||
|
||||
function TFPCDefinesCache.FindUnitSet(const CompilerFilename, TargetOS,
|
||||
TargetCPU, Options, FPCSrcDir: string; CreateIfNotExists: boolean
|
||||
): TFPCUnitSetCache;
|
||||
|
@ -241,7 +241,8 @@ type
|
||||
FTool: TAbstractExternalTool;
|
||||
public
|
||||
destructor Destroy; override; // (main thread)
|
||||
procedure Init; virtual; // called if process started, before first line (worker thread)
|
||||
procedure Init; virtual; // called after macros resolved, before starting thread (main thread)
|
||||
procedure InitReading; virtual; // called if process started, before first line (worker thread)
|
||||
procedure Done; virtual; // called after process stopped (worker thread)
|
||||
procedure ReadLine(Line: string; OutputIndex: integer; var Handled: boolean); virtual; abstract; // (worker thread)
|
||||
function CreateMsgLine(OutputIndex: integer): TMessageLine; // (worker thread)
|
||||
@ -380,6 +381,7 @@ type
|
||||
FFreeData: boolean;
|
||||
FGroup: TExternalToolGroup;
|
||||
FResolveMacrosOnExecute: boolean;
|
||||
FThread: TThread;
|
||||
FWorkerDirectory: string;
|
||||
FWorkerMessages: TMessageLines;
|
||||
FParsers: TFPList; // list of TExtToolParser
|
||||
@ -418,6 +420,7 @@ type
|
||||
destructor Destroy; override;
|
||||
procedure EnterCriticalSection; virtual; // always use before access
|
||||
procedure LeaveCriticalSection; virtual;
|
||||
property Thread: TThread read FThread write FThread;
|
||||
procedure ConsistencyCheck; virtual;
|
||||
|
||||
property Title: string read FTitle write SetTitle;
|
||||
@ -1223,6 +1226,11 @@ begin
|
||||
|
||||
end;
|
||||
|
||||
procedure TExtToolParser.InitReading;
|
||||
begin
|
||||
|
||||
end;
|
||||
|
||||
procedure TExtToolParser.Done;
|
||||
begin
|
||||
|
||||
|
@ -129,7 +129,6 @@ type
|
||||
function CTMacroFuncProjectIncPath(Data: Pointer): boolean;
|
||||
function CTMacroFuncProjectSrcPath(Data: Pointer): boolean;
|
||||
{$IFDEF EnableNewExtTools}
|
||||
procedure FPCMsgFilePoolLoadFile(aFilename: string; out s: string);
|
||||
{$ELSE}
|
||||
function OnRunCompilerWithOptions(ExtTool: TIDEExternalToolOptions;
|
||||
CompOptions: TBaseCompilerOptions): TModalResult;
|
||||
@ -492,7 +491,6 @@ begin
|
||||
ExternalToolList.RegisterParser(TDefaultParser);
|
||||
|
||||
FPCMsgFilePool:=TFPCMsgFilePool.Create(nil);
|
||||
FPCMsgFilePool.OnLoadFile:=@FPCMsgFilePoolLoadFile;
|
||||
end;
|
||||
{$ENDIF}
|
||||
|
||||
@ -1920,6 +1918,8 @@ function TBuildManager.MacroFuncFPCVer(const Param: string; const Data: PtrInt;
|
||||
CompilerFilename: String;
|
||||
ConfigCache: TFPCTargetConfigCache;
|
||||
begin
|
||||
if OverrideFPCVer<>'' then
|
||||
exit(OverrideFPCVer);
|
||||
Result:={$I %FPCVERSION%}; // Version.Release.Patch
|
||||
if CodeToolBoss<>nil then begin
|
||||
// fetch the FPC version from the current compiler
|
||||
@ -2115,25 +2115,6 @@ begin
|
||||
end;
|
||||
|
||||
{$IFDEF EnableNewExtTools}
|
||||
procedure TBuildManager.FPCMsgFilePoolLoadFile(aFilename: string; out s: string
|
||||
);
|
||||
// Note: called by any thread
|
||||
var
|
||||
fs: TFileStreamUTF8;
|
||||
Encoding: String;
|
||||
begin
|
||||
s:='';
|
||||
fs := TFileStreamUTF8.Create(aFilename, fmOpenRead or fmShareDenyNone);
|
||||
try
|
||||
SetLength(s,fs.Size);
|
||||
if s<>'' then
|
||||
fs.Read(s[1],length(s));
|
||||
Encoding:=GuessEncoding(s);
|
||||
s:=ConvertEncoding(s,Encoding,EncodingUTF8);
|
||||
finally
|
||||
fs.Free;
|
||||
end;
|
||||
end;
|
||||
{$ELSE EnableNewExtTools}
|
||||
function TBuildManager.OnRunCompilerWithOptions(
|
||||
ExtTool: TIDEExternalToolOptions; CompOptions: TBaseCompilerOptions): TModalResult;
|
||||
|
@ -410,7 +410,7 @@ type
|
||||
function GetParsedLazarusDirectory: string;
|
||||
function GetParsedTestBuildDirectory: string;
|
||||
function GetParsedCompilerFilename: string;
|
||||
function GetParsedFPCSourceDirectory: string;
|
||||
function GetParsedFPCSourceDirectory(FPCVer: string = ''): string;
|
||||
function GetParsedMakeFilename: string;
|
||||
function GetParsedCompilerMessagesFilename: string;
|
||||
function GetParsedFPDocPaths: string;
|
||||
@ -658,6 +658,7 @@ type
|
||||
end;
|
||||
|
||||
var
|
||||
OverrideFPCVer: string = '';
|
||||
EnvironmentOptions: TEnvironmentOptions = nil;
|
||||
|
||||
function PascalExtToType(const Ext: string): TPascalExtType;
|
||||
@ -1785,8 +1786,28 @@ begin
|
||||
Result:=GetParsedValue(eopTestBuildDirectory);
|
||||
end;
|
||||
|
||||
function TEnvironmentOptions.GetParsedFPCSourceDirectory: string;
|
||||
function TEnvironmentOptions.GetParsedFPCSourceDirectory(FPCVer: string
|
||||
): string;
|
||||
var
|
||||
s: String;
|
||||
begin
|
||||
if (FPCVer<>'') and (Pos('$(',FPCSourceDirectory)>0) then begin
|
||||
s:='$(FPCVer)';
|
||||
GlobalMacroList.SubstituteStr(s);
|
||||
if s<>FPCVer then begin
|
||||
// override macro FPCVer
|
||||
OverrideFPCVer:=FPCVer;
|
||||
IncreaseCompilerParseStamp;
|
||||
try
|
||||
Result:=GetParsedValue(eopFPCSourceDirectory);
|
||||
debugln(['TEnvironmentOptions.GetParsedFPCSourceDirectory FPCVer=',FPCVer,' FPCSrcDir=',Result]);
|
||||
finally
|
||||
OverrideFPCVer:='';
|
||||
IncreaseCompilerParseStamp;
|
||||
end;
|
||||
exit;
|
||||
end;
|
||||
end;
|
||||
Result:=GetParsedValue(eopFPCSourceDirectory);
|
||||
end;
|
||||
|
||||
|
@ -32,8 +32,8 @@ interface
|
||||
uses
|
||||
Classes, SysUtils, strutils, FileProcs, KeywordFuncLists, IDEExternToolIntf,
|
||||
PackageIntf, LazIDEIntf, ProjectIntf, CodeToolsFPCMsgs, CodeToolsStructs,
|
||||
CodeCache, CodeToolManager, DirectoryCacher, BasicCodeTools, LazUTF8,
|
||||
etMakeMsgParser, EnvironmentOpts;
|
||||
CodeCache, CodeToolManager, DirectoryCacher, BasicCodeTools, DefineTemplates,
|
||||
LazUTF8, FileUtil, etMakeMsgParser, EnvironmentOpts;
|
||||
|
||||
type
|
||||
TFPCMsgFilePool = class;
|
||||
@ -59,22 +59,30 @@ type
|
||||
|
||||
TETLoadFileEvent = procedure(aFilename: string; out s: string) of object;
|
||||
|
||||
{ TFPCMsgFilePool }
|
||||
|
||||
TFPCMsgFilePool = class(TComponent)
|
||||
private
|
||||
fCritSec: TRTLCriticalSection;
|
||||
FDefaultEnglishFile: string;
|
||||
FDefaultLocaleFile: string;
|
||||
FDefaultTranslationFile: string;
|
||||
FFiles: TFPList; // list of TFPCMsgFilePoolItem sorted for loaded
|
||||
FOnLoadFile: TETLoadFileEvent;
|
||||
fPendingLog: TStrings;
|
||||
procedure Log(Msg: string; AThread: TThread);
|
||||
procedure LogSync;
|
||||
public
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
destructor Destroy; override;
|
||||
function LoadFile(aFilename: string; UpdateFromDisk: boolean): TFPCMsgFilePoolItem;
|
||||
procedure UnloadFile(var aFile: TFPCMsgFilePoolItem);
|
||||
function LoadFile(aFilename: string; UpdateFromDisk: boolean;
|
||||
AThread: TThread): TFPCMsgFilePoolItem;
|
||||
procedure UnloadFile(var aFile: TFPCMsgFilePoolItem; AThread: TThread);
|
||||
procedure EnterCriticalsection;
|
||||
procedure LeaveCriticalSection;
|
||||
procedure GetMsgFileNames(CompilerFilename, TargetOS, TargetCPU: string;
|
||||
out anEnglishFile, aTranslationFile: string); // (main thread)
|
||||
property DefaultEnglishFile: string read FDefaultEnglishFile write FDefaultEnglishFile;
|
||||
property DefaultLocaleFile: string read FDefaultLocaleFile write FDefaultLocaleFile;
|
||||
property DefaulTranslationFile: string read FDefaultTranslationFile write FDefaultTranslationFile;
|
||||
property OnLoadFile: TETLoadFileEvent read FOnLoadFile write FOnLoadFile; // (main or workerthread)
|
||||
end;
|
||||
|
||||
@ -146,8 +154,9 @@ type
|
||||
TranslationFile: TFPCMsgFilePoolItem;
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
destructor Destroy; override;
|
||||
procedure Init; override; // called before reading the output
|
||||
procedure Done; override;
|
||||
procedure Init; override; // called after macros resolved, before starting thread (main thread)
|
||||
procedure InitReading; override; // called if process started, before first line (worker thread)
|
||||
procedure Done; override; // called after process stopped (worker thread)
|
||||
procedure ReadLine(Line: string; OutputIndex: integer; var Handled: boolean); override;
|
||||
function LongenFilename(aFilename: string): string;
|
||||
procedure ImproveMessages(aSynchronized: boolean); override;
|
||||
@ -599,11 +608,36 @@ end;
|
||||
|
||||
{ TFPCMsgFilePool }
|
||||
|
||||
procedure TFPCMsgFilePool.Log(Msg: string; AThread: TThread);
|
||||
begin
|
||||
EnterCriticalsection;
|
||||
try
|
||||
fPendingLog.Add(Msg);
|
||||
finally
|
||||
LeaveCriticalSection;
|
||||
end;
|
||||
if AThread<>nil then
|
||||
LogSync
|
||||
else
|
||||
TThread.Synchronize(AThread,@LogSync);
|
||||
end;
|
||||
|
||||
procedure TFPCMsgFilePool.LogSync;
|
||||
begin
|
||||
EnterCriticalsection;
|
||||
try
|
||||
dbgout(fPendingLog.Text);
|
||||
finally
|
||||
LeaveCriticalSection;
|
||||
end;
|
||||
end;
|
||||
|
||||
constructor TFPCMsgFilePool.Create(AOwner: TComponent);
|
||||
begin
|
||||
inherited Create(AOwner);
|
||||
InitCriticalSection(fCritSec);
|
||||
FFiles:=TFPList.Create;
|
||||
fPendingLog:=TStringList.Create;
|
||||
end;
|
||||
|
||||
destructor TFPCMsgFilePool.Destroy;
|
||||
@ -629,29 +663,52 @@ begin
|
||||
if FPCMsgFilePool=Self then
|
||||
FPCMsgFilePool:=nil;
|
||||
inherited Destroy;
|
||||
FreeAndNil(fPendingLog);
|
||||
finally
|
||||
LeaveCriticalSection;
|
||||
end;
|
||||
DoneCriticalsection(fCritSec);
|
||||
end;
|
||||
|
||||
function TFPCMsgFilePool.LoadFile(aFilename: string; UpdateFromDisk: boolean
|
||||
): TFPCMsgFilePoolItem;
|
||||
function TFPCMsgFilePool.LoadFile(aFilename: string; UpdateFromDisk: boolean;
|
||||
AThread: TThread): TFPCMsgFilePoolItem;
|
||||
var
|
||||
IsMainThread: Boolean;
|
||||
|
||||
procedure ResultOutdated;
|
||||
begin
|
||||
// cached file needs update
|
||||
if Result.fUseCount=0 then begin
|
||||
FFiles.Remove(Result);
|
||||
Result.Free;
|
||||
end;
|
||||
Result:=nil;
|
||||
end;
|
||||
|
||||
function FileExists: boolean;
|
||||
begin
|
||||
if IsMainThread then
|
||||
Result:=FileExistsCached(aFilename)
|
||||
else
|
||||
Result:=FileExistsUTF8(aFilename);
|
||||
end;
|
||||
|
||||
var
|
||||
Item: TFPCMsgFilePoolItem;
|
||||
i: Integer;
|
||||
NewItem: TFPCMsgFilePoolItem;
|
||||
FileTxt: string;
|
||||
Code: TCodeBuffer;
|
||||
begin
|
||||
Result:=nil;
|
||||
if aFilename='' then exit;
|
||||
aFilename:=TrimAndExpandFilename(aFilename);
|
||||
//debugln(['TFPCMsgFilePool.LoadFile ',aFilename]);
|
||||
//Log('TFPCMsgFilePool.LoadFile '+aFilename,aThread);
|
||||
|
||||
IsMainThread:=GetThreadID=MainThreadID;
|
||||
if UpdateFromDisk then begin
|
||||
// Note: do not use FileExistsCached, called by threads
|
||||
if not FileExistsUTF8(aFilename) then begin
|
||||
debugln(['TFPCMsgFilePool.LoadFile file not found: ',aFilename]);
|
||||
if not FileExists then begin
|
||||
Log('TFPCMsgFilePool.LoadFile file not found: '+aFilename,AThread);
|
||||
exit;
|
||||
end;
|
||||
end;
|
||||
@ -665,19 +722,21 @@ begin
|
||||
Result:=Item;
|
||||
break;
|
||||
end;
|
||||
Code:=nil;
|
||||
if UpdateFromDisk then begin
|
||||
if (Result<>nil)
|
||||
and (FileAgeUTF8(aFilename)<>Result.LoadedFileAge) then begin
|
||||
// cached file needs update
|
||||
if Result.fUseCount=0 then begin
|
||||
FFiles.Remove(Result);
|
||||
Result.Free;
|
||||
end;
|
||||
Result:=nil;
|
||||
if IsMainThread then begin
|
||||
Code:=CodeToolBoss.LoadFile(aFilename,true,false);
|
||||
if (Code<>nil) and (Result<>nil) and (Code.FileDateOnDisk<>Result.LoadedFileAge)
|
||||
then
|
||||
ResultOutdated;
|
||||
end else begin
|
||||
if (Result<>nil)
|
||||
and (FileAgeUTF8(aFilename)<>Result.LoadedFileAge) then
|
||||
ResultOutdated;
|
||||
end;
|
||||
end else if Result=nil then begin
|
||||
// not yet loaded, not yet checked if file exists -> check now
|
||||
if not FileExistsUTF8(aFilename) then
|
||||
if not FileExists then
|
||||
exit;
|
||||
end;
|
||||
|
||||
@ -687,20 +746,30 @@ begin
|
||||
end else begin
|
||||
// load for the first time
|
||||
NewItem:=TFPCMsgFilePoolItem.Create(Self,aFilename);
|
||||
//debugln(['TFPCMsgFilePool.LoadFile ',NewItem.FFile<>nil,' ',aFilename]);
|
||||
//Log('TFPCMsgFilePool.LoadFile '+dbgs(NewItem.FFile<>nil)+' '+aFilename,aThread);
|
||||
if Assigned(OnLoadFile) then begin
|
||||
OnLoadFile(aFilename,FileTxt);
|
||||
NewItem.FFile.LoadFromText(FileTxt);
|
||||
NewItem.FLoadedFileAge:=FileAgeUTF8(aFilename);
|
||||
end else begin
|
||||
NewItem.FFile.LoadFromFile(aFilename);
|
||||
if IsMainThread then begin
|
||||
if Code=nil then
|
||||
Code:=CodeToolBoss.LoadFile(aFilename,true,false);
|
||||
if Code=nil then
|
||||
exit;
|
||||
NewItem.FFile.LoadFromText(Code.Source);
|
||||
NewItem.FLoadedFileAge:=Code.FileDateOnDisk;
|
||||
end else begin
|
||||
NewItem.FFile.LoadFromFile(aFilename);
|
||||
NewItem.FLoadedFileAge:=FileAgeUTF8(aFilename);
|
||||
end;
|
||||
end;
|
||||
NewItem.FLoadedFileAge:=FileAgeUTF8(aFilename);
|
||||
// load successful
|
||||
Result:=NewItem;
|
||||
NewItem:=nil;
|
||||
FFiles.Add(Result);
|
||||
inc(Result.fUseCount);
|
||||
//debugln(['TFPCMsgFilePool.LoadFile ',Result.Filename,' ',Result.fUseCount]);
|
||||
//log('TFPCMsgFilePool.LoadFile '+Result.Filename+' '+dbgs(Result.fUseCount),aThread);
|
||||
end;
|
||||
finally
|
||||
FreeAndNil(NewItem);
|
||||
@ -708,7 +777,8 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TFPCMsgFilePool.UnloadFile(var aFile: TFPCMsgFilePoolItem);
|
||||
procedure TFPCMsgFilePool.UnloadFile(var aFile: TFPCMsgFilePoolItem;
|
||||
AThread: TThread);
|
||||
var
|
||||
i: Integer;
|
||||
Item: TFPCMsgFilePoolItem;
|
||||
@ -721,7 +791,7 @@ begin
|
||||
if FFiles.IndexOf(aFile)<0 then
|
||||
raise Exception.Create('TFPCMsgFilePool.UnloadFile unknown, maybe already freed');
|
||||
dec(aFile.fUseCount);
|
||||
//debugln(['TFPCMsgFilePool.UnloadFile ',aFile.Filename,' UseCount=',aFile.fUseCount]);
|
||||
//log('TFPCMsgFilePool.UnloadFile '+aFile.Filename+' UseCount='+dbgs(aFile.fUseCount),aThread);
|
||||
if aFile.fUseCount>0 then exit;
|
||||
// not used anymore
|
||||
if not FileExistsUTF8(aFile.Filename) then begin
|
||||
@ -742,7 +812,7 @@ begin
|
||||
if Keep then begin
|
||||
// this file is the newest version => keep it in cache
|
||||
end else begin
|
||||
//debugln(['TFPCMsgFilePool.UnloadFile free: ',aFile.Filename]);
|
||||
//log('TFPCMsgFilePool.UnloadFile free: '+aFile.Filename,aThread);
|
||||
FFiles.Remove(aFile);
|
||||
aFile.Free;
|
||||
end;
|
||||
@ -762,6 +832,28 @@ begin
|
||||
System.LeaveCriticalsection(fCritSec);
|
||||
end;
|
||||
|
||||
procedure TFPCMsgFilePool.GetMsgFileNames(CompilerFilename, TargetOS,
|
||||
TargetCPU: string; out anEnglishFile, aTranslationFile: string);
|
||||
var
|
||||
FPCVer: String;
|
||||
FPCSrcDir: String;
|
||||
aFilename: String;
|
||||
begin
|
||||
anEnglishFile:=DefaultEnglishFile;
|
||||
aTranslationFile:=DefaulTranslationFile;
|
||||
if IsFPCExecutable(CompilerFilename) then
|
||||
FPCVer:=CodeToolBoss.FPCDefinesCache.GetFPCVersion(CompilerFilename,TargetOS,TargetCPU,false)
|
||||
else
|
||||
FPCVer:='';
|
||||
FPCSrcDir:=EnvironmentOptions.GetParsedFPCSourceDirectory(FPCVer);
|
||||
if FilenameIsAbsolute(FPCSrcDir) then begin
|
||||
aFilename:=AppendPathDelim(FPCSrcDir)+SetDirSeparators('compiler/msg/errore.msg');
|
||||
if FileExistsCached(aFilename) then
|
||||
anEnglishFile:=aFilename;
|
||||
// ToDo: translation
|
||||
end;
|
||||
end;
|
||||
|
||||
{ TFPCMsgFilePoolItem }
|
||||
|
||||
constructor TFPCMsgFilePoolItem.Create(aPool: TFPCMsgFilePool;
|
||||
@ -792,9 +884,9 @@ begin
|
||||
FreeAndNil(fFileExists);
|
||||
FreeAndNil(fLastSource);
|
||||
if TranslationFile<>nil then
|
||||
FPCMsgFilePool.UnloadFile(TranslationFile);
|
||||
FPCMsgFilePool.UnloadFile(TranslationFile,nil);
|
||||
if MsgFile<>nil then
|
||||
FPCMsgFilePool.UnloadFile(MsgFile);
|
||||
FPCMsgFilePool.UnloadFile(MsgFile,nil);
|
||||
FreeAndNil(DirectoryStack);
|
||||
FreeAndNil(fLineToMsgID);
|
||||
inherited Destroy;
|
||||
@ -807,7 +899,7 @@ procedure TIDEFPCParser.Init;
|
||||
//debugln(['TFPCParser.Init load Msg filename=',aFilename]);
|
||||
if (aFilename<>'') and (List=nil) then begin
|
||||
try
|
||||
List:=FPCMsgFilePool.LoadFile(aFilename,true);
|
||||
List:=FPCMsgFilePool.LoadFile(aFilename,true,nil);
|
||||
except
|
||||
on E: Exception do begin
|
||||
debugln(['TFPCParser.Init failed to load file '+aFilename+': '+E.Message]);
|
||||
@ -817,11 +909,40 @@ procedure TIDEFPCParser.Init;
|
||||
end;
|
||||
|
||||
var
|
||||
Item: TFPCMsgItem;
|
||||
i: Integer;
|
||||
Param: String;
|
||||
p: PChar;
|
||||
aTargetOS: String;
|
||||
aTargetCPU: String;
|
||||
begin
|
||||
inherited Init;
|
||||
|
||||
if FPCMsgFilePool<>nil then begin
|
||||
aTargetOS:='';
|
||||
aTargetCPU:='';
|
||||
for i:=0 to Tool.Process.Parameters.Count-1 do begin
|
||||
Param:=Tool.Process.Parameters[i];
|
||||
if Param='' then continue;
|
||||
p:=PChar(Param);
|
||||
if p^<>'-' then continue;
|
||||
if p[1]='T' then
|
||||
aTargetOS:=copy(Param,3,255)
|
||||
else if p[1]='P' then
|
||||
aTargetCPU:=copy(Param,3,255);
|
||||
end;
|
||||
FPCMsgFilePool.GetMsgFileNames(Tool.Process.Executable,aTargetOS,aTargetCPU,
|
||||
MsgFilename,TranslationFilename);
|
||||
end;
|
||||
|
||||
LoadMsgFile(MsgFilename,MsgFile);
|
||||
LoadMsgFile(TranslationFilename,TranslationFile);
|
||||
end;
|
||||
|
||||
procedure TIDEFPCParser.InitReading;
|
||||
var
|
||||
Item: TFPCMsgItem;
|
||||
begin
|
||||
inherited InitReading;
|
||||
|
||||
fLineToMsgID.Clear;
|
||||
// FPC logo lines
|
||||
@ -1571,10 +1692,6 @@ end;
|
||||
constructor TIDEFPCParser.Create(AOwner: TComponent);
|
||||
begin
|
||||
inherited Create(AOwner);
|
||||
if FPCMsgFilePool<>nil then begin
|
||||
MsgFilename:=FPCMsgFilePool.DefaultEnglishFile;
|
||||
TranslationFilename:=FPCMsgFilePool.DefaultLocaleFile;
|
||||
end;
|
||||
fLineToMsgID:=TPatternToMsgIDs.Create;
|
||||
fFileExists:=TFilenameToPointerTree.Create(false);
|
||||
end;
|
||||
@ -1984,14 +2101,14 @@ begin
|
||||
Result:='';
|
||||
if CompareText(SubTool,SubToolFPC)=0 then begin
|
||||
if FPCMsgFilePool=nil then exit;
|
||||
CurMsgFile:=FPCMsgFilePool.LoadFile(FPCMsgFilePool.DefaultEnglishFile,false);
|
||||
CurMsgFile:=FPCMsgFilePool.LoadFile(FPCMsgFilePool.DefaultEnglishFile,false,nil);
|
||||
if CurMsgFile=nil then exit;
|
||||
try
|
||||
MsgItem:=CurMsgFile.GetMsg(MsgID);
|
||||
if MsgItem=nil then exit;
|
||||
Result:=MsgItem.GetTrimmedComment(false,true);
|
||||
finally
|
||||
FPCMsgFilePool.UnloadFile(CurMsgFile);
|
||||
FPCMsgFilePool.UnloadFile(CurMsgFile,nil);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
@ -2005,14 +2122,14 @@ begin
|
||||
Result:='';
|
||||
if CompareText(SubTool,SubToolFPC)=0 then begin
|
||||
if FPCMsgFilePool=nil then exit;
|
||||
CurMsgFile:=FPCMsgFilePool.LoadFile(FPCMsgFilePool.DefaultEnglishFile,false);
|
||||
CurMsgFile:=FPCMsgFilePool.LoadFile(FPCMsgFilePool.DefaultEnglishFile,false,nil);
|
||||
if CurMsgFile=nil then exit;
|
||||
try
|
||||
MsgItem:=CurMsgFile.GetMsg(MsgID);
|
||||
if MsgItem=nil then exit;
|
||||
Result:=MsgItem.Pattern;
|
||||
finally
|
||||
FPCMsgFilePool.UnloadFile(CurMsgFile);
|
||||
FPCMsgFilePool.UnloadFile(CurMsgFile,nil);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
@ -51,7 +51,7 @@ type
|
||||
DefaultDirectory: string;
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
destructor Destroy; override;
|
||||
procedure Init; override;
|
||||
procedure InitReading; override;
|
||||
procedure ReadLine(Line: string; OutputIndex: integer; var Handled: boolean); override;
|
||||
class function DefaultSubTool: string; override;
|
||||
class function Priority: integer; override;
|
||||
@ -232,10 +232,10 @@ begin
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
procedure TIDEMakeParser.Init;
|
||||
procedure TIDEMakeParser.InitReading;
|
||||
begin
|
||||
DefaultDirectory:=Tool.WorkerDirectory;
|
||||
inherited Init;
|
||||
inherited InitReading;
|
||||
end;
|
||||
|
||||
procedure TIDEMakeParser.ReadLine(Line: string; OutputIndex: integer;
|
||||
|
@ -5,25 +5,24 @@ object MessagesFrame: TMessagesFrame
|
||||
Width = 444
|
||||
ClientHeight = 106
|
||||
ClientWidth = 444
|
||||
LCLVersion = '1.1'
|
||||
TabOrder = 0
|
||||
DesignLeft = 297
|
||||
DesignTop = 171
|
||||
object SearchPanel: TPanel
|
||||
Left = 0
|
||||
Height = 27
|
||||
Top = 79
|
||||
Height = 24
|
||||
Top = 82
|
||||
Width = 444
|
||||
Align = alBottom
|
||||
AutoSize = True
|
||||
ClientHeight = 27
|
||||
ClientHeight = 24
|
||||
ClientWidth = 444
|
||||
TabOrder = 0
|
||||
object SearchEdit: TEdit
|
||||
AnchorSideLeft.Control = HideSearchSpeedButton
|
||||
AnchorSideLeft.Side = asrBottom
|
||||
Left = 34
|
||||
Height = 25
|
||||
Height = 22
|
||||
Top = 1
|
||||
Width = 200
|
||||
BorderSpacing.Left = 10
|
||||
@ -41,47 +40,11 @@ object MessagesFrame: TMessagesFrame
|
||||
AnchorSideBottom.Control = SearchEdit
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 234
|
||||
Height = 25
|
||||
Height = 22
|
||||
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
|
||||
@ -93,47 +56,11 @@ object MessagesFrame: TMessagesFrame
|
||||
AnchorSideBottom.Control = SearchNextSpeedButton
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 257
|
||||
Height = 25
|
||||
Height = 22
|
||||
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
|
||||
@ -144,283 +71,16 @@ object MessagesFrame: TMessagesFrame
|
||||
AnchorSideBottom.Control = SearchPanel
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 1
|
||||
Height = 25
|
||||
Height = 22
|
||||
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
|
||||
|
@ -36,7 +36,7 @@ uses
|
||||
LazUTF8Classes, LazFileUtils, LazUTF8, AvgLvlTree, SynEdit,
|
||||
LResources, Forms, Buttons, ExtCtrls, Controls, LMessages, LCLType, Graphics,
|
||||
LCLIntf, Themes, ImgList, GraphType, Menus, Clipbrd, Dialogs, StdCtrls,
|
||||
IDEExternToolIntf, etSrcEditMarks, etQuickFixes;
|
||||
IDEExternToolIntf, IDEImagesIntf, MenuIntf, etSrcEditMarks, etQuickFixes;
|
||||
|
||||
const
|
||||
CustomViewCaption = '------------------------------';
|
||||
@ -221,7 +221,7 @@ type
|
||||
FHeaderBackground: array[TLMVToolState] of TColor;
|
||||
FIdleConnected: boolean;
|
||||
FImageChangeLink: TChangeLink;
|
||||
FImages: TImageList;
|
||||
FImages: TCustomImageList;
|
||||
FItemHeight: integer;
|
||||
FOnAllViewsStopped: TNotifyEvent;
|
||||
FOnOpenMessage: TOnOpenMessageLine;
|
||||
@ -253,7 +253,7 @@ type
|
||||
procedure SetActiveFilter(AValue: TLMsgViewFilter);
|
||||
procedure SetHeaderBackground(aToolState: TLMVToolState; AValue: TColor);
|
||||
procedure SetIdleConnected(AValue: boolean);
|
||||
procedure SetImages(AValue: TImageList);
|
||||
procedure SetImages(AValue: TCustomImageList);
|
||||
procedure SetItemHeight(AValue: integer);
|
||||
procedure SetOptions(NewOptions: TMsgCtrlOptions);
|
||||
procedure SetScrollLeft(AValue: integer);
|
||||
@ -368,7 +368,7 @@ type
|
||||
property BackgroundColor: TColor read FBackgroundColor write SetBackgroundColor default MCDefaultBackground;
|
||||
property HeaderBackground[aToolState: TLMVToolState]: TColor read GetHeaderBackground write SetHeaderBackground;
|
||||
property AutoHeaderBackground: TColor read FAutoHeaderBackground write SetAutoHeaderBackground default MCDefaultAutoHeaderBackground;
|
||||
property Images: TImageList read FImages write SetImages;
|
||||
property Images: TCustomImageList read FImages write SetImages;
|
||||
property UrgencyStyles[Urgency: TMessageLineUrgency]: TMsgCtrlUrgencyStyle read GetUrgencyStyles write SetUrgencyStyles;
|
||||
property SearchText: string read FSearchText write SetSearchText;
|
||||
property IdleConnected: boolean read FIdleConnected write SetIdleConnected;
|
||||
@ -383,48 +383,13 @@ type
|
||||
{ TMessagesFrame }
|
||||
|
||||
TMessagesFrame = class(TFrame)
|
||||
AboutToolMenuItem: TMenuItem;
|
||||
AddFilterMenuItem: TMenuItem;
|
||||
ClearHideMsgTypesMenuItem: TMenuItem;
|
||||
CopyAllMenuItem: TMenuItem;
|
||||
CopyFilenameMenuItem: TMenuItem;
|
||||
CopyMenuItem: TMenuItem;
|
||||
CopyMsgMenuItem: TMenuItem;
|
||||
CopySeparatorMenuItem: TMenuItem;
|
||||
CopyShownMenuItem: TMenuItem;
|
||||
FilenameStyleMenuItem: TMenuItem;
|
||||
FileStyleFullMenuItem: TMenuItem;
|
||||
FileStyleRelativeMenuItem: TMenuItem;
|
||||
FileStyleShortMenuItem: TMenuItem;
|
||||
FilterSeparatorMenuItem: TMenuItem;
|
||||
FindMenuItem: TMenuItem;
|
||||
HideBelowMenuItem: TMenuItem;
|
||||
HideDebugMenuItem: TMenuItem;
|
||||
HideHintsMenuItem: TMenuItem;
|
||||
HideHintsWithoutPosMenuItem: TMenuItem;
|
||||
HideMsgOfTypeMenuItem: TMenuItem;
|
||||
HideNoneMenuItem: TMenuItem;
|
||||
HideNotesMenuItem: TMenuItem;
|
||||
HideSearchSpeedButton: TSpeedButton;
|
||||
HideSeparatorMenuItem: TMenuItem;
|
||||
HideVerboseMenuItem: TMenuItem;
|
||||
HideWarningsMenuItem: TMenuItem;
|
||||
ImageList1: TImageList;
|
||||
InfoSeparatorMenuItem: TMenuItem;
|
||||
MsgCtrlPopupMenu: TPopupMenu;
|
||||
QuickFixesMenuItem: TMenuItem;
|
||||
SaveAllToFileMenuItem: TMenuItem;
|
||||
SaveShownToFileMenuItem: TMenuItem;
|
||||
SaveToFileMenuItem: TMenuItem;
|
||||
SearchEdit: TEdit;
|
||||
SearchNextSpeedButton: TSpeedButton;
|
||||
SearchPanel: TPanel;
|
||||
SearchPrevSpeedButton: TSpeedButton;
|
||||
ShowIDMenuItem: TMenuItem;
|
||||
StyleSeparatorMenuItem: TMenuItem;
|
||||
SwitchFilterMenuItem: TMenuItem;
|
||||
TranslateMenuItem: TMenuItem;
|
||||
UnhideMsgTypeMenuItem: TMenuItem;
|
||||
UnhideMsgTypeSeparatorMenuItem: TMenuItem;
|
||||
procedure AboutToolMenuItemClick(Sender: TObject);
|
||||
procedure AddFilterMenuItemClick(Sender: TObject);
|
||||
@ -495,11 +460,109 @@ type
|
||||
function GetDefaultSearchText: string;
|
||||
end;
|
||||
|
||||
const
|
||||
MessagesMenuRootName = 'Messages';
|
||||
var
|
||||
MsgFindMenuItem: TIDEMenuCommand;
|
||||
MsgQuickFixMenuSection: TIDEMenuSection;
|
||||
MsgClearMenuItem: TIDEMenuCommand;
|
||||
MsgHideMsgOfTypeMenuItem: TIDEMenuCommand;
|
||||
MsgUnhideMsgTypeMenuSection: TIDEMenuSection;
|
||||
MsgClearHideMsgTypesMenuItem: TIDEMenuCommand;
|
||||
MsgHideBelowMenuSection: TIDEMenuSection;
|
||||
MsgHideWarningsMenuItem: TIDEMenuCommand;
|
||||
MsgHideNotesMenuItem: TIDEMenuCommand;
|
||||
MsgHideHintsMenuItem: TIDEMenuCommand;
|
||||
MsgHideVerboseMenuItem: TIDEMenuCommand;
|
||||
MsgHideDebugMenuItem: TIDEMenuCommand;
|
||||
MsgHideNoneMenuItem: TIDEMenuCommand;
|
||||
MsgHideHintsWithoutPosMenuItem: TIDEMenuCommand;
|
||||
MsgSwitchFilterMenuSection: TIDEMenuSection;
|
||||
MsgFiltersMenuSection: TIDEMenuSection;
|
||||
MsgAddFilterMenuItem: TIDEMenuCommand;
|
||||
MsgCopyMenuSection: TIDEMenuSection;
|
||||
MsgCopyFilenameMenuItem: TIDEMenuCommand;
|
||||
MsgCopyMsgMenuItem: TIDEMenuCommand;
|
||||
MsgCopyShownMenuItem: TIDEMenuCommand;
|
||||
MsgCopyAllMenuItem: TIDEMenuCommand;
|
||||
MsgSaveToFileMenuSection: TIDEMenuSection;
|
||||
MsgSaveAllToFileMenuItem: TIDEMenuCommand;
|
||||
MsgSaveShownToFileMenuItem: TIDEMenuCommand;
|
||||
MsgFilenameStyleMenuSection: TIDEMenuSection;
|
||||
MsgFileStyleShortMenuItem: TIDEMenuCommand;
|
||||
MsgFileStyleRelativeMenuItem: TIDEMenuCommand;
|
||||
MsgFileStyleFullMenuItem: TIDEMenuCommand;
|
||||
MsgTranslateMenuItem: TIDEMenuCommand;
|
||||
MsgShowIDMenuItem: TIDEMenuCommand;
|
||||
MsgAboutToolMenuItem: TIDEMenuCommand;
|
||||
|
||||
procedure RegisterStandardMessagesViewMenuItems;
|
||||
|
||||
function CompareHideMsgType(HideMsgType1, HideMsgType2: Pointer): integer;
|
||||
function CompareLineAndHideMsgType(MessageLine1, HideMsgType1: Pointer): integer;
|
||||
|
||||
implementation
|
||||
|
||||
procedure RegisterStandardMessagesViewMenuItems;
|
||||
var
|
||||
Path: String;
|
||||
Parent: TIDEMenuSection;
|
||||
begin
|
||||
MessagesMenuRoot := RegisterIDEMenuRoot(MessagesMenuRootName);
|
||||
Path := MessagesMenuRoot.Name;
|
||||
MsgFindMenuItem := RegisterIDEMenuCommand(Path, 'Find', 'Find ...');
|
||||
MsgQuickFixMenuSection := RegisterIDEMenuSection(Path, 'Quick Fix');
|
||||
MsgClearMenuItem := RegisterIDEMenuCommand(Path, 'Clear', lisClear);
|
||||
MsgHideMsgOfTypeMenuItem:=RegisterIDEMenuCommand(Path,'HideMsgOfType','');
|
||||
MsgUnhideMsgTypeMenuSection:=RegisterIDEMenuCommand(Parent,'UnhideMsgType');
|
||||
Parent:=MsgUnhideMsgTypeMenuSection;
|
||||
Parent.ChildsAsSubMenu:=true;
|
||||
Parent.Caption:='Unhide message type';
|
||||
MsgUnhideMsgOfTypeMenuSection:=RegisterIDEMenuSection(Parent,'UnhideMsgOfTypeSection');
|
||||
MsgClearHideMsgTypesMenuItem:=RegisterIDEMenuCommand(Parent,'Unhide all','Unhide all');
|
||||
MsgHideBelowMenuSection:=RegisterIDEMenuSection(Path,'Hide Below Section');
|
||||
Parent:=MsgHideBelowMenuSection;
|
||||
Parent.ChildsAsSubMenu:=true;
|
||||
Parent.Caption:='Hide non urgent messages ...';
|
||||
MsgHideWarningsMenuItem:=RegisterIDEMenuCommand(Parent,'Hide warnings','Hide warnings');
|
||||
MsgHideNotesMenuItem:=RegisterIDEMenuCommand(Parent,'Hide notes','Hide notes');
|
||||
MsgHideHintsMenuItem:=RegisterIDEMenuCommand(Parent,'Hide hints','Hide hints');
|
||||
MsgHideVerboseMenuItem:=RegisterIDEMenuCommand(Parent,'Hide verbose messages','Hide verbose messages');
|
||||
MsgHideDebugMenuItem:=RegisterIDEMenuCommand(Parent,'Hide debug messages','Hide debug messages');
|
||||
MsgHideNoneMenuItem:=RegisterIDEMenuCommand(Parent,'Hide none, do not hide by urgency','Hide none, do not hide by urgency');
|
||||
MsgHideHintsWithoutPosMenuItem:=RegisterIDEMenuCommand(Path, 'Hide hints without source position', 'Hide hints without source position');
|
||||
MsgSwitchFilterMenuSection:=RegisterIDEMenuSection(Path,'Switch Filter Section');
|
||||
Parent:=MsgSwitchFilterMenuSection;
|
||||
Parent.ChildsAsSubMenu:=true;
|
||||
Parent.Caption:='Switch Filter Settings ...';
|
||||
MsgFiltersMenuSection:=RegisterIDEMenuSection(Parent,'Filters');
|
||||
MsgAddFilterMenuItem:=RegisterIDEMenuCommand(Parent,'Add Filter','Add filter ...');
|
||||
MsgCopyMenuSection:=RegisterIDEMenuSection(Path,'Copy');
|
||||
Parent:=MsgCopyMenuSection;
|
||||
Parent.ChildsAsSubMenu:=true;
|
||||
Parent.Caption:='Copy ...';
|
||||
MsgCopyFilenameMenuItem:=RegisterIDEMenuCommand(Parent,'Filename','Copy file name to clipboard');
|
||||
MsgCopyMsgMenuItem := RegisterIDEMenuCommand(Parent, 'Selected',lisCopySelectedMessagesToClipboard);
|
||||
MsgCopyShownMenuItem: := RegisterIDEMenuCommand(Parent, 'Shown', 'Copy shown messages to clipboard');
|
||||
MsgCopyAllMenuItem:=RegisterIDEMenuCommand(Parent,'All'.'Copy all/original messages to clipboard');
|
||||
MsgSaveToFileMenuSection:=RegisterIDEMenuSection(Path,'Save');
|
||||
Parent:=MsgSaveToFileMenuSection;
|
||||
Parent.ChildsAsSubMenu:=true;
|
||||
Parent.Caption:='Save ...';
|
||||
MsgSaveShownToFileMenuItem:=RegisterIDEMenuCommand(Parent,'Save shown messages to file ...','Shown');
|
||||
MsgSaveAllToFileMenuItem:=RegisterIDEMenuCommand(Parent,'Save all/original messages to file ...','All');
|
||||
MsgFilenameStyleMenuSection:=RegisterIDEMenuSection(Path,'Filename Styles');
|
||||
Parent:=MsgFilenameStyleMenuSection;
|
||||
Parent.ChildsAsSubMenu:=true;
|
||||
Parent.Caption:='Filename Style ...';
|
||||
MsgFileStyleShortMenuItem:=RegisterIDEMenuCommand(Parent,'Short','Short, no path');
|
||||
MsgFileStyleRelativeMenuItem:=RegisterIDEMenuCommand(Parent,'Relative','Relative');
|
||||
MsgFileStyleFullMenuItem:=RegisterIDEMenuCommand(Parent,'Full','Full');
|
||||
MsgTranslateMenuItem:=RegisterIDEMenuCommand(Path, 'Translate', 'Translate');
|
||||
MsgShowIDMenuItem:=RegisterIDEMenuCommand(Path, 'ShowID', 'Show message type ID');
|
||||
MsgAboutToolMenuItem:=RegisterIDEMenuCommand(Path, 'About', 'About Tool');
|
||||
end;
|
||||
|
||||
function CompareHideMsgType(HideMsgType1, HideMsgType2: Pointer): integer;
|
||||
var
|
||||
Item1: TLMVFilterHideMsgType absolute HideMsgType1;
|
||||
@ -1421,7 +1484,7 @@ begin
|
||||
Application.RemoveOnIdleHandler(@OnIdle);
|
||||
end;
|
||||
|
||||
procedure TMessagesCtrl.SetImages(AValue: TImageList);
|
||||
procedure TMessagesCtrl.SetImages(AValue: TCustomImageList);
|
||||
begin
|
||||
if FImages=AValue then Exit;
|
||||
if Images <> nil then
|
||||
@ -2968,11 +3031,11 @@ begin
|
||||
end;
|
||||
|
||||
InfoSeparatorMenuItem.Visible:=true;
|
||||
AboutToolMenuItem.Caption:='About '+View.Caption;
|
||||
AboutToolMenuItem.Visible:=true;
|
||||
MsgAboutToolMenuItem.Caption:='About '+View.Caption;
|
||||
MsgAboutToolMenuItem.Visible:=true;
|
||||
end else begin
|
||||
InfoSeparatorMenuItem.Visible:=false;
|
||||
AboutToolMenuItem.Visible:=false;
|
||||
MsgAboutToolMenuItem.Visible:=false;
|
||||
end;
|
||||
|
||||
if CanHideMsgType then begin
|
||||
@ -2981,26 +3044,26 @@ begin
|
||||
end else begin
|
||||
HideMsgOfTypeMenuItem.Visible:=false;
|
||||
end;
|
||||
HideHintsWithoutPosMenuItem.Checked:=MessagesCtrl.ActiveFilter.HideNotesWithoutPos;
|
||||
MsgHideHintsWithoutPosMenuItem.Checked:=MessagesCtrl.ActiveFilter.HideNotesWithoutPos;
|
||||
|
||||
CopyMsgMenuItem.Enabled:=HasText;
|
||||
CopyFilenameMenuItem.Enabled:=HasFilename;
|
||||
CopyAllMenuItem.Enabled:=not Running;
|
||||
CopyShownMenuItem.Enabled:=HasViewContent;
|
||||
SaveAllToFileMenuItem.Enabled:=not Running;
|
||||
SaveShownToFileMenuItem.Enabled:=HasViewContent;
|
||||
MsgCopyMsgMenuItem.Enabled:=HasText;
|
||||
MsgCopyFilenameMenuItem.Enabled:=HasFilename;
|
||||
MsgCopyAllMenuItem.Enabled:=not Running;
|
||||
MsgCopyShownMenuItem.Enabled:=HasViewContent;
|
||||
MsgSaveAllToFileMenuItem.Enabled:=not Running;
|
||||
MsgSaveShownToFileMenuItem.Enabled:=HasViewContent;
|
||||
|
||||
MinUrgency:=MessagesCtrl.ActiveFilter.MinUrgency;
|
||||
HideWarningsMenuItem.Checked:=MinUrgency in [mluError..mluPanic];
|
||||
HideNotesMenuItem.Checked:=MinUrgency in [mluWarning,mluImportant];
|
||||
HideHintsMenuItem.Checked:=MinUrgency=mluNote;
|
||||
HideVerboseMenuItem.Checked:=MinUrgency=mluHint;
|
||||
HideDebugMenuItem.Checked:=MinUrgency in [mluProgress..mluVerbose];
|
||||
HideNoneMenuItem.Checked:=MinUrgency=mluNone;
|
||||
MsgHideWarningsMenuItem.Checked:=MinUrgency in [mluError..mluPanic];
|
||||
MsgHideNotesMenuItem.Checked:=MinUrgency in [mluWarning,mluImportant];
|
||||
MsgHideHintsMenuItem.Checked:=MinUrgency=mluNote;
|
||||
MsgHideVerboseMenuItem.Checked:=MinUrgency=mluHint;
|
||||
MsgHideDebugMenuItem.Checked:=MinUrgency in [mluProgress..mluVerbose];
|
||||
MsgHideNoneMenuItem.Checked:=MinUrgency=mluNone;
|
||||
|
||||
FileStyleShortMenuItem.Checked:=MessagesCtrl.FilenameStyle=mcfsShort;
|
||||
FileStyleRelativeMenuItem.Checked:=MessagesCtrl.FilenameStyle=mcfsRelative;
|
||||
FileStyleFullMenuItem.Checked:=MessagesCtrl.FilenameStyle=mcfsFull;
|
||||
MsgFileStyleShortMenuItem.Checked:=MessagesCtrl.FilenameStyle=mcfsShort;
|
||||
MsgFileStyleRelativeMenuItem.Checked:=MessagesCtrl.FilenameStyle=mcfsRelative;
|
||||
MsgFileStyleFullMenuItem.Checked:=MessagesCtrl.FilenameStyle=mcfsFull;
|
||||
|
||||
UpdateUnhideItems;
|
||||
UpdateFilterItems;
|
||||
@ -3071,7 +3134,7 @@ end;
|
||||
|
||||
procedure TMessagesFrame.TranslateMenuItemClick(Sender: TObject);
|
||||
begin
|
||||
if TranslateMenuItem.Checked then
|
||||
if MsgTranslateMenuItem.Checked then
|
||||
MessagesCtrl.Options:=MessagesCtrl.Options+[mcoShowTranslated]
|
||||
else
|
||||
MessagesCtrl.Options:=MessagesCtrl.Options-[mcoShowTranslated];
|
||||
@ -3131,11 +3194,11 @@ end;
|
||||
|
||||
procedure TMessagesFrame.FileStyleMenuItemClick(Sender: TObject);
|
||||
begin
|
||||
if Sender=FileStyleShortMenuItem then
|
||||
if Sender=MsgFileStyleShortMenuItem then
|
||||
MessagesCtrl.FilenameStyle:=mcfsShort
|
||||
else if Sender=FileStyleRelativeMenuItem then
|
||||
else if Sender=MsgFileStyleRelativeMenuItem then
|
||||
MessagesCtrl.FilenameStyle:=mcfsRelative
|
||||
else if Sender=FileStyleFullMenuItem then
|
||||
else if Sender=MsgFileStyleFullMenuItem then
|
||||
MessagesCtrl.FilenameStyle:=mcfsFull;
|
||||
end;
|
||||
|
||||
@ -3148,7 +3211,7 @@ end;
|
||||
|
||||
procedure TMessagesFrame.HideHintsWithoutPosMenuItemClick(Sender: TObject);
|
||||
begin
|
||||
MessagesCtrl.ActiveFilter.HideNotesWithoutPos:=HideHintsWithoutPosMenuItem.Checked;
|
||||
MessagesCtrl.ActiveFilter.HideNotesWithoutPos:=MsgHideHintsWithoutPosMenuItem.Checked;
|
||||
end;
|
||||
|
||||
procedure TMessagesFrame.HideMsgOfTypeMenuItemClick(Sender: TObject);
|
||||
@ -3165,17 +3228,17 @@ procedure TMessagesFrame.HideUrgencyMenuItemClick(Sender: TObject);
|
||||
var
|
||||
MinUrgency: TMessageLineUrgency;
|
||||
begin
|
||||
if Sender=HideWarningsMenuItem then
|
||||
if Sender=MsgHideWarningsMenuItem then
|
||||
MinUrgency:=mluError
|
||||
else if Sender=HideNotesMenuItem then
|
||||
else if Sender=MsgHideNotesMenuItem then
|
||||
MinUrgency:=mluWarning
|
||||
else if Sender=HideHintsMenuItem then
|
||||
else if Sender=MsgHideHintsMenuItem then
|
||||
MinUrgency:=mluNote
|
||||
else if Sender=HideVerboseMenuItem then
|
||||
else if Sender=MsgHideVerboseMenuItem then
|
||||
MinUrgency:=mluHint
|
||||
else if Sender=HideDebugMenuItem then
|
||||
else if Sender=MsgHideDebugMenuItem then
|
||||
MinUrgency:=mluVerbose3
|
||||
else if Sender=HideNoneMenuItem then
|
||||
else if Sender=MsgHideNoneMenuItem then
|
||||
MinUrgency:=mluNone;
|
||||
MessagesCtrl.ActiveFilter.MinUrgency:=MinUrgency;
|
||||
end;
|
||||
@ -3396,74 +3459,54 @@ begin
|
||||
end;
|
||||
|
||||
constructor TMessagesFrame.Create(TheOwner: TComponent);
|
||||
var
|
||||
ImgIDInfo: Integer;
|
||||
ImgIDHint: Integer;
|
||||
ImgIDNote: Integer;
|
||||
ImgIDWarning: Integer;
|
||||
ImgIDError: Integer;
|
||||
ImgIDFatal: Integer;
|
||||
begin
|
||||
inherited Create(TheOwner);
|
||||
|
||||
MessagesCtrl:=TMessagesCtrl.Create(Self);
|
||||
ImgIDInfo:=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');
|
||||
with MessagesCtrl do begin
|
||||
Name:='MessagesCtrl';
|
||||
Align:=alClient;
|
||||
Parent:=Self;
|
||||
UrgencyStyles[mluNone].SetValues('?',6,clDefault);
|
||||
UrgencyStyles[mluProgress].SetValues('Fortschritt',5,clDefault);
|
||||
UrgencyStyles[mluDebug].SetValues('Debug',5,clDefault);
|
||||
UrgencyStyles[mluVerbose3].SetValues('ExtAusfuehrlich',5,clDefault);
|
||||
UrgencyStyles[mluVerbose2].SetValues('SehrAusfuerhlich',5,clDefault);
|
||||
UrgencyStyles[mluVerbose].SetValues('Ausfuerhlich',5,clDefault);
|
||||
UrgencyStyles[mluHint].SetValues('Hinweis',4,clDefault);
|
||||
UrgencyStyles[mluNote].SetValues('Note',3,clDefault);
|
||||
UrgencyStyles[mluWarning].SetValues('Warnung',2,clDefault);
|
||||
UrgencyStyles[mluImportant].SetValues('Sonstiges',4,clDefault);
|
||||
UrgencyStyles[mluError].SetValues('Fehler',1,clDefault);
|
||||
UrgencyStyles[mluFatal].SetValues('Fatal',0,clDefault);
|
||||
UrgencyStyles[mluPanic].SetValues('Panik',0,clDefault);
|
||||
Images:=ImageList1;
|
||||
|
||||
UrgencyStyles[mluNone].SetValues('?',ImgIDInfo,clDefault);
|
||||
UrgencyStyles[mluProgress].SetValues('Fortschritt',ImgIDInfo,clDefault);
|
||||
UrgencyStyles[mluDebug].SetValues('Debug',ImgIDInfo,clDefault);
|
||||
UrgencyStyles[mluVerbose3].SetValues('ExtAusfuehrlich',ImgIDInfo,clDefault);
|
||||
UrgencyStyles[mluVerbose2].SetValues('SehrAusfuerhlich',ImgIDInfo,clDefault);
|
||||
UrgencyStyles[mluVerbose].SetValues('Ausfuerhlich',ImgIDInfo,clDefault);
|
||||
UrgencyStyles[mluHint].SetValues('Hinweis',ImgIDHint,clDefault);
|
||||
UrgencyStyles[mluNote].SetValues('Note',ImgIDNote,clDefault);
|
||||
UrgencyStyles[mluWarning].SetValues('Warnung',ImgIDWarning,clDefault);
|
||||
UrgencyStyles[mluImportant].SetValues('Sonstiges',ImgIDInfo,clDefault);
|
||||
UrgencyStyles[mluError].SetValues('Fehler',ImgIDError,clDefault);
|
||||
UrgencyStyles[mluFatal].SetValues('Fatal',ImgIDFatal,clDefault);
|
||||
UrgencyStyles[mluPanic].SetValues('Panik',ImgIDFatal,clDefault);
|
||||
Images:=IDEImages.Images_12;
|
||||
PopupMenu:=MsgCtrlPopupMenu;
|
||||
end;
|
||||
|
||||
// popup menu
|
||||
QuickFixesMenuItem.Caption:='Quick Fix ...';
|
||||
FindMenuItem.Caption:='Find ...';
|
||||
// popup menu: filter
|
||||
HideBelowMenuItem.Caption:='Hide non urgent messages ...';
|
||||
HideWarningsMenuItem.Caption:='Hide warnings';
|
||||
HideNotesMenuItem.Caption:='Hide notes';
|
||||
HideHintsMenuItem.Caption:='Hide hints';
|
||||
HideVerboseMenuItem.Caption:='Hide verbose messages';
|
||||
HideDebugMenuItem.Caption:='Hide debug messages';
|
||||
HideNoneMenuItem.Caption:='Hide none, do not hide by urgency';
|
||||
HideVerboseMenuItem.Checked:=true;
|
||||
// HideMsgOfTypeMenuItem.Caption:=automatically in OnPopup
|
||||
UnhideMsgTypeMenuItem.Caption:='Unhide message type';
|
||||
ClearHideMsgTypesMenuItem.Caption:='Unhide all above';
|
||||
HideHintsWithoutPosMenuItem.Caption:='Hide hints without source position';
|
||||
SwitchFilterMenuItem.Caption:='Switch filter settings ...';
|
||||
AddFilterMenuItem.Caption:='Add filter';
|
||||
// popup menu: copy and save messages
|
||||
CopyMenuItem.Caption:='Copy ...';
|
||||
CopyFilenameMenuItem.Caption:='Copy file name';
|
||||
CopyMsgMenuItem.Caption:='Copy selected messages';
|
||||
CopyShownMenuItem.Caption:='Copy shown messages';
|
||||
CopyAllMenuItem.Caption:='Copy all messages';
|
||||
SaveToFileMenuItem.Caption:='Save to file ...';
|
||||
SaveShownToFileMenuItem.Caption:='Save shown messages to file ...';
|
||||
SaveAllToFileMenuItem.Caption:='Save all messages to file ...';
|
||||
// popup menu: view options
|
||||
TranslateMenuItem.Caption:='Translate';
|
||||
TranslateMenuItem.Checked:=mcoShowTranslated in MessagesCtrl.Options;
|
||||
ShowIDMenuItem.Caption:='Show message type ID';
|
||||
ShowIDMenuItem.Checked:=mcoShowMessageID in MessagesCtrl.Options;
|
||||
FilenameStyleMenuItem.Caption:='File name style';
|
||||
FileStyleShortMenuItem.Caption:='Short, no path';
|
||||
FileStyleRelativeMenuItem.Caption:='Relative';
|
||||
FileStyleFullMenuItem.Caption:='Full';
|
||||
|
||||
// search
|
||||
SearchPanel.Visible:=false; // by default the search is hidden
|
||||
HideSearchSpeedButton.Hint:='Hide Search';
|
||||
HideSearchSpeedButton.LoadGlyphFromLazarusResource('debugger_power_grey');
|
||||
SearchEdit.Text:=GetDefaultSearchText;
|
||||
SearchNextSpeedButton.Hint:='Find the next occurence of the phrase';
|
||||
SearchNextSpeedButton.LoadGlyphFromLazarusResource('callstack_bottom');
|
||||
SearchPrevSpeedButton.Hint:='Find the previous occurence of the phrase';
|
||||
SearchPrevSpeedButton.LoadGlyphFromLazarusResource('callstack_top');
|
||||
end;
|
||||
|
||||
destructor TMessagesFrame.Destroy;
|
||||
|
@ -44,13 +44,6 @@ type
|
||||
procedure FormDestroy(Sender: TObject);
|
||||
function OnOpenMessage(Sender: TObject; Msg: TMessageLine): boolean;
|
||||
private
|
||||
ImgIDNone: integer;
|
||||
ImgIDInformation: integer;
|
||||
ImgIDHint: integer;
|
||||
ImgIDNote: integer;
|
||||
ImgIDWarning: integer;
|
||||
ImgIDError: integer;
|
||||
ImgIDFatal: integer;
|
||||
function GetDblClickJumps: boolean;
|
||||
function GetHideMessagesIcons: boolean;
|
||||
procedure SetDblClickJumps(AValue: boolean);
|
||||
@ -83,43 +76,46 @@ type
|
||||
var
|
||||
MessagesView: TMessagesView;
|
||||
|
||||
const
|
||||
MessagesMenuRootName = 'Messages';
|
||||
|
||||
procedure RegisterStandardMessagesViewMenuItems;
|
||||
|
||||
implementation
|
||||
|
||||
procedure RegisterStandardMessagesViewMenuItems;
|
||||
begin
|
||||
|
||||
end;
|
||||
|
||||
{$R *.lfm}
|
||||
|
||||
{ TMessagesView }
|
||||
|
||||
procedure TMessagesView.FormCreate(Sender: TObject);
|
||||
var
|
||||
ImgIDInfo: Integer;
|
||||
ImgIDHint: Integer;
|
||||
ImgIDNote: Integer;
|
||||
ImgIDWarning: Integer;
|
||||
ImgIDError: Integer;
|
||||
ImgIDFatal: Integer;
|
||||
begin
|
||||
IDEMessagesWindow:=Self;
|
||||
|
||||
SourceMarks:=TETMarks.Create(Self);
|
||||
ImgIDInfo:=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');
|
||||
with SourceMarks do begin
|
||||
ImageList:=IDEImages.Images_12;
|
||||
//OnGetSynEditOfFile:=@SourceMarksGetSynEditOfFile;
|
||||
MarkStyles[mluNone].ImageIndex:=-1;
|
||||
MarkStyles[mluProgress].ImageIndex:=-1;
|
||||
MarkStyles[mluDebug].ImageIndex:=IDEImages.LoadImage(12, 'state12x12_information');
|
||||
MarkStyles[mluVerbose3].ImageIndex:=IDEImages.LoadImage(12, 'state12x12_information');
|
||||
MarkStyles[mluVerbose2].ImageIndex:=IDEImages.LoadImage(12, 'state12x12_information');
|
||||
MarkStyles[mluVerbose].ImageIndex:=IDEImages.LoadImage(12, 'state12x12_information');
|
||||
MarkStyles[mluHint].ImageIndex:=IDEImages.LoadImage(12, 'state12x12_hint');
|
||||
MarkStyles[mluNote].ImageIndex:=IDEImages.LoadImage(12, 'state12x12_note');
|
||||
MarkStyles[mluWarning].ImageIndex:=IDEImages.LoadImage(12, 'state12x12_warning');
|
||||
MarkStyles[mluDebug].ImageIndex:= ImgIDInfo;
|
||||
MarkStyles[mluVerbose3].ImageIndex:=ImgIDInfo;
|
||||
MarkStyles[mluVerbose2].ImageIndex:=ImgIDInfo;
|
||||
MarkStyles[mluVerbose].ImageIndex:=ImgIDInfo;
|
||||
MarkStyles[mluHint].ImageIndex:=ImgIDHint;
|
||||
MarkStyles[mluNote].ImageIndex:=ImgIDNote;
|
||||
MarkStyles[mluWarning].ImageIndex:=ImgIDWarning;
|
||||
MarkStyles[mluImportant].ImageIndex:=-1;
|
||||
MarkStyles[mluError].ImageIndex:=IDEImages.LoadImage(12, 'state12x12_error');
|
||||
MarkStyles[mluFatal].ImageIndex:=IDEImages.LoadImage(12, 'state12x12_fatal');
|
||||
MarkStyles[mluPanic].ImageIndex:=IDEImages.LoadImage(12, 'state12x12_fatal');
|
||||
MarkStyles[mluError].ImageIndex:=ImgIDError;
|
||||
MarkStyles[mluFatal].ImageIndex:=ImgIDFatal;
|
||||
MarkStyles[mluPanic].ImageIndex:=ImgIDFatal;
|
||||
end;
|
||||
MessagesFrame1.MessagesCtrl.SourceMarks:=SourceMarks;
|
||||
MessagesFrame1.MessagesCtrl.OnOpenMessage:=@OnOpenMessage;
|
||||
|
@ -108,7 +108,7 @@ uses
|
||||
CodeToolsDefines, DiffDialog, DiskDiffsDialog, UnitInfoDlg, EditorOptions,
|
||||
SourceEditProcs, ViewUnit_dlg, FPDocEditWindow,
|
||||
{$IFDEF EnableNewExtTools}
|
||||
etQuickFixes, etMessagesWnd,
|
||||
etQuickFixes, etMessageFrame, etMessagesWnd,
|
||||
{$ELSE}
|
||||
OutputFilter, MsgQuickFixes, MsgView,
|
||||
{$ENDIF}
|
||||
@ -9032,6 +9032,9 @@ var
|
||||
begin
|
||||
Result:=false;
|
||||
|
||||
if Screen.GetCurrentModalForm<>nil then
|
||||
exit;
|
||||
|
||||
{$IFDEF EnableNewExtTools}
|
||||
if Msg=nil then begin
|
||||
if MessagesView.SelectFirstUrgentMessage(mluError,true) then
|
||||
@ -10598,7 +10601,8 @@ var
|
||||
Msg: TMessageLine;
|
||||
{$ENDIF}
|
||||
begin
|
||||
if CodeToolBoss.ErrorMessage='' then begin
|
||||
if (Screen.GetCurrentModalForm<>nil) or (CodeToolBoss.ErrorMessage='') then
|
||||
begin
|
||||
SourceFileMgr.UpdateSourceNames;
|
||||
debugln('TMainIDE.DoJumpToCodeToolBossError No errormessage');
|
||||
exit;
|
||||
|
Loading…
Reference in New Issue
Block a user