|
|
|
|
|
#include "nmPebiResultPageInstaller.h"
|
|
|
|
|
|
|
|
|
|
|
|
#include "iSubWndFitting.h"
|
|
|
|
|
|
#include "nmDataAnalyzeManager.h"
|
|
|
|
|
|
#include "nmWxParaPropertyPebi.h"
|
|
|
|
|
|
#include "nmWxPebiResultViewWidget.h"
|
|
|
|
|
|
|
|
|
|
|
|
#include <QLayout>
|
|
|
|
|
|
#include <QLayoutItem>
|
|
|
|
|
|
#include <QString>
|
|
|
|
|
|
#include <QVBoxLayout>
|
|
|
|
|
|
#include <QWidget>
|
|
|
|
|
|
|
|
|
|
|
|
bool nmPebiResultPageInstaller::installOrSynchronize(
|
|
|
|
|
|
iSubWndFitting* pFitting,
|
|
|
|
|
|
nmDataAnalyzeManager* pManager)
|
|
|
|
|
|
{
|
|
|
|
|
|
// Manager 必须属于目标分析窗口,防止把另一分析的快照装入当前结果页。
|
|
|
|
|
|
if(pFitting == nullptr || pManager == nullptr ||
|
|
|
|
|
|
pManager->getGridType() != NM_Grid_PEBI ||
|
|
|
|
|
|
nmDataAnalyzeManager::findManagerByFitting(pFitting) != pManager) {
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
QString sErrorMessage;
|
|
|
|
|
|
QWidget* p3DPage = pFitting->getFitSubRstWxOf(
|
|
|
|
|
|
FSRT_Nm3D, true, &sErrorMessage);
|
|
|
|
|
|
QWidget* pResultPage = pFitting->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(
|
|
|
|
|
|
pManager, p3DPage);
|
|
|
|
|
|
p3DLayout->addWidget(pResultView);
|
|
|
|
|
|
} else {
|
|
|
|
|
|
// 相同 Manager 只同步;不同 Manager 由组合窗口完整清场后重新绑定。
|
|
|
|
|
|
pResultView->setDataManager(pManager);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
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(pManager);
|
|
|
|
|
|
pResultParameters->rebuildResultParas();
|
|
|
|
|
|
pResultLayout->addWidget(pResultParameters);
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 参数页未监听快照状态信号,每次生产入口同步均需显式重建。
|
|
|
|
|
|
pResultParameters->setDataManager(pManager);
|
|
|
|
|
|
pResultParameters->rebuildResultParas();
|
|
|
|
|
|
return true;
|
|
|
|
|
|
}
|