diff --git a/src/UI/MainWindow.cc b/src/UI/MainWindow.cc index 32e6bbf9ec5bc28c14548593ddc126b6df28136a..6944ebed495c71372feb9833e2ef5665e8328b97 100644 --- a/src/UI/MainWindow.cc +++ b/src/UI/MainWindow.cc @@ -233,14 +233,11 @@ MainWindow::closeDocument(int index) noexcept void MainWindow::newDocument() noexcept { - std::shared_ptr<VivyDocument> document = - vivyApp->documentStore.newDocument(VivyDocument::UntouchedByDefault); - try { - addTab(new VivyDocumentView(document)); + addTab(new VivyDocumentView( + vivyApp->documentStore.newDocument(VivyDocument::UntouchedByDefault), documents)); } catch (const std::runtime_error &e) { qCritical() << "Failed to create a new empty document:" << e.what(); - vivyApp->documentStore.closeDocument(document->getUuid()); } } @@ -266,10 +263,10 @@ MainWindow::openDocument() noexcept try { if ((fileType == Utils::DocumentType::Video) || (fileType == Utils::DocumentType::Vivy) || (fileType == Utils::DocumentType::Audio) || (fileType == Utils::DocumentType::ASS)) - addTab(new VivyDocumentView(vivyApp->documentStore.loadDocument(filename))); + addTab(new VivyDocumentView(vivyApp->documentStore.loadDocument(filename), documents)); else if (fileType == Utils::DocumentType::VivyScript) - addTab(new ScriptDocumentView(filename, documents)); + addTab(new ScriptDocumentView(vivyApp->scriptStore.loadDocument(filename), documents)); } catch (const std::runtime_error &e) { qCritical() << "Failed to load document" << filename << "with error:" << e.what(); } diff --git a/src/UI/ScriptDocumentView.cc b/src/UI/ScriptDocumentView.cc index b8d03ac55d6ccb23662417ad007f5466e6e4a8a1..8e3421ed733d21aef89694b1cac9d2bf543b484b 100644 --- a/src/UI/ScriptDocumentView.cc +++ b/src/UI/ScriptDocumentView.cc @@ -7,12 +7,12 @@ using namespace Vivy; -ScriptDocumentView::ScriptDocumentView(const QString &path, QWidget *parent) +ScriptDocumentView::ScriptDocumentView(std::shared_ptr<ScriptDocument> ptr, QWidget *parent) : AbstractDocumentView(AbstractDocumentView::Type::Script, parent) , editor(new ScriptEditor(this)) , syntax(new ScriptHighlighter(editor->document())) { - QFile textFile(path); + QFile textFile(ptr->getName()); if (!textFile.open(QIODevice::ReadOnly | QIODevice::Text)) { throw std::runtime_error("Failed to open script file"); } diff --git a/src/UI/ScriptDocumentView.hh b/src/UI/ScriptDocumentView.hh index 15b2be984092776f7b82ddbeb3ab4ee5e6774428..3037b315d8ae31f5d0ac0e0663d1161e4cf4a6ba 100644 --- a/src/UI/ScriptDocumentView.hh +++ b/src/UI/ScriptDocumentView.hh @@ -15,13 +15,14 @@ namespace Vivy { class ScriptEditor; class ScriptHighlighter; +class ScriptDocument; class ScriptDocumentView final : public AbstractDocumentView { Q_OBJECT VIVY_UNMOVABLE_OBJECT(ScriptDocumentView) public: - explicit ScriptDocumentView(const QString &path, QWidget *parent = nullptr); + explicit ScriptDocumentView(std::shared_ptr<ScriptDocument>, QWidget *parent = nullptr); void closeDocument() noexcept override; void openProperties() noexcept override; diff --git a/src/UI/VivyDocumentView.hh b/src/UI/VivyDocumentView.hh index b30b27d14dcbc2290f6e0b4c082ab029607cede1..96a598766675f35314c6bd41e160f7955a0d5e95 100644 --- a/src/UI/VivyDocumentView.hh +++ b/src/UI/VivyDocumentView.hh @@ -21,7 +21,7 @@ class VivyDocumentView final : public AbstractDocumentView { VIVY_UNMOVABLE_OBJECT(VivyDocumentView) public: - explicit VivyDocumentView(std::shared_ptr<VivyDocument>, QWidget *parent = nullptr) noexcept; + explicit VivyDocumentView(std::shared_ptr<VivyDocument>, QWidget *parent) noexcept; ~VivyDocumentView() noexcept; void closeDocument() noexcept override; diff --git a/src/VivyApplication.hh b/src/VivyApplication.hh index 4d51494cdce8fe4526852725624e6b2954dec4a9..56bde12ac3145dfcec11ebb3152cbcfe0253a418 100644 --- a/src/VivyApplication.hh +++ b/src/VivyApplication.hh @@ -34,6 +34,7 @@ class VivyApplication : public QApplication { public: VivyDocumentStore documentStore{}; + ScriptStore scriptStore{}; enum class Font { Monospace,