From b92403c904d3c82eabe46f47eef6962547eb1b38 Mon Sep 17 00:00:00 2001 From: lvjunjie Date: Mon, 1 Jun 2026 17:42:15 +0800 Subject: [PATCH] =?UTF-8?q?Revert=20"=E4=BF=AE=E5=A4=8D=E5=88=87=E6=8D=A2?= =?UTF-8?q?=E6=88=90=E6=9E=9C=E5=90=8E=E4=B8=8B=E6=8B=89=E6=A1=86=E5=92=8C?= =?UTF-8?q?=E6=9B=B2=E7=BA=BF=E6=98=BE=E7=A4=BA=E9=94=99=E8=AF=AF=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit c6eaa7940bf0e92fbb92dc140ba27e9c8a82c72f. --- Include/nmNum/nmSubWnd/nmSubWndMain.h | 7 ----- Include/nmNum/nmSubWxs/nmWxNumericalDesign.h | 7 ----- Src/nmNum/nmSubWnd/nmSubWndMain.cpp | 32 +------------------- Src/nmNum/nmSubWnd/nmSubWndUtils.cpp | 23 ++------------ Src/nmNum/nmSubWxs/nmWxNumericalDesign.cpp | 28 ----------------- 5 files changed, 4 insertions(+), 93 deletions(-) diff --git a/Include/nmNum/nmSubWnd/nmSubWndMain.h b/Include/nmNum/nmSubWnd/nmSubWndMain.h index a908b53..30c88c5 100644 --- a/Include/nmNum/nmSubWnd/nmSubWndMain.h +++ b/Include/nmNum/nmSubWnd/nmSubWndMain.h @@ -18,7 +18,6 @@ class QToolBar; class nmDataWellBase; class nmDataAnalyzeManager; class nmCalculationDllPebiSolverTask; -class iSubWndFitting; class QWidget; class QObject; @@ -119,8 +118,6 @@ class NM_SUB_WND_EXPORT nmSubWndMain : public iSubWndBaseFit { // 根据分析数据绘制对应的地图信息 void updateMapByDataManager(nmDataAnalyzeManager* pDataManager); - // 绑定所属流动段分析窗口,避免多成果切换时使用错误的数据中心 - void setOwnerFitting(iSubWndFitting* pSubWndF); signals: void sigFreshRnStates(QStringList list); @@ -224,8 +221,6 @@ class NM_SUB_WND_EXPORT nmSubWndMain : public iSubWndBaseFit { bool initloglog(QVector> & vvecLogPreData, QVector& vecDescs,bool isHistoryData); // 压力历史曲线数据 bool initPreHistory(QVector> & vvecHistoryData, QVector& vecDescs,bool isHistoryData); - // 操作前切回所属分析窗口,保证刷新和计算落到当前成果 - void activateOwnerFitting(); // 根据原始压力数据、计算出半对数、双对数数据 //void calculationLogData(nmDataWellBase* pWellData,QVector>& vvecHistoryData,QVector>& vvecLogPreData,QVector>& vvecSemiLogPreData); @@ -234,8 +229,6 @@ class NM_SUB_WND_EXPORT nmSubWndMain : public iSubWndBaseFit { // 绘图相关 nmGuiPlot* m_pWxPlot; - // 本对象服务的流动段分析窗口 - iSubWndFitting* m_pOwnerFitting; // 锁定状态 bool m_lockState; diff --git a/Include/nmNum/nmSubWxs/nmWxNumericalDesign.h b/Include/nmNum/nmSubWxs/nmWxNumericalDesign.h index cdc14a8..b71e326 100644 --- a/Include/nmNum/nmSubWxs/nmWxNumericalDesign.h +++ b/Include/nmNum/nmSubWxs/nmWxNumericalDesign.h @@ -23,7 +23,6 @@ class nmDataDiagnostic; class nmDataReservoir; class nmGUIComponentLineEdit; class nmDataAnalyzeManager; -class iSubWndFitting; class NM_SUB_WXS_EXPORT nmWxNumericalDesign : public iDlgBase { @@ -36,8 +35,6 @@ public: static void notifyTimeDependentSkinChanged(const QString& wellName, bool checked); // 刷新查看井结果下拉框 static void notifyResultWellSelectorChanged(const QString& wellName = QString()); - // 绑定所属流动段分析窗口,避免多个成果面板共用静态当前实例时串数据 - void setOwnerFitting(iSubWndFitting* pSubWndF); signals: void sigGenerateClicked(); // 点击生成按钮时发出的信号 @@ -102,8 +99,6 @@ private: void updateDataFromUi(); // 填充查看井结果下拉框 void fillResultWellCombo(const QString& selectedWellName = QString()); - // 操作前切回所属分析窗口,保证界面读取的是自己的数据中心 - void activateOwnerFitting(); private: @@ -120,8 +115,6 @@ private: QGroupBox* m_pResultWellGroup; QComboBox* m_pResultWellCombo; bool m_bFillingResultWellCombo; - // 本面板所属的流动段分析窗口 - iSubWndFitting* m_pOwnerFitting; // 输出组组件 (新) QGroupBox* m_pOutputGroup; // 输出分组框 diff --git a/Src/nmNum/nmSubWnd/nmSubWndMain.cpp b/Src/nmNum/nmSubWnd/nmSubWndMain.cpp index 2c4a2dc..ac6332a 100644 --- a/Src/nmNum/nmSubWnd/nmSubWndMain.cpp +++ b/Src/nmNum/nmSubWnd/nmSubWndMain.cpp @@ -99,7 +99,6 @@ nmSubWndMain::nmSubWndMain(QWidget *parent, QString sExt) : iSubWndBaseFit(parent, sExt) { m_pWxPlot = NULL; - m_pOwnerFitting = nullptr; m_pWxDockParas = NULL; m_pWxParas = NULL; m_pWxDockData1 = NULL; @@ -1449,8 +1448,6 @@ void nmSubWndMain::generationMesh() void nmSubWndMain::solveAndAnalyze() { - activateOwnerFitting(); - // 强制清理旧的(以防万一上次没删掉) if (m_pProgressDlg != nullptr) { delete m_pProgressDlg; @@ -1551,8 +1548,6 @@ void nmSubWndMain::triggerToolBarAction(int index) void nmSubWndMain::mergeAnaResultToFitting() { - activateOwnerFitting(); - //QMessageBox::information(this, tr("solver success"), tr("solver succeed!")); /*if (m_parameterPropertyWindow != nullptr) { @@ -1935,8 +1930,6 @@ void nmSubWndMain::geoLayering() void nmSubWndMain::on_calculationFinished(NM_Calculation_Result result) { - activateOwnerFitting(); - // 1. 立即停止模拟定时器(防止它在处理结果时继续触发) if (m_pFakeProgressTimer) { m_pFakeProgressTimer->stop(); @@ -2120,20 +2113,6 @@ nmGuiPlot * nmSubWndMain::getWxPlot() const return m_pWxPlot; } -// 绑定所属流动段分析窗口,后续生成和刷新结果都以它为准 -void nmSubWndMain::setOwnerFitting(iSubWndFitting* pSubWndF) -{ - m_pOwnerFitting = pSubWndF; -} - -// 多成果切换后,全局CurrentFitting可能已变化,操作前切回本对象所属窗口 -void nmSubWndMain::activateOwnerFitting() -{ - if(m_pOwnerFitting != nullptr) { - nmDataAnalyzeManager::setCurrentFitting(m_pOwnerFitting); - } -} - void nmSubWndMain::onProgressUpdated(int progress) { if (!m_pProgressDlg) { @@ -2162,8 +2141,6 @@ void nmSubWndMain::onProgressUpdated(int progress) void nmSubWndMain::onWellSelected(const QString& wellName) { - activateOwnerFitting(); - nmDataAnalyzeManager* pInstance = nmDataAnalyzeManager::getCurrentInstance(); if(pInstance == nullptr) { return; @@ -2354,14 +2331,7 @@ void nmSubWndMain::onGenerateButtonClicked() { //QString sDir = ZxBaseUtil::getCurWellDirOf("Nm/PreProcessing"); - activateOwnerFitting(); - - nmDataAnalyzeManager* pInstance = nmDataAnalyzeManager::getCurrentInstance(); - if(pInstance == nullptr) { - return; - } - - if(pInstance->getGridType() == NM_Grid_PEBI) { + if(nmDataAnalyzeManager::getCurrentInstance()->getGridType() == NM_Grid_PEBI) { nmCalculationPebiGrid* pPebiGridGeneratorInstance = nmCalculationPebiGrid::getInstance(); if(pPebiGridGeneratorInstance->getGridOutput2().Trinodexy.size() <= 0) { // 没有可用PEBI网格时才重新生成 diff --git a/Src/nmNum/nmSubWnd/nmSubWndUtils.cpp b/Src/nmNum/nmSubWnd/nmSubWndUtils.cpp index 1431110..af69b6e 100644 --- a/Src/nmNum/nmSubWnd/nmSubWndUtils.cpp +++ b/Src/nmNum/nmSubWnd/nmSubWndUtils.cpp @@ -163,8 +163,6 @@ iSubWnd* nmSubWndUtils::makesureSubWnd(QString sID, QString sExt, \ // TODO:2、没有流动段分析 if(nmDataAnalyzeManager::getCurrentFitting() != nullptr) { nmSubWndMain* pSubWndMain = new nmSubWndMain(NULL, sExt); - // 地图窗口绑定当前分析,后续生成/刷新使用同一数据中心 - pSubWndMain->setOwnerFitting(nmDataAnalyzeManager::getCurrentFitting()); pSubWnd = pSubWndMain; } else { ZxMainWindow* pMainWnd1 = const_cast(pMainWnd); @@ -386,11 +384,6 @@ bool nmSubWndUtils::fillNmDockWxs(iSubWnd* pSubWnd) Q_ASSERT (nullptr != pWxDockNm2); if (pWxDockNm1->widget() != nullptr && pWxDockNm2->widget() != nullptr) { - nmWxNumericalDesign* pAnalWx = dynamic_cast(pWxDockNm1->widget()); - if(pAnalWx != nullptr) { - // 已有面板也重新绑定,保证切换成果后指向当前分析 - pAnalWx->setOwnerFitting(pSubWndF); - } return true; //已经设定的话,则不再处理 } @@ -590,8 +583,6 @@ bool nmSubWndUtils::fillNmDockWxs(iSubWnd* pSubWnd) ZxMainWindow* pMainWnd = pSubWndF->getMainWindow(); // 设置当前窗口到Map pSubWndMain->setMainWindow(pMainWnd); - // 求解辅助窗口绑定当前分析,避免多个成果间串用CurrentFitting - pSubWndMain->setOwnerFitting(pSubWndF); pWxDockNm1->setWindowTitle(tr("Generate numerical model")); //改变Title pWxDockNm2->setWindowTitle(tr("Parameters")); @@ -599,8 +590,6 @@ bool nmSubWndUtils::fillNmDockWxs(iSubWnd* pSubWnd) //QTextEdit* pWx1 = new QTextEdit("This is demo for upper"); //QTextEdit* pWx2 = new QTextEdit("This is demo for lower"); nmWxNumericalDesign* pAnalWx = new nmWxNumericalDesign(); - // 数值解面板绑定当前分析,下拉框和生成按钮都按该分析取数据 - pAnalWx->setOwnerFitting(pSubWndF); nmWxParameterProperty* pParaWx = new nmWxParameterProperty(); // 建立求解调用连接 @@ -820,6 +809,9 @@ bool nmSubWndUtils::loadRsts(iSubWnd* pSubWnd, \ pDataManager->loadNmResult(sDir); // 加载当前分析中的PVT数据 pDataManager->initPvtParaFromSubFit(); + // 成果加载完成后刷新查看井下拉框 + nmWxNumericalDesign::notifyResultWellSelectorChanged(); + // 切换左侧参数视图 pSubWndF->swapAnaNmDocks(true); @@ -832,11 +824,6 @@ bool nmSubWndUtils::loadRsts(iSubWnd* pSubWnd, \ } if(pWxDockNm1->widget() != nullptr && pWxDockNm2->widget() != nullptr) { - nmWxNumericalDesign* pAnalWx = dynamic_cast(pWxDockNm1->widget()); - if(pAnalWx != nullptr) { - // 加载成果后重新绑定当前分析,避免刷新到其他成果面板 - pAnalWx->setOwnerFitting(pSubWndF); - } return true; //已经设定的话,则不再处理 } @@ -844,8 +831,6 @@ bool nmSubWndUtils::loadRsts(iSubWnd* pSubWnd, \ nmSubWndMain* pSubWndMain = new nmSubWndMain(NULL, ""); ZxMainWindow* pMainWnd1 = const_cast(pMainWnd); pSubWndMain->setMainWindow(pMainWnd1); - // 求解辅助窗口绑定当前分析,计算完成后刷新当前成果 - pSubWndMain->setOwnerFitting(pSubWndF); //pWxDockNm1->setWindowTitle(tr("Dock1's Title")); //pWxDockNm2->setWindowTitle(tr("Dock2's Title")); @@ -854,8 +839,6 @@ bool nmSubWndUtils::loadRsts(iSubWnd* pSubWnd, \ // 自定义窗体指针 nmWxNumericalDesign* pAnalWx = new nmWxNumericalDesign(); - // 数值解面板绑定当前分析,下拉框按当前成果的数据中心刷新 - pAnalWx->setOwnerFitting(pSubWndF); nmWxParameterProperty* pParaWx = new nmWxParameterProperty(); Q_ASSERT(nullptr != pAnalWx); Q_ASSERT(nullptr != pParaWx); diff --git a/Src/nmNum/nmSubWxs/nmWxNumericalDesign.cpp b/Src/nmNum/nmSubWxs/nmWxNumericalDesign.cpp index 7b8343a..8f39244 100644 --- a/Src/nmNum/nmSubWxs/nmWxNumericalDesign.cpp +++ b/Src/nmNum/nmSubWxs/nmWxNumericalDesign.cpp @@ -49,7 +49,6 @@ nmWxNumericalDesign::nmWxNumericalDesign(QWidget *parent) m_pResultWellGroup = nullptr; m_pResultWellCombo = nullptr; m_bFillingResultWellCombo = false; - m_pOwnerFitting = nullptr; // 初始化图标路径 m_sIconDir = QCoreApplication::applicationDirPath(); @@ -125,23 +124,6 @@ nmWxNumericalDesign::~nmWxNumericalDesign() } } -// 绑定所属流动段分析窗口,刷新下拉框时使用对应的数据中心 -void nmWxNumericalDesign::setOwnerFitting(iSubWndFitting* pSubWndF) -{ - m_pOwnerFitting = pSubWndF; - activateOwnerFitting(); - fillResultWellCombo(); -} - -// 多成果切换后,全局CurrentFitting可能已变化,操作前切回本面板所属窗口 -void nmWxNumericalDesign::activateOwnerFitting() -{ - s_pCurrentInstance = this; - if(m_pOwnerFitting != nullptr) { - nmDataAnalyzeManager::setCurrentFitting(m_pOwnerFitting); - } -} - // 外部刷新当前查看井下拉框 void nmWxNumericalDesign::notifyResultWellSelectorChanged(const QString& wellName) { @@ -174,8 +156,6 @@ void nmWxNumericalDesign::initResultWellGroup() // 按参与计算井刷新下拉框 void nmWxNumericalDesign::fillResultWellCombo(const QString& selectedWellName) { - activateOwnerFitting(); - if(m_pResultWellCombo == nullptr) { return; } @@ -699,8 +679,6 @@ void nmWxNumericalDesign::setupConnections() void nmWxNumericalDesign::onTimeDependentCheck(bool checked) { - activateOwnerFitting(); - // 更新当前井的时间变表皮状态 nmDataWellBase* pCurrentWell = nmDataAnalyzeManager::getCurrentInstance()->getCurWellData(); @@ -712,8 +690,6 @@ void nmWxNumericalDesign::onTimeDependentCheck(bool checked) // 切换查看井后同步当前井,并刷新结果曲线 void nmWxNumericalDesign::onResultWellChanged(int index) { - activateOwnerFitting(); - if(m_bFillingResultWellCombo || index < 0 || m_pResultWellCombo == nullptr) { return; } @@ -737,8 +713,6 @@ void nmWxNumericalDesign::onResultWellChanged(int index) void nmWxNumericalDesign::onGenerateClicked() { - activateOwnerFitting(); - updateDataFromUi(); nmDataTimeStepSetting* p = nmDataAnalyzeManager::getCurrentInstance()->getTimeStep(); @@ -833,8 +807,6 @@ void nmWxNumericalDesign::onOutputResultFieldsManualToggled(bool checked) void nmWxNumericalDesign::onOptionsIconClicked() { - activateOwnerFitting(); - nmWxIncludeOtherWells dlg(this); // 创建"包含其他井"对话框实例 if(dlg.exec() == QDialog::Accepted) { // 如果对话框被接受(点击了确定)