Compare commits

...

2 Commits

Binary file not shown.

@ -5066,8 +5066,12 @@ Please check your input coordinates.</source>
<translation></translation> <translation></translation>
</message> </message>
<message> <message>
<source>Current model</source> <source>Current model:</source>
<translation></translation> <translation></translation>
</message>
<message>
<source>Model selection</source>
<translation></translation>
</message> </message>
<message> <message>
<source>Oil single-phase constant pvt</source> <source>Oil single-phase constant pvt</source>

@ -71,6 +71,8 @@ signals:
void onOutputResultFieldsToggled(bool checked); void onOutputResultFieldsToggled(bool checked);
// 查看井结果下拉框切换槽 // 查看井结果下拉框切换槽
void onResultWellChanged(int index); void onResultWellChanged(int index);
// 当前模型下拉框切换槽
void onCurrentModelChanged(int index);
// 处理时间参考系单选按钮切换 // 处理时间参考系单选按钮切换
//void onTimeReferenceSystemToggled(bool checked); //void onTimeReferenceSystemToggled(bool checked);
@ -123,9 +125,10 @@ private:
QComboBox* m_pResultWellCombo; QComboBox* m_pResultWellCombo;
bool m_bFillingResultWellCombo; bool m_bFillingResultWellCombo;
// 当前模型显示 // 当前模型切换控件
QGroupBox* m_pCurrentModelGroup; QGroupBox* m_pCurrentModelGroup;
QLabel* m_pCurrentModelValueLabel; QComboBox* m_pCurrentModelCombo;
bool m_bFillingCurrentModelCombo;
// 输出组组件 (新) // 输出组组件 (新)
QGroupBox* m_pOutputGroup; // 输出分组框 QGroupBox* m_pOutputGroup; // 输出分组框

@ -70,8 +70,9 @@ nmWxNumericalDesign::nmWxNumericalDesign(QWidget *parent)
m_pResultWellGroup = nullptr; m_pResultWellGroup = nullptr;
m_pResultWellCombo = nullptr; m_pResultWellCombo = nullptr;
m_pCurrentModelGroup = nullptr; m_pCurrentModelGroup = nullptr;
m_pCurrentModelValueLabel = nullptr; m_pCurrentModelCombo = nullptr;
m_bFillingResultWellCombo = false; m_bFillingResultWellCombo = false;
m_bFillingCurrentModelCombo = false;
// 初始化图标路径 // 初始化图标路径
m_sIconDir = QCoreApplication::applicationDirPath(); m_sIconDir = QCoreApplication::applicationDirPath();
@ -189,38 +190,74 @@ void nmWxNumericalDesign::initResultWellGroup()
m_pResultWellGroup->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); m_pResultWellGroup->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
} }
// 显示当前模型名 // 初始化当前模型切换控件
void nmWxNumericalDesign::initCurrentModelGroup() void nmWxNumericalDesign::initCurrentModelGroup()
{ {
m_pCurrentModelGroup = new QGroupBox(tr("Current model"), this); m_pCurrentModelGroup = new QGroupBox(tr("Model selection"), this);
QGridLayout* pGridLayout = new QGridLayout(m_pCurrentModelGroup); QGridLayout* pGridLayout = new QGridLayout(m_pCurrentModelGroup);
m_pCurrentModelValueLabel = new QLabel(this); QLabel* pCurrentModelLabel = new QLabel(tr("Current model:"), this);
m_pCurrentModelValueLabel->setTextInteractionFlags(Qt::TextSelectableByMouse); m_pCurrentModelCombo = new QComboBox(this);
m_pCurrentModelValueLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
updateCurrentModelDisplay(); updateCurrentModelDisplay();
pGridLayout->addWidget(m_pCurrentModelValueLabel, 0, 0); pGridLayout->addWidget(pCurrentModelLabel, 0, 0, Qt::AlignLeft);
pGridLayout->setColumnStretch(0, 1); pGridLayout->addWidget(m_pCurrentModelCombo, 0, 1);
pGridLayout->setColumnStretch(0, 0);
pGridLayout->setColumnStretch(1, 1);
m_pCurrentModelGroup->setLayout(pGridLayout); m_pCurrentModelGroup->setLayout(pGridLayout);
m_pCurrentModelGroup->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); m_pCurrentModelGroup->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
} }
// 按当前成果对应的数据管理器刷新模型 // 按当前成果对应的数据管理器刷新模型下拉框选中项
void nmWxNumericalDesign::updateCurrentModelDisplay() void nmWxNumericalDesign::updateCurrentModelDisplay()
{ {
if(m_pCurrentModelValueLabel == nullptr) { if(m_pCurrentModelCombo == nullptr) {
return; return;
} }
m_bFillingCurrentModelCombo = true;
m_pCurrentModelCombo->clear();
nmDataAnalyzeManager* pManager = nmDataAnalyzeManager::getCurrentInstance(); nmDataAnalyzeManager* pManager = nmDataAnalyzeManager::getCurrentInstance();
if(pManager == nullptr) { if(pManager == nullptr) {
m_pCurrentModelValueLabel->clear(); m_pCurrentModelCombo->setEnabled(false);
m_bFillingCurrentModelCombo = false;
return; return;
} }
m_pCurrentModelValueLabel->setText(solverModelDisplayName(pManager->getSolverModelType())); // 根据储层相态过滤可选模型类型
nmDataReservoir* pReservoir = pManager->getReservoirData();
NM_PHASE_TYPE ePhase = (pReservoir != nullptr) ? pReservoir->getPhaseType() : PHASE_UNKNOWN;
NM_SOLVER_MODEL_TYPE eCurrentType = pManager->getSolverModelType();
switch(ePhase) {
case PHASE_Oil:
m_pCurrentModelCombo->addItem(solverModelDisplayName(SMT_Oil_ConstPvt), SMT_Oil_ConstPvt);
m_pCurrentModelCombo->addItem(solverModelDisplayName(SMT_Oil_VariablePvt), SMT_Oil_VariablePvt);
break;
case PHASE_Water:
m_pCurrentModelCombo->addItem(solverModelDisplayName(SMT_Water_ConstPvt), SMT_Water_ConstPvt);
m_pCurrentModelCombo->addItem(solverModelDisplayName(SMT_Water_VariablePvt), SMT_Water_VariablePvt);
break;
case PHASE_Gas:
m_pCurrentModelCombo->addItem(solverModelDisplayName(SMT_Gas_VariablePvt), SMT_Gas_VariablePvt);
break;
case PHASE_Oil_Water:
m_pCurrentModelCombo->addItem(solverModelDisplayName(SMT_Oil_Water_TwoPhase), SMT_Oil_Water_TwoPhase);
break;
default:
break;
}
int nIndex = m_pCurrentModelCombo->findData(eCurrentType);
if(nIndex >= 0) {
m_pCurrentModelCombo->setCurrentIndex(nIndex);
}
m_pCurrentModelCombo->setEnabled(true);
m_bFillingCurrentModelCombo = false;
} }
// 按参与计算井刷新下拉框 // 按参与计算井刷新下拉框
@ -684,6 +721,7 @@ void nmWxNumericalDesign::setupConnections()
// 连接生成按钮的点击信号到槽函数 // 连接生成按钮的点击信号到槽函数
connect(m_pGenerateButton, SIGNAL(clicked()), this, SLOT(onGenerateClicked())); connect(m_pGenerateButton, SIGNAL(clicked()), this, SLOT(onGenerateClicked()));
connect(m_pResultWellCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(onResultWellChanged(int))); connect(m_pResultWellCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(onResultWellChanged(int)));
connect(m_pCurrentModelCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(onCurrentModelChanged(int)));
// 主选项组连接 // 主选项组连接
// 连接齿轮图标按钮的槽函数 // 连接齿轮图标按钮的槽函数
@ -787,6 +825,25 @@ void nmWxNumericalDesign::onResultWellChanged(int index)
emit sigResultWellChanged(sWellName); emit sigResultWellChanged(sWellName);
} }
// 当前模型下拉框切换槽,将用户选择的模型类型同步到数据管理器
void nmWxNumericalDesign::onCurrentModelChanged(int index)
{
if(m_bFillingCurrentModelCombo || index < 0 || m_pCurrentModelCombo == nullptr) {
return;
}
NM_SOLVER_MODEL_TYPE eType = static_cast<NM_SOLVER_MODEL_TYPE>(
m_pCurrentModelCombo->itemData(index).toInt());
if(eType <= 0) {
return;
}
nmDataAnalyzeManager* pManager = nmDataAnalyzeManager::getCurrentInstance();
if(pManager != nullptr) {
pManager->setSolverModelType(eType);
}
}
void nmWxNumericalDesign::onGenerateClicked() void nmWxNumericalDesign::onGenerateClicked()
{ {
updateDataFromUi(); updateDataFromUi();

Loading…
Cancel
Save