Add getInt getString getFloat methods to scripting

This commit is contained in:
2024-06-05 22:27:35 +02:00
parent 9519c9830c
commit 273aef1594
2 changed files with 26 additions and 5 deletions
+20 -3
View File
@@ -2,6 +2,7 @@
#include <QDir> #include <QDir>
#include <QFileInfo> #include <QFileInfo>
#include <QDebug> #include <QDebug>
#include <QInputDialog>
#include "loadrunable.h" #include "loadrunable.h"
#include "rawimage.h" #include "rawimage.h"
#include "loadrunable.h" #include "loadrunable.h"
@@ -11,9 +12,10 @@
namespace Script namespace Script
{ {
ScriptEngine::ScriptEngine(QObject *parent) : QObject(parent) ScriptEngine::ScriptEngine(QDialog *parent) : QObject(parent)
, _jsEngine(new QJSEngine(this)) , _jsEngine(new QJSEngine(this))
, _database(new Database(this)) , _database(new Database(this))
, _parent(parent)
, _pool(new QThreadPool(this)) , _pool(new QThreadPool(this))
{ {
QJSValue core = _jsEngine->newQObject(this); QJSValue core = _jsEngine->newQObject(this);
@@ -87,6 +89,21 @@ void ScriptEngine::sync()
_pool->waitForDone(); _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 &params, bool async) bool ScriptEngine::convert(File *file, QString &outpath, const QString &format, const QVariantMap &params, bool async)
{ {
QString path; QString path;
@@ -535,11 +552,11 @@ QJSValue File::stats()
return _stats; return _stats;
} }
ScriptEngineThread::ScriptEngineThread(QObject *parent) : QObject(parent) ScriptEngineThread::ScriptEngineThread(QDialog *parent) : QObject(parent)
{ {
_thread = new QThread(); _thread = new QThread();
_thread->setObjectName("ScriptEngine"); _thread->setObjectName("ScriptEngine");
_engine = new ScriptEngine; _engine = new ScriptEngine(parent);
_engine->moveToThread(_thread); _engine->moveToThread(_thread);
connect(_engine, &ScriptEngine::finished, _thread, &QThread::quit); connect(_engine, &ScriptEngine::finished, _thread, &QThread::quit);
connect(_engine, &ScriptEngine::newMessage, this, &ScriptEngineThread::newMessage); connect(_engine, &ScriptEngine::newMessage, this, &ScriptEngineThread::newMessage);
+6 -2
View File
@@ -20,13 +20,14 @@ class ScriptEngine : public QObject
Q_OBJECT Q_OBJECT
QJSEngine *_jsEngine; QJSEngine *_jsEngine;
Database *_database; Database *_database;
QDialog *_parent;
QThreadPool *_pool; QThreadPool *_pool;
QSemaphore _semaphore; QSemaphore _semaphore;
QString _scriptPath; QString _scriptPath;
QString _outputDir; QString _outputDir;
QList<QPair<QString, QString>> _paths; QList<QPair<QString, QString>> _paths;
public: public:
explicit ScriptEngine(QObject *parent = nullptr); explicit ScriptEngine(QDialog *parent = nullptr);
void setParams(const QString &scriptPath, const QList<QPair<QString, QString>> &paths, const QString &outputDir); void setParams(const QString &scriptPath, const QList<QPair<QString, QString>> &paths, const QString &outputDir);
void reportError(const QString &message); void reportError(const QString &message);
const QString& outputDir() const; const QString& outputDir() const;
@@ -38,6 +39,9 @@ public:
Q_INVOKABLE bool isMarked(const File *file) const; Q_INVOKABLE bool isMarked(const File *file) const;
Q_INVOKABLE void setMaxThread(int maxthread); Q_INVOKABLE void setMaxThread(int maxthread);
Q_INVOKABLE void sync(); 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 &params, bool async); bool convert(File *file, QString &outpath, const QString &format, const QVariantMap &params, bool async);
QJSValue newObject(); QJSValue newObject();
QJSValue newArray(uint size); QJSValue newArray(uint size);
@@ -54,7 +58,7 @@ class ScriptEngineThread : public QObject
QThread *_thread; QThread *_thread;
ScriptEngine *_engine; ScriptEngine *_engine;
public: public:
ScriptEngineThread(QObject *parent = nullptr); ScriptEngineThread(QDialog *parent = nullptr);
~ScriptEngineThread(); ~ScriptEngineThread();
void setParams(const QString &scriptPath, const QList<QPair<QString, QString>> &paths, const QString &outputDir); void setParams(const QString &scriptPath, const QList<QPair<QString, QString>> &paths, const QString &outputDir);
void start(); void start();