diff --git a/batchprocessing.cpp b/batchprocessing.cpp index 5d98cc9..a682aec 100644 --- a/batchprocessing.cpp +++ b/batchprocessing.cpp @@ -25,9 +25,9 @@ QStringList scanDirectories(const QStringList &paths) std::function scanDirectory = [&](const QString &path) { QFileInfo info(path); - if(info.isDir() && !scannedDirs.contains(info.canonicalPath())) + if(info.isDir() && !scannedDirs.contains(info.canonicalFilePath())) { - scannedDirs.append(info.canonicalPath()); + scannedDirs.append(info.canonicalFilePath()); QDir dir(path); QStringList entries = dir.entryList(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot); for(QString &entry : entries) diff --git a/loadrunable.cpp b/loadrunable.cpp index 6ec53cf..a5a4428 100644 --- a/loadrunable.cpp +++ b/loadrunable.cpp @@ -601,6 +601,8 @@ void ConvertRunable::run() ImageInfoData imageinfo; std::shared_ptr rawimage; loadImage(m_infile, imageinfo, rawimage); + QFileInfo info(m_outfile); + info.dir().mkpath("."); if(rawimage) { diff --git a/scriptengine.cpp b/scriptengine.cpp index 53eb359..430d328 100644 --- a/scriptengine.cpp +++ b/scriptengine.cpp @@ -4,6 +4,7 @@ #include #include "loadrunable.h" #include "rawimage.h" +#include "loadrunable.h" namespace Script { @@ -11,6 +12,7 @@ namespace Script ScriptEngine::ScriptEngine(QObject *parent) : QObject(parent) , _jsEngine(new QJSEngine(this)) , _database(new Database(this)) + , _pool(new QThreadPool(this)) { QJSValue engine = _jsEngine->newQObject(this); _jsEngine->globalObject().setProperty("engine", engine); @@ -64,6 +66,24 @@ bool ScriptEngine::isMarked(const File *file) const return _database->isMarked(file->absoluteFilePath()); } +bool ScriptEngine::convert(File *file, QString &outpath, QJSValue ¶ms) +{ + QString format = params.toString(); + QString path; + QDir dir(_outputDir); + QFileInfo info(outpath); + QString suffix = info.suffix(); + if(info.isAbsolute()) + path = info.absolutePath(); + else + path = dir.absoluteFilePath(outpath); + + info.setFile(path); + //qDebug() << info.absolutePath() + "/" + info.completeBaseName() + "." + format.toLower(); + _pool->start(new ConvertRunable(file->absoluteFilePath(), info.absolutePath() + "/" + info.completeBaseName() + "." + format.toLower(), format)); + return true; +} + QJSValue ScriptEngine::newObject() { return _jsEngine->newObject(); diff --git a/scriptengine.h b/scriptengine.h index c366e9d..cee99e6 100644 --- a/scriptengine.h +++ b/scriptengine.h @@ -5,6 +5,7 @@ #include #include #include +#include #include "database.h" namespace Script @@ -17,6 +18,7 @@ class ScriptEngine : public QObject Q_OBJECT QJSEngine *_jsEngine; Database *_database; + QThreadPool *_pool; QString _scriptPath; QString _outputDir; QStringList _paths; @@ -31,6 +33,7 @@ public: Q_INVOKABLE void mark(File *file); Q_INVOKABLE void unmark(File *file); Q_INVOKABLE bool isMarked(const File *file) const; + Q_INVOKABLE bool convert(File *file, QString &outpath, QJSValue ¶ms); QJSValue newObject(); public slots: void run();