From 2082e9b130e04e01097d541f26e52faffea7cbfc Mon Sep 17 00:00:00 2001
From: Olivier Langella <Olivier.Langella@moulon.inra.fr>
Date: Thu, 21 Sep 2017 17:11:54 +0200
Subject: [PATCH] WIP: job finished message

---
 src/core/tandem_run/tandembatchprocess.cpp    | 2 ++
 src/core/tandem_run/tandemcondorprocess.cpp   | 1 +
 src/files/tandemparametersfile.cpp            | 7 +++++++
 src/gui/mainwindow.cpp                        | 9 +++++++++
 src/gui/mainwindow.h                          | 1 +
 src/gui/tandem_run_dialog/tandemrundialog.cpp | 2 +-
 src/gui/workerthread.cpp                      | 1 +
 src/utils/workmonitor.cpp                     | 8 ++++++--
 src/utils/workmonitor.h                       | 7 +++++--
 9 files changed, 33 insertions(+), 5 deletions(-)

diff --git a/src/core/tandem_run/tandembatchprocess.cpp b/src/core/tandem_run/tandembatchprocess.cpp
index e8965d0dc..5179c93ab 100644
--- a/src/core/tandem_run/tandembatchprocess.cpp
+++ b/src/core/tandem_run/tandembatchprocess.cpp
@@ -124,6 +124,8 @@ void TandemBatchProcess::run() {
         runOne(mz_file);
         i++;
     }
+    
+    _p_monitor->finished(QObject::tr("%1 X!Tandem job(s) finished").arg(_tandem_run_batch._mz_file_list.size())); 
     qDebug() << "TandemBatchProcess::run end" ;
 }
 
diff --git a/src/core/tandem_run/tandemcondorprocess.cpp b/src/core/tandem_run/tandemcondorprocess.cpp
index 3a45526ef..9ce6f7aa5 100644
--- a/src/core/tandem_run/tandemcondorprocess.cpp
+++ b/src/core/tandem_run/tandemcondorprocess.cpp
@@ -253,6 +253,7 @@ void TandemCondorProcess::run() {
 
     surveyCondorJob();
 
+    _p_monitor->finished(QObject::tr("%1 HTCondor X!Tandem job(s) finished").arg(_tandem_run_batch._mz_file_list.size())); 
     qDebug() << "TandemCondorProcess::run end" ;
 }
 
diff --git a/src/files/tandemparametersfile.cpp b/src/files/tandemparametersfile.cpp
index fdcb10163..b00dd2c08 100644
--- a/src/files/tandemparametersfile.cpp
+++ b/src/files/tandemparametersfile.cpp
@@ -36,9 +36,16 @@
 TandemParametersFile::TandemParametersFile(const QString & fasta_source) : _param_source(fasta_source)
 {
     qDebug() << "TandemParametersFile::TandemParametersFile "<< fasta_source;
+    if (!_param_source.exists()) {
+        throw pappso::PappsoException(QObject::tr("XML X!Tandem parameter file %1 does not exists").arg(_param_source.absoluteFilePath()));
+    }
 }
 TandemParametersFile::TandemParametersFile(const QFileInfo & fasta_source): _param_source(fasta_source)
 {
+    if (!_param_source.exists()) {
+        throw pappso::PappsoException(QObject::tr("XML X!Tandem parameter file %1 does not exists").arg(_param_source.absoluteFilePath()));
+    }
+
 }
 TandemParametersFile::TandemParametersFile(const TandemParametersFile & other) : _param_source(other._param_source)
 {
diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp
index 44520a82e..24b029bac 100644
--- a/src/gui/mainwindow.cpp
+++ b/src/gui/mainwindow.cpp
@@ -128,6 +128,15 @@ void MainWindow::viewError(QString error) {
                          tr("Oops! an error occurred in XTPCPP. Dont Panic :"), error);
 }
 
+void MainWindow::doDisplayJobFinished(QString message) {
+    qDebug() << "MainWindow::doDisplayJobFinished " <<  message;
+    hideWaitingMessage();
+    QMessageBox::information(this,
+                         tr("job finished"), message);
+    
+    
+}
+
 void MainWindow::doDisplayLoadingMessage(QString message) {
     qDebug() << "MainWindow::doDisplayLoadingMessage " <<  message;
     _p_waiting_message_dialog->message(message);
diff --git a/src/gui/mainwindow.h b/src/gui/mainwindow.h
index 0c8adc9d4..d0ab7b21c 100644
--- a/src/gui/mainwindow.h
+++ b/src/gui/mainwindow.h
@@ -76,6 +76,7 @@ public slots:
     void doActionModifications();
     void doDisplayLoadingMessage(QString message);
     void doDisplayLoadingMessagePercent(QString message, int value);
+    void doDisplayJobFinished(QString message);
     void doWorkerAppendText(char *);
     void doWorkerSetText(QString);
     void doProjectReady(ProjectSp project_sp);
diff --git a/src/gui/tandem_run_dialog/tandemrundialog.cpp b/src/gui/tandem_run_dialog/tandemrundialog.cpp
index 854ef8be1..5d4f0aa66 100644
--- a/src/gui/tandem_run_dialog/tandemrundialog.cpp
+++ b/src/gui/tandem_run_dialog/tandemrundialog.cpp
@@ -120,7 +120,7 @@ void TandemRunDialog::selectPresetDirectory() {
 
         QString directory = QFileDialog::getExistingDirectory(this,tr("Choose preset directory"),default_preset_location );
 
-        if (!directory.isEmpty()) {
+        if (!directory.isEmpty() && ! directory.isNull()) {
             settings.setValue("path/tandemrun_preset_directory", directory);
             fillPresetComboBox();
         }
diff --git a/src/gui/workerthread.cpp b/src/gui/workerthread.cpp
index 4588035be..ff9cb5c7b 100644
--- a/src/gui/workerthread.cpp
+++ b/src/gui/workerthread.cpp
@@ -55,6 +55,7 @@ WorkerThread::WorkerThread(MainWindow * p_main_window)
     connect(_p_work_monitor, &WorkMonitor::workerMessagePercent, p_main_window,&MainWindow::doDisplayLoadingMessagePercent);
     connect(_p_work_monitor, &WorkMonitor::workerAppendText, p_main_window,&MainWindow::doWorkerAppendText);
     connect(_p_work_monitor, &WorkMonitor::workerSetText, p_main_window,&MainWindow::doWorkerSetText);
+    connect(_p_work_monitor, &WorkMonitor::workerJobFinished, p_main_window,&MainWindow::doDisplayJobFinished);
 
     connect(p_main_window, &MainWindow::operateXpipFile, this,&WorkerThread::doXpipFileLoad);
     connect(this, &WorkerThread::projectReady, p_main_window,&MainWindow::doProjectReady);
diff --git a/src/utils/workmonitor.cpp b/src/utils/workmonitor.cpp
index 76ac18991..e1294423f 100644
--- a/src/utils/workmonitor.cpp
+++ b/src/utils/workmonitor.cpp
@@ -36,6 +36,10 @@ WorkMonitor::WorkMonitor() {
     _timer_duration = 200;
     _time.restart();
 }
+
+void WorkMonitor::finished(const QString & message) {
+    emit workerJobFinished(message);
+}
 void WorkMonitor::message(const QString & message) {
     if (_time.elapsed() > _timer_duration) {
         _time.currentTime();
@@ -52,12 +56,12 @@ void WorkMonitor::message(const QString & message, int value) {
     }
 }
 void WorkMonitor::setProgressMaximumValue(int max_value) {
-     //qDebug() << "WorkMonitor::setProgressMaximumValue " << max_value;
+    //qDebug() << "WorkMonitor::setProgressMaximumValue " << max_value;
     _max_value = max_value;
 }
 
 void WorkMonitor::appendText(char * p_char) {
-     //qDebug() << "WorkMonitor::setProgressMaximumValue " << max_value;
+    //qDebug() << "WorkMonitor::setProgressMaximumValue " << max_value;
     emit workerAppendText(p_char);
 }
 
diff --git a/src/utils/workmonitor.h b/src/utils/workmonitor.h
index bf53e37f4..4c45540e5 100644
--- a/src/utils/workmonitor.h
+++ b/src/utils/workmonitor.h
@@ -37,6 +37,7 @@
 class WorkMonitorInterface
 {
 public:
+    virtual void finished(const QString & message) = 0;
     virtual void message(const QString & message) = 0;
     virtual void message(const QString & message, int value) = 0;
     virtual void setProgressMaximumValue(int max_value) = 0;
@@ -49,13 +50,15 @@ class WorkMonitor: public QObject, public WorkMonitorInterface
     Q_OBJECT
 public:
     WorkMonitor();
+    void finished(const QString & message) override;
     void message(const QString & message) override;
     void message(const QString & message, int value) override;
     void setProgressMaximumValue(int max_value) override;
     void appendText(char * p_char) override;
     void setText(const QString text) override;
-    
-    signals:
+
+signals:
+    void workerJobFinished(QString message);
     void workerMessage(QString message);
     void workerMessagePercent(QString message, int value);
     void workerAppendText(char * p_char);
-- 
GitLab