라벨이 Scintilla인 게시물 표시

SPACE 코드 전용 에디터 AESPA 시연 영상

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

1. 주요 기능 개발 1-1. 검색 기능 에디터의 기본 기능 중 하나인 검색 기능이 아래와 같이 구현되었다.       if ( _searchingWord . isEmpty ()) return ; // 기존에 마커가 있으면 모두 지운다. textEdit -> markerDeleteAll (); // lineOfSearchedWords . clear (); indexOfSearchedWords . clear (); searchedWords . clear (); //=================== // 현재 커서 위치를 저장 //=================== int cur_line ; long cur_pos = getCurrentPosition (); int cur_index = 0 ; textEdit -> lineIndexFromPosition ( cur_pos , & cur_line , & cur_index ); QString searchWord = _searchingWord ; //====================== // 파일 시작 부터 검색한다. //====================== textEdit -> setCursorPosition ( 0 , 0 ); mFindFirst = textEdit -> findFirst ( _searchingWord , false , _caseSensitive , _wholeWordMatchOnly , false ); // // int maxNumberOfFinds = 200 ; int count = 0 ; if ( mFindFirst ) { addLineIndexOfSearch...

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

이미지
1. 메인 클래스 작성 AESPA의 메인 클래스를 아래와 같이 작성하였다. 클래스 이름은 SIDE이며 본 클래스에서 모든 클래스 및 함수들이 제어될 예정이다. class SIDE : public QMainWindow { Q_OBJECT public : SIDE ( QString fileName = "" , QWidget * parent = nullptr ); ~ SIDE (); protected : void closeEvent ( QCloseEvent * event ); virtual void dragEnterEvent ( QDragEnterEvent * event ); virtual void dropEvent ( QDropEvent * event ); private slots : void newFile (); void open (); bool save (); bool saveAs (); void refresh (); void exportExcel (); void setOptions (); void quit (); void executeCode (); void copy (); void cut (); void paste (); void find (); void findAndReplace (); void toggleFoldAll (); void unitConverter (); void steamTable (); void menuSearch_resultsTriggered ( QAction * act ); void spaceManual (); void manual (); void about (); void setFolderExisted ( bool b ); void op...

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 ...