unit UnitfrmDebug;

interface

uses
  SysUtils, Windows, Messages, Classes, Graphics, Controls,
  StdCtrls, ExtCtrls, Forms;

type
  TfrmDebug = class(TForm)
    cmdMore: TButton;
    pnlCompile: TPanel;
    lblFile: TStaticText;
    lblStatus: TStaticText;
    lblHints: TStaticText;
    lblWarnings: TStaticText;
    lblErrors: TStaticText;
    cmdCancelOkay: TButton;
    bvlDelimeter: TBevel;
    lstOutput: TListBox;
    procedure cmdMoreClick(Sender: TObject);
    procedure cmdCancelOkayClick(Sender: TObject);
    procedure lstOutputDblClick(Sender: TObject);
  private
    FCompiling: Boolean;
    procedure SetCompiling(const Value: Boolean);
  public
    property Compiling: Boolean read FCompiling write SetCompiling;
  end;

var
  frmDebug: TfrmDebug;

const DEFAULT_HEIGHT = 165;
      MAX_HEIGHT = 277;

implementation

uses UnitfrmMain, UnitFunc, UnitfrmOptions;

{$R *.DFM}

procedure TfrmDebug.cmdMoreClick(Sender: TObject);
begin
  if Height = DEFAULT_HEIGHT then begin
    Height := MAX_HEIGHT;
    cmdMore.Caption := '<< Compiler Output';
  end
  else begin
    Height := DEFAULT_HEIGHT;
    cmdMore.Caption := 'Compiler Output >>';
  end;
end;

procedure TfrmDebug.SetCompiling(const Value: Boolean);
begin
  FCompiling := Value;
  if Value then
    cmdCancelOkay.Caption := 'Cancel'
  else
    cmdCancelOkay.Caption := 'Close';
end;

procedure TfrmDebug.cmdCancelOkayClick(Sender: TObject);
var i: integer;
begin
  if Compiling then begin
    i := GetProcId('amxxsc.exe');
    if i <> -1 then
      KillIt(i);
    Compiling := False;
  end
  else begin
    Hide;
    frmMain.Show;
  end;
end;

procedure TfrmDebug.lstOutputDblClick(Sender: TObject);
begin
  if lstOutput.ItemIndex <> -1 then begin
    if Pos('Warning', lstOutput.Items[lstOutput.ItemIndex]) = 1 then
      MessageBox(Handle, PChar(lstOutput.Items[lstOutput.ItemIndex]), 'Warning', MB_ICONWARNING)
    else if Pos('Error', lstOutput.Items[lstOutput.ItemIndex]) = 1 then
      MessageBox(Handle, PChar(lstOutput.Items[lstOutput.ItemIndex]), 'Error', MB_ICONERROR)
    else
      MessageBox(Handle, PChar(lstOutput.Items[lstOutput.ItemIndex]), 'Information', MB_ICONINFORMATION)
  end;
end;

end.