unit ConvertForm;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, StdCtrls, MakeDawg;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    InputFileField: TEdit;
    InputSelectButton: TButton;
    OutputFileField: TEdit;
    Label2: TLabel;
    OutputSelectButton: TButton;
    Button1: TButton;
    StatusBar1: TStatusBar;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    ProgressLabel: TLabel;
    ProgressBar1: TProgressBar;
    procedure SetOutputFilename;
    procedure InputSelectButtonClick(Sender: TObject);
    procedure OutputSelectButtonClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  TConvertThread = class(TThread)
  private
  protected
        procedure Execute; override;
  end;

var
  Form1: TForm1;

procedure ReceiveConversionStatus(StatusMessage: String);
procedure ReceiveProgressUpdate(progPct: Integer);

implementation

{$R *.DFM}

procedure TForm1.SetOutputFilename;
var filename: String;
    i: Integer;
begin
        filename := InputFileField.Text;

        i := Length(filename);

        while (i > 0) and (filename[i] <> '.') and (filename[i] <> '\') do
        begin
                i := i - 1;
        end;

        if (i <= 0) then
        begin
                filename := filename + '.DAW';
        end
        else if (filename[i] = '\') then
        begin
                filename := filename + '.DAW';
        end
        else if (filename[i] = '.') then
        begin
                SetLength(filename, i);
                filename := filename + 'DAW';
        end;

        OutputFileField.Text := filename;
end;

procedure TForm1.InputSelectButtonClick(Sender: TObject);
begin
     OpenDialog1.DefaultExt := '.TXT';

     if OpenDialog1.Execute then
     begin
          InputFileField.Text := OpenDialog1.FileName;
          if Length(OutputFileField.Text) = 0 then
          begin
                  SetOutputFilename;
          end;
     end;
end;

procedure TForm1.OutputSelectButtonClick(Sender: TObject);
begin
     SaveDialog1.DefaultExt := '.DAW';
     SaveDialog1.InitialDir := OpenDialog1.InitialDir;
     
     if SaveDialog1.Execute then
     begin
          OutputFileField.Text := SaveDialog1.FileName;
     end;

end;

procedure ReceiveConversionStatus(StatusMessage: String);
begin
        Form1.StatusBar1.Panels[0].Text := StatusMessage;
        Form1.ProgressLabel.Caption := StatusMessage;
end;

procedure ReceiveProgressUpdate(progPct: Integer);
begin
        if progPct >= 0 then
        begin
                Form1.ProgressBar1.Visible := True;
                Form1.ProgressBar1.Position := progPct;
        end
        else
        begin
                Form1.ProgressBar1.Visible := False;
        end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
        TConvertThread.Create(false);
end;

procedure TConvertThread.Execute;
begin
        CreateDawg(Form1.InputFileField.Text, Form1.OutputFileField.Text,
                ReceiveConversionStatus, ReceiveProgressUpdate);
end;

end.
