diff --git a/scriptengine.cpp b/scriptengine.cpp index c2dfc84..a94dbcd 100644 --- a/scriptengine.cpp +++ b/scriptengine.cpp @@ -2,6 +2,7 @@ #include #include #include +#include #include "loadrunable.h" #include "rawimage.h" #include "loadrunable.h" @@ -11,9 +12,10 @@ namespace Script { -ScriptEngine::ScriptEngine(QObject *parent) : QObject(parent) +ScriptEngine::ScriptEngine(QDialog *parent) : QObject(parent) , _jsEngine(new QJSEngine(this)) , _database(new Database(this)) + , _parent(parent) , _pool(new QThreadPool(this)) { QJSValue core = _jsEngine->newQObject(this); @@ -87,6 +89,21 @@ void ScriptEngine::sync() _pool->waitForDone(); } +QString ScriptEngine::getString(const QString &label, const QString &text) const +{ + return QInputDialog::getText(_parent, tr("Enter text"), label, QLineEdit::Normal, text); +} + +int ScriptEngine::getInt(const QString &label, int value) +{ + return QInputDialog::getInt(_parent, tr("Enter integer number"), label, value); +} + +double ScriptEngine::getFloat(const QString &label, double value, int decimals) const +{ + return QInputDialog::getDouble(_parent, tr("Enter float number"), label, value, INT_MIN, INT_MAX, decimals); +} + bool ScriptEngine::convert(File *file, QString &outpath, const QString &format, const QVariantMap ¶ms, bool async) { QString path; @@ -535,11 +552,11 @@ QJSValue File::stats() return _stats; } -ScriptEngineThread::ScriptEngineThread(QObject *parent) : QObject(parent) +ScriptEngineThread::ScriptEngineThread(QDialog *parent) : QObject(parent) { _thread = new QThread(); _thread->setObjectName("ScriptEngine"); - _engine = new ScriptEngine; + _engine = new ScriptEngine(parent); _engine->moveToThread(_thread); connect(_engine, &ScriptEngine::finished, _thread, &QThread::quit); connect(_engine, &ScriptEngine::newMessage, this, &ScriptEngineThread::newMessage); diff --git a/scriptengine.h b/scriptengine.h index f6b6fca..025b281 100644 --- a/scriptengine.h +++ b/scriptengine.h @@ -20,13 +20,14 @@ class ScriptEngine : public QObject Q_OBJECT QJSEngine *_jsEngine; Database *_database; + QDialog *_parent; QThreadPool *_pool; QSemaphore _semaphore; QString _scriptPath; QString _outputDir; QList> _paths; public: - explicit ScriptEngine(QObject *parent = nullptr); + explicit ScriptEngine(QDialog *parent = nullptr); void setParams(const QString &scriptPath, const QList> &paths, const QString &outputDir); void reportError(const QString &message); const QString& outputDir() const; @@ -38,6 +39,9 @@ public: Q_INVOKABLE bool isMarked(const File *file) const; Q_INVOKABLE void setMaxThread(int maxthread); Q_INVOKABLE void sync(); + Q_INVOKABLE QString getString(const QString &label = QString(), const QString &text = QString()) const; + Q_INVOKABLE int getInt(const QString &label = QString(), int value = 0); + Q_INVOKABLE double getFloat(const QString &label = QString(), double value = 0, int decimals = 3) const; bool convert(File *file, QString &outpath, const QString &format, const QVariantMap ¶ms, bool async); QJSValue newObject(); QJSValue newArray(uint size); @@ -54,7 +58,7 @@ class ScriptEngineThread : public QObject QThread *_thread; ScriptEngine *_engine; public: - ScriptEngineThread(QObject *parent = nullptr); + ScriptEngineThread(QDialog *parent = nullptr); ~ScriptEngineThread(); void setParams(const QString &scriptPath, const QList> &paths, const QString &outputDir); void start();