Path: blob/devel/ElmerGUI/Application/src/meshcontrol.cpp
3203 views
/*****************************************************************************1* *2* Elmer, A Finite Element Software for Multiphysical Problems *3* *4* Copyright 1st April 1995 - , CSC - IT Center for Science Ltd., Finland *5* *6* This program is free software; you can redistribute it and/or *7* modify it under the terms of the GNU General Public License *8* as published by the Free Software Foundation; either version 2 *9* of the License, or (at your option) any later version. *10* *11* This program is distributed in the hope that it will be useful, *12* but WITHOUT ANY WARRANTY; without even the implied warranty of *13* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *14* GNU General Public License for more details. *15* *16* You should have received a copy of the GNU General Public License *17* along with this program (in file fem/GPL-2); if not, write to the *18* Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, *19* Boston, MA 02110-1301, USA. *20* *21*****************************************************************************/2223/*****************************************************************************24* *25* ElmerGUI meshcontrol *26* *27*****************************************************************************28* *29* Authors: Mikko Lyly, Juha Ruokolainen and Peter R�back *30* Email: [email protected] *31* Web: http://www.csc.fi/elmer *32* Address: CSC - IT Center for Science Ltd. *33* Keilaranta 14 *34* 02101 Espoo, Finland *35* *36* Original Date: 15 Mar 2008 *37* *38*****************************************************************************/3940#include <QtGui>41#include <iostream>42#include "meshcontrol.h"4344#include <stdio.h>4546using namespace std;4748MeshControl::MeshControl(QWidget *parent)49: QDialog(parent)50{51tetlibPresent = true;52nglibPresent = true;5354ui.setupUi(this);5556connect(ui.tetlibRadioButton, SIGNAL(clicked()), this, SLOT(tetlibClicked()));57connect(ui.nglibRadioButton, SIGNAL(clicked()), this, SLOT(nglibClicked()));58connect(ui.elmerGridRadioButton, SIGNAL(clicked()), this, SLOT(elmerGridClicked()));5960connect(ui.tetlibStringEdit, SIGNAL(textChanged(const QString&)), this, SLOT(defineTetlibControlString(const QString&)));6162connect(ui.nglibMaxHEdit, SIGNAL(textChanged(const QString&)), this, SLOT(defineNglibMaxH(const QString&)));63connect(ui.nglibFinenessEdit, SIGNAL(textChanged(const QString&)), this, SLOT(defineNglibFineness(const QString&)));64connect(ui.nglibBgmeshEdit, SIGNAL(textChanged(const QString&)), this, SLOT(defineNglibBackgroundmesh(const QString&)));6566connect(ui.defaultsButton, SIGNAL(clicked()), this, SLOT(defaultControls()));67connect(ui.closeButton, SIGNAL(clicked()), this, SLOT(close()));6869connect(ui.elmerGridStringEdit, SIGNAL(textChanged(const QString&)), this, SLOT(defineElmerGridControlString(const QString&)));7071connect(ui.elmerGridStringEdit, SIGNAL(textChanged(const QString&)), this, SLOT(defineElmerGridControlString(const QString&)));7273connect(ui.elementCodesStringEdit, SIGNAL(textChanged(const QString&)), this, SLOT(defineElementCodesString(const QString&)));7475// defaultControls(); // Note - already called from mainwindow.cpp7677this->setWindowIcon(QIcon::fromTheme("configure"));78ui.closeButton->setIcon(QIcon::fromTheme("dialog-accept"));79}8081MeshControl::~MeshControl()82{83}8485void MeshControl::tetlibClicked()86{87generatorType = GEN_TETLIB;88}8990void MeshControl::nglibClicked()91{92generatorType = GEN_NGLIB;93}9495void MeshControl::elmerGridClicked()96{97generatorType = GEN_ELMERGRID;98}99100void MeshControl::defineElementCodesString(const QString &qs)101{102elementCodesString = qs;103}104105void MeshControl::defineTetlibControlString(const QString &qs)106{107tetlibControlString = qs;108}109110void MeshControl::defineNglibMaxH(const QString &qs)111{112nglibMaxH = qs;113}114115void MeshControl::defineNglibFineness(const QString &qs)116{117nglibFineness = qs;118}119120void MeshControl::defineNglibBackgroundmesh(const QString &qs)121{122nglibBackgroundmesh = qs;123}124125void MeshControl::defineElmerGridControlString(const QString &qs)126{127elmerGridControlString = qs;128}129130void MeshControl::defaultControls()131{132// generatorType = GEN_TETLIB;133// ui.tetlibRadioButton->setChecked(true);134135generatorType = GEN_NGLIB;136ui.nglibRadioButton->setChecked(true);137138// if(!tetlibPresent) {139// generatorType = GEN_NGLIB;140// ui.nglibRadioButton->setChecked(true);141// }142143// if(!tetlibPresent && !nglibPresent) {144// generatorType = GEN_ELMERGRID;145// ui.elmerGridRadioButton->setChecked(true);146// }147148// Check for valid tetgen quality in cmd line arguments:149//---------------------------150QStringList args = QCoreApplication::arguments();151int tq_ind = args.indexOf("-tq");152bool tq_isnum=0;153QString tetlib_options = "nnJApVq";154if (tq_ind > 0) args.at(tq_ind + 1).toFloat(&tq_isnum);155#if WITH_QT5 || WITH_QT6156if (tq_ind > 0 && !tq_isnum) cout << "Ignoring -tq option: " << args.at(tq_ind + 1).toLatin1().data() << endl;157#else158if (tq_ind > 0 && !tq_isnum) cout << "Ignoring -tq option: " << args.at(tq_ind + 1).toAscii().data() << endl;159#endif160if (tq_isnum) tetlib_options.append(args.at(tq_ind + 1));161else tetlib_options.append("1.414");162163ui.tetlibStringEdit->setText(tetlib_options);164ui.nglibMaxHEdit->setText("1000000");165ui.nglibFinenessEdit->setText("0.5");166ui.nglibBgmeshEdit->setText("");167ui.elmerGridStringEdit->setText("-autoclean -relh 1.0");168ui.elementCodesStringEdit->setText("");169}170171void MeshControl::appendToProject(QDomDocument *projectDoc, QDomElement *item)172{173projectIO.parentWidget = this;174projectIO.appendToProject(projectDoc, item);175}176177void MeshControl::readFromProject(QDomDocument *projectDoc, QDomElement *item)178{179projectIO.parentWidget = this;180projectIO.readFromProject(projectDoc, item);181}182183184