LAMPCAE/src/PostInterface/DialogCreateISO.cpp

211 lines
5.3 KiB
C++
Raw Normal View History

2023-05-08 06:32:41 +00:00
#include "DialogCreateISO.h"
#include "ui_DialogCreateISO.h"
#include "PostTreeWidget.h"
#include "RenderDirector.h"
#include "PostRenderData/RenderDataObject.h"
#include "PostRenderData/ISOCurveRenderDataAlg.h"
#include "PostRenderData/ISORenderDataAlg.h"
#include "PythonModule/PyAgent.h"
#include <QMessageBox>
namespace Post
{
CreateISODialog::CreateISODialog(PostTreeWidget *tree, bool isoSurface, QWidget *parent) : PostFunctionDialogBase(tree, parent),
_ui(new Ui::CreateISODialog),
_isSurface(isoSurface)
{
_ui->setupUi(this);
init();
}
CreateISODialog::~CreateISODialog()
{
delete _ui;
}
void CreateISODialog::init()
{
_ui->nameLineEdit->setText(tr("ISOCurve"));
this->setWindowTitle(tr("CreateISOCurve"));
if (_isSurface)
{
this->setWindowTitle(tr("CreateISOSurface"));
_ui->nameLineEdit->setText(tr("ISOSurface"));
}
_ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
_ui->tableWidget->horizontalHeader()->setVisible(false);
_ui->tableWidget->setColumnCount(1);
setParentObject();
}
void CreateISODialog::accept()
{
if (_parentObject == nullptr)
{
QMessageBox::warning(this, tr("Warning!"), tr("No selected data!"));
return;
}
QString algName;
QStringList codes{};
if (_isSurface)
{
algName = QString("ISOsurface");
codes += QString("ISOsurface = PostProcess.ISOSurface()");
}
else
{
algName = QString("ISOcurve");
codes += QString("ISOcurve = PostProcess.ISOCurve()");
}
QString name = _ui->nameLineEdit->text();
QString vName = _ui->variableComboBox->currentText();
codes += QString("%1.setParentID(%2)").arg(algName).arg(_parentObject->getID());
codes += QString("%1.setName('%2')").arg(algName).arg(name);
codes += QString("%1.setVariable('%2')").arg(algName).arg(vName);
const int count = _ui->tableWidget->rowCount();
for (int i = 0; i < count; i++)
{
auto item = _ui->tableWidget->item(i, 0);
auto val = item->text().toDouble();
codes += QString("%1.appendValue(%2)").arg(algName).arg(val);
}
codes += this->getSeletedDataCode(algName);
codes += QString("%1.create()").arg(algName);
_pyAgent->submit(codes);
// ISORenderDataAlg* alg = nullptr;
// if (_isSurface) alg = new ISORenderDataAlg(_parentObject);
// else alg = new ISOCurveRenderDataAlg(_parentObject);
// if (alg == nullptr) return;
//
// alg->setSelectedObjectHash(_tree->getSelectedData(_parentObject));
//
// QString name = _ui->nameLineEdit->text();
// QString vName = _ui->variableComboBox->currentText();
// const int count = _ui->tableWidget->rowCount();
// for (int i = 0; i < count; i++)
// {
// auto item = _ui->tableWidget->item(i, 0);
// auto val = item->text().toDouble();
// alg->appendToValueList(val);
// }
//
// alg->setVariable(vName);
//
// alg->updateParam();
// alg->updateAlg();
// alg->update();
//
// _parentObject->appendSubObjects(alg);
// RenderDirector::getInstance()->renderDataObjectToWindow(alg, _parentObject->getRenderWinID());
// _tree->updatePostTree();
QDialog::accept();
this->close();
}
void CreateISODialog::reject()
{
QDialog::reject();
this->close();
}
void CreateISODialog::updateDisplayInterface()
{
if (_parentObject == nullptr)
return;
updateVariableComboBox();
}
void CreateISODialog::updateVariableComboBox()
{
if (_parentObject == nullptr)
return;
_ui->variableComboBox->blockSignals(true);
_ui->variableComboBox->clear();
QStringList pArray = _parentObject->getPointDataArray();
for (auto array : pArray)
{
2023-11-14 09:07:54 +00:00
if (_parentObject->variableType(1, array) != "scalar")
2023-05-08 06:32:41 +00:00
continue;
_ui->variableComboBox->addItem(array);
}
on_variableComboBox_currentIndexChanged(0);
_ui->variableComboBox->blockSignals(false);
}
void CreateISODialog::on_addPushButton_clicked()
{
if (_parentObject == nullptr)
return;
QString name = _ui->variableComboBox->currentText();
_parentObject->getRange(_range, 1, name, -1);
if (_range[1] <= _range[0])
return;
double v = (_range[1] + _range[0]) * 0.5;
const int row = _ui->tableWidget->rowCount();
auto item = new QTableWidgetItem;
item->setText(QString::number(v, 'g', 4));
_ui->tableWidget->insertRow(row);
_ui->tableWidget->setItem(row, 0, item);
}
void CreateISODialog::on_removePushButton_clicked()
{
const int row = _ui->tableWidget->currentRow();
if (row < 0 || row >= _ui->tableWidget->rowCount())
return;
_ui->tableWidget->removeRow(row);
}
void CreateISODialog::on_removeAllPushButton_clicked()
{
_ui->tableWidget->clear();
_ui->tableWidget->setRowCount(0);
}
void CreateISODialog::on_variableComboBox_currentIndexChanged(int index)
{
Q_UNUSED(index)
if (_parentObject == nullptr)
return;
QString name = _ui->variableComboBox->currentText();
_parentObject->getRange(_range, 1, name, -1);
if (_range[1] <= _range[0])
return;
_ui->tableWidget->clear();
_ui->tableWidget->setRowCount(1);
_ui->tableWidget->setColumnCount(1);
QString sRange = QString(tr("Range:[%1,%2]").arg(_range[0]).arg(_range[1]));
double v = (_range[1] + _range[0]) * 0.5;
auto item = new QTableWidgetItem();
item->setText(QString::number(v, 'g', 4));
//_ui->tableWidget->insertRow(0);
_ui->tableWidget->setItem(0, 0, item);
_ui->rangeLabel->setText(sRange);
}
}