
#include "함수묶음.h"

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

#include "편집기.h"

#include "__Main.h"


void 편집기_초기화(void)
{
  //[2024.06.09.일][생성]

  //[환경변수]{=================
  struct ts_폼디자인  *폼디자인_;
  struct t_전역정보  *gv_;
  _폼디자인_위치얻기(&폼디자인_);
  _전역정보_주소얻기(&gv_);
  //}=========================


  //[색동문자 적용 단어 설정]
  //{
      편집기_색동단어_추가();

  //}

  //[기본색 설정]
  //{
      _GEditor_색동문자적용단어색_(폼디자인_->편집_GEditor, 0x00ff0080, d_쓰기);

      _GEditor_색동문자주석_(폼디자인_->편집_GEditor, 0x9d9d9d, d_쓰기);

      _GEditor_색동문자16진수_(폼디자인_->편집_GEditor, 0xff8000, d_쓰기);

      _GEditor_색동문자2진수_(폼디자인_->편집_GEditor, 0xff00ff, d_쓰기);

      _GEditor_정지점색_(폼디자인_->편집_GEditor, clRed, d_쓰기);

      _GEditor_행지정자색_(폼디자인_->편집_GEditor, 0xcc, d_쓰기);

      _GEditor_지정행문자색_(폼디자인_->편집_GEditor, clBlack, d_쓰기);

      _GEditor_지정행배경색_(폼디자인_->편집_GEditor, clLime, d_쓰기);

      _GEditor_배경밝기_(폼디자인_->편집_GEditor, 225, d_쓰기);

  //}

  //[기본설명문 출력]
  //{
      //[2024.06.16.일][추가]{---------------------------
      //문서가 없을때는 반드시 간단한 설명문이 보이는 상태로 만든다.
      //}-----------------------------------------------

      편집기_기본문자열_출력(true);

  //}

}

void 편집기_색동단어_추가(void)
{
  //[2024.06.09.일][생성]{---------
  //[색동문자] 를 적용할 [예약어] 추가.
  //}----------------------------

  //[VAR]
  //{
      char  *색동단어_;

  //}

  //[환경변수]{=================
  struct ts_폼디자인  *폼디자인_;
  struct t_전역정보  *gv_;
  _폼디자인_위치얻기(&폼디자인_);
  _전역정보_주소얻기(&gv_);
  //}=========================


  //[인터프리터 예약어 등록]
  //{
      색동단어_ = "각도 이동 시간지연";

      _GEditor_색동문자적용단어등록_(폼디자인_->편집_GEditor,
                                색동단어_,
                                d_굵은문자,
                                0x00ff0080, //<---보라색.
                                clWhite,
                                true);

  //}

}

void 편집기_새문서(void)
{
  //[2024.06.09.일][생성]

  //[환경변수]{=================
  struct ts_폼디자인  *폼디자인_;
  struct t_전역정보  *gv_;
  _폼디자인_위치얻기(&폼디자인_);
  _전역정보_주소얻기(&gv_);
  //}=========================


  _GEditor_새문서_(폼디자인_->편집_GEditor);

  //문서종류는 <*.c> 로 정의하여 같은 [색동문자] 를 적용.
  _GEditor_문서종류_(폼디자인_->편집_GEditor, 1, d_쓰기);

}

void 편집기_열기(void)
{
  //[2024.06.09.일][생성]

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

  //}

  //[환경변수]{=================
  struct ts_폼디자인  *폼디자인_;
  struct t_전역정보  *gv_;
  _폼디자인_위치얻기(&폼디자인_);
  _전역정보_주소얻기(&gv_);
  //}=========================


  //[열기 대화상자]
  //{
      _File_열기대화상자_확장자_("RC12 서보제어(*.rc12)|*.rc12");

      if(_File_열기대화상자_() != true) return;

      //[경로이름확장자] 얻기.
      _File_열기대화상자_문서이름_(경로이름확장자);

  //}

  //[열기]
  //{
      _GEditor_문서열기_(폼디자인_->편집_GEditor, 경로이름확장자);

  //}

  //[문서종류 설정]
  //{
      //문서종류는 <*.c> 로 정의하여 같은 [색동문자] 를 적용.
      _GEditor_문서종류_(폼디자인_->편집_GEditor, 1, d_쓰기);

  //}

}

void 편집기_저장(void)
{
  //[2024.06.09.일][생성]

  //[환경변수]{=================
  struct ts_폼디자인  *폼디자인_;
  struct t_전역정보  *gv_;
  _폼디자인_위치얻기(&폼디자인_);
  _전역정보_주소얻기(&gv_);
  //}=========================


  //현재 문서가 [새문서] 인 경우는 자동으로 [저장대화상자] 가 나오게 되는데 이 [저장대화상자] 의 확장자를 설정.
  _File_저장대화상자_확장자_("RC12 서보제어(*.rc12)|*.rc12|*.*|*.*");

  //이미 저장된 문서라면 바로 저장되지만, [새문서] 라면 [저장대화상자] 가 나온다.
  _GEditor_문서저장_(폼디자인_->편집_GEditor);

  //문서종류는 <*.c> 로 정의하여 같은 [색동문자] 를 적용.
  _GEditor_문서종류_(폼디자인_->편집_GEditor, 1, d_쓰기);

}

void 편집기_모두저장(void)
{
  //[2024.06.09.일][생성]

  //[환경변수]{=================
  struct ts_폼디자인  *폼디자인_;
  struct t_전역정보  *gv_;
  _폼디자인_위치얻기(&폼디자인_);
  _전역정보_주소얻기(&gv_);
  //}=========================


  //현재 문서가 [새문서] 인 경우는 자동으로 [저장대화상자] 가 나오게 되는데 이 [저장대화상자] 의 확장자를 설정.
  _File_저장대화상자_확장자_("RC12 서보제어(*.rc12)|*.rc12|*.*|*.*");

  //이미 저장된 문서라면 바로 저장되지만, [새문서] 라면 [저장대화상자] 가 나온다.
  _GEditor_문서저장_(폼디자인_->편집_GEditor);

  //이미 저장된 문서라면 바로 저장되지만, [새문서] 라면 [저장대화상자] 가 나온다.
  _GEditor_문서모두저장_(폼디자인_->편집_GEditor);

  //문서종류는 <*.c> 로 정의하여 같은 [색동문자] 를 적용.
  _GEditor_문서종류_(폼디자인_->편집_GEditor, 1, d_쓰기);

}

void 편집기_기본문자열_출력(bool  p보이기)
{
  //[2024.06.14.금][생성]{-------------------------------------------
  //간단한 설명과 기본 명령어 형식을 <편집기_기본설명_GLabel> 에 출력해 놓는다.
  //
  //<편집기_기본설명_GLabel> 은 [편집기] 안에 존재하고 아래와 같은 규칙을 갖는다.
  //
  //열린문서가 없을때 : <편집기_기본설명_GLabel> 이 보이고 기본 설명이 출력된다.
  //열린문서가 존재   : 보이지 않는다.
  //}---------------------------------------------------------------

  //[VAR]
  //{
      char  문자열_[1024];

  //}


  //[환경변수]{=================
  struct ts_폼디자인  *폼디자인_;
  struct t_전역정보  *gv_;
  _폼디자인_위치얻기(&폼디자인_);
  _전역정보_주소얻기(&gv_);
  //}=========================


  //[보이기?]
  //{
      if(p보이기 != true)
      {
        _GLabel_보이기_(폼디자인_->편집기_기본설명_GLabel, false, d_쓰기);

        //보이지 않는 경우는 여기서 즉시 종료.
        return;

      }

  //}

  //[!]{--------
  //보여주는 경우.
  //}-----------

  //[문자열 합성]
  //{
      _Str_할당_(문자열_, "");

      _Str_더하기_(문자열_,  "맷돌(G.MTDL.X) 에 내장된 [12 개 RC 서보 제어기] 를 제어 할수 있는 GUI 개발 환경.\r\n\r\n");
      _Str_더하기_(문자열_,  "사용전 [GVMX 설치] 버튼으로 맷돌(G.MTDL.X)에 짝이되는 GVMX(가상기계)를 설치해야 함.\r\n\r\n");

      _Str_더하기_(문자열_,  "간단한 인터프리터 방식으로 동작을 프로그램 할수 있으며(G.M.RC.BASiC-IDE 와 유사),\r\n");
      _Str_더하기_(문자열_,  "명령 기술 형식은 [C-언어] 의 [함수()] 방식을 사용하였음.\r\n\r\n");

      _Str_더하기_(문자열_,  "- 각도(속도, 속도종류, 가감속상수, 완료보고비율, 각도00, 각도01, 각도02, ..., 각도11);\r\n");
      _Str_더하기_(문자열_,  "- 시간지연(ms 단위 시간지연값);\r\n");
      _Str_더하기_(문자열_,  "- 이동 라벨이름;\r\n");
      _Str_더하기_(문자열_,  "- 라벨:\r\n");
      _Str_더하기_(문자열_,  "- //한줄 주석문...\r\n");

  //}

  //[출력]
  //{
      //[주의]{-----------------------------------------------------------------------
      //뒤에 있는 것을 캡쳐하므로, 캡쳐대상이 가리지 않도록 캡쳐 전에는 라벨을 보이지 않게 만들어야 한다.
      //그렇지 않은 경우는 자신의 영역이 가려져 있어서 [검정색] 으로 나온다.
      //}----------------------------------------------------------------------------

      _GLabel_보이기_(폼디자인_->편집기_기본설명_GLabel, false, d_쓰기);
      //{
          _GLabel_제목수직자동위치_(폼디자인_->편집기_기본설명_GLabel, false, d_쓰기);
          _GLabel_제목수평자동위치_(폼디자인_->편집기_기본설명_GLabel, false, d_쓰기);

          _GLabel_제목위치X_(폼디자인_->편집기_기본설명_GLabel, 0, d_쓰기);
          _GLabel_제목위치Y_(폼디자인_->편집기_기본설명_GLabel, 2, d_쓰기);

          _GLabel_제목_(폼디자인_->편집기_기본설명_GLabel, 문자열_, d_쓰기);

          _GLabel_캡쳐모드_(폼디자인_->편집기_기본설명_GLabel,
                          폼디자인_->편집_GEditor,
                          //[복사위치:정보]{---
                          0,
                          0,
                          //[캡쳐영역:정보]{---
                          32,
                          18,
                          598,
                          264,
                          //}---------------
                          0,
                          true,
                          true);

      //}
      _GLabel_보이기_(폼디자인_->편집기_기본설명_GLabel, true, d_쓰기);

  //}

}

