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

#include "함수묶음.h"

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

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

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

  //}

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

      l = 296;
      r = 1096;
      t = 77;
      b = 677;

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

  //}

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

  //[_폼디자인.기본_GForm]
  //{
      _GForm_생성_(_폼디자인.기본_GForm, NULL, _Gui_ID_생성(), 296 - 보정_x, 77 - 보정_y, 800, 600, false);
      _GForm_제목줄문자열_(_폼디자인.기본_GForm, "::: 썸네일 보기 :::", d_쓰기);
      _GForm_유효_(_폼디자인.기본_GForm, true, d_쓰기);
      //_GForm_보이기_(_폼디자인.기본_GForm, true, d_쓰기);
      _GForm_이벤트_Close_(_폼디자인.기본_GForm, true, d_쓰기);
      _GForm_이벤트_Resize_(_폼디자인.기본_GForm, true, d_쓰기);
      _GForm_이벤트_Drag_(_폼디자인.기본_GForm, true, d_쓰기);
      _GX_표시되는_이름설정_(_폼디자인.기본_GForm, "기본_GForm");

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

      //}

  //}

  //[_폼디자인.썸네일바탕_GLabel]
  //{
      _GLabel_생성_(_폼디자인.썸네일바탕_GLabel, _폼디자인.기본_GForm, _Gui_ID_생성(), 2, 29, 774, 524, false);
      _GLabel_제목_(_폼디자인.썸네일바탕_GLabel, "", d_쓰기);
      _GLabel_배경색_(_폼디자인.썸네일바탕_GLabel, 0x00c0c0c0, d_쓰기);
      _GLabel_테두리_(_폼디자인.썸네일바탕_GLabel, true, d_쓰기);
      _GLabel_유효_(_폼디자인.썸네일바탕_GLabel, true, d_쓰기);
      _GLabel_보이기_(_폼디자인.썸네일바탕_GLabel, true, d_쓰기);
      _GX_표시되는_이름설정_(_폼디자인.썸네일바탕_GLabel, "썸네일바탕_GLabel");

  //}

  //[_폼디자인.썸네일진열판_테두리_GLabel]
  //{
      //[2021.04.25.일][추가]{--------------------------------------------
      //실제 [썸네일] 이 구현되는 <썸네일진열판_GLabel> 의 전체 테두리를 제공한다.
      //이는 <썸네일진열판_GLabel> 이 줄이동되는 경우에도 항상 테두리를 보여주기 위한것.
      //}----------------------------------------------------------------

      _GLabel_생성_(_폼디자인.썸네일진열판_테두리_GLabel, _폼디자인.썸네일바탕_GLabel, _Gui_ID_생성(), 1, 1, 772, 522, false);
      _GLabel_제목_(_폼디자인.썸네일진열판_테두리_GLabel, "", d_쓰기);
      _GLabel_배경색_(_폼디자인.썸네일진열판_테두리_GLabel, 0x00c0c0c0, d_쓰기);
      _GLabel_테두리_(_폼디자인.썸네일진열판_테두리_GLabel, false, d_쓰기);
      _GLabel_유효_(_폼디자인.썸네일진열판_테두리_GLabel, true, d_쓰기);
      _GLabel_보이기_(_폼디자인.썸네일진열판_테두리_GLabel, true, d_쓰기);
      _GX_표시되는_이름설정_(_폼디자인.썸네일진열판_테두리_GLabel, "썸네일진열판_테두리_GLabel");

      //[이벤트]
      //{
          //[2021.06.25.금][추가]{----------
          //[선택돋보기창] 을 감추기 위해서 필요.
          //}------------------------------

          _GLabel_이벤트_MDown_(_폼디자인.썸네일진열판_테두리_GLabel, true, d_쓰기);

      //}

  //}

  //[_폼디자인.그림폴더경로_GLabel]
  //{
      _GLabel_생성_(_폼디자인.그림폴더경로_GLabel, _폼디자인.기본_GForm, _Gui_ID_생성(), 2, 5, 92, 20, false);
      _GLabel_제목_(_폼디자인.그림폴더경로_GLabel, "그림폴더 경로:", d_쓰기);
      _GLabel_자동폭_(_폼디자인.그림폴더경로_GLabel, true, d_쓰기);
      _GLabel_유효_(_폼디자인.그림폴더경로_GLabel, true, d_쓰기);
      _GLabel_보이기_(_폼디자인.그림폴더경로_GLabel, true, d_쓰기);
      _GX_표시되는_이름설정_(_폼디자인.그림폴더경로_GLabel, "그림폴더경로_GLabel");

  //}

  //[_폼디자인.그림폴더경로_GButton]
  //{
      _GButton_생성_(_폼디자인.그림폴더경로_GButton, _폼디자인.기본_GForm, _Gui_ID_생성(), 94, 2, 593, 25, false);
      _GButton_제목_(_폼디자인.그림폴더경로_GButton, "미지정", d_쓰기);
      _GButton_제목자동위치_(_폼디자인.그림폴더경로_GButton, false, d_쓰기);
      _GButton_제목위치X_(_폼디자인.그림폴더경로_GButton, 6, d_쓰기);
      _GButton_풍선도움말_(_폼디자인.그림폴더경로_GButton, true, d_쓰기);
      _GButton_풍선도움말문자열_(_폼디자인.그림폴더경로_GButton, "미지정", d_쓰기);
      _GButton_유효_(_폼디자인.그림폴더경로_GButton, true, d_쓰기);
      _GButton_보이기_(_폼디자인.그림폴더경로_GButton, true, d_쓰기);
      _GButton_이벤트_MClick_(_폼디자인.그림폴더경로_GButton, true, d_쓰기);
      _GX_표시되는_이름설정_(_폼디자인.그림폴더경로_GButton, "그림폴더경로_GButton");

  //}

  //[_폼디자인.썸네일_진행막대_GProgress]
  //{
      //[2021.04.26.월][추가]{--------------------------------------
      //<_폼디자인.그림폴더경로_GButton> 안에 생성하고 항상 같은 크기를 갖는다.
      //}----------------------------------------------------------

      _GProgress_생성_(_폼디자인.썸네일_진행막대_GProgress, _폼디자인.그림폴더경로_GButton, _Gui_ID_생성(), 0, 0, 593, 25, false);

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

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

  //}

  //[_폼디자인.썸네일_GScrollV]
  //{
      _GScrollV_생성_(_폼디자인.썸네일_GScrollV, _폼디자인.기본_GForm, _Gui_ID_생성(), 775, 29, 15, 524, false);
      _GScrollV_유효_(_폼디자인.썸네일_GScrollV, true, d_쓰기);
      _GScrollV_보이기_(_폼디자인.썸네일_GScrollV, true, d_쓰기);
      _GScrollV_위치_(_폼디자인.썸네일_GScrollV, 0, d_쓰기);
      _GScrollV_최대위치_(_폼디자인.썸네일_GScrollV, 0, d_쓰기);
      _GScrollV_이벤트_Scroll_(_폼디자인.썸네일_GScrollV, true, d_쓰기);
      _GScrollV_이벤트_MDown_(_폼디자인.썸네일_GScrollV, true, d_쓰기);
      _GX_표시되는_이름설정_(_폼디자인.썸네일_GScrollV, "썸네일_GScrollV");

  //}

  //[_폼디자인.썸네일크기설정_GButton]
  //{
      _GButton_생성_(_폼디자인.썸네일크기설정_GButton, _폼디자인.기본_GForm, _Gui_ID_생성(), 690, 2, 100, 25, false);
      _GButton_제목_(_폼디자인.썸네일크기설정_GButton, "크기(100)", d_쓰기);
      _GButton_제목위치X_(_폼디자인.썸네일크기설정_GButton, 18, d_쓰기);
      _GButton_유효_(_폼디자인.썸네일크기설정_GButton, true, d_쓰기);
      _GButton_보이기_(_폼디자인.썸네일크기설정_GButton, true, d_쓰기);
      _GButton_이벤트_MClick_(_폼디자인.썸네일크기설정_GButton, true, d_쓰기);
      _GX_표시되는_이름설정_(_폼디자인.썸네일크기설정_GButton, "썸네일크기설정_GButton");

  //}

  //[_폼디자인.정보_GLabel]
  //{
      _GLabel_생성_(_폼디자인.정보_GLabel, _폼디자인.기본_GForm, _Gui_ID_생성(), 2, 555, 788, 20, false);
      _GLabel_제목_(_폼디자인.정보_GLabel, "", d_쓰기);
      _GLabel_테두리_(_폼디자인.정보_GLabel, true, d_쓰기);
      _GLabel_유효_(_폼디자인.정보_GLabel, true, d_쓰기);
      _GLabel_보이기_(_폼디자인.정보_GLabel, true, d_쓰기);
      _GX_표시되는_이름설정_(_폼디자인.정보_GLabel, "정보_GLabel");

  //}

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

  //}

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

  //}

}

void _폼디자인_소멸(void)
{
  _GLabel_삭제_(_폼디자인.정보_GLabel);
  _GButton_삭제_(_폼디자인.썸네일크기설정_GButton);
  _GScrollV_삭제_(_폼디자인.썸네일_GScrollV);

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

  _GButton_삭제_(_폼디자인.그림폴더경로_GButton);
  _GLabel_삭제_(_폼디자인.그림폴더경로_GLabel);

  //[2021.04.25.일][추가]{---------------------
  _GLabel_삭제_(_폼디자인.썸네일진열판_테두리_GLabel);
  //}-----------------------------------------

  _GLabel_삭제_(_폼디자인.썸네일바탕_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_읽기(_폼디자인.기본_GForm)) && (p알림문64->알림문 == d_GuiMsg_Resize))
  {
    _폼디자인_기본_GForm_이벤트_Resize(p알림문64);

  }
  else if((p알림문64->식별자 == _Gui_ID_읽기(_폼디자인.기본_GForm)) && (p알림문64->알림문 == d_GuiMsg_Drag))
  {
    //[2021.06.22.화][추가]
    _폼디자인_기본_GForm_이벤트_Drag(p알림문64);

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

  }
  else if((p알림문64->식별자 == _Gui_ID_읽기(_폼디자인.썸네일_GScrollV)) && (p알림문64->알림문 == d_GuiMsg_Scroll))
  {
    _폼디자인_썸네일_GScrollV_이벤트_Scroll(p알림문64);

  }
  else if((p알림문64->식별자 == _Gui_ID_읽기(_폼디자인.썸네일_GScrollV)) && (p알림문64->알림문 == d_GuiMsg_MDown))
  {
    _폼디자인_썸네일_GScrollV_이벤트_MDown(p알림문64);

  }
  else if((p알림문64->식별자 == _Gui_ID_읽기(_폼디자인.썸네일크기설정_GButton)) && (p알림문64->알림문 == d_GuiMsg_MClick))
  {
    _폼디자인_썸네일크기설정_GButton_이벤트_MClick(p알림문64);

  }
  else if((p알림문64->식별자 == _Gui_ID_읽기(_폼디자인.썸네일진열판_테두리_GLabel)) && (p알림문64->알림문 == d_GuiMsg_MDown))
  {
    _폼디자인_썸네일진열판_테두리_GLabel_이벤트_MDown(p알림문64);

  }

}

