////////////////////////////////////////////////////////////////////////////////
//
// gdlg.cpp -  
//
////////////////////////////////////////////////////////////////////////////////
#ifndef __DHEAD_H
#include  "dhead.h"
#endif

#pragma hdrstop

#include "GDlg.h"

#pragma package(smart_init)
#pragma resource "*.dfm"
TGaykaDlg *GaykaDlg;


//-------------------------------------------------------------------------------
//
// ---
__fastcall TGaykaDlg::TGaykaDlg(TComponent* Owner,Gayka5915 & _g )
        : TForm(Owner), G( _g)
{
 char buf[128];

  struct StTmpL {
    char s[20];
    float dr;
  } tmpL;

  cboxSpcObj->Checked =  G.par.flagAttr !=0 ;
  switch (G.par.drawType)
  {
    case ID_VID    : RadioButton1->Checked = true; break;
    case ID_SIDEVID: RadioButton2->Checked = true; break;
    case ID_TOPVID : RadioButton3->Checked = true; break;
    case ID_VIDSEC : RadioButton4->Checked = true; break;
  }
  cboxPitch->Checked  = G.tmp.f & PITCH;
  cboxSimple->Checked = G.tmp.f & SIMPLE;
  cboxAxis->Checked   = !(G.tmp.f & AXIS_OFF);
  rbIspoln1->Checked  = !(G.tmp.f & ISPOLN);
  rbIspoln2->Checked  = G.tmp.f & ISPOLN;
  cboxKey->Checked    = G.tmp.f1 & KEY_S;
  cboxKey->Enabled    = G.tmp.f1 & KEY_S_GRAY;

  if ( G.OpenGaykaBase() )
  {
    int i = 1;
    while( i!=0 )
    {
      i=::ReadRecord(  G.base.bg, G.base.rg1, &tmpL );
      if ( i!=0 )
      {
        CheckDecimelPart( tmpL.s );
        ComboBox->Items->Add( String(tmpL.s) );
      }
    }
    sprintf( buf, "%.1f", G.tmp.dr );
    CheckDecimelPart( buf );
    ComboBox->ItemIndex = ComboBox->Items->IndexOf( buf );
    ::sprintf( buf, "%g", G.tmp.hatchAng );
    angleEdit->Text = buf;
    ::sprintf( buf, "%g", G.tmp.hatchShag );
    stepEdit->Text = buf;
  }
  PaintBox1->Repaint();
}


//-------------------------------------------------------------------------------
//
// ---
__fastcall TGaykaDlg::~TGaykaDlg()
{
  G.CloseGaykaBase();
}


//-------------------------------------------------------------------------------
//  
// ---
void __fastcall TGaykaDlg::cboxSpcObjClick(TObject *Sender)
{
  G.par.flagAttr = cboxSpcObj->Checked ? 1 :0;
}


//-------------------------------------------------------------------------------
//  
// ---
void __fastcall TGaykaDlg::PaintBox1Click(TObject *Sender)
{
  DrawSlide(Panel1->Handle, G.ChoiceBMP());
}


//-------------------------------------------------------------------------------
//  
// ---
void TGaykaDlg::ChangeVid( int _type)
{
  switch ( _type)
  {
    case 0 : G.par.drawType = ID_VID;     break;
    case 1 : G.par.drawType = ID_SIDEVID; break;
    case 2 : G.par.drawType = ID_TOPVID;  break;
    case 3 : G.par.drawType = ID_VIDSEC;  break;
  }
  angleEdit->Enabled = G.par.drawType == ID_VIDSEC;
  stepEdit ->Enabled = G.par.drawType == ID_VIDSEC;
  PaintBox1->Repaint();
}


//-------------------------------------------------------------------------------
// 
// ---
void __fastcall TGaykaDlg::RadioButton1Click(TObject *Sender)
{
  ChangeVid( 0 );
}


//-------------------------------------------------------------------------------
//  
// ---
void __fastcall TGaykaDlg::RadioButton2Click(TObject *Sender)
{
  ChangeVid( 1 );
}


//-------------------------------------------------------------------------------
//  
// ---
void __fastcall TGaykaDlg::RadioButton3Click(TObject *Sender)
{
  ChangeVid( 2 );
}


//-------------------------------------------------------------------------------
// /
// ---
void __fastcall TGaykaDlg::RadioButton4Click(TObject *Sender)
{
  ChangeVid( 3 );
}


//-------------------------------------------------------------------------------
//    
// ---
void __fastcall TGaykaDlg::ComboBoxChange(TObject *Sender)
{
  float value;
  int code;
  AnsiString s = ComboBox->Items->Strings[ComboBox->ItemIndex];
  DecimalSeparator = '.';
  float d = StrToFloat( s );
  G.tmp.dr = d;
  if ( !G.ReadGaykaBase ( G.tmp.dr ) )
    Close();
  cboxKey->Checked = G.tmp.f1 & KEY_S;
  cboxKey->Enabled = G.tmp.f1 & KEY_S_GRAY;
}


//-------------------------------------------------------------------------------
//  
// ---
void __fastcall TGaykaDlg::cboxPitchClick(TObject *Sender)
{
 if ( cboxPitch->Checked )
   G.tmp.f |= PITCH;
 else
   G.tmp.f &=~PITCH;
 if ( !G.ReadGaykaBase ( G.tmp.dr ) )
   Close();
}


//-------------------------------------------------------------------------------
// 
// ---
void __fastcall TGaykaDlg::cboxSimpleClick(TObject *Sender)
{
  if (cboxSimple->Checked)
  {
    G.tmp.f |= SIMPLE;
    rbIspoln2->Enabled = False;
  }
  else
  {
    G.tmp.f &=~SIMPLE;
    rbIspoln2->Enabled = True;
  }
  PaintBox1->Repaint();

}


//-------------------------------------------------------------------------------
//  
// ---
void __fastcall TGaykaDlg::cboxAxisClick(TObject *Sender)
{
 if (cboxAxis->Checked)
   G.tmp.f &=~AXIS_OFF;
 else
   G.tmp.f |=AXIS_OFF;
}


//-------------------------------------------------------------------------------
//  
// ---
void  TGaykaDlg::CheckIspoln()
{
if( rbIspoln2->Checked )
  G.tmp.f |= ISPOLN;
else
  G.tmp.f &=~ISPOLN;
  PaintBox1->Repaint();
}


//-------------------------------------------------------------------------------
//  1
// ---
void __fastcall TGaykaDlg::rbIspoln1Click(TObject *Sender)
{
  CheckIspoln();
}


//-------------------------------------------------------------------------------
//  2
// ---
void __fastcall TGaykaDlg::rbIspoln2Click(TObject *Sender)
{
  CheckIspoln();
}


//-------------------------------------------------------------------------------
//    
// ---
void __fastcall TGaykaDlg::cboxKeyClick(TObject *Sender)
{
  if (cboxKey->Checked)
    G.tmp.f1|=KEY_S ;
  else
    G.tmp.f1 &=~KEY_S ;
  if ( !G.ReadGaykaBase ( G.tmp.dr ) )
    Close();
}


//-------------------------------------------------------------------------------
//   - 
// ---
void __fastcall TGaykaDlg::angleEditChange(TObject *Sender)
{
  G.tmp.hatchAng = ::atof( angleEdit->Text.c_str() );
}


//-------------------------------------------------------------------------------
//   - 
// ---
void __fastcall TGaykaDlg::stepEditChange(TObject *Sender)
{
  G.tmp.hatchShag = ::atof( stepEdit->Text.c_str() );
}


//-------------------------------------------------------------------------------
//  
// ---
void __fastcall TGaykaDlg::helpButtonClick(TObject *Sender)
{
//  char fileName[255];
//  if ( GetFullName("gayka.hlp",  fileName) )
//    ksOpenHelpFile( fileName, HELP_CONTEXT, 1 );
//  else
   reference obj = FindObj( 0, 0, 1000000 );
   ksOpenMacro( obj );
     LineSeg( 0, 0, 0, 10, 1 );
   EndObj();
   EnableTaskAccess( 0 );
   Application->MessageBox( " gayka.hlp  ", "", MB_OK );
   PumpWaitingMessages();
   EnableTaskAccess( 1 );

//    Error( " gayka.hlp  " );

}


//-------------------------------------------------------------------------------
// 
// ---
void __fastcall TGaykaDlg::FormActivate(TObject *Sender)
{
  ::ConvertLangForm( this );
}


