From e44804ad5cc051c6002fda1ef692ca080af819be Mon Sep 17 00:00:00 2001
From: Olivier Langella <Olivier.Langella@moulon.inra.fr>
Date: Mon, 20 Mar 2017 16:03:20 +0100
Subject: [PATCH] error message OK, close event handled

---
 src/gui/mainwindow.cpp | 48 ++++++++++++++++++++++++++++++------------
 src/gui/mainwindow.h   | 19 ++++++++++++++---
 2 files changed, 51 insertions(+), 16 deletions(-)

diff --git a/src/gui/mainwindow.cpp b/src/gui/mainwindow.cpp
index 491c0958..139afaeb 100644
--- a/src/gui/mainwindow.cpp
+++ b/src/gui/mainwindow.cpp
@@ -24,11 +24,13 @@
 #include <QDockWidget>
 #include <QSettings>
 #include <QFileDialog>
+#include <QMessageBox>
 #include "mainwindow.h"
 
 #include "ui_main.h"
 #include "files/xpipfile.h"
 #include "gui/peptide_list_view/peptidelistwindow.h"
+#include <pappsomspp/pappsoexception.h>
 
 
 void PwizLoaderThread::doMsDataFileLoad(const QString & parameter) {
@@ -83,6 +85,21 @@ MainWindow::~MainWindow()
 }
 
 
+void MainWindow::closeEvent(QCloseEvent * event) {
+    if (true) {
+        event->accept();
+    } else {
+        event->ignore();
+    }
+}
+
+void MainWindow::viewError(QString error) {
+    QMessageBox::warning(this,
+                         tr("Oops! an error occurred in XTPCPP. Dont Panic :"), error);
+}
+
+
+
 void MainWindow::doProteinMatchClicked(ProteinMatch * protein_match) {
     PeptideListWindow * peptide_window = new PeptideListWindow(this);
     peptide_window->setProteinMatch(_project_sp.get(), protein_match);
@@ -90,23 +107,28 @@ void MainWindow::doProteinMatchClicked(ProteinMatch * protein_match) {
 }
 
 void MainWindow::selectXpipFile() {
+    try {
+        QSettings settings;
+        QString default_location = settings.value("path/xpipfile", "").toString();
 
-    QSettings settings;
-    QString default_location = settings.value("path/xpipfile", "").toString();
+        QString filename = QFileDialog::getOpenFileName(this,
+                           tr("Open XPIP File"), default_location,
+                           tr("xpip files (*.xpip);;all files (*)"));
 
-    QString filename = QFileDialog::getOpenFileName(this,
-                       tr("Open XPIP File"), default_location,
-                       tr("xpip files (*.xpip);;all files (*)"));
+        if (filename.isEmpty()) {
+            return;
+        }
+        QFileInfo new_xpip_file;
+        new_xpip_file.setFile(filename);
 
-    if (filename.isEmpty()) {
-        return;
-    }
-    QFileInfo new_xpip_file;
-    new_xpip_file.setFile(filename);
 
-    XpipFile xpip_file(new_xpip_file);
+        XpipFile xpip_file(new_xpip_file);
 
-    _project_sp = xpip_file.getProjectSp();
-    _protein_list_window->setIdentificationGroup(_project_sp.get()->getCurrentIdentificationGroupP());
+        _project_sp = xpip_file.getProjectSp();
+        _protein_list_window->setIdentificationGroup(_project_sp.get()->getCurrentIdentificationGroupP());
+    }
+    catch (pappso::PappsoException & error) {
+        viewError(error.qwhat());
+    }
 
 }
diff --git a/src/gui/mainwindow.h b/src/gui/mainwindow.h
index 536da3dc..2bf67e3a 100644
--- a/src/gui/mainwindow.h
+++ b/src/gui/mainwindow.h
@@ -28,6 +28,7 @@
 #include <QMainWindow>
 #include <QThread>
 #include <QFileInfo>
+#include <QCloseEvent>
 #include <pappsomspp/types.h>
 #include <pappsomspp/peptide/peptide.h>
 #include <pappsomspp/spectrum/spectrum.h>
@@ -48,6 +49,11 @@ class PwizLoaderThread : public QObject
     Q_OBJECT
 public:
 
+  
+protected:
+
+    void closeEvent(QCloseEvent *event);
+
 public slots:
     void doMsDataFileLoad(const QString & parameter);
 
@@ -72,16 +78,23 @@ public slots:
     // void setShape(Shape shape);
 signals:
     //void peptideChanged(pappso::PeptideSp peptide);
+  
+  
+protected:
 
-private:
-    Ui::Main *ui;
+    void closeEvent(QCloseEvent *event) override;
 
 
-    ProteinListWindow * _protein_list_window=nullptr;
+private:
+
+    void viewError(QString error);
 
 private :
+    Ui::Main *ui;
     ProjectSp _project_sp=nullptr;
 
+    ProteinListWindow * _protein_list_window=nullptr;
+
 };
 
 #endif // MAINWINDOW_H
-- 
GitLab