Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
ElmerCSC
GitHub Repository: ElmerCSC/elmerfem
Path: blob/devel/ElmerGUI/Application/src/egini.cpp
3203 views
1
/*****************************************************************************
2
* *
3
* Elmer, A Finite Element Software for Multiphysical Problems *
4
* *
5
* Copyright 1st April 1995 - , CSC - IT Center for Science Ltd., Finland *
6
* *
7
* This program is free software; you can redistribute it and/or *
8
* modify it under the terms of the GNU General Public License *
9
* as published by the Free Software Foundation; either version 2 *
10
* of the License, or (at your option) any later version. *
11
* *
12
* This program is distributed in the hope that it will be useful, *
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15
* GNU General Public License for more details. *
16
* *
17
* You should have received a copy of the GNU General Public License *
18
* along with this program (in file fem/GPL-2); if not, write to the *
19
* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, *
20
* Boston, MA 02110-1301, USA. *
21
* *
22
*****************************************************************************/
23
24
/*****************************************************************************
25
* *
26
* ElmerGUI egini *
27
* *
28
*****************************************************************************
29
* *
30
* Authors: Mikko Lyly, Juha Ruokolainen and Peter Råback *
31
* Email: [email protected] *
32
* Web: http://www.csc.fi/elmer *
33
* Address: CSC - IT Center for Science Ltd. *
34
* Keilaranta 14 *
35
* 02101 Espoo, Finland *
36
* *
37
* Original Date: 15 Mar 2008 *
38
* *
39
*****************************************************************************/
40
41
#include <iostream>
42
#include "egini.h"
43
44
using namespace std;
45
46
EgIni::EgIni(QWidget *parent)
47
: QDialog(parent)
48
{
49
iniLoaded = false;
50
51
// Determine ini-file location and name:
52
//--------------------------------------
53
QString elmerGuiHome;
54
QString paraViewHome;
55
56
#ifdef __APPLE__DONTGOHERE_TODO
57
//QString iniFileName = this->homePath + "/edf/egini.xml";
58
QString iniFileName = QDir::homePath() + "/edf/egini.xml";
59
#else
60
QString iniFileName = QCoreApplication::applicationDirPath() + "/../share/ElmerGUI/edf/egini.xml"; // @TODO: fix path to share/ElmerGUI/edf
61
62
elmerGuiHome = QString(getenv("ELMERGUI_HOME"));
63
64
if(!elmerGuiHome.isEmpty())
65
iniFileName = elmerGuiHome + "/edf/egini.xml";
66
67
paraViewHome = QString(getenv("PARAVIEW_HOME"))+"/bin";
68
#endif
69
70
// Load initialization file:
71
//---------------------------
72
#if WITH_QT5 || WITH_QT6
73
cout << "Load " << string(iniFileName.toLatin1()) << "...";
74
#else
75
cout << "Load " << string(iniFileName.toAscii()) << "...";
76
#endif
77
cout.flush();
78
79
QFile file(iniFileName);
80
QString errStr;
81
int errRow;
82
int errCol;
83
84
if(!file.exists()) {
85
86
QMessageBox::information(window(), tr("Eg ini-file loader: ") + iniFileName,
87
tr("Initialization file does not exist"));
88
return;
89
90
} else {
91
92
if(!iniDoc.setContent(&file, true, &errStr, &errRow, &errCol)) {
93
94
QMessageBox::information(window(), tr("Eg ini-file loader: ") + iniFileName,
95
tr("Parse error at line %1, col %2:\n%3")
96
.arg(errRow).arg(errCol).arg(errStr));
97
file.close();
98
return;
99
100
} else {
101
102
if(iniDoc.documentElement().tagName() != "egini") {
103
QMessageBox::information(window(), tr("Eg ini-file loader: ") + iniFileName,
104
tr("This is not an eg initialization file"));
105
file.close();
106
return;
107
}
108
}
109
}
110
111
cout << " done" << endl;
112
file.close();
113
iniLoaded = true;
114
}
115
116
117
EgIni::~EgIni()
118
{
119
}
120
121
122
bool EgIni::isPresent(QString tag)
123
{
124
if(!iniLoaded)
125
return false;
126
127
root = iniDoc.documentElement();
128
element = root.firstChildElement(tag);
129
130
if(element.isNull())
131
return false;
132
133
return true;
134
}
135
136
137
bool EgIni::isSet(QString tag)
138
{
139
if(!iniLoaded)
140
return false;
141
142
root = iniDoc.documentElement();
143
element = root.firstChildElement(tag);
144
145
if(element.isNull())
146
return false;
147
148
if(element.text().trimmed() != "0")
149
return true;
150
151
return false;
152
}
153
154
155
QString EgIni::value(QString tag)
156
{
157
if(!iniLoaded)
158
return "";
159
160
root = iniDoc.documentElement();
161
element = root.firstChildElement(tag);
162
163
if(element.isNull())
164
return "";
165
166
return element.text().trimmed();
167
}
168
169