Scintilla 라이브러리를 활용한 SPACE 코드 전용 에디터 AESPA 개발 [1일차]

1. 개요 및 목적

Scintilla는 텍스트에디터 전용으로 나온 오픈소스 라이브러리이다. VS code등이 이를 활용한 것으로 보인다. 일반 에디터를 사용하여 전산코드 입력을 편집하는 것이 일반적이나 현업에서 이를 사용하여 임의의 해석을 수행하기 위해서는 아래와 같은 귀찮은 단계들을 거쳐야 한다.

[1] 텍스트 에디터에서 전산코드 입력 편집

[2] 저장 및 닫기

[3] 전산코드 실행을 위한 환경 설정 (추후 재계산에 필요한 배치파일 만들기, 입력파일이름 변경 등)

[4] 전산코드를 사용하여 해석 수행

[5] 해석결과의 그래프 작성을 위한 엑셀, 오리진 등의 외부프로그램으로의 전환

[6] 외부프로그램에서 해석결과 파일 불러오기 작업 수행


이러한 작업들은 생각보다 개발시간을 많이 사용하게 된다. 이를 자동화하여 개발자의 부담을 덜고 사소한 실수들을 최소화 할 수 있는 코드 전용 에디터가 있다면 매우 효율적일 것이다. 따라서 여기서는 Scintilla 라이브러리를 근간으로 SPACE코드 전용 에디터를 개발하기 위한 프로젝트를 수행한다. 프록젝트 이름은 AESPA (Advanced Editor for SPACE Problem Analysis) 이다.


2. Scintilla 라이브러리 작업


2-1. Scintilla 라이브러리 컴파일 및 Qt와 링크하기


Scintilla라이브러리를 Qt에서 활용하기 위하여 scintilla 홈페이지에서 소스를 다운받아 이를 MingW로 컴파일을 수행하여 Qt를 위한 라이브러리를 개발하였다. 생성된 라이브러리는 Qt와 링크되었고 이를 Qt 프로젝트 파일에서 다음과 같이 해주면 된다.

CONFIG += qscintilla2


2-2. Scintilla 서브 클래싱


향후 개발 시 편의성 및 확장성을 고려하여 Scintilla 클래스를 상속받은 MyScintilla 클래스를 아래와 같이 만들었다.

#include <QObject>
#include <QUrl>
#include <Qsci/qsciscintilla.h>

class MyScintilla:public QsciScintilla
{
    Q_OBJECT
public:
    MyScintilla(QWidget* parent=nullptr);
    ~MyScintilla();

protected:
    virtual void dragEnterEvent(QDragEnterEvent *event);
    virtual void dropEvent(QDropEvent *event);

Q_SIGNALS:
    void fileDropEventOccuredAtTextEdit(QString fileName);

private:
    QList<QUrl> _urlsFromWindow{};
};

이로써 AESPA 개발을 위한 기본적인 환경은 구축되었다. 향후 이를 활용하여 AESPA 개발을 수행할 것이다.






댓글

이 블로그의 인기 게시물

SPACE 코드 제어 계통도를 그림 파일로 변환하는 예시

Scintilla 라이브러리를 활용한 SPACE 코드 전용 에디터 AESPA 개발 [2일차]