Skip to content

Commit

Permalink
WIP: Disable project extensions by default
Browse files Browse the repository at this point in the history
  • Loading branch information
bjorn committed May 21, 2021
1 parent a794403 commit a27862e
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 5 deletions.
33 changes: 28 additions & 5 deletions src/tiled/scriptmanager.cpp
Expand Up @@ -65,6 +65,8 @@

namespace Tiled {

static Preference<QStringList> scriptingEnabledProjects { "Scripting/EnabledProjects" };

ScriptManager *ScriptManager::mInstance;

ScriptManager &ScriptManager::instance()
Expand Down Expand Up @@ -351,13 +353,21 @@ void ScriptManager::refreshExtensionsPaths()
extensionsPaths.append(mExtensionsPath);

// Add extensions path from project
auto &projectExtensionsPath = ProjectManager::instance()->project().mExtensionsPath;
if (!projectExtensionsPath.isEmpty()) {
const QFileInfo info(projectExtensionsPath);
if (info.exists() && info.isDir())
extensionsPaths.append(projectExtensionsPath);
bool projectExtensionsSuppressed = false;
const Project &project = ProjectManager::instance()->project();
if (!project.mExtensionsPath.isEmpty()) {
const QFileInfo info(project.mExtensionsPath);
if (info.exists() && info.isDir()) {
if (scriptingEnabledProjects.get().contains(project.fileName(), Qt::CaseInsensitive))
extensionsPaths.append(project.mExtensionsPath);
else
projectExtensionsSuppressed = true;
}
}

if (mProjectExtensionsSuppressed != projectExtensionsSuppressed)
emit projectExtensionsSuppressedChanged(projectExtensionsSuppressed);

extensionsPaths.sort();
extensionsPaths.removeDuplicates();

Expand All @@ -372,6 +382,19 @@ void ScriptManager::refreshExtensionsPaths()
}
}

void ScriptManager::enableProjectExtensions()
{
const Project &project = ProjectManager::instance()->project();
const QString &fileName = project.fileName();
if (!fileName.isEmpty()) {
QStringList projects = scriptingEnabledProjects;
if (!projects.contains(fileName, Qt::CaseInsensitive)) {
projects.append(fileName);
scriptingEnabledProjects = projects;
}
}
}

} // namespace Tiled

#include "moc_scriptmanager.cpp"
13 changes: 13 additions & 0 deletions src/tiled/scriptmanager.h
Expand Up @@ -41,6 +41,8 @@ class ScriptManager : public QObject
{
Q_OBJECT

Q_PROPERTY(bool projectExtensionsSuppressed READ projectExtensionsSuppressed NOTIFY projectExtensionsSuppressedChanged)

public:
static ScriptManager &instance();
static void deleteInstance();
Expand Down Expand Up @@ -69,6 +71,11 @@ class ScriptManager : public QObject

void refreshExtensionsPaths();

bool projectExtensionsSuppressed() const;

signals:
void projectExtensionsSuppressedChanged(bool);

private:
explicit ScriptManager(QObject *parent = nullptr);
~ScriptManager() = default;
Expand All @@ -87,6 +94,7 @@ class ScriptManager : public QObject
QString mExtensionsPath;
QStringList mExtensionsPaths;
int mTempCount = 0;
bool mProjectExtensionsSuppressed = false;

static ScriptManager *mInstance;
};
Expand All @@ -107,4 +115,9 @@ inline QJSEngine *ScriptManager::engine() const
return mEngine;
}

inline bool ScriptManager::projectExtensionsSuppressed() const
{
return mProjectExtensionsSuppressed;
}

} // namespace Tiled

0 comments on commit a27862e

Please sign in to comment.