Salome HOME
Application errors handling
[modules/shaper.git] / src / XGUI / XGUI_ErrorDialog.cpp
1 /*
2  * XGUI_ErrorDialog.cpp
3  *
4  *  Created on: Apr 28, 2014
5  *      Author: sbh
6  */
7 #include <XGUI_ErrorDialog.h>
8
9 #include <QDialogButtonBox>
10 #include <QHBoxLayout>
11 #include <QLabel>
12 #include <QVBoxLayout>
13 #include <QTextEdit>
14
15 XGUI_ErrorDialog::XGUI_ErrorDialog(QWidget* parent)
16     : QDialog(parent)
17 {
18   QVBoxLayout* aDlgLay = new QVBoxLayout(this);
19   setWindowTitle(tr("Application errors"));
20   myErrorLog = new QTextEdit(this);
21   myErrorLog->setReadOnly(true);
22   aDlgLay->addWidget(myErrorLog);
23   QDialogButtonBox* aButtonBox =
24       new QDialogButtonBox(QDialogButtonBox::Close, Qt::Horizontal, this);
25   aDlgLay->addWidget(aButtonBox);
26   aDlgLay->setContentsMargins(2,2,2,2);
27   aDlgLay->setSpacing(2);
28   setLayout(aDlgLay);
29   resize(420, 240);
30
31   connect(aButtonBox, SIGNAL(accepted()), this, SLOT(clear()));
32   connect(aButtonBox, SIGNAL(rejected()), this, SLOT(clear()));
33 }
34
35 XGUI_ErrorDialog::~XGUI_ErrorDialog()
36 {
37 }
38
39 void XGUI_ErrorDialog::refresh()
40 {
41   myErrorLog->clear();
42   foreach(QString eachError, myErrors)
43   {
44     myErrorLog->append(eachError);
45   }
46 }
47
48 void XGUI_ErrorDialog::clear()
49 {
50   myErrorLog->clear();
51   myErrors.clear();
52   QDialog::reject();
53 }
54
55 void XGUI_ErrorDialog::addError(const QString& theError)
56 {
57   myErrors.append(theError);
58   refresh();
59 }
60
61 void XGUI_ErrorDialog::removeError(const QString& theError)
62 {
63   myErrors.removeAll(theError);
64   refresh();
65 }
66