
//[2012.07.14.토][생성!!!]

//[!]{-----------------------
#include "GUI\GUI_제어기제어.h"
//}--------------------------

#include "함수묶음.h"

#include "GUI\GUI.h"

#include "일반함수.h"
#include "색상정의.h"
#include "전역정보.h"


void GUI_생성자_제어기제어(void)
{
  //[2012.07.14.토][생성!!!]

  //[VAR]
  //{
      char  그림경로[1024];
      char  그림경로이름확장자[1024];

  //}

  //[GUI/전역변수]{------
  struct 전역정보  *gv;
  struct GUI     *gui;
  전역정보_위치얻기(&gv);
  GUI_위치얻기(&gui);
  //}------------------

  //[그림 경로 얻기]
  //{
      //실행중인 맷돌통합개발환경 경로 얻기.
      _Ide_실행경로_(그림경로);

      //그림경로 합성.
      _Str_더하기_(그림경로, "sysbmp\\20_20\\");

  //}

  //[BmpBtn_시작]
  //{
      _GBmpButton_생성_(gui->제어기제어.BmpBtn_시작, gui->기본틀.GVmos, GID_생성(),
                       _GButton_X_(gui->제어기설정.Btn_열기, 0, d_읽기),
                       _GButton_Y_(gui->제어기설정.Btn_열기, 0, d_읽기) + _GButton_높이_(gui->제어기설정.Btn_열기, 0, d_읽기) + 4,
                       74, 29,
                       true);

      _GBmpButton_테두리색_(gui->제어기제어.BmpBtn_시작, clBlack2, d_쓰기);
      //_GBmpButton_전면색_(gui->제어기제어.BmpBtn_시작, clBlack2, d_쓰기);

      //[그림 올리기]
      //{
          //올릴 그림 경로이름확장자 합성.
          _Str_합치기_(그림경로이름확장자, 그림경로, "start.bmp");

          _GBmpButton_그림지정_(gui->제어기제어.BmpBtn_시작, 그림경로이름확장자);
          _GBmpButton_그림위치X_(gui->제어기제어.BmpBtn_시작, 28, d_쓰기);
          _GBmpButton_그림위치Y_(gui->제어기제어.BmpBtn_시작, 4, d_쓰기);

      //}

      //[이벤트]
      //{
          _GBmpButton_이벤트_MClick_(gui->제어기제어.BmpBtn_시작, true, d_쓰기);

      //}

      //[풍선도움말]
      //{
          _GBmpButton_풍선도움말문자열_
          (gui->제어기제어.BmpBtn_시작,
           "[제어기] PWM 출력을 시작합니다.\r\n"
           "[제어기] PWM 출력이 일시 정지상태 일때만 유효합니다.",
           d_쓰기);

          _GBmpButton_풍선도움말_(gui->제어기제어.BmpBtn_시작, false, d_쓰기);

      //}

  //}

  //[BmpBtn_정지]
  //{
      _GBmpButton_생성_(gui->제어기제어.BmpBtn_정지, gui->기본틀.GVmos, GID_생성(),
                       _GBmpButton_X_(gui->제어기제어.BmpBtn_시작, 0, d_읽기) + _GBmpButton_폭_(gui->제어기제어.BmpBtn_시작, 0, d_읽기) + 4,
                       _GBmpButton_Y_(gui->제어기제어.BmpBtn_시작, 0, d_읽기),
                       74, 29,
                       true);

      _GBmpButton_테두리색_(gui->제어기제어.BmpBtn_정지, clBlack2, d_쓰기);
      //_GBmpButton_전면색_(gui->제어기제어.BmpBtn_정지, clBlack2, d_쓰기);

      //[그림 올리기]
      //{
          //올릴 그림 경로이름확장자 합성.
          _Str_합치기_(그림경로이름확장자, 그림경로, "stop.bmp");

          _GBmpButton_그림지정_(gui->제어기제어.BmpBtn_정지, 그림경로이름확장자);

          _GBmpButton_그림위치X_(gui->제어기제어.BmpBtn_정지, 28, d_쓰기);
          _GBmpButton_그림위치Y_(gui->제어기제어.BmpBtn_정지, 4, d_쓰기);

      //}

      //[이벤트]
      //{
          _GBmpButton_이벤트_MClick_(gui->제어기제어.BmpBtn_정지, true, d_쓰기);

      //}

      //[풍선도움말]
      //{
          _GBmpButton_풍선도움말문자열_
          (gui->제어기제어.BmpBtn_정지,
           "[제어기] PWM 출력을 일시 정지시킵니다.\r\n"
           "개별적인 PWM 출력 설정과 무관한 것으로\r\n"
           "일시적으로만 적용되는 기능입니다.",
           d_쓰기);

          _GBmpButton_풍선도움말_(gui->제어기제어.BmpBtn_정지, false, d_쓰기);

      //}

  //}

  //[BmpBtn_재기동]
  //{
      _GBmpButton_생성_(gui->제어기제어.BmpBtn_재기동, gui->기본틀.GVmos, GID_생성(),
                       _GBmpButton_X_(gui->제어기제어.BmpBtn_정지, 0, d_읽기) + _GBmpButton_폭_(gui->제어기제어.BmpBtn_정지, 0, d_읽기) + 4,
                       _GBmpButton_Y_(gui->제어기제어.BmpBtn_정지, 0, d_읽기),
                       74, 29,
                       true);

      _GBmpButton_테두리색_(gui->제어기제어.BmpBtn_재기동, clBlack2, d_쓰기);
      //_GBmpButton_전면색_(gui->제어기제어.BmpBtn_재기동, clBlack2, d_쓰기);

      //[그림 올리기]
      //{
          //올릴 그림 경로이름확장자 합성.
          _Str_합치기_(그림경로이름확장자, 그림경로, "reset.bmp");

          _GBmpButton_그림지정_(gui->제어기제어.BmpBtn_재기동, 그림경로이름확장자);

          _GBmpButton_그림위치X_(gui->제어기제어.BmpBtn_재기동, 28, d_쓰기);
          _GBmpButton_그림위치Y_(gui->제어기제어.BmpBtn_재기동, 4, d_쓰기);

      //}

      //[이벤트]
      //{
          _GBmpButton_이벤트_MClick_(gui->제어기제어.BmpBtn_재기동, true, d_쓰기);

      //}

      //[풍선도움말]
      //{
          _GBmpButton_풍선도움말문자열_
          (gui->제어기제어.BmpBtn_재기동,
           "[제어기] 를 재기동 하고 [제어기] 의 현재 동작\r\n"
           "상태를 모두 읽어 관련 [그림부품] 에 반영합니다.",
           d_쓰기);

          _GBmpButton_풍선도움말_(gui->제어기제어.BmpBtn_재기동, false, d_쓰기);

      //}

  //}

}

void GUI_소멸자_제어기제어(void)
{
  //[2012.07.08.일][생성!!!]

  //[GUI]{----------
  struct GUI  *gui;
  GUI_위치얻기(&gui);
  //}----------------

  _GBmpButton_삭제_(gui->제어기제어.BmpBtn_재기동);
  _GBmpButton_삭제_(gui->제어기제어.BmpBtn_정지);
  _GBmpButton_삭제_(gui->제어기제어.BmpBtn_시작);

}

bool GUI_동작함수_제어기제어(struct GUI알림문64  *pGUI알림문64)
{
  //[2012.07.15.일][생성!!!]{---------
  //해당 [알림문] 만 처리.
  //처리한 알림문이 있다면 <true> 를 반환.
  //}--------------------------------

  //[GUI]{----------
  struct GUI  *gui;
  GUI_위치얻기(&gui);
  //}---------------

  if     (pGUI알림문64->식별자 == GID_읽기(gui->제어기제어.BmpBtn_시작))
  {
    if(pGUI알림문64->알림문 == d_GuiMsg_MClick) { 제어기제어_BmpBtn_시작_이벤트_MClick(); return(true); }

  }
  else if(pGUI알림문64->식별자 == GID_읽기(gui->제어기제어.BmpBtn_정지))
  {
    if(pGUI알림문64->알림문 == d_GuiMsg_MClick) { 제어기제어_BmpBtn_정지_이벤트_MClick(); return(true); }

  }
  else if(pGUI알림문64->식별자 == GID_읽기(gui->제어기제어.BmpBtn_재기동))
  {
    if(pGUI알림문64->알림문 == d_GuiMsg_MClick) { 제어기제어_BmpBtn_재기동_이벤트_MClick(); return(true); }

  }

  //여기까지 온것은 처리하지 않은 것으로 보고.
  return(false);

}


void 제어기제어_BmpBtn_시작_이벤트_MClick(void)
{
  //[2012.07.22.일][생성!!!]

  //[GUI]{----------
  struct GUI  *gui;
  GUI_위치얻기(&gui);
  //}---------------

  //[이벤트:무효화]{---------------------------------------------------
  _GBmpButton_이벤트_MClick_(gui->제어기제어.BmpBtn_시작, false, d_쓰기);
  //}---------------------------------------------------------------

  //[명령 처리]
  //{
      //[통신포트] 가 열려있는 경우만 처리.
      if(항목줄_통신포트열림확인() == true)
      {
        if(_GMRCBASIC_PwmStart(기본조정설정_제어기번호()) != true) { Ide_통신오류알림(); }

      }

  //}

  lb끝:

  //[이벤트:유효화]{--------------------------------------------------
  _GBmpButton_이벤트_MClick_(gui->제어기제어.BmpBtn_시작, true, d_쓰기);
  //}--------------------------------------------------------------

}

void 제어기제어_BmpBtn_정지_이벤트_MClick(void)
{
  //[2012.07.22.일][생성!!!]

  //[GUI]{----------
  struct GUI  *gui;
  GUI_위치얻기(&gui);
  //}---------------

  //[이벤트:무효화]{---------------------------------------------------
  _GBmpButton_이벤트_MClick_(gui->제어기제어.BmpBtn_정지, false, d_쓰기);
  //}---------------------------------------------------------------

  //[명령 처리]
  //{
      //[통신포트] 가 열려있는 경우만 처리.
      if(항목줄_통신포트열림확인() == true)
      {
        if(_GMRCBASIC_PwmStop(기본조정설정_제어기번호()) != true) { Ide_통신오류알림(); }

      }

  //}

  lb끝:

  //[이벤트:유효화]{--------------------------------------------------
  _GBmpButton_이벤트_MClick_(gui->제어기제어.BmpBtn_정지, true, d_쓰기);
  //}--------------------------------------------------------------

}

void 제어기제어_BmpBtn_재기동_이벤트_MClick(void)
{
  //[2012.07.22.일][생성!!!]
  //[2012.07.30.월][수정!!!]

  //[GUI]{----------
  struct GUI  *gui;
  GUI_위치얻기(&gui);
  //}---------------

  //[이벤트:무효화]{----------------------------------------------------
  _GBmpButton_이벤트_MClick_(gui->제어기제어.BmpBtn_재기동, false, d_쓰기);
  //}----------------------------------------------------------------

  //[명령 처리]
  //{
      //[통신포트] 가 열려있는 경우만 처리.
      if(항목줄_통신포트열림확인() == true)
      {
        if(_GMRCBASIC_CtrlReset(기본조정설정_제어기번호()) != true) { Ide_통신오류알림(); }

      }

  //}

  //[IDE 에 반영]
  //{
      //[2012.07.30.월][추가!!!]
      Ide_제어기_현재상태_읽어_IDE에_반영();

  //}

  lb끝:

  //[이벤트:유효화]{---------------------------------------------------
  _GBmpButton_이벤트_MClick_(gui->제어기제어.BmpBtn_재기동, true, d_쓰기);
  //}---------------------------------------------------------------

}

//----------------------------------------------------------------------------
//[함수]-----------------------------------------------------------------------
//----------------------------------------------------------------------------

void 제어기제어_풍선도움말_사용유무(bool  p사용유무)
{
  //[2012.07.31.화][생성!!!]

  //[GUI]{----------
  struct GUI  *gui;
  GUI_위치얻기(&gui);
  //}---------------

  _GBmpButton_풍선도움말_(gui->제어기제어.BmpBtn_시작, p사용유무, d_쓰기);

  _GBmpButton_풍선도움말_(gui->제어기제어.BmpBtn_정지, p사용유무, d_쓰기);

  _GBmpButton_풍선도움말_(gui->제어기제어.BmpBtn_재기동, p사용유무, d_쓰기);

}


