diff --git a/include/scripting.h b/include/scripting.h index b700df8f..d54292b4 100644 --- a/include/scripting.h +++ b/include/scripting.h @@ -81,7 +81,7 @@ private: QMap imageCache; ScriptUtility *scriptUtility; - void loadModules(QStringList moduleFiles); + void loadModules(const QStringList &moduleFiles); void invokeCallback(CallbackType type, QJSValueList args); }; diff --git a/src/scriptapi/scripting.cpp b/src/scriptapi/scripting.cpp index ff614c1a..7ae0af85 100644 --- a/src/scriptapi/scripting.cpp +++ b/src/scriptapi/scripting.cpp @@ -58,13 +58,17 @@ Scripting::~Scripting() { delete this->scriptUtility; } -void Scripting::loadModules(QStringList moduleFiles) { - for (QString filepath : moduleFiles) { +void Scripting::loadModules(const QStringList &moduleFiles) { + for (const auto &filepath : moduleFiles) { + if (filepath.isEmpty()) continue; + QJSValue module; QString validPath = Project::getExistingFilepath(filepath); - if (!validPath.isEmpty()) filepath = validPath; // Otherwise allow it to fail with the original path - - QJSValue module = this->engine->importModule(filepath); - if (tryErrorJS(module)) { + if (validPath.isEmpty()) { + logError(QString("Failed to find script file '%1'.").arg(filepath)); + } else { + module = this->engine->importModule(validPath); + } + if (validPath.isEmpty() || tryErrorJS(module)) { QMessageBox messageBox(this->mainWindow); messageBox.setText("Failed to load script"); messageBox.setInformativeText(QString("An error occurred while loading custom script file '%1'").arg(filepath));