
#include "폼디자인\폼디자인.h"

#include "함수묶음.h"

#include "기계닉스\색상정의.h"

//[2022.05.15.일][추가]
#include "기계닉스\함수모음.h"


//[VAR]
//{
    struct ts_폼디자인  _폼디자인;

//}


void _폼디자인_위치얻기(struct ts_폼디자인  **r폼디자인)
{
  (*r폼디자인) = &_폼디자인;

}

void _폼디자인_생성(void)
{
  //[VAR]
  //{
      char   ide_실행경로[1024];

      char   가상기계실행경로[1024];

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

      struct ts_전광판전구설정정보  전광판전구설정정보;

      int    l, r, t, b;
      int    보정_x, 보정_y;

  //}

  //[전처리]
  //{
      _Ide_실행경로_(ide_실행경로);

      //[수정][2022.05.15.일]{-------------------------------------------------
      //[가상기계(GVMS)] 를 직접 실행하는 경우를 위하여 [설계묶음] 경로만을 기준으로 하는
      //<_Ide_설계묶음_경로이름확장자_()> 함수 대신에, [설계묶음] 경로와 [가상기계(GVMS)]
      //실행 경로를 둘다 만족시키는 <Ide_Gvms_실행경로()> 함수로 교체.
      Ide_Gvms_실행경로(가상기계실행경로);
      //}---------------------------------------------------------------------

      _GDotMatrix_전체_일시정지_(true, d_쓰기);

  //}

  //[위치 보정값 계산]
  //{
      //[!]{------------------------------------------
      //생성된 [그림부품] 들을 [화면:중앙] 에 분포시키기 위한것.
      //}---------------------------------------------

      l = 276;
      r = 743;
      t = 177;
      b = 323;

      보정_x = (l + r)/2 - _Sys_화면영역폭_()/2;
      보정_y = (t + b)/2 - _Sys_화면영역높이_()/2;

  //}

  //[!]{------------
  //폼디자인 구현 시작.
  //}---------------

  //[_폼디자인.기본_GForm]
  //{
      _GForm_생성_(_폼디자인.기본_GForm, NULL, _Gui_ID_생성(), 276 - 보정_x, 177 - 보정_y, 467, 171, false);
      _GForm_제목줄문자열_(_폼디자인.기본_GForm, "::: API 업데이트 도구 :::   ", d_쓰기);
      _GForm_창최대화버튼유효_(_폼디자인.기본_GForm, false, d_쓰기);
      _GForm_유효_(_폼디자인.기본_GForm, true, d_쓰기);
      //_GForm_보이기_(_폼디자인.기본_GForm, true, d_쓰기);
      _GForm_이벤트_Close_(_폼디자인.기본_GForm, true, d_쓰기);
      _GX_표시되는_이름설정_(_폼디자인.기본_GForm, "기본_GForm");

      //[가장 앞으로]
      //{
          _GX_항상위로_(_폼디자인.기본_GForm, true);
          _GX_가장앞으로_(_폼디자인.기본_GForm);
          _GX_항상위로_(_폼디자인.기본_GForm, false);

      //}

  //}

  //[_폼디자인.API_개발폴더경로_GLabel]
  //{
      _GLabel_생성_(_폼디자인.API_개발폴더경로_GLabel, _폼디자인.기본_GForm, _Gui_ID_생성(), 3, 6, 130, 20, false);
      _GLabel_제목_(_폼디자인.API_개발폴더경로_GLabel, "API 개발 폴더 경로:", d_쓰기);
      _GLabel_유효_(_폼디자인.API_개발폴더경로_GLabel, true, d_쓰기);
      _GLabel_보이기_(_폼디자인.API_개발폴더경로_GLabel, true, d_쓰기);
      _GX_표시되는_이름설정_(_폼디자인.API_개발폴더경로_GLabel, "API_개발폴더경로_GLabel");

  //}

  //[_폼디자인.API_개발폴더경로_GBtn]
  //{
      _GButton_생성_(_폼디자인.API_개발폴더경로_GBtn, _폼디자인.기본_GForm, _Gui_ID_생성(), 135, 4, 320, 25, false);
      _GButton_제목_(_폼디자인.API_개발폴더경로_GBtn, "[@API] 폴더(전체)나 하위 API 폴더(개별) 지정", d_쓰기);
      _GButton_제목위치X_(_폼디자인.API_개발폴더경로_GBtn, 10, d_쓰기);
      _GButton_유효_(_폼디자인.API_개발폴더경로_GBtn, true, d_쓰기);
      _GButton_보이기_(_폼디자인.API_개발폴더경로_GBtn, true, d_쓰기);
      _GButton_이벤트_MClick_(_폼디자인.API_개발폴더경로_GBtn, true, d_쓰기);
      _GX_표시되는_이름설정_(_폼디자인.API_개발폴더경로_GBtn, "API_개발폴더경로_GBtn");

      //[2021.08.14.토][추가]
      _GButton_풍선도움말_(_폼디자인.API_개발폴더경로_GBtn, true, d_쓰기);
      _GButton_풍선도움말문자열_(_폼디자인.API_개발폴더경로_GBtn, "[@API] 폴더(전체)나 하위 API 폴더(개별) 지정", d_쓰기);

  //}

  //[_폼디자인.진행막대_GProgress]
  //{
      //[2021.08.15.일][추가]{---------------------------------------
      //<_폼디자인.API_개발폴더경로_GBtn> 안에 생성하고 항상 같은 크기를 갖는다.
      //}-----------------------------------------------------------

      _GProgress_생성_(_폼디자인.진행막대_GProgress, _폼디자인.API_개발폴더경로_GBtn, _Gui_ID_생성(), 0, 0, 320, 25, false);

      _GProgress_테두리간격_(_폼디자인.진행막대_GProgress, 3, d_쓰기);

      _GProgress_진행막대색_(_폼디자인.진행막대_GProgress, 0x000000e0, d_쓰기);

  //}

  //[_폼디자인.제공폴더_업데이트_GBtn]
  //{
      _GButton_생성_(_폼디자인.제공폴더_업데이트_GBtn, _폼디자인.기본_GForm, _Gui_ID_생성(), 4, 34, 451, 25, false);
      _GButton_제목_(_폼디자인.제공폴더_업데이트_GBtn, "[@제공] 폴더 안의 <*.h>, <*.glib>, <*.ginf> 업데이트", d_쓰기);
      _GButton_제목위치X_(_폼디자인.제공폴더_업데이트_GBtn, 77, d_쓰기);
      _GButton_배경색_(_폼디자인.제공폴더_업데이트_GBtn, 0x00f0f0f0, d_쓰기);
      _GButton_유효_(_폼디자인.제공폴더_업데이트_GBtn, true, d_쓰기);
      _GButton_보이기_(_폼디자인.제공폴더_업데이트_GBtn, true, d_쓰기);
      _GButton_이벤트_MClick_(_폼디자인.제공폴더_업데이트_GBtn, true, d_쓰기);
      _GX_표시되는_이름설정_(_폼디자인.제공폴더_업데이트_GBtn, "제공폴더_업데이트_GBtn");

  //}

  //[_폼디자인.glib_폴더경로_GLabel]
  //{
      _GLabel_생성_(_폼디자인.glib_폴더경로_GLabel, _폼디자인.기본_GForm, _Gui_ID_생성(), 3, 66, 154, 20, false);
      _GLabel_제목_(_폼디자인.glib_폴더경로_GLabel, "[IDE/glib] 폴더 경로:", d_쓰기);
      _GLabel_유효_(_폼디자인.glib_폴더경로_GLabel, true, d_쓰기);
      _GLabel_보이기_(_폼디자인.glib_폴더경로_GLabel, true, d_쓰기);
      _GX_표시되는_이름설정_(_폼디자인.glib_폴더경로_GLabel, "glib_폴더경로_GLabel");

  //}

  //[_폼디자인.glib_폴더경로_GBtn]
  //{
      _GButton_생성_(_폼디자인.glib_폴더경로_GBtn, _폼디자인.기본_GForm, _Gui_ID_생성(), 159, 64, 296, 25, false);
      _GButton_제목_(_폼디자인.glib_폴더경로_GBtn, "<IDE.exe> 위치의 [glib] 폴더 지정", d_쓰기);
      _GButton_제목위치X_(_폼디자인.glib_폴더경로_GBtn, 30, d_쓰기);
      _GButton_유효_(_폼디자인.glib_폴더경로_GBtn, true, d_쓰기);
      _GButton_보이기_(_폼디자인.glib_폴더경로_GBtn, true, d_쓰기);
      _GButton_이벤트_MClick_(_폼디자인.glib_폴더경로_GBtn, true, d_쓰기);
      _GX_표시되는_이름설정_(_폼디자인.glib_폴더경로_GBtn, "glib_폴더경로_GBtn");

      //[2021.08.19.목][추가]
      _GButton_풍선도움말_(_폼디자인.glib_폴더경로_GBtn, true, d_쓰기);
      _GButton_풍선도움말문자열_(_폼디자인.glib_폴더경로_GBtn, "<IDE.exe> 위치의 [glib] 폴더 지정", d_쓰기);

  //}

  //[_폼디자인.glib_업데이트_GBtn]
  //{
      _GButton_생성_(_폼디자인.glib_업데이트_GBtn, _폼디자인.기본_GForm, _Gui_ID_생성(), 4, 94, 451, 25, false);
      _GButton_제목_(_폼디자인.glib_업데이트_GBtn, "완성된 API [@제공] 폴더 내용으로 [glib] 폴더 전체/부분 업데이트", d_쓰기);
      _GButton_제목위치X_(_폼디자인.glib_업데이트_GBtn, 93, d_쓰기);
      _GButton_배경색_(_폼디자인.glib_업데이트_GBtn, 0x00f0f0f0, d_쓰기);
      _GButton_유효_(_폼디자인.glib_업데이트_GBtn, true, d_쓰기);
      _GButton_보이기_(_폼디자인.glib_업데이트_GBtn, true, d_쓰기);
      _GButton_이벤트_MClick_(_폼디자인.glib_업데이트_GBtn, true, d_쓰기);
      _GX_표시되는_이름설정_(_폼디자인.glib_업데이트_GBtn, "glib_업데이트_GBtn");

  //}

  //[_폼디자인.주의_GLabel]
  //{
      //[2021.08.20.금][추가]
      _GLabel_생성_(_폼디자인.주의_GLabel, _폼디자인.기본_GForm, _Gui_ID_생성(), 3, 125, 452, 20, false);
      _GLabel_제목_(_폼디자인.주의_GLabel, "[API_Mem] 은 [@제공:PC전용/겸용] 2 개 폴더로 관리되므로 주의필요.", d_쓰기);
      _GLabel_문자색_(_폼디자인.주의_GLabel, 0x000000e0, d_쓰기);
      _GLabel_유효_(_폼디자인.주의_GLabel, true, d_쓰기);
      _GLabel_보이기_(_폼디자인.주의_GLabel, true, d_쓰기);
      _GX_표시되는_이름설정_(_폼디자인.주의_GLabel, "주의_GLabel");

  //}

  //[후처리]
  //{
      _GDotMatrix_전체_일시정지_(false, d_쓰기);

  //}

  //[기본_GForm:보이기]
  //{
      _GForm_보이기_(_폼디자인.기본_GForm, true, d_쓰기);

  //}

}

void _폼디자인_소멸(void)
{
  //[2021.08.20.금][추가]{-----------
  _GLabel_삭제_(_폼디자인.주의_GLabel);
  //}-------------------------------

  _GButton_삭제_(_폼디자인.glib_업데이트_GBtn);
  _GButton_삭제_(_폼디자인.glib_폴더경로_GBtn);
  _GLabel_삭제_(_폼디자인.glib_폴더경로_GLabel);
  _GButton_삭제_(_폼디자인.제공폴더_업데이트_GBtn);

  //[2021.08.15.일][추가]{---------------------
  _GProgress_삭제_(_폼디자인.진행막대_GProgress);
  //}----------------------------------------

  _GButton_삭제_(_폼디자인.API_개발폴더경로_GBtn);
  _GLabel_삭제_(_폼디자인.API_개발폴더경로_GLabel);
  _GForm_삭제_(_폼디자인.기본_GForm);

}

void _폼디자인_모달_초기화(void)
{
  _폼디자인.기본_GForm_모달 = _GForm_유효_(_폼디자인.기본_GForm, NULL, d_읽기);

}

void _폼디자인_모달_구현(bool  p모달유무)
{
  if(p모달유무 == false)
  {
    _폼디자인.기본_GForm_모달 = _GForm_유효_(_폼디자인.기본_GForm, NULL, d_읽기);
    _GForm_유효_(_폼디자인.기본_GForm, false, d_쓰기);

  }
  else
  {
    _GForm_유효_(_폼디자인.기본_GForm, _폼디자인.기본_GForm_모달 && true, d_쓰기);

  }

}

void _폼디자인_이벤트(struct t_Gui_알림문64  *p알림문64)
{
  if     ((p알림문64->식별자 == _Gui_ID_읽기(_폼디자인.기본_GForm)) && (p알림문64->알림문 == d_GuiMsg_Close))
  {
    _폼디자인_기본_GForm_이벤트_Close(p알림문64);

  }
  else if((p알림문64->식별자 == _Gui_ID_읽기(_폼디자인.API_개발폴더경로_GBtn)) && (p알림문64->알림문 == d_GuiMsg_MClick))
  {
    _폼디자인_API_개발폴더경로_GBtn_이벤트_MClick(p알림문64);

  }
  else if((p알림문64->식별자 == _Gui_ID_읽기(_폼디자인.제공폴더_업데이트_GBtn)) && (p알림문64->알림문 == d_GuiMsg_MClick))
  {
    _폼디자인_제공폴더_업데이트_GBtn_이벤트_MClick(p알림문64);

  }
  else if((p알림문64->식별자 == _Gui_ID_읽기(_폼디자인.glib_폴더경로_GBtn)) && (p알림문64->알림문 == d_GuiMsg_MClick))
  {
    _폼디자인_glib_폴더경로_GBtn_이벤트_MClick(p알림문64);

  }
  else if((p알림문64->식별자 == _Gui_ID_읽기(_폼디자인.glib_업데이트_GBtn)) && (p알림문64->알림문 == d_GuiMsg_MClick))
  {
    _폼디자인_glib_업데이트_GBtn_이벤트_MClick(p알림문64);

  }

}

