| 80 | } |
| 81 | |
| 82 | void TypstDriverWrapper::resetInputFile(const QString& sourceFileName) |
| 83 | { |
| 84 | d_status = Status::INITIALIZING; |
| 85 | Q_EMIT compilationStatusChanged(); |
| 86 | |
| 87 | d_diagnosticsModel->setInputFileName(sourceFileName); |
| 88 | |
| 89 | if (d_engine != nullptr) { |
| 90 | d_engine->deleteLater(); |
| 91 | } |
| 92 | |
| 93 | d_engine = new typstdriver::Engine(sourceFileName, d_compilerLogger, d_packageManager); |
| 94 | d_engine->moveToThread(d_thread); |
| 95 | |
| 96 | auto onInitialized = [this]() { |
| 97 | d_status = Status::INITIALIZED; |
| 98 | Q_EMIT compilationStatusChanged(); |
| 99 | |
| 100 | QMetaObject::invokeMethod(d_engine, &typstdriver::Engine::applySettings, *d_settings); |
| 101 | |
| 102 | bool hasPending = false; |
| 103 | if (d_pendingSource) { |
| 104 | setSource(d_pendingSource.value()); |
| 105 | |
| 106 | d_pendingSource = std::nullopt; |
| 107 | hasPending = true; |
| 108 | } |
| 109 | if (!d_pendingEdits.isEmpty()) { |
| 110 | for (const auto& edit : std::as_const(d_pendingEdits)) { |
| 111 | applyContentEdit(edit.from, edit.to, edit.text); |
| 112 | } |
| 113 | |
| 114 | d_pendingEdits.clear(); |
| 115 | hasPending = true; |
| 116 | } |
| 117 | |
| 118 | if (hasPending) { |
| 119 | updatePreview(); |
| 120 | } |
| 121 | }; |
| 122 | |
| 123 | connect(d_engine, &typstdriver::Engine::compilationFinished, this, &TypstDriverWrapper::compilationFinished); |
| 124 | connect(d_engine, &typstdriver::Engine::previewReady, this, &TypstDriverWrapper::previewReady); |
| 125 | connect(d_engine, &typstdriver::Engine::pageRendered, this, &TypstDriverWrapper::pageRenderComplete); |
| 126 | connect(d_engine, &typstdriver::Engine::exportFinished, this, &TypstDriverWrapper::exportFinished); |
| 127 | connect(d_engine, &typstdriver::Engine::jumpToPreview, this, &TypstDriverWrapper::jumpToPreview); |
| 128 | connect(d_engine, &typstdriver::Engine::jumpToEditor, this, &TypstDriverWrapper::jumpToEditor); |
| 129 | connect(d_engine, &typstdriver::Engine::toolTipReady, this, &TypstDriverWrapper::showEditorToolTip); |
| 130 | connect(d_engine, &typstdriver::Engine::completionsReady, this, &TypstDriverWrapper::completionsReady); |
| 131 | connect(d_engine, &typstdriver::Engine::metadataUpdated, this, &TypstDriverWrapper::metadataUpdatedInternal); |
| 132 | connect(d_engine, &typstdriver::Engine::pageWordCountUpdated, this, &TypstDriverWrapper::pageWordCountUpdated); |
| 133 | connect(d_engine, &typstdriver::Engine::symbolsJsonReady, this, &TypstDriverWrapper::symbolsJsonReady); |
| 134 | connect(d_engine, &typstdriver::Engine::initialized, this, onInitialized, Qt::SingleShotConnection); |
| 135 | |
| 136 | QMetaObject::invokeMethod(d_engine, &typstdriver::Engine::init); |
| 137 | } |
| 138 | |
| 139 | void TypstDriverWrapper::setSource(const QString& text) |
no test coverage detected