//[2011.11.21.월][생성!!!]

#include "함수묶음.h"

#include "GUI\GUI_ISP활성화.h"

#include "main.h"
#include "GUI.h"
#include "일반함수.h"

#include "GUI\GUI_모양만들기.h"
#include "AVR-ISP\AVR-ISP.h"
#include "AVR-ISP\AVR-병렬접근.h"

//[2011.11.26.토][추가!!!]
#include "제작정보.h"
#include "기계닉스_이름정의.h"


void Ide_모양만들기_ISP활성화(void)
{
  //[2011.11.21.월][생성!!!]{---------------------------------------------
  //<SPIEN> 등이 해제되어 더이상 ISP 를 사용할수 없는 경우 이를 [병렬접근방식] 으로
  //다시 활성화 시켜준다.
  //[상위설정] 이 <SPIEN> 등 ISP 와 관련이 있으므로 [확장설정] 만 접근할수 있으면된다.
  //이는 주기능은 아니고 보조기능으로 당장 ISP 기능이 해제된 ATmega88 의 ISP 를
  //살리기 위한 것이다.
  //
  //이 AVR-ISP 를 맷돌C 로 개발하면서 시험삼아 <ISPEN> 을 해제시키거나 해서 더이상
  //ISP 를 사용할수 없는 ATmega88 을 복구하기 위하여 만든다.
  //}--------------------------------------------------------------------

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

  //[Chk_ISP활성화]
  //{
      _GCheckButton_생성_(gui->Chk_ISP활성화, gui->GVmos, GID_Chk_ISP활성화,
                         7, _GButton_Y_(gui->Btn_명세문서값으로초기화, 0, d_읽기) + _GButton_높이_(gui->Btn_명세문서값으로초기화, 0, d_읽기) + 8 + 1,
                         true);

      //처음에는 <ISP 상태> 로 [병렬접근상태] 가 아니어야 한다.
      _GCheckButton_확인_(gui->Chk_ISP활성화, false, d_쓰기);

      //[이벤트]
      //{
          _GCheckButton_이벤트_MClick_(gui->Chk_ISP활성화, true, d_쓰기);

      //}

  //}

  //[Lb_ISP활성화]
  //{
      _GLabel_생성_(gui->Lb_ISP활성화, gui->GVmos, GID_Lb_ISP활성화,
                   //<GCheckButton> 의 경우는 12*12 고정크기를 갖는다.
                   _GCheckButton_X_(gui->Chk_ISP활성화, 0, d_읽기) + 12 + 2,
                   _GCheckButton_Y_(gui->Chk_ISP활성화, 0, d_읽기) - 3,
                   400, 18,
                   true);
      _GLabel_제목_(gui->Lb_ISP활성화,
                   "AVR 의 ISP 기능 활성화를 위하여 병렬접근방식으로 전환하기(회로도 참고).",
                   d_쓰기);

      _GLabel_자동폭_(gui->Lb_ISP활성화, true, d_쓰기);

  //}

  //[Btn_ISP활성화_회로도]
  //{
      _GButton_생성_(gui->Btn_ISP활성화_회로도, gui->GVmos, GID_Btn_ISP활성화_회로도,
                    d_환경_GVmos_폭 - 135 - 16, _GLabel_Y_(gui->Lb_ISP활성화, 0, d_읽기) - 1,
                    135, 18,
                    true);
      _GButton_제목_(gui->Btn_ISP활성화_회로도, "회로도(ISP활성화)", d_쓰기);

      //[이벤트]
      //{
          _GButton_이벤트_MClick_(gui->Btn_ISP활성화_회로도, true, d_쓰기);

      //}

      //[퐁선도움말]
      //{
          _GButton_풍선도움말문자열_
          (gui->Btn_ISP활성화_회로도,
           "PDF 문서로된 병렬방식 회로도를 볼수있습니다.\r\n"
           "단, PDF 문서를 볼수 있는 도구가 PC 에 설치돼 있어야 합니다.",
           d_쓰기);

          _GButton_풍선도움말_(gui->Btn_ISP활성화_회로도, false, d_쓰기);

      //}

  //}

}

void Ide_모양삭제_ISP활성화(void)
{
  //[2011.11.22.화][생성!!!]{--------
  //[2012.04.30.월][수정!!!]---------
  //안전을 위하여 선언한 역순으로 삭제한다.
  //}-------------------------------

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

  _GButton_삭제_(gui->Btn_ISP활성화_회로도);
  _GLabel_삭제_(gui->Lb_ISP활성화);
  _GCheckButton_삭제_(gui->Chk_ISP활성화);

}

void Chk_ISP활성화_이벤트_MClick(void)
{
  //[2011.11.21.월][생성!!!]{-----------------------------------------------
  //GUI 환경을 [ISP 활성화] 를 위한 기능으로 전환하거나 원래대로 돌려 놓는다.
  //
  //[v] : [ISP 활성화] 와 관련이 없는 다른 기능은 전부 보이지 않게 만들고
  //      맷돌(G.MTDL.X)을 [ISP 활성화] 기능으로 변환시키는 명령을 전달.
  //
  //[ ] : 원래 GUI 로 바꾸고 맷돌(G.MTDL.X)을 다시 AVR-ISP 로 전환시키는 명령을 전달.
  //}----------------------------------------------------------------------

  //[VAR]
  //{
      //[2011.11.26.토][추가!!!]
      char  문자열[512];
      int   i;

  //}

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

  if(_GCheckButton_확인_(gui->Chk_ISP활성화, NULL, d_읽기) == true)
  {
    //[!]{-----------------------------
    //GUI 환경을 [ISP 활성화] 관련으로 설정.
    //}--------------------------------

    //[보기창 감추기]
    //{
        //[2011.11.26.토][추가!!!]{--------------------------------------
        //[자동진행] 시에는 [보기창] 의 내용이 [쓰기] 내용과 일치하지 않을수 있으므로
        //보이지 않도록 감추고 시작한다.
        //}-------------------------------------------------------------

        _GForm_보이기_(gui->Form_보기창, false, d_쓰기);

    //}

    //[GUI:병렬접근방식]
    //{
        Ide_버튼줄_보이기(false);
        Ide_Flash문서_보이기(false);
        Ide_EEprom문서_보이기(false);
        //[2011.11.25.금][수정!!!]{------------------------
        //[병렬제어] 의 경우도 [보안설정] 에는 접근할수 있어야 한다.
        //Ide_설정보안_보이기(false);
        //}-----------------------------------------------
        Ide_설정확장_보이기(false);
        Ide_설정하위_보이기(false);

    //}

    //[가상기계 설치관련]
    //{
        //[2011.11.25.금][추가!!!]{------------------
        //[ISP 활성화] 를 위한 [가상기계설치] 임을 알려준다.
        //}-----------------------------------------

        _GLabel_제목_(gui->Lb_맷돌에가상기계설치,
                     "[참고] ISP-활성화 사용전 맷돌(G.MTDL.X)에 대응하는 가상기계(GVMX)를 설치해야 합니다.",
                     d_쓰기);

        //[Btn_맷돌에가상기계설치]
        //{
            //[!]{-----------------------------------
            //문자열 길이가 변경되므로 버튼의 위치와 폭을 수정.
            //}--------------------------------------

            _GButton_X_(gui->Btn_맷돌에가상기계설치,
                        _GLabel_X_(gui->Lb_맷돌에가상기계설치, 0, d_읽기) + _GLabel_폭_(gui->Lb_맷돌에가상기계설치, 0, d_읽기) + 2,
                        d_쓰기);

            _GButton_폭_(gui->Btn_맷돌에가상기계설치,
                         (55 + 8) - 12,
                         d_쓰기);

        //}

    //}

    //[제목줄 수정]
    //{
        //[2011.11.26.토][추가!!!]{--------------------------
        //환경 자체가 변경되었으므로 이를 [제목줄] 에 표시하여 알려준다.
        //}-------------------------------------------------

        //[제목줄 문자열]
        //{
            //제목줄 문자열 합성.
            i = _Str_할당_(문자열, "::: AVR-ISP 기능 부활기(");
            i = _Str_더하기_(&(문자열[i]), d_제작날짜);
            i = _Str_더하기_(&(문자열[i]), ") :::");

            _GVmos_제목줄문자열_(gui->GVmos, 문자열, d_쓰기);

        //}

        _GVmos_제목줄배경색_(gui->GVmos, clWhite, d_쓰기);
        _GVmos_제목줄문자색_(gui->GVmos, clBlack, d_쓰기);
        _GVmos_제목줄문자형식_(gui->GVmos, d_굵은문자, d_쓰기);

    //}

  }
  else
  {
    //[!]{---------------------------
    //GUI 환경을 [AVR-ISP] 관련으로 설정.
    //}------------------------------

    //[GUI:AVR_ISP]
    //{
        Ide_버튼줄_보이기(true);
        Ide_Flash문서_보이기(true);
        Ide_EEprom문서_보이기(true);
        //[2011.11.25.금][수정!!!]{------------------------
        //[병렬제어] 의 경우도 [보안설정] 에는 접근할수 있어야 한다.
        //Ide_설정보안_보이기(true);
        //}-----------------------------------------------
        Ide_설정확장_보이기(true);
        Ide_설정하위_보이기(true);

    //}

    //[가상기계 설치관련]
    //{
        //[2011.11.25.금][추가!!!]{-----------------
        //[AVR-ISP] 를 위한 [가상기계설치] 임을 알려준다.
        //}----------------------------------------

        _GLabel_제목_(gui->Lb_맷돌에가상기계설치,
                     "[참고] AVR-ISP 사용전 맷돌(G.MTDL.X)에 대응하는 가상기계(GVMX)를 설치해야 합니다.",
                     d_쓰기);

        //[Btn_맷돌에가상기계설치]
        //{
            //[!]{-----------------------------------
            //문자열 길이가 변경되므로 버튼의 위치와 폭을 수정.
            //}--------------------------------------

            _GButton_X_(gui->Btn_맷돌에가상기계설치,
                        _GLabel_X_(gui->Lb_맷돌에가상기계설치, 0, d_읽기) + _GLabel_폭_(gui->Lb_맷돌에가상기계설치, 0, d_읽기) + 2,
                        d_쓰기);

            _GButton_폭_(gui->Btn_맷돌에가상기계설치,
                         (55 + 8),
                         d_쓰기);

        //}

    //}

    //[제목줄 수정]
    //{
        //[2011.11.26.토][추가!!!]{--------------------------
        //환경 자체가 변경되었으므로 이를 [제목줄] 에 표시하여 알려준다.
        //}-------------------------------------------------

        //[제목줄 문자열]
        //{
            //제목줄 문자열 합성.
            i = _Str_할당_(문자열, "::: AVR-ISP 영혼 주입기(");
            i = _Str_더하기_(&(문자열[i]), d_제작날짜);
            i = _Str_더하기_(&(문자열[i]), ") :::");

            _GVmos_제목줄문자열_(gui->GVmos, 문자열, d_쓰기);

        //}

        _GVmos_제목줄배경색_(gui->GVmos, clGray, d_쓰기);
        _GVmos_제목줄문자색_(gui->GVmos, clWhite, d_쓰기);
        _GVmos_제목줄문자형식_(gui->GVmos, d_일반문자, d_쓰기);

    //}

  }

}

void Btn_ISP활성화_회로도_이벤트_MClick(void)
{
  //[2011.11.21.월][생성!!!]{------------------------
  //"[기준경로]\자료\회로도(ISP활성화).pdf" 문서를 열어준다.
  //}-----------------------------------------------

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

  //}

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

  //[<경로이름확장자> 합성]
  //{
      //"[기준경로]\자료\회로도(ISP활성화).pdf" 문서의 [경로이름확장자] 를 합성.
      _Str_합치기_(경로이름확장자, gv->기준경로, "자료\\회로도(ISP활성화).pdf");

  //}

  //[실행]
  //{
      _Sys_외부실행_(경로이름확장자);

  //}

}



