You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
152 lines
4.7 KiB
C++
152 lines
4.7 KiB
C++
#include "DeformDialog.h"
|
|
#include "ui_DeformDialog.h"
|
|
|
|
#include "OperatorsInterface/ParaWidgetInterfaceOperator.h"
|
|
|
|
#include "FITK_Kernel/FITKAppFramework/FITKAppFramework.h"
|
|
#include "FITK_Kernel/FITKAppFramework/FITKGlobalData.h"
|
|
#include "FITK_Interface/FITKInterfaceCFDPost/FITKCFDPost3DManager.h"
|
|
#include "FITK_Interface/FITKInterfaceCFDPost/FITKAbstractCFDPostData.h"
|
|
#include "FITK_Interface/FITKInterfaceCFDPost/FITKCFDPostDeform.h"
|
|
|
|
#include <QMessageBox>
|
|
|
|
namespace GUI
|
|
{
|
|
DeformDialog::DeformDialog(int dataID, EventOper::ParaWidgetInterfaceOperator * oper, bool isCreate) :
|
|
GUIDialogBase(oper,"DeformDialog", FITKAPP->getGlobalData()->getMainWindow()),
|
|
_isCreate(isCreate)
|
|
{
|
|
_ui = new Ui::DeformDialog();
|
|
_ui->setupUi(this);
|
|
if (isCreate) {
|
|
_parentDataID = dataID;
|
|
}
|
|
else {
|
|
_currentDataID = dataID;
|
|
if (_postDataManager->getDataByID(_currentDataID)) {
|
|
_parentDataID = _postDataManager->getDataByID(_currentDataID)->getCFDPostParentID();
|
|
}
|
|
}
|
|
init();
|
|
}
|
|
|
|
DeformDialog::~DeformDialog()
|
|
{
|
|
if (_ui) {
|
|
delete _ui;
|
|
_ui = nullptr;
|
|
}
|
|
}
|
|
|
|
void DeformDialog::init()
|
|
{
|
|
Interface::FITKAbstractCFDPostData* parentData = _postDataManager->getDataByID(_parentDataID);
|
|
if (parentData == nullptr)return;
|
|
|
|
//添加变量
|
|
QStringList pointDataArray = parentData->getPointDataArray();
|
|
for (QString pointData : pointDataArray) {
|
|
Interface::FITKPostVariableType type = parentData->getVariableType(Interface::FITKPostFieldType::Post_Point, pointData);
|
|
if (type == Interface::FITKPostVariableType::Post_Error || type == Interface::FITKPostVariableType::Post_Scalar)continue;
|
|
_ui->comboBox_Vectors->addItem(pointData);
|
|
}
|
|
|
|
if (_isCreate) {
|
|
InitCreate();
|
|
setWindowTitle(tr("Deform Create"));
|
|
}
|
|
else {
|
|
InitEdit();
|
|
setWindowTitle(tr("Deform Edit"));
|
|
}
|
|
}
|
|
|
|
void DeformDialog::on_pushButton_OK_clicked()
|
|
{
|
|
if (_isCreate) {
|
|
if (!OKCreate())return;
|
|
}
|
|
else {
|
|
if (!OKEdit())return;
|
|
}
|
|
|
|
if (_oper) {
|
|
_oper->setArgs(objID_String, _currentDataID);
|
|
_oper->execProfession();
|
|
}
|
|
|
|
this->close();
|
|
}
|
|
|
|
void DeformDialog::on_pushButton_Cancel_clicked()
|
|
{
|
|
this->close();
|
|
}
|
|
|
|
void DeformDialog::InitCreate()
|
|
{
|
|
QString name = _postDataManager->checkName("Deform-0");
|
|
_ui->lineEdit_Name->setText(name);
|
|
_ui->comboBox_Vectors->setCurrentIndex(0);
|
|
_ui->lineEdit_ScaleFactor->setValue(0);
|
|
}
|
|
|
|
void DeformDialog::InitEdit()
|
|
{
|
|
Interface::FITKCFDPostDeform* currentData = dynamic_cast<Interface::FITKCFDPostDeform*>(_postDataManager->getDataByID(_currentDataID));
|
|
if (currentData == nullptr)return;
|
|
QString name = currentData->getDataObjectName();
|
|
_ui->lineEdit_Name->setText(name);
|
|
_ui->lineEdit_Name->setEnabled(false);
|
|
|
|
setDataToWidget(currentData);
|
|
}
|
|
|
|
bool DeformDialog::OKCreate()
|
|
{
|
|
QString name = _ui->lineEdit_Name->text();
|
|
if (_postDataManager->getDataByName(name)) {
|
|
QMessageBox box(QMessageBox::Warning, "", QString(tr("\"%1\" Name exists!")).arg(name), QMessageBox::Ok);
|
|
box.exec();
|
|
return false;
|
|
}
|
|
|
|
Interface::FITKCFDPostDeform* currentData = new Interface::FITKCFDPostDeform(_parentDataID);
|
|
currentData->setDataObjectName(name);
|
|
getDataFromWidget(currentData);
|
|
_currentDataID = currentData->getDataObjectID();
|
|
|
|
_postDataManager->appendDataObj(currentData);
|
|
return true;
|
|
}
|
|
|
|
bool DeformDialog::OKEdit()
|
|
{
|
|
Interface::FITKCFDPostDeform* currentData = dynamic_cast<Interface::FITKCFDPostDeform*>(_postDataManager->getDataByID(_currentDataID));
|
|
if (currentData == nullptr)return false;
|
|
getDataFromWidget(currentData);
|
|
return true;
|
|
}
|
|
|
|
void DeformDialog::getDataFromWidget(Interface::FITKCFDPostDeform* data)
|
|
{
|
|
if (data == nullptr)return;
|
|
QString vectors = _ui->comboBox_Vectors->currentText();
|
|
data->setDeformVariable(vectors);
|
|
|
|
double factor = _ui->lineEdit_ScaleFactor->value();
|
|
data->setDeformFactor(factor);
|
|
}
|
|
|
|
void DeformDialog::setDataToWidget(Interface::FITKCFDPostDeform* data)
|
|
{
|
|
if (data == nullptr)return;
|
|
|
|
QString vectors = data->getDeformVariable();
|
|
_ui->comboBox_Vectors->setCurrentText(vectors);
|
|
|
|
double factor = data->getDeformFactor();
|
|
_ui->lineEdit_ScaleFactor->setValue(factor);
|
|
}
|
|
} |