unit Step2;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, MathDef, MiscRoutines, Step1;

type
  TStepTwoForm = class(TForm)
    BackwardButton: TButton;
    ForwardButton: TButton;
    CancelButton: TButton;
    Panel: TPanel;
    ImgPanel: TPanel;
    Image: TImage;
    TextPanel: TPanel;
    WhatIsThis: TLabel;
    LBPlans: TListBox;
    ChooseTypeLabel: TLabel;
    ChooseMdlLabel: TLabel;
    EModel: TEdit;
    CBUseDefaultModel: TCheckBox;
    procedure CBUseDefaultModelClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure ForwardButtonClick(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure LBPlansClick(Sender: TObject);
    procedure BackwardButtonClick(Sender: TObject);
    procedure CancelButtonClick(Sender: TObject);
    procedure FormKeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  public
    Result : TDirResult;
  end;

var
  StepTwoForm: TStepTwoForm;

implementation

{$R *.DFM}

procedure TStepTwoForm.CBUseDefaultModelClick(Sender: TObject);
begin
  if(CBUseDefaultModel.Checked) then
    ForwardButton.Caption:='Готово'
  else
    ForwardButton.Caption:='Далее >>';
end;

procedure TStepTwoForm.FormCreate(Sender: TObject);
begin
  LBPlans.ItemIndex:=0;
end;

procedure TStepTwoForm.FormShow(Sender: TObject);
var
  i : integer;
begin
  // Заполняем список
  LBPlans.Items.Clear;
  Result:=wCancel;
  for i:=0 to ExternalModules.GenCount-1 do
    LBPlans.Items.Add(ExternalModules.Gens[i].Description);
  if(LBPlans.Items.Count>0) then
  begin
    LBPlans.ItemIndex:=0;
    CBUseDefaultModel.Enabled:=True;
    LBPlans.Enabled:=True;
    LBPlansClick(nil);
  end
  else
  begin
    LBPlans.ItemIndex:=-1;
    LBPlans.Enabled:=False;
    CBUseDefaultModel.Enabled:=False;
    CBUseDefaultModel.Checked:=False;
  end;
end;

procedure TStepTwoForm.LBPlansClick(Sender: TObject);
var
  i : integer;
  pm : PModel;
begin
  if(not LBPlans.Enabled) then exit;
  i:=ExternalModules.GenByName(LBPlans.Items[LBPlans.ItemIndex]);
  if(i=-1) then
  begin
    Warning('Внутренняя ошибка: ExternalModules.GenByName()');
  end;
  pm:=ExternalModules.Gens[i]^.DefaultModel;
  if(pm<>nil) then
  begin
    EModel.Text:=pm^.Description;
    CBUseDefaultModel.Enabled:=True;
  end
  else
  begin
    EModel.Text:='(модель по умолчанию отсутствует)';
    CBUseDefaultModel.Checked:=False;
    CBUseDefaultModel.Enabled:=False;
    CBUseDefaultModelClick(nil);
  end;
end;

procedure TStepTwoForm.BackwardButtonClick(Sender: TObject);
begin
  Result:=wBack;
  Close;
end;

procedure TStepTwoForm.ForwardButtonClick(Sender: TObject);
begin
  Result:=wForward;
  Close;
end;

procedure TStepTwoForm.CancelButtonClick(Sender: TObject);
begin
  Result:=wCancel;
  Close;
end;

procedure TStepTwoForm.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  case Key of
  188: // '<'
    if(ssCtrl in Shift) then
      BackwardButtonClick(Self);
  190: // '>'
    if(ssCtrl in Shift) then
      ForwardButtonClick(Self);
  VK_ESCAPE:
    begin
      Result:=wCancel;
      Close;
    end;
  end;
end;

end.

