diff --git a/cmake/FindQScintilla.cmake b/cmake/FindQScintilla.cmake new file mode 100644 index 0000000..d464d1d --- /dev/null +++ b/cmake/FindQScintilla.cmake @@ -0,0 +1,32 @@ +# Modified from QGIS' FindQScintilla.cmake by Thomas Moenicke, Larry Schaffer + +FIND_PATH(QSCINTILLA_INCLUDE_DIR + NAMES Qsci/qsciglobal.h + PATHS + ${Qt${QT_VERSION_MAJOR}Core_INCLUDE_DIRS} + $ENV{LIB_DIR}/include + /usr/local/include + /usr/include + PATH_SUFFIXES ${QSCINTILLA_PATH_SUFFIXES} +) + +set(QSCINTILLA_LIBRARY_NAMES + qscintilla2-qt${QT_VERSION_MAJOR} + qscintilla2_qt${QT_VERSION_MAJOR} + libqt${QT_VERSION_MAJOR}scintilla2 + libqscintilla2-qt${QT_VERSION_MAJOR} + qt${QT_VERSION_MAJOR}scintilla2 + libqscintilla2-qt${QT_VERSION_MAJOR}.dylib + qscintilla2 +) + + +find_library(QSCINTILLA_LIBRARY +NAMES ${QSCINTILLA_LIBRARY_NAMES} +PATHS + "${QT_LIBRARY_DIR}" + $ENV{LIB_DIR}/lib + /usr/local/lib + /usr/local/lib/qt${QT_VERSION_MAJOR} + /usr/lib +) \ No newline at end of file diff --git a/editor/CMakeLists.txt b/editor/CMakeLists.txt index 3dd92f9..d5ea26a 100644 --- a/editor/CMakeLists.txt +++ b/editor/CMakeLists.txt @@ -13,7 +13,7 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON) find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Widgets Multimedia LinguistTools) find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets Multimedia LinguistTools) - +find_package(QScintilla) set(TS_FILES editor_en_US.ts) @@ -30,8 +30,10 @@ set(PROJECT_SOURCES panes/explorermodel.cpp panes/propertiesview.h panes/propertiesview.cpp - placedocument.cpp placedocument.h + placedocument.cpp + script/scriptdocument.h + script/scriptdocument.cpp ${TS_FILES} ) @@ -63,8 +65,8 @@ else() qt5_create_translation(QM_FILES ${CMAKE_SOURCE_DIR} ${TS_FILES}) endif() -target_include_directories(editor PUBLIC "../core/src" "../include") -target_link_libraries(editor PRIVATE openblocks Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Multimedia) +target_include_directories(editor PUBLIC "../core/src" "../include" ${QSCINTILLA_INCLUDE_DIR}) +target_link_libraries(editor PRIVATE openblocks Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Multimedia ${QSCINTILLA_LIBRARY}) # Qt6 does not include QOpenGLWidgets as part of Widgets base anymore, so # we have to include it manually diff --git a/editor/mainwindow.cpp b/editor/mainwindow.cpp index 74fbab9..ff8b14e 100644 --- a/editor/mainwindow.cpp +++ b/editor/mainwindow.cpp @@ -5,13 +5,16 @@ #include "objects/datamodel.h" #include "objects/jointsservice.h" #include "objects/joint/snap.h" +#include "objects/script.h" #include "placedocument.h" +#include "script/scriptdocument.h" #include #include #include #include #include #include +#include #include #include #include @@ -133,10 +136,17 @@ MainWindow::MainWindow(QWidget *parent) // ui->explorerView->Init(ui); placeDocument = new PlaceDocument(this); + placeDocument->setAttribute(Qt::WA_DeleteOnClose, true); ui->mdiArea->addSubWindow(placeDocument); ui->mdiArea->currentSubWindow()->showMaximized(); ui->mdiArea->findChild()->setExpanding(false); placeDocument->init(); + + ui->mdiArea->setTabsClosable(true); + + auto script = Script::New(); + gWorkspace()->AddChild(script); + // ui->mdiArea->addSubWindow(new ScriptDocument(script)); } void MainWindow::closeEvent(QCloseEvent* evt) { @@ -474,6 +484,14 @@ std::optional MainWindow::openFileDialog(QString filter, QString de return dialog.selectedFiles().front().toStdString(); } +void MainWindow::openScriptDocument(std::shared_ptr