#include "ClipSliceWidgetBox.h" #include "ui_ClipSliceWidgetBox.h" #include "GUIFrame/MainWindow.h" #include "GUIFrame/RenderWidget.h" #include "PostGraphAdaptor/PostGraphWidgetBox.h" #include "FITK_Kernel/FITKAppFramework/FITKAppFramework.h" #include "FITK_Kernel/FITKAppFramework/FITKGlobalData.h" #include "FITK_Kernel/FITKCore/FITKVec3D.h" #include "FITK_Kernel/FITKCore/FITKVec3DAlg.h" #include "FITK_Interface/FITKInterfaceCFDPost/FITKCFDPostClipBox.h" #include "FITK_Interface/FITKInterfaceCFDPost/FITKCFDPostSliceBox.h" namespace GUI { ClipSliceWidgetBox::ClipSliceWidgetBox(ClipSlice widgetType, int currentDataID, int parentDataID, QWidget* parent) : ClipSliceWidgetBase(widgetType, parent), _parentDataID(parentDataID) { _currentDataID = currentDataID; _ui = new Ui::ClipSliceWidgetBox(); _ui->setupUi(this); MainWindow* mainWin = FITKAPP->getGlobalData()->getMainWindowT(); if (mainWin == nullptr)return; QWidget* currentWidget = mainWin->getRenderWidget()->getCurrentWidget(); _boxWidget = new Interface::PostGraphWidgetBox(currentWidget); connect(_boxWidget, SIGNAL(sigValueChange(double*)), this, SLOT(slotVTKWidgetValueChange(double*))); connect(_ui->lineEdit_Point1X, SIGNAL(dataChanged()), this, SLOT(slotDataChange())); connect(_ui->lineEdit_Point1Y, SIGNAL(dataChanged()), this, SLOT(slotDataChange())); connect(_ui->lineEdit_Point1Z, SIGNAL(dataChanged()), this, SLOT(slotDataChange())); connect(_ui->lineEdit_Point2X, SIGNAL(dataChanged()), this, SLOT(slotDataChange())); connect(_ui->lineEdit_Point2Y, SIGNAL(dataChanged()), this, SLOT(slotDataChange())); connect(_ui->lineEdit_Point2Z, SIGNAL(dataChanged()), this, SLOT(slotDataChange())); } ClipSliceWidgetBox::~ClipSliceWidgetBox() { if (_ui) { delete _ui; _ui = nullptr; } if (_boxWidget) { delete _boxWidget; _boxWidget = nullptr; } } void ClipSliceWidgetBox::getDataFromWidget(Interface::FITKAbstractCFDPostData * postData) { double bounds[6] = { 0,0,0,0,0,0 }; bounds[0] = _ui->lineEdit_Point1X->value(); bounds[1] = _ui->lineEdit_Point2X->value(); bounds[2] = _ui->lineEdit_Point1Y->value(); bounds[3] = _ui->lineEdit_Point2Y->value(); bounds[4] = _ui->lineEdit_Point1Z->value(); bounds[5] = _ui->lineEdit_Point2Z->value(); switch (_widgetType){ case GUI::ClipSlice::None:break; case GUI::ClipSlice::Clip: { Interface::FITKCFDPostClipBox* currentData = dynamic_cast(postData); if (currentData == nullptr)return; currentData->setValue(bounds); break; } case GUI::ClipSlice::Slice: { Interface::FITKCFDPostSliceBox* currentData = dynamic_cast(postData); if (currentData == nullptr)return; currentData->setValue(bounds); break; } } } void ClipSliceWidgetBox::setDataToWidget(Interface::FITKAbstractCFDPostData* postParentData, Interface::FITKAbstractCFDPostData* postData) { double bounds[6] = { 0,0,0,0,0,0 }; if (postParentData) { postParentData->getBounds(bounds); } switch (_widgetType){ case GUI::ClipSlice::None:return; case GUI::ClipSlice::Clip: { Interface::FITKCFDPostClipBox* currentData = dynamic_cast(postData); if (currentData) { currentData->getValue(bounds); } break; } case GUI::ClipSlice::Slice: { Interface::FITKCFDPostSliceBox* currentData = dynamic_cast(postData); if (currentData) { currentData->getValue(bounds); } break; } } _ui->lineEdit_Point1X->setText(QString::number(bounds[0])); _ui->lineEdit_Point2X->setText(QString::number(bounds[1])); _ui->lineEdit_Point1Y->setText(QString::number(bounds[2])); _ui->lineEdit_Point2Y->setText(QString::number(bounds[3])); _ui->lineEdit_Point1Z->setText(QString::number(bounds[4])); _ui->lineEdit_Point2Z->setText(QString::number(bounds[5])); _boxWidget->setValue(bounds); } void ClipSliceWidgetBox::showEvent(QShowEvent * event) { if (_boxWidget) { _boxWidget->setIsShow(true); reRender(); } ClipSliceWidgetBase::showEvent(event); } void ClipSliceWidgetBox::closeEvent(QCloseEvent * event) { if (_boxWidget) { _boxWidget->setIsShow(false); delete _boxWidget; _boxWidget = nullptr; reRender(); } ClipSliceWidgetBase::closeEvent(event); } void ClipSliceWidgetBox::hideEvent(QHideEvent * event) { if (_boxWidget) { _boxWidget->setIsShow(false); delete _boxWidget; _boxWidget = nullptr; reRender(); } ClipSliceWidgetBase::hideEvent(event); } void ClipSliceWidgetBox::slotVTKWidgetValueChange(double* bounds) { if (_ui == nullptr)return; _ui->lineEdit_Point1X->setText(QString::number(bounds[0])); _ui->lineEdit_Point2X->setText(QString::number(bounds[1])); _ui->lineEdit_Point1Y->setText(QString::number(bounds[2])); _ui->lineEdit_Point2Y->setText(QString::number(bounds[3])); _ui->lineEdit_Point1Z->setText(QString::number(bounds[4])); _ui->lineEdit_Point2Z->setText(QString::number(bounds[5])); } void ClipSliceWidgetBox::slotDataChange() { if (_boxWidget == nullptr)return; double bounds[6] = { 0,0,0,0,0,0 }; bounds[0] = _ui->lineEdit_Point1X->value(); bounds[1] = _ui->lineEdit_Point2X->value(); bounds[2] = _ui->lineEdit_Point1Y->value(); bounds[3] = _ui->lineEdit_Point2Y->value(); bounds[4] = _ui->lineEdit_Point1Z->value(); bounds[5] = _ui->lineEdit_Point2Z->value(); _boxWidget->setValue(bounds); reRender(); } }