6#include <phosphortiles_export.h>
17class ITileAlgorithmRegistry;
18class ScriptedAlgorithmWatchdog;
54 QObject* parent =
nullptr);
102 class JsScanStrategy;
103 QStringList performScan(
const QStringList& directoriesInScanOrder);
105 void loadFromDirectory(
const QString& dir,
bool isUserDir,
const QString& canonicalUserDir);
106 QStringList algorithmDirectories()
const;
107 QStringList validatedJsFiles(
const QString& dirPath,
int maxFiles)
const;
109 QString m_subdirectory;
121 std::shared_ptr<ScriptedAlgorithmWatchdog> m_watchdog;
122 std::unique_ptr<JsScanStrategy> m_strategy;
123 std::unique_ptr<PhosphorFsLoader::WatchedDirectorySet> m_watcher;
124 QHash<QString, QString> m_scriptIdToPath;
131 QByteArray m_lastScriptSignature;
Abstract contract for a tiling-algorithm registry.
Definition ITileAlgorithmRegistry.h:41
Discovers, loads, and hot-reloads ScriptedAlgorithm instances.
Definition ScriptedAlgorithmLoader.h:38
void ensureUserDirectoryExists()
Create the user algorithm directory if it does not exist.
~ScriptedAlgorithmLoader() override
QString userAlgorithmDir() const
Writable user directory path for custom algorithms.
void algorithmsChanged()
Emitted after any add/remove/reload of scripted algorithms.
void scanAndRegister(PhosphorFsLoader::LiveReload liveReload=PhosphorFsLoader::LiveReload::On)
Discover and load all .js algorithms from system + user dirs.
ScriptedAlgorithmLoader(const QString &subdirectory, ITileAlgorithmRegistry *registry, QObject *parent=nullptr)
Construct a loader for subdirectory under XDG data dirs.
LiveReload
Opt-in policy for directory watching.
Definition WatchedDirectorySet.h:34
Definition AutotileEngine.h:71