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.

147 lines
6.2 KiB
C++

#include "InformationWidget.h"
#include "ui_InformationWidget.h"
#include "FITK_Kernel/FITKAppFramework/FITKAppFramework.h"
#include "FITK_Kernel/FITKAppFramework/FITKGlobalData.h"
#include "FITK_Interface/FITKInterfaceCFDPost/FITKCFDPostData.h"
#include "FITK_Interface/FITKInterfaceCFDPost/FITKCFDPost3DManager.h"
#include "FITK_Interface/FITKInterfaceCFDPost/FITKAbstractCFDPostData.h"
namespace GUI
{
InformationWidget::InformationWidget(QWidget * parent) :
GUIWidgetBase(parent)
{
_ui = new Ui::InformationWidget();
_ui->setupUi(this);
init();
}
InformationWidget::~InformationWidget()
{
if (_ui) {
delete _ui;
_ui = nullptr;
}
}
void InformationWidget::init()
{
_postDataManager = FITKAPP->getGlobalData()->getPostData<Interface::FITKCFDPostData>()->getPostDataManager();
//设置表头内容
QStringList header;
header << tr("Name") << tr("Type") << tr("Ranges");
//设置列数
_ui->tableWidget->setColumnCount(3);
_ui->tableWidget->setHorizontalHeaderLabels(header);
//设置tableWidget的item不可编辑
_ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
//隐藏行表头
_ui->tableWidget->verticalHeader()->setVisible(false);
//设置选择行为时每次选择一行
_ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
//自适应布局(更具表头数量平均分配大小)
_ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
//设置第1、2列自适应大小
_ui->tableWidget->horizontalHeader()->setSectionResizeMode(0, QHeaderView::ResizeToContents);
_ui->tableWidget->horizontalHeader()->setSectionResizeMode(1, QHeaderView::ResizeToContents);
updateCurrentGraphObj(-1);
}
void InformationWidget::updateCurrentGraphObj(int postDataID)
{
_currentDataID = postDataID;
Interface::FITKAbstractCFDPostData* currentData = _postDataManager->getDataByID(postDataID);
_ui->labelNameInfo->setText("(n/a)");
_ui->labelTypeInfo->setText("(n/a)");
_ui->labelPointInfo->setText("0");
_ui->labelCellInfo->setText("0");
if (currentData) {
QString name = currentData->getDataObjectName();
_ui->labelNameInfo->setText(name);
int pointNum = currentData->getPointNumber();
_ui->labelPointInfo->setText(QString::number(pointNum));
int cellNum = currentData->getCellNumber();
_ui->labelCellInfo->setText(QString::number(cellNum));
Interface::FITKPostGridType gridType = currentData->getGridType();
QString type = "";
switch (gridType) {
case Interface::FITKPostGridType::Post_None:type = tr("None"); break;
case Interface::FITKPostGridType::Post_Structured:type = tr("Structured Grid"); break;
case Interface::FITKPostGridType::Post_UnStructured:type = tr("UnStructured Grid"); break;
}
_ui->labelTypeInfo->setText(type);
}
updateTable();
}
void InformationWidget::updateTable()
{
Interface::FITKAbstractCFDPostData* currentData = _postDataManager->getDataByID(_currentDataID);
_ui->tableWidget->setRowCount(0);
if (currentData == nullptr)return;
QStringList pointList = currentData->getPointDataArray();
QStringList cellList = currentData->getCellDataArray();
_ui->tableWidget->setRowCount(pointList.size() + cellList.size());
int currentRow = 0;
for (QString point : pointList) {
//名称添加
QTableWidgetItem* item = new QTableWidgetItem(point);
item->setIcon(QIcon("://icons/nodeValue.png"));
_ui->tableWidget->setItem(currentRow, 0, item);
//类型添加
QString type = "";
Interface::FITKPostVariableType varType = currentData->getVariableType(Interface::FITKPostFieldType::Post_Point, point);
switch (varType){
case Interface::FITKPostVariableType::Post_Error:type = tr("Error"); break;
case Interface::FITKPostVariableType::Post_Scalar:type = tr("Scalar"); break;
case Interface::FITKPostVariableType::Post_Vector:type = tr("Vector"); break;
case Interface::FITKPostVariableType::Post_Tensor:type = tr("Tensor"); break;
}
item = new QTableWidgetItem(type);
_ui->tableWidget->setItem(currentRow, 1, item);
//范围添加
double rangeD[2] = { 0,0 };
currentData->getRange(rangeD, Interface::FITKPostFieldType::Post_Point, point);
QString rangeS = QString("[%1,%2]").arg(rangeD[0]).arg(rangeD[1]);
item = new QTableWidgetItem(rangeS);
_ui->tableWidget->setItem(currentRow, 2, item);
currentRow++;
}
for (QString cell : cellList) {
//名称添加
QTableWidgetItem* item = new QTableWidgetItem(cell);
item->setIcon(QIcon("://icons/cellValue.png"));
_ui->tableWidget->setItem(currentRow, 0, item);
//类型添加
QString type = "";
Interface::FITKPostVariableType varType = currentData->getVariableType(Interface::FITKPostFieldType::Post_Cell, cell);
switch (varType) {
case Interface::FITKPostVariableType::Post_Error:type = tr("Error"); break;
case Interface::FITKPostVariableType::Post_Scalar:type = tr("Scalar"); break;
case Interface::FITKPostVariableType::Post_Vector:type = tr("Vector"); break;
case Interface::FITKPostVariableType::Post_Tensor:type = tr("Tensor"); break;
}
item = new QTableWidgetItem(type);
_ui->tableWidget->setItem(currentRow, 1, item);
//范围添加
double rangeD[2] = { 0,0 };
currentData->getRange(rangeD, Interface::FITKPostFieldType::Post_Cell, cell);
QString rangeS = QString("[%1,%2]").arg(rangeD[0]).arg(rangeD[1]);
item = new QTableWidgetItem(rangeS);
_ui->tableWidget->setItem(currentRow, 2, item);
currentRow++;
}
}
}