lazarus/debugger/pseudoterminaldlg.pp
martin 68dcd42126 DBG: Fix handling console input
git-svn-id: trunk@37838 -
2012-07-01 14:20:24 +00:00

74 lines
1.5 KiB
ObjectPascal

unit PseudoTerminalDlg;
{$mode objfpc}{$H+}
interface
uses
IDEWindowIntf,
Forms, StdCtrls, DebuggerDlg, BaseDebugManager, LCLType;
type
{ TPseudoConsoleDlg }
TPseudoConsoleDlg = class(TDebuggerDlg)
Memo1: TMemo;
procedure Memo1UTF8KeyPress(Sender: TObject; var UTF8Key: TUTF8Char);
private
{ private declarations }
protected
procedure DoClose(var CloseAction: TCloseAction); override;
public
{ public declarations }
procedure AddOutput(const AText: String);
procedure Clear;
end;
var
PseudoConsoleDlg: TPseudoConsoleDlg;
implementation
var
PseudeoTerminalDlgWindowCreator: TIDEWindowCreator;
{ TPseudoConsoleDlg }
procedure TPseudoConsoleDlg.Memo1UTF8KeyPress(Sender: TObject;
var UTF8Key: TUTF8Char);
begin
DebugBoss.DoSendConsoleInput(Utf8Key);
Utf8Key := '';
end;
procedure TPseudoConsoleDlg.DoClose(var CloseAction: TCloseAction);
begin
inherited DoClose(CloseAction);
CloseAction := caHide;
end;
procedure TPseudoConsoleDlg.AddOutput(const AText: String);
begin
Memo1.Text:=Memo1.Text+AText;
while Memo1.Lines.Count > 5000 do
Memo1.Lines.Delete(0);
Memo1.SelStart := length(Memo1.Text);
end;
procedure TPseudoConsoleDlg.Clear;
begin
Memo1.Text := '';
end;
{$R *.lfm}
initialization
PseudeoTerminalDlgWindowCreator := IDEWindowCreators.Add(DebugDialogNames[ddtPseudoTerminal]);
PseudeoTerminalDlgWindowCreator.OnCreateFormProc := @CreateDebugDialog;
PseudeoTerminalDlgWindowCreator.CreateSimpleLayout;
end.