From 2c48c6f793ecb811d50362001d1ac776fff15fb4 Mon Sep 17 00:00:00 2001 From: lh <2334563547@qq.com> Date: Fri, 18 Sep 2026 10:14:52 +0800 Subject: [PATCH] =?UTF-8?q?refactor(nmNum):=20=E7=A7=BB=E9=99=A4=E7=BB=93?= =?UTF-8?q?=E6=9E=9C=E7=BD=91=E6=A0=BC=E6=98=BE=E9=9A=90=E5=BC=80=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 删除结果视图中的结果网格工具栏和右键菜单动作 - 将业务显隐动作调整为色标、比例网格、单元边线、井位和井名 - 移除SceneController中的网格显隐接口及状态 - 有效快照下始终显示彩色结果网格 - 无快照或清场时自动隐藏网格并解除旋转中心拾取目标 - 保留单元边线独立显隐能力 - 清理结果网格翻译词条并更新中文翻译资源 --- Bin/Config/Lang/cn/nmNum_cn.qm | Bin 147835 -> 147763 bytes Bin/Config/Lang/cn/nmNum_cn.ts | 1 - .../nmSubWxs/nmPebiResultSceneController.h | 4 --- .../nmNum/nmSubWxs/nmWxPebiResultViewWidget.h | 5 +-- .../nmSubWxs/nmPebiResultSceneController.cpp | 30 ++---------------- .../nmSubWxs/nmWxPebiResultViewWidget.cpp | 24 +++----------- 6 files changed, 8 insertions(+), 56 deletions(-) diff --git a/Bin/Config/Lang/cn/nmNum_cn.qm b/Bin/Config/Lang/cn/nmNum_cn.qm index e7a2d926c1f2ca5a5f4fccba675ccf21fcd8c3ba..6ae21d3305efcf28c2267d91b5194e9441b05950 100644 GIT binary patch delta 3176 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 delta 3176 zcmXAr2~-p37RT=$l1yeGNyB1fjX@x?B?1C&ND(k%U0y|`#RF0+MO$z~N~?mRkGkUW zZmHS>s1>xW8&#uqL9BpOTQ`u_Em~`-3yWGs5k=ouCg)^+XTF(ynft%@{_h-ED!g1O ztanD`1{X7yZ-_Ty8Qldfc(WdMm~TARh*JO9kKqpI&mZZh+B2fcrm{*kq!7E)O45 zC-(+(sMF5m#tj0}AtHJ>v_9KP-n6zva z;ORh^yoTMqrxlXdPXg@QATcjpV)ZbI|9nWng4s0%Qn+rwUzR{hCi~U2hcM-%Fs6i_ zas@q3rxL;B_|rg0tqo&Qjgxpgo0^3P@u~=!8%hD6FD4h!Y}f^J-P8c<3@~qcBEZfI zFz=8*z{6O`=`#rMkw0aKdTl!_T4n`YBS^gT4V8#y*ZZ(Gdow`HbJ+N$3}F5t*e;v| zJiCKzqS3ztc8$tn|ML*`3}F%9(!imxSm5l2!imZefMXgo_ccC02(2cxhOJ+|Iv>AFMX z9A@Jqs&>!`4LEV+Qs7WSHU}f#B)LkD>&aJT#sie3GI0V>5nH-Xm8$XFaV2%CqGL)q z41K_AtAmrp%>r0_m=oSg0S@vxhnl@?J&jWhe#*2C;?y(P`AZq6c~%XeP;q?{SW#Wv zM7e4`9-$KTVc|G8_fiw!%}JD`nTi+4s)@#Z)T#O1(8jg6cLFZ?lxyi>@!T!o?*4oJ zDwn(a?|Dx>wZ9c9EVC2lvDE!xreLiePtZ7RGG){2`5soy^!k)lSL6 z$96w`Pk{IKlBcuL^#{AA%jJNkGj?}QSpkk(>{>^30RC>ERObn2HlFy=Wmq=Vq*)Gc$e=FORa2)V(x5OjMB%Ujk*fd>Y^9hOf z%OyV8BJtTxi9MYXUpMxW3(3}Jl-OXF)vEgeUPz!|ogNEmoX(7S zl&>=jpU7H!p0XRO$*M~hY;t+&mrUqra_L)RNR&s6jRRb0l@Fe>2#}g2-tUsf?_w=l z-$9*y&8{=$>C*}UrcIH5&}S!W?-+@X9VyCHkH1r@YqH^(d}S2#?Jb$TMDdDz%_wGo z2h>vZ5tOgjV=0yC zmk(*<7gw;guUGR+U<_dCZxRnw^Mym5SY{^kg|X)WE<5wf_c1MWDg5%PTENEND7BxS z4V?Ub<40bL=J$1G19Um@RjWGy))w>ougnAdD}eto;u1hZ4u6Vc-Z$FD*XFq~AJ61# zAMa%)>C4v@gaZC5lFDG>o(!NUgAvbBhGBwmRq5_MlSN-m)rM&7rXE8iHd45^8BbG& zcN*6fLiOHyjG-3qOiZA0{l~lgGEiB9VSsB`-QSUd%Z$|?(+tLG<@+(*w$(${CgkS~;tE7k+(hAS`EB>~Jhs=O8&$ztwNUMpgc z+v%tLV{#q9m@~@ORdWG+gOtx#FgtF)MSFaV!cjqX@xQ>yc(VDJL$(Vp`%bbfDg}e< zd_cdgg7;tmJoiTMd8%gP?}6ZZ@h0HR$_a$FnjDWz-Qa3-B%}k zC#>0rY{YIOm7kHR7tW4zDb>%9vks#ozes#Z)qWG0JSwAKz-5i-7~=tOYY*mVRDQqmAi4#BH>CE1dk|=+`R6~ro zZWYHOOcmF^$6h*CRf=DYNB~Tz6Tg0Wo|$?j^$gJA3v%%{3fIMxrvm_g+(hyI(L$qm z&RoH?`k0FS{e~V46wkM@*~r_(#=0K%QnpEKu3;NZd{?|(!sMt65?d?M00O5`o+WfQh@)hgt%R!VUYe8`ubXbb(v~EjXJ}1E*p=RR=~gPwxy&9u{O>4kAgj56yXQ;c15F&?mof%M<3p+(_z`!~nN%SW+))L^hZyk#$_~+E7Zrz0 z(8j6NYt8~@i4v`HY7a4S&kW=ln&!PG3KBhv_h#;=@L8-8w1?YY^Vi zjLsU*O86ip4KiwTH0f{a09{GqlLb^fC|Wy7Q|KiE&iO*3^&Z& fzn^8^%;_6L?x54g;Jc{V=zbLqhmZY@pQZdC5$ys{ diff --git a/Bin/Config/Lang/cn/nmNum_cn.ts b/Bin/Config/Lang/cn/nmNum_cn.ts index 9659e0c4..91067470 100644 --- a/Bin/Config/Lang/cn/nmNum_cn.ts +++ b/Bin/Config/Lang/cn/nmNum_cn.ts @@ -2886,7 +2886,6 @@ Reason: %1 nmWxPebiResultViewWidget No result data.暂无结果数据。 - Result Grid结果网格 Color Scale色标 Scale Grid比例网格 Cell Edges单元边线 diff --git a/Include/nmNum/nmSubWxs/nmPebiResultSceneController.h b/Include/nmNum/nmSubWxs/nmPebiResultSceneController.h index e5791842..508c2e1e 100644 --- a/Include/nmNum/nmSubWxs/nmPebiResultSceneController.h +++ b/Include/nmNum/nmSubWxs/nmPebiResultSceneController.h @@ -65,8 +65,6 @@ public: const nmPebiResultDisplaySettings& oSettings, QString* pError = nullptr); - /** @brief 设置结果网格显隐;偏好跨快照保留。 */ - void setMeshVisible(bool bVisible); /** @brief 设置色标显隐;默认显示,偏好跨快照保留。 */ void setScalarBarVisible(bool bVisible); /** @brief 设置平面比例网格显隐;偏好跨快照保留。 */ @@ -111,8 +109,6 @@ public: /** @brief 返回当前属性最后一次成功提交的规范化显示设置。 */ bool getCurrentDisplaySettings( nmPebiResultDisplaySettings& oSettings) const; - /** @brief 返回结果网格显示偏好,不要求当前存在快照。 */ - bool isMeshVisible() const; /** @brief 返回色标显示偏好,不要求当前存在快照。 */ bool isScalarBarVisible() const; /** @brief 返回比例网格显示偏好,不要求当前存在快照。 */ diff --git a/Include/nmNum/nmSubWxs/nmWxPebiResultViewWidget.h b/Include/nmNum/nmSubWxs/nmWxPebiResultViewWidget.h index cde79d00..e5f0c910 100644 --- a/Include/nmNum/nmSubWxs/nmWxPebiResultViewWidget.h +++ b/Include/nmNum/nmSubWxs/nmWxPebiResultViewWidget.h @@ -63,8 +63,6 @@ private slots: /** @brief 明确操作成功后清除旧普通错误,不影响绑定失败或过期状态。 */ void onControlOperationSucceeded(); - /** @brief 切换结果网格显隐。 */ - void onMeshToggled(bool bVisible); /** @brief 切换色标显隐。 */ void onScalarBarToggled(bool bVisible); /** @brief 切换比例网格显隐。 */ @@ -90,7 +88,7 @@ private: const QSharedPointer& pSnapshot, const QString& sSnapshotId, bool bCurrent); - /** @brief 从 SceneController 镜像六个业务 QAction 的勾选和可用状态。 */ + /** @brief 从 SceneController 镜像五个业务 QAction 的勾选和可用状态。 */ void synchronizeBusinessActions(); /** @brief 根据“绑定失败、过期、操作错误”的固定优先级刷新提示栏。 */ void refreshStatusBar(); @@ -104,7 +102,6 @@ private: QToolBar* m_pToolBar; ///< Qt 父对象拥有的右侧竖向工具栏。 QLabel* m_pStatusLabel; ///< 过期或错误的非阻塞提示栏。 - QAction* m_pMeshAction; ///< 结果网格显隐动作。 QAction* m_pScalarBarAction; ///< 色标显隐动作。 QAction* m_pScaleGridAction; ///< 比例网格显隐动作。 QAction* m_pCellEdgesAction; ///< 单元边线显隐动作。 diff --git a/Src/nmNum/nmSubWxs/nmPebiResultSceneController.cpp b/Src/nmNum/nmSubWxs/nmPebiResultSceneController.cpp index 14d84c70..2556cfce 100644 --- a/Src/nmNum/nmSubWxs/nmPebiResultSceneController.cpp +++ b/Src/nmNum/nmSubWxs/nmPebiResultSceneController.cpp @@ -401,7 +401,6 @@ public: m_nSnapshotBindingRevision(0), m_bHasPropertyRange(false), m_bHasBounds(false), - m_bMeshVisible(true), m_bScalarBarVisible(true), m_bScaleGridVisible(false), m_bCellEdgesVisible(false), @@ -713,7 +712,8 @@ public: ? nmVTKMeshLayer::DisplayMode_SurfaceWithEdges : nmVTKMeshLayer::DisplayMode_Surface); m_pMeshLayer->setScalarVisibility(bHasData); - m_pMeshLayer->setVisible(bHasData && m_bMeshVisible); + // 彩色结果网格是有效快照的主内容,不提供独立隐藏状态。 + m_pMeshLayer->setVisible(bHasData); } if(m_pScalarBarLayer != nullptr) { m_pScalarBarLayer->setVisible( @@ -730,7 +730,7 @@ public: } if(m_pContainer != nullptr) { m_pContainer->setRotationCenterPickTarget( - bHasData && m_bMeshVisible && m_pMeshLayer != nullptr + bHasData && m_pMeshLayer != nullptr ? m_pMeshLayer->getActor() : nullptr); } } @@ -882,7 +882,6 @@ public: double m_dBounds[6]; bool m_bHasPropertyRange; bool m_bHasBounds; - bool m_bMeshVisible; bool m_bScalarBarVisible; bool m_bScaleGridVisible; bool m_bCellEdgesVisible; @@ -1315,24 +1314,6 @@ bool nmPebiResultSceneController::applyCurrentDisplaySettings( return true; } -void nmPebiResultSceneController::setMeshVisible(bool bVisible) -{ - Q_ASSERT(isResultSceneGuiThread()); - if(!isResultSceneGuiThread() || m_pPrivate == nullptr) { - return; - } - m_pPrivate->discardActiveDataIfLayersLost(); - if(m_pPrivate->m_bMeshVisible == bVisible) { - return; - } - m_pPrivate->m_bMeshVisible = bVisible; - const bool bHasData = hasSnapshot(); - m_pPrivate->applyLayerVisibility(bHasData); - if(bHasData) { - m_pPrivate->m_pContainer->renderView(); - } -} - void nmPebiResultSceneController::setScalarBarVisible(bool bVisible) { Q_ASSERT(isResultSceneGuiThread()); @@ -1535,11 +1516,6 @@ bool nmPebiResultSceneController::getCurrentDisplaySettings( return true; } -bool nmPebiResultSceneController::isMeshVisible() const -{ - return m_pPrivate != nullptr && m_pPrivate->m_bMeshVisible; -} - bool nmPebiResultSceneController::isScalarBarVisible() const { return m_pPrivate != nullptr && m_pPrivate->m_bScalarBarVisible; diff --git a/Src/nmNum/nmSubWxs/nmWxPebiResultViewWidget.cpp b/Src/nmNum/nmSubWxs/nmWxPebiResultViewWidget.cpp index 59cbff22..e92e45b8 100644 --- a/Src/nmNum/nmSubWxs/nmWxPebiResultViewWidget.cpp +++ b/Src/nmNum/nmSubWxs/nmWxPebiResultViewWidget.cpp @@ -56,7 +56,6 @@ nmWxPebiResultViewWidget::nmWxPebiResultViewWidget( m_pControlBar(nullptr), m_pToolBar(nullptr), m_pStatusLabel(nullptr), - m_pMeshAction(nullptr), m_pScalarBarAction(nullptr), m_pScaleGridAction(nullptr), m_pCellEdgesAction(nullptr), @@ -173,7 +172,6 @@ void nmWxPebiResultViewWidget::appendContextMenuActions(QMenu* pMenu) if(pMenu == nullptr) { return; } - pMenu->addAction(m_pMeshAction); pMenu->addAction(m_pScalarBarAction); pMenu->addAction(m_pScaleGridAction); pMenu->addAction(m_pCellEdgesAction); @@ -203,13 +201,6 @@ void nmWxPebiResultViewWidget::onControlOperationSucceeded() refreshStatusBar(); } -void nmWxPebiResultViewWidget::onMeshToggled(bool bVisible) -{ - if(m_pSceneController != nullptr && m_pSceneController->hasSnapshot()) { - m_pSceneController->setMeshVisible(bVisible); - } -} - void nmWxPebiResultViewWidget::onScalarBarToggled(bool bVisible) { if(m_pSceneController != nullptr && m_pSceneController->hasSnapshot()) { @@ -281,8 +272,6 @@ void nmWxPebiResultViewWidget::createUi() m_pToolBar->setToolButtonStyle(Qt::ToolButtonIconOnly); m_pToolBar->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); - m_pMeshAction = new QAction(QIcon(resultViewIconPath("NmGrid.png")), - tr("Result Grid"), this); m_pScalarBarAction = new QAction( QIcon(resultViewIconPath("NmColorScale.png")), tr("Color Scale"), this); @@ -300,10 +289,10 @@ void nmWxPebiResultViewWidget::createUi() tr("Well Names"), this); QAction* const pBusinessActions[] = { - m_pMeshAction, m_pScalarBarAction, m_pScaleGridAction, - m_pCellEdgesAction, m_pWellMarkersAction, m_pWellNamesAction + m_pScalarBarAction, m_pScaleGridAction, m_pCellEdgesAction, + m_pWellMarkersAction, m_pWellNamesAction }; - for(int nIndex = 0; nIndex < 6; ++nIndex) { + for(int nIndex = 0; nIndex < 5; ++nIndex) { pBusinessActions[nIndex]->setCheckable(true); pBusinessActions[nIndex]->setToolTip( pBusinessActions[nIndex]->text()); @@ -335,15 +324,13 @@ void nmWxPebiResultViewWidget::createUi() if(pFrontAction != nullptr) m_pToolBar->addAction(pFrontAction); if(pPickCenterAction != nullptr) m_pToolBar->addAction(pPickCenterAction); m_pToolBar->addSeparator(); - for(int nIndex = 0; nIndex < 6; ++nIndex) { + for(int nIndex = 0; nIndex < 5; ++nIndex) { m_pToolBar->addAction(pBusinessActions[nIndex]); } m_pToolBar->addSeparator(); if(pCopyAction != nullptr) m_pToolBar->addAction(pCopyAction); } - connect(m_pMeshAction, SIGNAL(toggled(bool)), - this, SLOT(onMeshToggled(bool))); connect(m_pScalarBarAction, SIGNAL(toggled(bool)), this, SLOT(onScalarBarToggled(bool))); connect(m_pScaleGridAction, SIGNAL(toggled(bool)), @@ -507,8 +494,6 @@ void nmWxPebiResultViewWidget::synchronizeBusinessActions() if(m_pSceneController == nullptr) { return; } - setActionCheckedWithoutSignal( - m_pMeshAction, m_pSceneController->isMeshVisible()); setActionCheckedWithoutSignal( m_pScalarBarAction, m_pSceneController->isScalarBarVisible()); setActionCheckedWithoutSignal( @@ -521,7 +506,6 @@ void nmWxPebiResultViewWidget::synchronizeBusinessActions() m_pWellNamesAction, m_pSceneController->areWellNamesVisible()); const bool bEnabled = m_pSceneController->hasSnapshot(); - m_pMeshAction->setEnabled(bEnabled); m_pScalarBarAction->setEnabled(bEnabled); m_pScaleGridAction->setEnabled(bEnabled); m_pCellEdgesAction->setEnabled(bEnabled);