284 lines
8.7 KiB
C++
284 lines
8.7 KiB
C++
#include "GlobalConfigReader.h"
|
|
#include "ConfigOptions.h"
|
|
#include "GlobalConfig.h"
|
|
#include "GeometryConfig.h"
|
|
#include "MeshConfig.h"
|
|
#include "PostConfig.h"
|
|
#include "ConfigDataBase.h"
|
|
#include <QDomDocument>
|
|
#include <QDomElement>
|
|
#include <QDomNodeList>
|
|
#include <QDebug>
|
|
|
|
namespace ConfigOption
|
|
{
|
|
GlobalConfigReader::GlobalConfigReader(QString fileName, ConfigDataBase* data)
|
|
{
|
|
_file.setFileName(fileName);
|
|
_globalConfig = data->getGlobalConfig();
|
|
_geoConfig = data->getGeometryConfig();
|
|
_meshConfig = data->getMeshConfig();
|
|
_postConfig = data->getPostConfig();
|
|
// _globalConfig = ConfigOption::getInstance()->getGlobalConfig();
|
|
// _geoConfig = ConfigOption::getInstance()->getGeometryConfig();
|
|
// _meshConfig = ConfigOption::getInstance()->getMeshConfig();
|
|
// _postConfig = ConfigOption::getInstance()->getPostConfig();
|
|
}
|
|
|
|
GlobalConfigReader::~GlobalConfigReader()
|
|
{
|
|
if (_doc != nullptr) delete _doc;
|
|
}
|
|
|
|
bool GlobalConfigReader::read()
|
|
{
|
|
if (!_file.open(QFile::ReadOnly | QFile::Text)) return false;
|
|
_doc = new QDomDocument();
|
|
if (!_doc->setContent(&_file))
|
|
{
|
|
_file.close();
|
|
return false;
|
|
}
|
|
|
|
bool ok = false;
|
|
|
|
QDomNodeList globallist = _doc->elementsByTagName("Global");
|
|
if (globallist.size() != 1) return false;
|
|
QDomElement gele = globallist.at(0).toElement();
|
|
ok = readGlobal(&gele);
|
|
if (!ok) return false;
|
|
|
|
QDomNodeList geolist = _doc->elementsByTagName("Geometry");
|
|
if (geolist.size() != 1) return false;
|
|
QDomElement geoele = geolist.at(0).toElement();
|
|
ok = readGeometry(&geoele);
|
|
if (!ok) return false;
|
|
|
|
QDomNodeList meshlist = _doc->elementsByTagName("Mesh");
|
|
if (meshlist.size() != 1) return false;
|
|
QDomElement meshele = meshlist.at(0).toElement();
|
|
ok = readMesh(&meshele);
|
|
if (!ok) return false;
|
|
|
|
QDomNodeList postlist = _doc->elementsByTagName("Post");
|
|
if (postlist.size() != 1) return false;
|
|
QDomElement postele = postlist.at(0).toElement();
|
|
ok = readPost(&postele);
|
|
if (!ok) return false;
|
|
|
|
QDomNodeList materiallist = _doc->elementsByTagName("Material");
|
|
if (materiallist.size() != 1) return false;
|
|
QDomElement materialele = materiallist.at(0).toElement();
|
|
QString s = materialele.attribute("Enable");
|
|
if (s.toLower() == "true")
|
|
_globalConfig->enableMaterial(true);
|
|
|
|
return true;
|
|
}
|
|
|
|
bool GlobalConfigReader::readGlobal(QDomElement* e)
|
|
{
|
|
QDomNodeList softnamelist = e->elementsByTagName("SoftName");
|
|
if (softnamelist.size() == 1)
|
|
{
|
|
QDomElement nameele = softnamelist.at(0).toElement();
|
|
QString name = nameele.attribute("name");
|
|
QString chinese = nameele.attribute("Chinese");
|
|
_globalConfig->setSoftName(name);
|
|
_globalConfig->setChineseName(chinese);
|
|
}
|
|
QDomNodeList corlist = e->elementsByTagName("Corporation");
|
|
if (corlist.size() == 1)
|
|
{
|
|
QDomElement corele = corlist.at(0).toElement();
|
|
QString text = corele.text();
|
|
_globalConfig->setCorporation(text);
|
|
}
|
|
QDomNodeList weblist = e->elementsByTagName("Website");
|
|
if (weblist.size() == 1)
|
|
{
|
|
QDomElement webele = weblist.at(0).toElement();
|
|
QString w = webele.text();
|
|
_globalConfig->setWebsite(w);
|
|
}
|
|
QDomNodeList logolist = e->elementsByTagName("Logo");
|
|
if (logolist.size() == 1)
|
|
{
|
|
QDomElement logoele = logolist.at(0).toElement();
|
|
QString l = logoele.text();
|
|
_globalConfig->setLogo(l);
|
|
}
|
|
QDomNodeList wellist = e->elementsByTagName("Welcome");
|
|
if (wellist.size() == 1)
|
|
{
|
|
QDomElement welele = wellist.at(0).toElement();
|
|
QString w = welele.text();
|
|
_globalConfig->setWelcome(w);
|
|
}
|
|
QDomNodeList verlist = e->elementsByTagName("Version");
|
|
if (verlist.size() == 1)
|
|
{
|
|
QDomElement verele = verlist.at(0).toElement();
|
|
QString w = verele.text();
|
|
_globalConfig->setVersion(w);
|
|
}
|
|
QDomNodeList maillist = e->elementsByTagName("Mail");
|
|
if (maillist.size() == 1)
|
|
{
|
|
QDomElement verele = maillist.at(0).toElement();
|
|
QString w = verele.text();
|
|
_globalConfig->setEMail(w);
|
|
}
|
|
QDomNodeList helpFileList = e->elementsByTagName("HelpFile");
|
|
if (helpFileList.size() == 1)
|
|
{
|
|
QDomElement verele = helpFileList.at(0).toElement();
|
|
QString w = verele.text();
|
|
_globalConfig->SetUserManual(w);
|
|
}
|
|
// QDomNodeList useRibbons = e->elementsByTagName("UseRibbon");
|
|
// if (useRibbons.size() == 1)
|
|
// {
|
|
// QDomElement useRibbon = useRibbons.at(0).toElement();
|
|
// QString text = useRibbon.text();
|
|
// _globalConfig->setUseRibbon(text);
|
|
// }
|
|
return true;
|
|
}
|
|
bool GlobalConfigReader::readGeometry(QDomElement* e)
|
|
{
|
|
QDomNodeList importlist = e->elementsByTagName("ImportSuffix");
|
|
QDomElement importele = importlist.at(0).toElement();
|
|
QString importsuffix = importele.text();
|
|
_geoConfig->setImportSuffix(importsuffix);
|
|
|
|
QDomNodeList exportlist = e->elementsByTagName("ExportSuffix");
|
|
QDomElement exportele = exportlist.at(0).toElement();
|
|
QString exportsuffix = exportele.text();
|
|
_geoConfig->setExportSuffix(exportsuffix);
|
|
|
|
QDomNodeList sketchlist = e->elementsByTagName("CreateSketch");
|
|
QDomElement sketchele = sketchlist.at(0).toElement();
|
|
bool on = false;
|
|
QString son = sketchele.attribute("Enable");
|
|
if (son.toLower() == "true") on = true;
|
|
_geoConfig->enableCreateSketch(on);
|
|
|
|
QDomNodeList fmodelList = e->elementsByTagName("FeatureModeling");
|
|
QDomElement fmodelele = fmodelList.at(0).toElement();
|
|
on = false;
|
|
son = fmodelele.attribute("Enable");
|
|
if (son.toLower() == "true") on = true;
|
|
_geoConfig->enableGeometryModeling(on);
|
|
|
|
QDomNodeList foplList = e->elementsByTagName("FeatureOperations");
|
|
QDomElement fopele = foplList.at(0).toElement();
|
|
on = false;
|
|
son = fopele.attribute("Enable");
|
|
if (son.toLower() == "true") on = true;
|
|
_geoConfig->enableGeometryOperations(on);
|
|
|
|
QDomNodeList geditList = e->elementsByTagName("GeometryEdit");
|
|
QDomElement geditele = geditList.at(0).toElement();
|
|
on = false;
|
|
son = geditele.attribute("Enable");
|
|
if (son.toLower() == "true") on = true;
|
|
_geoConfig->enableGeometryEdit(on);
|
|
|
|
QDomNodeList csetList = e->elementsByTagName("CreateSet");
|
|
QDomElement csetele = csetList.at(0).toElement();
|
|
on = false;
|
|
son = csetele.attribute("Enable");
|
|
if (son.toLower() == "true") on = true;
|
|
_geoConfig->enableGeometryCreateSet(on);
|
|
|
|
QDomNodeList mdisList = e->elementsByTagName("MeasureDistance");
|
|
QDomElement mdisele = mdisList.at(0).toElement();
|
|
on = false;
|
|
son = mdisele.attribute("Enable");
|
|
if (son.toLower() == "true") on = true;
|
|
_geoConfig->enableMeasureDsitance(on);
|
|
|
|
return true;
|
|
}
|
|
|
|
bool GlobalConfigReader::readMesh(QDomElement* e)
|
|
{
|
|
QDomNodeList nodeList{};
|
|
QDomElement ele{};
|
|
QString text{};
|
|
|
|
nodeList = e->elementsByTagName("ImportSuffix");
|
|
ele = nodeList.at(0).toElement();
|
|
text = ele.text();
|
|
_meshConfig->setImportSuffix(text);
|
|
|
|
nodeList = e->elementsByTagName("ExportSuffix");
|
|
ele = nodeList.at(0).toElement();
|
|
text = ele.text();
|
|
_meshConfig->setExportSuffix(text);
|
|
|
|
nodeList = e->elementsByTagName("SurfaceMesh");
|
|
ele = nodeList.at(0).toElement();
|
|
text = ele.attribute("Enable");
|
|
if (text.toLower() != "true")
|
|
_meshConfig->enableSurfaceMesh(false);
|
|
|
|
nodeList = e->elementsByTagName("SolidMesh");
|
|
ele = nodeList.at(0).toElement();
|
|
text = ele.attribute("Enable");
|
|
if (text.toLower() != "true")
|
|
_meshConfig->enableSolidMesh(false);
|
|
|
|
nodeList = e->elementsByTagName("Component");
|
|
ele = nodeList.at(0).toElement();
|
|
text = ele.attribute("Enable");
|
|
if (text.toLower() != "true")
|
|
_meshConfig->enableComponent(false);
|
|
|
|
nodeList = e->elementsByTagName("CheckMesh");
|
|
ele = nodeList.at(0).toElement();
|
|
text = ele.attribute("Enable");
|
|
if (text.toLower() != "true")
|
|
_meshConfig->setCheckMesh(false);
|
|
|
|
nodeList = e->elementsByTagName("FluidMesh");
|
|
ele = nodeList.at(0).toElement();
|
|
text = ele.attribute("Enable");
|
|
if (text.toLower() != "true")
|
|
_meshConfig->enableFluidMesh(false);
|
|
|
|
nodeList = e->elementsByTagName("FilterMesh");
|
|
ele = nodeList.at(0).toElement();
|
|
text = ele.attribute("Enable");
|
|
if (text.toLower() != "true")
|
|
_meshConfig->enableFilterMesh(false);
|
|
|
|
nodeList = e->elementsByTagName("MeshModeling");
|
|
ele = nodeList.at(0).toElement();
|
|
text = ele.attribute("Enable");
|
|
if (text.toLower() != "true")
|
|
_meshConfig->enableMeshModeling(false);
|
|
|
|
return true;
|
|
}
|
|
|
|
bool GlobalConfigReader::readPost(QDomElement* e)
|
|
{
|
|
QString postattr = e->attribute("Enable");
|
|
if (postattr.toLower() == "true")
|
|
_postConfig->enablePost(true);
|
|
QDomNodeList d2list = e->elementsByTagName("Post2D");
|
|
QDomElement d2ele = d2list.at(0).toElement();
|
|
QString post2dattr = d2ele.attribute("Enable");
|
|
if (post2dattr.toLower() == "true")
|
|
_postConfig->enablePost2D(true);
|
|
QDomNodeList d3list = e->elementsByTagName("Post3D");
|
|
QDomElement d3ele = d3list.at(0).toElement();
|
|
QString post3dattr = d3ele.attribute("Enable");
|
|
if (post3dattr.toLower() == "true")
|
|
_postConfig->enablePost3D(true);
|
|
|
|
return true;
|
|
}
|
|
} |