//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "ide_mbutton.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
Tide_mbutton_Form *ide_mbutton_Form;
//---------------------------------------------------------------------------


//[다른 폼]
//{
    #include "main.h"
    #include "ide_main.h"
    #include "ide_submenu.h"

//}


__fastcall Tide_mbutton_Form::Tide_mbutton_Form(TComponent* Owner)
        : TForm(Owner)
{
  //[VAR]
  //{
      AnsiString  bmp_path;
      int         i;
  //}

  //[환경변수]
  //{
      //[2007.10.02.화][추가!!!]
      IDE_Get_Option(&_ide_option);

  //}

  //[초기화]
  //{
      //-----------------------------------------------------------
      this->Left     = ide_menu_Form->Left;
      this->Top      = ide_menu_Form->Top + ide_menu_Form->Height;
      this->Width    = 155;
      this->Height   = 48;
      this->Color    = clWhite;

      //실제 그림 영역을 생성한다.
      _bmp_ = new Graphics::TBitmap;

      //그림 영역 크기 설정.
      _bmp_->Width       = this->Width;
      _bmp_->Height      = this->Height;

      //24bit bitmap 으로 지정한다.
      _bmp_->PixelFormat = pf24bit;
      //-----------------------------------------------------------
  //}

  //[컨트롤 생성]
  //{
      //[버튼]
      //{
          //[주기능 버튼 생성]
          //{
              //생성은 일괄적으로 해도 된다.

              for(i = 0; i < d_main_bmpbtns_count; i++)
              {
                _main_bmpbtns[i]          = new Tgui_bmpbutton_Form(this);
                _main_bmpbtns[i]->Parent  = this;
                _main_bmpbtns[i]->Visible = true;

                //[공통 속성 처리]
                //{
                    _main_bmpbtns[i]->_Top(3);
                    _main_bmpbtns[i]->_Width(50);
                    _main_bmpbtns[i]->_Height(42);
                    _main_bmpbtns[i]->_Image_Width(50);
                    _main_bmpbtns[i]->_Image_Height(42);
                    _main_bmpbtns[i]->_Border(false);
                //}
              }
          //}

          //[초기화]
          //{
              i = 3;

              //[save]
              //{
                  //위치 조정.
                  _main_bmpbtns[d_main_bmpbtn_save]->_Left(i);
                  //{
                      //다음 위치 조정.
                      i += 50;//_main_bmpbtns[d_main_bmpbtn_save]->Width;
                  //}

                  //그림 할당하기.
                  bmp_path = ExtractFilePath(Application->ExeName) + "sysbmp\\button\\main\\save.bmp";

                  //그림 지정.
                  _main_bmpbtns[d_main_bmpbtn_save]->_Bitmap(bmp_path);

                  //[풍선 도움말 설정]
                  //{
                      //[2009.04.30.목][추가!!!]
                      _main_bmpbtns[d_main_bmpbtn_save]->_BalloonHelpUse(true);
                      _main_bmpbtns[d_main_bmpbtn_save]->_BalloonHelpStr
                      ("현재 편집 중인 문서를 저장합니다."
                      );

                  //}

                  //동작함수 등록.
                  _main_bmpbtns[d_main_bmpbtn_save]->_EVENT_Click = _EVENT_SaveButton_Click;
              //}

              //[save-all]
              //{
                  //위치 조정.
                  _main_bmpbtns[d_main_bmpbtn_save_all]->_Left(i);
                  //{
                      //다음 위치 조정.
                      i += 50;//_main_bmpbtns[d_main_bmpbtn_save_all]->Width;
                  //}

                  //그림 할당하기.
                  bmp_path = ExtractFilePath(Application->ExeName) + "sysbmp\\button\\main\\saveall.bmp";

                  //그림 지정.
                  _main_bmpbtns[d_main_bmpbtn_save_all]->_Bitmap(bmp_path);

                  //[풍선 도움말 설정]
                  //{
                      //[2009.04.30.목][추가!!!]
                      _main_bmpbtns[d_main_bmpbtn_save_all]->_BalloonHelpUse(true);
                      _main_bmpbtns[d_main_bmpbtn_save_all]->_BalloonHelpStr
                      ("현재 열려있는 모든 문서를 저장합니다.\r\n"
                       "단, [새문서] 는 해당하지 않으므로 별도 저장해 주어야 합니다."
                      );

                  //}

                  //동작함수 등록.
                  _main_bmpbtns[d_main_bmpbtn_save_all]->_EVENT_Click = _EVENT_SaveAllButton_Click;
              //}

              //[open]
              //{
                  //위치 조정.
                  _main_bmpbtns[d_main_bmpbtn_open]->_Left(i);
                  //{
                      //다음 위치 조정.
                      i += 50;//_main_bmpbtns[d_main_bmpbtn_open]->Width;
                  //}

                  //그림 할당하기.
                  bmp_path = ExtractFilePath(Application->ExeName) + "sysbmp\\button\\main\\open.bmp";

                  //그림 지정.
                  _main_bmpbtns[d_main_bmpbtn_open]->_Bitmap(bmp_path);

                  //[풍선 도움말 설정]
                  //{
                      //[2009.04.30.목][추가!!!]
                      _main_bmpbtns[d_main_bmpbtn_open]->_BalloonHelpUse(true);
                      _main_bmpbtns[d_main_bmpbtn_open]->_BalloonHelpStr
                      ("지원되는 문서를 열수있습니다.\r\n"
                       "단, [설계묶음] 은 이곳에서 열수 없으므로\r\n"
                       "전용 항목을 사용하여 열어 주어야 합니다."
                      );

                  //}

                  //동작함수 등록.
                  _main_bmpbtns[d_main_bmpbtn_open]->_EVENT_Click = _EVENT_OpenButton_Click;

              //}

          //}

      //}

  //}

  //[컨트롤 그리기]
  //{
      //컨트롤을 그려서 모양을 만든다.
      _Shape();
  //}

  return;

}

__fastcall Tide_mbutton_Form::~Tide_mbutton_Form(void)
{
  //[2012.04.29.일][수정!!!]{-----------
  //안전을 위하여 선언한 역순으로 삭제.
  //}-----------------------------------

  //[VAR]
  //{
      int  i;

  //}

  for(i = 0; i < d_main_bmpbtns_count; i++)
  {
    if(_main_bmpbtns[i] != NULL) { delete _main_bmpbtns[i]; _main_bmpbtns[i] = NULL; }

  }

  if(_bmp_ != NULL) { delete _bmp_; _bmp_ = NULL; }

}

//[서브클래싱]------------------------------------------------------------------

void __fastcall Tide_mbutton_Form::WndProc(Messages::TMessage  &Message)
{
  //[2006.12.12.화][생성!!!]{-----------------------------------------------------
  //TForm 의 경우는 바탕을 칠하고 OnPaint() 를 발생하게 되므로 실제 _Draw() 를
  //OnPaint() 에서 사용하는 경우는 크기가 변경되는 경우 바로 칠해지지 않아서
  //하얀색 바탕이 그대로 나오게 되어 보기 좋지 않게 된다.
  //따라서 TForm 자체의 바탕을 그리는 WM_ERASEBKGND 에서 바로 _Draw() 를 사용하여
  //그리고 OnPaint() 는 처리하지 않는다.
  //C++Builder 와 같이 완벽하게 처리되는 깜박임이 전혀 없는 화면을 만들수 있다.
  //}-----------------------------------------------------------------------------

  if(Message.Msg == WM_ERASEBKGND)
  {
    _Draw();

    //바로 죵료하지 않으면 WM_ERASEBKGND 메세지가 다음 TForm::WndProc(Message); 에서
    //다시 처리 되어 TForm->Color 로 칠해지게 되어 _Draw() 로 그린 것이 다 지워지므로
    //바로 종료한다.
    return;

  }

  //[기본처리]
  //{
      //기본 메세지는 반드시 처리 되어야 한다.
      TForm::WndProc(Message);
  //}

  return;

}

void __fastcall Tide_mbutton_Form::_Border(void)
{
  //[2006.10.22.일]{----------------------------------------------------------
  //테두리는 아래 한줄이면 된다.
  //테두리는 직접 보이는 것이고 내용에 영향을 주지 않아야 하므로 직접 그린다.
  //}-------------------------------------------------------------------------

  //[테두리 만들기]
  //{
      _bmp_->Canvas->Pen->Color   = _ide_option->color_0;
      _bmp_->Canvas->Pen->Width   = 1;
      //_bmp_->Canvas->Brush->Style = bsClear;
      _bmp_->Canvas->MoveTo(0, _bmp_->Height - 1);
      _bmp_->Canvas->LineTo(_bmp_->Width, _bmp_->Height - 1);
  //}

  return;

}

void __fastcall Tide_mbutton_Form::_Shape(void)
{
  //[2006.10.19.목][생성!!!]{-------------------
  //[하위항목] 구조체 정보를 대상으로 처리한다.
  //}-------------------------------------------

  //[VAR]
  //{
      int    x, y, w, h;
  //}

  //[바탕색]
  //{
      _bmp_->Canvas->Brush->Color = IDE_COLOR_2;
      _bmp_->Canvas->FillRect(this->ClientRect);
  //}

  //[테두리]
  //{
      _Border();
  //}

  //[view]{------------------------
  //그린 것을 보여준다.
  //this->Canvas->Draw(0, 0, _bmp_);
  _Draw();
  //}------------------------------

  return ;

}

void __fastcall Tide_mbutton_Form::_Draw(void)
{
  //[2006.10.31.화][생성!!!]

  BitBlt(this->Canvas->Handle, 0, 0,
         this->Width, this->Height,
         _bmp_->Canvas->Handle, 0, 0, SRCCOPY);

  return;

}

void __fastcall Tide_mbutton_Form::_Enable(bool  pEnable)
{
  //[2009.04.10.금][생성!!!]{--------------------------------------------
  //내부 버튼들을 전부 비활성 상태로 만들고 자신도 비활성 상태로 만든다.
  //}--------------------------------------------------------------------

   _main_bmpbtns[d_main_bmpbtn_save]->_Enable(pEnable);
   _main_bmpbtns[d_main_bmpbtn_save_all]->_Enable(pEnable);
   _main_bmpbtns[d_main_bmpbtn_open]->_Enable(pEnable);

   this->Enabled = pEnable;

  return;

}

//[동작함수]--------------------------------------------------------------------

void __fastcall Tide_mbutton_Form::_EVENT_SaveButton_Click(void)
{
  //[2007.03.23.금][생성!!!]{------
  //현재 편집중인 문서를 저장한다.
  //}------------------------------

  IDE_File_Save();

  return;

}

void __fastcall Tide_mbutton_Form::_EVENT_SaveAllButton_Click(void)
{
  IDE_File_SaveAll();

  return;

}

//#include "file.h"
//#include "ide_library.h"

void __fastcall Tide_mbutton_Form::_EVENT_OpenButton_Click(void)
{
  //[2006.12.10.일][생성!!]{--------------------
  //파일을 열어준다.
  //기본함수는 전부 main_Form 에 위치하고 있다.
  //}-------------------------------------------

  IDE_File_Open();



  /*
  //[검증용]
  
  //[VAR]
  //{
      char  path[1024];

  //}

  //[확장자 설정]
  //{
      //[2009.01.27.화][추가!!!]
      //금일 새로 정의된 <Ide_FileFilter> 로 대체.
      main_Form->file_OpenDialog->Filter = Ide_FileFilter;

  //}

  if(main_Form->file_OpenDialog->Execute() != true) return;

  STR_GetFilePathOnly(main_Form->file_OpenDialog->FileName.c_str(), path);

  Dir_Delete(path);
  */

}

