lazbuild: write output

git-svn-id: trunk@45390 -
This commit is contained in:
mattias 2014-06-07 21:53:46 +00:00
parent 4aaa7b1242
commit 0d640e9a54

View File

@ -74,12 +74,13 @@ type
TLazExtToolConsoleView = class(TLazExtToolView) TLazExtToolConsoleView = class(TLazExtToolView)
protected protected
fWrittenLineCount: integer; fWrittenLineCount: integer;
procedure FetchAllPending; override; // (main thread)
procedure ToolExited; override; // (main thread) procedure ToolExited; override; // (main thread)
public public
constructor Create(AOwner: TComponent); override; constructor Create(AOwner: TComponent); override;
destructor Destroy; override; destructor Destroy; override;
procedure InputClosed; override; procedure InputClosed; override; // (main thread)
procedure ProcessNewMessages({%H-}AThread: TThread); override; // (worker thread, Tool is in Critical section)
procedure OnNewOutput(Sender: TObject; {%H-}FirstNewMsgLine: integer); // (main thread)
end; end;
{ TLazExtToolConsole } { TLazExtToolConsole }
@ -92,7 +93,7 @@ type
constructor Create(AOwner: TComponent); override; constructor Create(AOwner: TComponent); override;
destructor Destroy; override; destructor Destroy; override;
procedure Clear; procedure Clear;
function CreateView(aCaption: string): TLazExtToolConsoleView; function CreateView(Tool: TAbstractExternalTool): TLazExtToolConsoleView;
function FindUnfinishedView: TLazExtToolConsoleView; function FindUnfinishedView: TLazExtToolConsoleView;
property Views[Index: integer]: TLazExtToolConsoleView read GetViews; property Views[Index: integer]: TLazExtToolConsoleView read GetViews;
function Count: integer; inline; function Count: integer; inline;
@ -243,10 +244,12 @@ begin
fViews.Clear; fViews.Clear;
end; end;
function TLazExtToolConsole.CreateView(aCaption: string): TLazExtToolConsoleView; function TLazExtToolConsole.CreateView(Tool: TAbstractExternalTool
): TLazExtToolConsoleView;
begin begin
Result:=TLazExtToolConsoleView.Create(Self); Result:=TLazExtToolConsoleView.Create(Self);
Result.Caption:=aCaption; Result.Caption:=Tool.Title;
Tool.AddHandlerOnNewOutput(@Result.OnNewOutput);
fViews.Add(Result); fViews.Add(Result);
end; end;
@ -263,16 +266,6 @@ end;
{ TLazExtToolConsoleView } { TLazExtToolConsoleView }
procedure TLazExtToolConsoleView.FetchAllPending;
begin
inherited FetchAllPending;
// write all new original output to console
while fWrittenLineCount<Tool.WorkerOutput.Count do begin
debugln(Tool.WorkerOutput[fWrittenLineCount]);
inc(fWrittenLineCount);
end;
end;
procedure TLazExtToolConsoleView.ToolExited; procedure TLazExtToolConsoleView.ToolExited;
begin begin
inherited ToolExited; inherited ToolExited;
@ -290,6 +283,20 @@ begin
end; end;
end; end;
procedure TLazExtToolConsoleView.ProcessNewMessages(AThread: TThread);
begin
end;
procedure TLazExtToolConsoleView.OnNewOutput(Sender: TObject;
FirstNewMsgLine: integer);
begin
while fWrittenLineCount<Tool.WorkerOutput.Count do begin
debugln(Tool.WorkerOutput[fWrittenLineCount]);
inc(fWrittenLineCount);
end;
end;
constructor TLazExtToolConsoleView.Create(AOwner: TComponent); constructor TLazExtToolConsoleView.Create(AOwner: TComponent);
begin begin
inherited Create(AOwner); inherited Create(AOwner);
@ -646,7 +653,7 @@ begin
if ExtToolConsole<>nil then begin if ExtToolConsole<>nil then begin
// in console mode (lazbuild) all output goes unparsed to console // in console mode (lazbuild) all output goes unparsed to console
ClearParsers; ClearParsers;
View:=ExtToolConsole.CreateView(Title); View:=ExtToolConsole.CreateView(Self);
end else if (ViewCount=0) and (ParserCount>0) then begin end else if (ViewCount=0) and (ParserCount>0) then begin
// this tool generates parsed output => auto create view // this tool generates parsed output => auto create view
if IDEMessagesWindow<>nil then if IDEMessagesWindow<>nil then