From 7535ad87e719718159e85cf5cdb2fae21a51fcdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Du=C5=A1an=20Poizl?= Date: Thu, 6 Jun 2024 12:00:00 +0200 Subject: [PATCH] Batchprocessing improvments --- batchprocessing.cpp | 29 ++++++++++++++++++++++------- libXISF | 2 +- loadrunable.cpp | 6 +++++- scriptengine.cpp | 25 +++++++++++++++++++------ scriptengine.h | 7 ++++--- 5 files changed, 51 insertions(+), 18 deletions(-) diff --git a/batchprocessing.cpp b/batchprocessing.cpp index bce8507..d736351 100644 --- a/batchprocessing.cpp +++ b/batchprocessing.cpp @@ -47,12 +47,17 @@ QList> scanDirectories(const QStringList &paths) void BatchProcessing::scanScriptDir() { + QString current; + if(_ui->scriptsList->currentItem()) + current = _ui->scriptsList->currentItem()->text(); + _ui->scriptsList->clear(); QDir dir(_scriptBasePath); - for(const QString &script : dir.entryList(QDir::Files | QDir::Readable)) - { - _ui->scriptsList->addItem(script); - } + QStringList scripts = dir.entryList(QDir::Files | QDir::Readable); + _ui->scriptsList->addItems(scripts); + + int idx = scripts.indexOf(current); + if(idx>=0)_ui->scriptsList->setCurrentRow(idx); } BatchProcessing::BatchProcessing(QWidget *parent) : QDialog(parent) @@ -94,6 +99,7 @@ BatchProcessing::BatchProcessing(QWidget *parent) : QDialog(parent) QSettings settings; _ui->outputPath->setText(settings.value("batchprocessing/outputpath", QStandardPaths::standardLocations(QStandardPaths::PicturesLocation).first()).toString()); + _ui->pathsList->addItem("/home/nou/Obrázky/astro/2019-12-03"); } BatchProcessing::~BatchProcessing() @@ -127,15 +133,24 @@ void BatchProcessing::closeEvent(QCloseEvent *event) void BatchProcessing::addFiles() { - QStringList files = QFileDialog::getOpenFileNames(this, tr("Select files"), "/home/nou/Obrázky/astro"); - _ui->pathsList->addItems(files); + QSettings settings; + QStringList files = QFileDialog::getOpenFileNames(this, tr("Select files"), settings.value("batchprocessing/inputpath", QDir::homePath()).toString()); + if(!files.isEmpty()) + { + _ui->pathsList->addItems(files); + settings.setValue("batchprocessing/inputpath", QFileInfo(files.first()).absolutePath()); + } } void BatchProcessing::addDir() { - QString dir = QFileDialog::getExistingDirectory(this, tr("Select directory"), "/home/nou/Obrázky/astro"); + QSettings settings; + QString dir = QFileDialog::getExistingDirectory(this, tr("Select directory"), settings.value("batchprocessing/inputpath", QDir::homePath()).toString()); if(!dir.isEmpty()) + { _ui->pathsList->addItem(dir); + settings.setValue("batchprocessing/inputpath", dir); + } } void BatchProcessing::removePath() diff --git a/libXISF b/libXISF index 263b380..922d4b7 160000 --- a/libXISF +++ b/libXISF @@ -1 +1 @@ -Subproject commit 263b380dbfdb6f1cb17980ec29025616ca44e3e0 +Subproject commit 922d4b73c946f62564f363b9fab9670fec660880 diff --git a/loadrunable.cpp b/loadrunable.cpp index 904c6ee..91591cd 100644 --- a/loadrunable.cpp +++ b/loadrunable.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include #include #include @@ -724,8 +725,11 @@ void ConvertRunable::run() ConvertRunable::ConvertParams::ConvertParams(const QVariantMap &map) { + bool ok = false; if(map.contains("compressionLevel")) - compressionLevel = map["compressionLevel"].toInt(); + compressionLevel = std::clamp(map["compressionLevel"].toInt(&ok), -1, 100); + + if(!ok)compressionLevel = -1; if(map.contains("compressionType")) compressionType = map["compressionType"].toString(); diff --git a/scriptengine.cpp b/scriptengine.cpp index a94dbcd..9e8bd3a 100644 --- a/scriptengine.cpp +++ b/scriptengine.cpp @@ -89,19 +89,32 @@ void ScriptEngine::sync() _pool->waitForDone(); } -QString ScriptEngine::getString(const QString &label, const QString &text) const +QJSValue ScriptEngine::getString(const QString &label, const QString &text) const { - return QInputDialog::getText(_parent, tr("Enter text"), label, QLineEdit::Normal, text); + bool ok = false; + QString ret = QInputDialog::getText(_parent, tr("Enter text"), label, QLineEdit::Normal, text, &ok); + return ok ? ret : QJSValue(); } -int ScriptEngine::getInt(const QString &label, int value) +QJSValue ScriptEngine::getInt(const QString &label, int value) { - return QInputDialog::getInt(_parent, tr("Enter integer number"), label, value); + bool ok = false; + int ret = QInputDialog::getInt(_parent, tr("Enter integer number"), label, value, INT_MIN, INT_MAX, 1, &ok); + return ok ? ret : QJSValue(); } -double ScriptEngine::getFloat(const QString &label, double value, int decimals) const +QJSValue 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 ok = false; + double ret = QInputDialog::getDouble(_parent, tr("Enter float number"), label, value, -INFINITY, INFINITY, decimals, &ok); + return ok ? ret : QJSValue(); +} + +QJSValue ScriptEngine::getItem(const QStringList &items, const QString &label, int current) const +{ + bool ok = false; + QString ret = QInputDialog::getItem(_parent, tr("Select item"), label, items, current, false, &ok); + return ok ? ret : QJSValue(); } bool ScriptEngine::convert(File *file, QString &outpath, const QString &format, const QVariantMap ¶ms, bool async) diff --git a/scriptengine.h b/scriptengine.h index 025b281..cd982fa 100644 --- a/scriptengine.h +++ b/scriptengine.h @@ -39,9 +39,10 @@ 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; + Q_INVOKABLE QJSValue getString(const QString &label = QString(), const QString &text = QString()) const; + Q_INVOKABLE QJSValue getInt(const QString &label = QString(), int value = 0); + Q_INVOKABLE QJSValue getFloat(const QString &label = QString(), double value = 0, int decimals = 3) const; + Q_INVOKABLE QJSValue getItem(const QStringList &items, const QString &label = "", int current = 0) const; bool convert(File *file, QString &outpath, const QString &format, const QVariantMap ¶ms, bool async); QJSValue newObject(); QJSValue newArray(uint size);