|
|
|
@ -3,12 +3,9 @@
|
|
|
|
#include <QEvent>
|
|
|
|
#include <QEvent>
|
|
|
|
#include <QDir>
|
|
|
|
#include <QDir>
|
|
|
|
#include <QFileInfo>
|
|
|
|
#include <QFileInfo>
|
|
|
|
#include <QLayout>
|
|
|
|
|
|
|
|
#include <QLayoutItem>
|
|
|
|
|
|
|
|
#include <QMdiArea>
|
|
|
|
#include <QMdiArea>
|
|
|
|
#include <QMdiSubWindow>
|
|
|
|
#include <QMdiSubWindow>
|
|
|
|
#include <QTimer>
|
|
|
|
#include <QTimer>
|
|
|
|
#include <QVBoxLayout>
|
|
|
|
|
|
|
|
#include "zxSysUtils.h"
|
|
|
|
#include "zxSysUtils.h"
|
|
|
|
#include "ZxUiBase.h"
|
|
|
|
#include "ZxUiBase.h"
|
|
|
|
|
|
|
|
|
|
|
|
@ -36,11 +33,10 @@
|
|
|
|
#include "nmSubWndMain.h"
|
|
|
|
#include "nmSubWndMain.h"
|
|
|
|
#include "nmSubWndGrid.h"
|
|
|
|
#include "nmSubWndGrid.h"
|
|
|
|
#include "nmSubWndPostprocessing.h"
|
|
|
|
#include "nmSubWndPostprocessing.h"
|
|
|
|
|
|
|
|
#include "nmPebiResultPageInstaller.h"
|
|
|
|
|
|
|
|
|
|
|
|
#include "nmWxGridDlg.h"
|
|
|
|
#include "nmWxGridDlg.h"
|
|
|
|
|
|
|
|
|
|
|
|
#include "nmWxPebiResultViewWidget.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#include "nmGuiPlot.h"
|
|
|
|
#include "nmGuiPlot.h"
|
|
|
|
#include "ZxObjBase.h"
|
|
|
|
#include "ZxObjBase.h"
|
|
|
|
|
|
|
|
|
|
|
|
@ -465,86 +461,6 @@ void nmSubWndUtils::setupNumericalDockWidgets(nmDataAnalyzeManager* pDataManager
|
|
|
|
pWxDockNm2->setWidget(pParaWx);
|
|
|
|
pWxDockNm2->setWidget(pParaWx);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
bool nmSubWndUtils::ensurePebiResultWidgets(
|
|
|
|
|
|
|
|
iSubWndFitting* pSubWndFit,
|
|
|
|
|
|
|
|
nmDataAnalyzeManager* pDataManager)
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
if(pSubWndFit == nullptr || pDataManager == nullptr ||
|
|
|
|
|
|
|
|
pDataManager->getGridType() != NM_Grid_PEBI ||
|
|
|
|
|
|
|
|
nmDataAnalyzeManager::findManagerByFitting(pSubWndFit) !=
|
|
|
|
|
|
|
|
pDataManager) {
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
QString sErrorMessage;
|
|
|
|
|
|
|
|
QWidget* p3DPage = pSubWndFit->getFitSubRstWxOf(
|
|
|
|
|
|
|
|
FSRT_Nm3D, true, &sErrorMessage);
|
|
|
|
|
|
|
|
QWidget* pResultPage = pSubWndFit->getFitSubRstWxOf(
|
|
|
|
|
|
|
|
FSRT_NmRst, true, &sErrorMessage);
|
|
|
|
|
|
|
|
if(p3DPage == nullptr || pResultPage == nullptr) {
|
|
|
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
nmWxPebiResultViewWidget* pResultView =
|
|
|
|
|
|
|
|
p3DPage->findChild<nmWxPebiResultViewWidget*>();
|
|
|
|
|
|
|
|
if(pResultView == nullptr) {
|
|
|
|
|
|
|
|
// 首次安装时复用载体已有布局,只移除旧业务控件和布局项。
|
|
|
|
|
|
|
|
QLayout* p3DLayout = p3DPage->layout();
|
|
|
|
|
|
|
|
if(p3DLayout == nullptr) {
|
|
|
|
|
|
|
|
QVBoxLayout* pNewLayout = new QVBoxLayout(p3DPage);
|
|
|
|
|
|
|
|
pNewLayout->setContentsMargins(0, 0, 0, 0);
|
|
|
|
|
|
|
|
pNewLayout->setSpacing(0);
|
|
|
|
|
|
|
|
p3DLayout = pNewLayout;
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
QLayoutItem* pItem = nullptr;
|
|
|
|
|
|
|
|
while((pItem = p3DLayout->takeAt(0)) != nullptr) {
|
|
|
|
|
|
|
|
if(pItem->widget() != nullptr) {
|
|
|
|
|
|
|
|
delete pItem->widget();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
delete pItem;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
pResultView = new nmWxPebiResultViewWidget(
|
|
|
|
|
|
|
|
pDataManager, p3DPage);
|
|
|
|
|
|
|
|
p3DLayout->addWidget(pResultView);
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
// 相同 Manager 只会同步;不同 Manager 才由组合窗口完整清场再绑定。
|
|
|
|
|
|
|
|
pResultView->setDataManager(pDataManager);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
nmWxParaPropertyPebi* pResultParameters =
|
|
|
|
|
|
|
|
pResultPage->findChild<nmWxParaPropertyPebi*>();
|
|
|
|
|
|
|
|
if(pResultParameters == nullptr) {
|
|
|
|
|
|
|
|
QLayout* pResultLayout = pResultPage->layout();
|
|
|
|
|
|
|
|
if(pResultLayout == nullptr) {
|
|
|
|
|
|
|
|
QVBoxLayout* pNewLayout = new QVBoxLayout(pResultPage);
|
|
|
|
|
|
|
|
pNewLayout->setContentsMargins(0, 0, 0, 0);
|
|
|
|
|
|
|
|
pNewLayout->setSpacing(0);
|
|
|
|
|
|
|
|
pResultLayout = pNewLayout;
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
QLayoutItem* pItem = nullptr;
|
|
|
|
|
|
|
|
while((pItem = pResultLayout->takeAt(0)) != nullptr) {
|
|
|
|
|
|
|
|
if(pItem->widget() != nullptr) {
|
|
|
|
|
|
|
|
delete pItem->widget();
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
delete pItem;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
// 保持既有稳定顺序:先在可见布局之外完成只读参数构建,再挂入页面。
|
|
|
|
|
|
|
|
pResultParameters = new nmWxParaPropertyPebi();
|
|
|
|
|
|
|
|
pResultParameters->initUI();
|
|
|
|
|
|
|
|
pResultParameters->setDataManager(pDataManager);
|
|
|
|
|
|
|
|
pResultParameters->rebuildResultParas();
|
|
|
|
|
|
|
|
pResultLayout->addWidget(pResultParameters);
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 结果参数页没有监听快照状态信号,每次生产入口同步都必须显式重建。
|
|
|
|
|
|
|
|
pResultParameters->setDataManager(pDataManager);
|
|
|
|
|
|
|
|
pResultParameters->rebuildResultParas();
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bool nmSubWndUtils::fillNmDockWxs(iSubWnd* pSubWnd)
|
|
|
|
bool nmSubWndUtils::fillNmDockWxs(iSubWnd* pSubWnd)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
iSubWndFitting* pSubWndF = dynamic_cast<iSubWndFitting*>(pSubWnd);
|
|
|
|
iSubWndFitting* pSubWndF = dynamic_cast<iSubWndFitting*>(pSubWnd);
|
|
|
|
@ -1171,7 +1087,8 @@ bool nmSubWndUtils::loadRsts(iSubWnd* pSubWnd, \
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 即使两个 Dock 已存在,也必须刷新三维结果和只读结果参数页。
|
|
|
|
// 即使两个 Dock 已存在,也必须刷新三维结果和只读结果参数页。
|
|
|
|
if(!ensurePebiResultWidgets(pSubWndF, pDataManager)) {
|
|
|
|
if(!nmPebiResultPageInstaller::installOrSynchronize(
|
|
|
|
|
|
|
|
pSubWndF, pDataManager)) {
|
|
|
|
return false;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|