Compare commits

..

2 Commits

Author SHA1 Message Date
nou fe3e5f66be Release 20250318 2025-03-18 17:29:19 +01:00
nou 6fd17fbdf5 Use only single database 2025-03-18 14:46:08 +01:00
9 changed files with 53 additions and 28 deletions
+3 -2
View File
@@ -67,7 +67,8 @@ void BatchProcessing::scanScriptDir()
if(idx>=0)_ui->scriptsList->setCurrentRow(idx);
}
BatchProcessing::BatchProcessing(QWidget *parent) : QDialog(parent)
BatchProcessing::BatchProcessing(Database *database, QWidget *parent) : QDialog(parent)
, _database(database)
{
_ui = new Ui::BatchProcessing;
_ui->setupUi(this);
@@ -200,7 +201,7 @@ void BatchProcessing::runScript()
auto selectedItems = _ui->scriptsList->selectedItems();
if(selectedItems.size())
{
_engineThread = new Script::ScriptEngineThread(this);
_engineThread = new Script::ScriptEngineThread(_database, this);
connect(_engineThread, &Script::ScriptEngineThread::newMessage, this, &BatchProcessing::newMessage);
connect(_engineThread, &Script::ScriptEngineThread::finished, this, &BatchProcessing::scriptFinished);
QStringList paths;
+4 -1
View File
@@ -7,6 +7,8 @@
namespace Ui { class BatchProcessing; }
class Database;
class BatchProcessing : public QDialog
{
Q_OBJECT
@@ -15,10 +17,11 @@ class BatchProcessing : public QDialog
QFileSystemWatcher _fileWatcher;
Script::ScriptEngineThread *_engineThread = nullptr;
QColor _textColor;
Database *_database;
private slots:
void scanScriptDir();
public:
explicit BatchProcessing(QWidget *parent = nullptr);
explicit BatchProcessing(Database *database, QWidget *parent = nullptr);
~BatchProcessing();
protected:
void closeEvent(QCloseEvent *event);
+12 -5
View File
@@ -15,7 +15,7 @@ bool Database::init(const QLatin1String &connectionName)
QString path = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation);
QDir dir(path);
QSqlDatabase database = QSqlDatabase::addDatabase("QSQLITE", connectionName);
database = QSqlDatabase::addDatabase("QSQLITE", connectionName);
if(!dir.mkpath("."))
return false;
@@ -27,7 +27,7 @@ bool Database::init(const QLatin1String &connectionName)
{
QSqlQuery query(database);
query.exec("PRAGMA foreign_keys = ON");
int version = checkVersion();
int version = checkVersion(database);
if(version == 0)
{
query.exec("PRAGMA user_version = 1");
@@ -76,6 +76,14 @@ bool Database::init(const QLatin1String &connectionName)
}
qDebug() << error.text();
}
else
{
qDebug() << "Failed to open database" << connectionName;
}
}
else
{
qDebug() << "Database is invalid";
}
return false;
}
@@ -146,10 +154,9 @@ bool Database::checkError(QSqlQuery &query)
}
}
int Database::checkVersion()
int Database::checkVersion(QSqlDatabase &db)
{
QSqlDatabase db = QSqlDatabase::database();
QSqlQuery query("PRAGMA user_version");
QSqlQuery query("PRAGMA user_version", db);
if(query.next())
return query.value(0).toInt();
return -1;
+2 -1
View File
@@ -10,6 +10,7 @@
class Database : public QObject
{
Q_OBJECT
QSqlDatabase database;
QSqlQuery m_markQuery;
QSqlQuery m_unmarkQuery;
QSqlQuery m_isMarkedQuery;
@@ -40,7 +41,7 @@ protected:
bool indexDir2(const QDir &dir, QProgressDialog *progress, QStringList &scannedDirs);
bool indexFile(const QFileInfo &file);
bool checkError(QSqlQuery &query);
int checkVersion();
int checkVersion(QSqlDatabase &db);
signals:
void databaseChanged();
};
+1 -1
View File
@@ -167,7 +167,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent)
fileMenu->addAction(tr("Reindex files"), this, SLOT(reindex()));
fileMenu->addAction(tr("Export database to CSV"), this, &MainWindow::exportCSV);
fileMenu->addAction(tr("Batch processing"), Qt::Key_B | Qt::CTRL, [this](){
BatchProcessing *batchProcessing = new BatchProcessing(this);
BatchProcessing *batchProcessing = new BatchProcessing(m_database, this);
batchProcessing->exec();
delete batchProcessing;
});
+13 -9
View File
@@ -17,9 +17,9 @@
namespace Script
{
ScriptEngine::ScriptEngine(BatchProcessing *parent)
ScriptEngine::ScriptEngine(Database *database, BatchProcessing *parent)
: _jsEngine(new QJSEngine(this))
, _database(new Database(this))
, _database(database)
, _parent(parent)
, _pool(new QThreadPool(this))
{
@@ -27,7 +27,6 @@ ScriptEngine::ScriptEngine(BatchProcessing *parent)
_jsEngine->globalObject().setProperty("core", core);
QJSValue fitsRecordObject = _jsEngine->newQMetaObject(&FITSRecordModify::staticMetaObject);
_jsEngine->globalObject().setProperty("FITSRecordModify", fitsRecordObject);
_database->init(QLatin1String("scriptengine"));
_semaphore.release(_pool->maxThreadCount());
_pool->setThreadPriority(QThread::LowPriority);
@@ -73,17 +72,22 @@ void ScriptEngine::log(const QString &message)
void ScriptEngine::mark(File *file)
{
_database->mark(file->absoluteFilePath());
QString path = file->absoluteFilePath();
QMetaObject::invokeMethod(_database, [this, path](){ _database->mark(path); }, Qt::QueuedConnection);
}
void ScriptEngine::unmark(File *file)
{
_database->unmark(file->absoluteFilePath());
QString path = file->absoluteFilePath();
QMetaObject::invokeMethod(_database, [this, path](){ _database->unmark(path); }, Qt::QueuedConnection);
}
bool ScriptEngine::isMarked(const File *file) const
bool ScriptEngine::isMarked(const File *file)
{
return _database->isMarked(file->absoluteFilePath());
bool ret;
QString path = file->absoluteFilePath();
QMetaObject::invokeMethod(_database, [this, path](){ return _database->isMarked(path); }, Qt::BlockingQueuedConnection, &ret);
return ret;
}
void ScriptEngine::setMaxThread(int maxthread)
@@ -765,11 +769,11 @@ QJSValue File::extractStars(bool hfr)
}
#endif // PLATESOLVER
ScriptEngineThread::ScriptEngineThread(BatchProcessing *parent) : QObject(parent)
ScriptEngineThread::ScriptEngineThread(Database *database, BatchProcessing *parent) : QObject(parent)
{
_thread = new QThread();
_thread->setObjectName("ScriptEngine");
_engine = new ScriptEngine(parent);
_engine = new ScriptEngine(database, parent);
_engine->moveToThread(_thread);
connect(_engine, &ScriptEngine::finished, _thread, &QThread::quit);
connect(_engine, &ScriptEngine::newMessage, this, &ScriptEngineThread::newMessage);
+3 -3
View File
@@ -31,7 +31,7 @@ class ScriptEngine : public QObject
QList<QPair<QString, QString>> _paths;
Solver *_solver = nullptr;
public:
explicit ScriptEngine(BatchProcessing *parent = nullptr);
explicit ScriptEngine(Database *database, BatchProcessing *parent = nullptr);
void setParams(const QString &scriptPath, const QList<QPair<QString, QString>> &paths, const QString &outputDir);
void reportError(const QString &message);
const QString& outputDir() const;
@@ -40,7 +40,7 @@ public:
Q_INVOKABLE void log(const QString &message);
Q_INVOKABLE void mark(File *file);
Q_INVOKABLE void unmark(File *file);
Q_INVOKABLE bool isMarked(const File *file) const;
Q_INVOKABLE bool isMarked(const File *file);
Q_INVOKABLE void setMaxThread(int maxthread);
Q_INVOKABLE void sync();
Q_INVOKABLE QJSValue getString(const QString &label = QString(), const QString &text = QString()) const;
@@ -71,7 +71,7 @@ class ScriptEngineThread : public QObject
QThread *_thread;
ScriptEngine *_engine;
public:
ScriptEngineThread(BatchProcessing *parent = nullptr);
ScriptEngineThread(Database *database, BatchProcessing *parent = nullptr);
~ScriptEngineThread();
void setParams(const QString &scriptPath, const QList<QPair<QString, QString>> &paths, const QString &outputDir);
void start();
+9
View File
@@ -58,6 +58,15 @@
</screenshots>
<content_rating type="oars-1.1"/>
<releases>
<release version="20250318" date="2025-03-18">
<description>
<ul>
<li>Fix OpenGL ES drawings</li>
<li>Fix mark/unmark files from script</li>
<li>Fix stretching of float images with values outside of 0-1 range</li>
</ul>
</description>
</release>
<release version="20250302" date="2025-03-02">
<description>
<ul>
+6 -6
View File
@@ -9,15 +9,15 @@ void RawImageToHTBITMAP(std::shared_ptr<RawImage> &rawImage, HBITMAP *hbmp, UINT
{
rawImage->calcStats();
DWORD thre = 20;
DWORD thre = 10;
DWORD dataSize = 4;
HRESULT hr = HRESULT_FROM_WIN32(RegGetValueW(HKEY_CURRENT_USER, L"SOFTWARE\\nou\\Tenmon\\settings", L"thumbnailstretchthreshold", RRF_RT_DWORD, NULL, &thre, &dataSize));
//HRESULT hr = HRESULT_FROM_WIN32(RegGetValueW(HKEY_CURRENT_USER, L"SOFTWARE\\nou\\Tenmon\\settings", L"thumbnailstretchthreshold", RRF_RT_DWORD, NULL, &thre, &dataSize));
float thref = 0.2f;
if(hr == S_OK)
thref = thre / 100.0f;
float thref = 0.1f;
/*if(hr == S_OK)
thref = thre / 100.0f;*/
if(rawImage->imageStats().m_median[0] < rawImage->norm() * thref)
if(rawImage->imageStats().m_mean[0] < rawImage->norm() * thref)
{
//OutputDebugStringA("Stretch image");
MTFParam params = rawImage->calcMTFParams();