Salome HOME
cas_test n°1
[modules/shaper.git] / src / XGUI / XGUI_ErrorDialog.cpp
index 5a8258dc09c91bffa7a4d1c29f4ed3d6cad430f6..39a9c667b0d7479eb88c74cbf8f20ef4bddaf803 100644 (file)
@@ -1,29 +1,47 @@
-/*
- * XGUI_ErrorDialog.cpp
- *
- *  Created on: Apr 28, 2014
- *      Author: sbh
- */
+// Copyright (C) 2014-2022  CEA/DEN, EDF R&D
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
 #include <XGUI_ErrorDialog.h>
 
+#include <ModuleBase_Tools.h>
+#include <Config_Translator.h>
+
 #include <QDialogButtonBox>
 #include <QHBoxLayout>
 #include <QLabel>
 #include <QVBoxLayout>
 #include <QTextEdit>
+#include <QTextCodec>
 
 XGUI_ErrorDialog::XGUI_ErrorDialog(QWidget* parent)
-    : QDialog(parent)
+    : QDialog(parent, Qt::CustomizeWindowHint | Qt::WindowTitleHint |
+      Qt::WindowSystemMenuHint | Qt::WindowCloseButtonHint)
 {
   QVBoxLayout* aDlgLay = new QVBoxLayout(this);
   setWindowTitle(tr("Application errors"));
   myErrorLog = new QTextEdit(this);
   myErrorLog->setReadOnly(true);
   aDlgLay->addWidget(myErrorLog);
-  QDialogButtonBox* aButtonBox =
-      new QDialogButtonBox(QDialogButtonBox::Close, Qt::Horizontal, this);
+  QDialogButtonBox* aButtonBox = new QDialogButtonBox(QDialogButtonBox::Close, Qt::Horizontal,
+                                                      this);
   aDlgLay->addWidget(aButtonBox);
-  aDlgLay->setContentsMargins(2,2,2,2);
+  aDlgLay->setContentsMargins(2, 2, 2, 2);
   aDlgLay->setSpacing(2);
   setLayout(aDlgLay);
   resize(420, 240);
@@ -52,10 +70,17 @@ void XGUI_ErrorDialog::clear()
   QDialog::reject();
 }
 
-void XGUI_ErrorDialog::addError(const QString& theError)
+void XGUI_ErrorDialog::addError(std::shared_ptr<Events_InfoMessage> theMsg)
 {
-  myErrors.append(theError);
+  std::string aError = Config_Translator::translate(*theMsg);
+  std::string aCodec = Config_Translator::codec(*theMsg);
+  QString aMsg = QTextCodec::codecForName(aCodec.c_str())->toUnicode(aError.c_str());
+  myErrors.append(aMsg);
   refresh();
+  if (!isVisible()) {
+    show();
+    ModuleBase_Tools::activateWindow(this, "XGUI_ErrorDialog::addError");
+  }
 }
 
 void XGUI_ErrorDialog::removeError(const QString& theError)
@@ -63,4 +88,3 @@ void XGUI_ErrorDialog::removeError(const QString& theError)
   myErrors.removeAll(theError);
   refresh();
 }
-