2025-01-04 04:12:51 +00:00
|
|
|
#include "MainWindow.h"
|
|
|
|
|
|
|
|
|
|
#include <qtabwidget.h>
|
2025-10-12 03:10:10 +00:00
|
|
|
#include "utils/UiLayoutManager.h"
|
2025-01-04 04:12:51 +00:00
|
|
|
|
|
|
|
|
#include "PropertyBrowser.h"
|
|
|
|
|
#include "ModelBrowser.h"
|
2025-10-29 00:16:25 +00:00
|
|
|
#include "PresetModelPanel.h"
|
2025-01-04 04:12:51 +00:00
|
|
|
#include "DockWidget.h"
|
|
|
|
|
|
|
|
|
|
#include "viewer/QtOsgViewWidget.h"
|
|
|
|
|
#include "viewer/OsgViewer.h"
|
|
|
|
|
|
|
|
|
|
#include "chartPlot/FitCurveDialog.h"
|
|
|
|
|
#include "chartPlot/SurfaceDialog.h"
|
|
|
|
|
#include "Layout/LayoutSettingUI.h"
|
|
|
|
|
#include "Layout/SignalIndicatorLampUI.h"
|
|
|
|
|
#include "Layout/AddParamSetting.h"
|
|
|
|
|
#include "Layout/CodeEdtUI.h"
|
|
|
|
|
|
|
|
|
|
#include "Table/targetlistwgt.h"
|
|
|
|
|
#include "common/RecourceHelper.h"
|
|
|
|
|
|
|
|
|
|
#include "../workspace/WorkSpaceManager.h"
|
|
|
|
|
#include "../workspace/WorkSpace.h"
|
|
|
|
|
#include "../workspace/Timestep.h"
|
|
|
|
|
#include "../workspace/LampStatus.h"
|
|
|
|
|
|
|
|
|
|
#include "Matlab/MatlabObject.h"
|
|
|
|
|
|
2025-10-16 03:29:25 +00:00
|
|
|
#include "Panel/DataPanelManager.h"
|
|
|
|
|
|
2025-01-04 04:12:51 +00:00
|
|
|
#include "ui_MainWindow.h"
|
2025-03-13 00:42:41 +00:00
|
|
|
#include "viewer/OsgWidget.h"
|
2025-10-12 06:33:16 +00:00
|
|
|
#include "DockTitleBar.h"
|
2025-01-04 04:12:51 +00:00
|
|
|
|
|
|
|
|
MainWindow::MainWindow(QWidget* parent)
|
|
|
|
|
: QMainWindow(parent)
|
|
|
|
|
, ui(new Ui::MainWindow) {
|
|
|
|
|
ui->setupUi(this);
|
|
|
|
|
|
|
|
|
|
InitUI();
|
2025-04-21 00:20:00 +00:00
|
|
|
}
|
2025-01-04 04:12:51 +00:00
|
|
|
|
|
|
|
|
MainWindow::~MainWindow() {
|
2025-06-19 14:05:52 +00:00
|
|
|
UninitUI();
|
2025-01-04 04:12:51 +00:00
|
|
|
delete ui;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void MainWindow::InitUI() {
|
2025-10-12 03:10:10 +00:00
|
|
|
QWidget* centralWidget = takeCentralWidget();
|
|
|
|
|
if (nullptr != centralWidget) {
|
|
|
|
|
delete centralWidget;
|
|
|
|
|
}
|
|
|
|
|
setDockNestingEnabled(true);
|
2025-01-04 04:12:51 +00:00
|
|
|
|
|
|
|
|
setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea);
|
|
|
|
|
setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea);
|
2025-10-12 03:10:10 +00:00
|
|
|
setDockOptions(QMainWindow::AllowTabbedDocks | QMainWindow::AllowNestedDocks | QMainWindow::AnimatedDocks);
|
2025-01-04 04:12:51 +00:00
|
|
|
|
|
|
|
|
DockWidget* model = new DockWidget(tr("model elements"), 0);
|
2025-10-12 06:33:16 +00:00
|
|
|
model->SetDockWidgetTitleBar(new DockTitleBar(model));
|
2025-10-12 03:10:10 +00:00
|
|
|
model->setObjectName("Dock.ModelBrowser");
|
2025-01-04 04:12:51 +00:00
|
|
|
// addDockWidget(pSettingUI->GetArea("ModelBrowser"), model);
|
|
|
|
|
modelBrowser_ = new ModelBrowser(0);
|
|
|
|
|
modelBrowser_->AttachDock(model);
|
|
|
|
|
m_mapDockWidget.insert("ModelBrowser", model);
|
|
|
|
|
|
2025-10-29 00:16:25 +00:00
|
|
|
// 创建预制模型面板
|
|
|
|
|
DockWidget* presetModel = new DockWidget(tr("preset models"), 0);
|
|
|
|
|
presetModel->SetDockWidgetTitleBar(new DockTitleBar(presetModel));
|
|
|
|
|
presetModel->setObjectName("Dock.PresetModelPanel");
|
|
|
|
|
presetModelPanel_ = new PresetModelPanel(0);
|
|
|
|
|
presetModelPanel_->AttachDock(presetModel);
|
|
|
|
|
m_mapDockWidget.insert("PresetModelPanel", presetModel);
|
|
|
|
|
|
2025-01-04 04:12:51 +00:00
|
|
|
DockWidget* attribte = new DockWidget(tr("attribte"), 0);
|
2025-10-12 06:33:16 +00:00
|
|
|
attribte->SetDockWidgetTitleBar(new DockTitleBar(attribte));
|
2025-10-12 03:10:10 +00:00
|
|
|
attribte->setObjectName("Dock.PropertyBrowser");
|
2025-01-04 04:12:51 +00:00
|
|
|
//addDockWidget(pSettingUI->GetArea("PropertyBrowser"), attribte);
|
|
|
|
|
propertyBrowser_ = new PropertyBrowser(0);
|
|
|
|
|
propertyBrowser_->AttachDock(attribte);
|
|
|
|
|
m_mapDockWidget.insert("PropertyBrowser", attribte);
|
2025-10-12 03:10:10 +00:00
|
|
|
addDockWidget(Qt::RightDockWidgetArea, attribte);
|
2025-01-04 04:12:51 +00:00
|
|
|
|
|
|
|
|
connect(modelBrowser_, &ModelBrowser::WorkSpaceChange, propertyBrowser_, &PropertyBrowser::OnWorkSpaceChange);
|
|
|
|
|
connect(modelBrowser_, &ModelBrowser::EntityChange, propertyBrowser_, &PropertyBrowser::OnEntityChange);
|
|
|
|
|
|
2025-03-13 00:42:41 +00:00
|
|
|
qtOsgViewWidget_ = new OsgWidget;
|
2025-01-05 11:12:18 +00:00
|
|
|
qtOsgViewWidget_->Initialize();
|
2025-10-12 03:10:10 +00:00
|
|
|
|
|
|
|
|
DockWidget* viewDock = new DockWidget(tr("Main View"), 0);
|
2025-10-12 06:33:16 +00:00
|
|
|
viewDock->SetDockWidgetTitleBar(new DockTitleBar(viewDock));
|
2025-10-12 03:10:10 +00:00
|
|
|
viewDock->setObjectName("Dock.MainView");
|
|
|
|
|
viewDock->setWidget(qtOsgViewWidget_);
|
|
|
|
|
addDockWidget(Qt::LeftDockWidgetArea, viewDock);
|
|
|
|
|
m_mapDockWidget.insert("MainView", viewDock);
|
|
|
|
|
|
|
|
|
|
addDockWidget(Qt::LeftDockWidgetArea, model);
|
2025-10-29 00:16:25 +00:00
|
|
|
addDockWidget(Qt::LeftDockWidgetArea, presetModel);
|
2025-10-12 03:10:10 +00:00
|
|
|
splitDockWidget(model, viewDock, Qt::Horizontal);
|
2025-10-29 00:16:25 +00:00
|
|
|
|
|
|
|
|
// 将预制模型面板与模型浏览器标签化
|
|
|
|
|
tabifyDockWidget(model, presetModel);
|
2025-01-04 04:12:51 +00:00
|
|
|
|
2025-01-07 15:45:23 +00:00
|
|
|
QString wavePath ="", speedPath = "", rdPath = "", matlabParam="";
|
|
|
|
|
if (WorkSpaceManager::Get().GetCurrent())
|
|
|
|
|
{
|
|
|
|
|
if (!WorkSpaceManager::Get().GetCurrent()->GetWavePath().isEmpty())
|
|
|
|
|
{
|
|
|
|
|
wavePath = RecourceHelper::Get().GetBasePath() + "/" + WorkSpaceManager::Get().GetCurrent()->GetWavePath();
|
|
|
|
|
}
|
2025-01-04 04:12:51 +00:00
|
|
|
|
2025-01-07 15:45:23 +00:00
|
|
|
if (!WorkSpaceManager::Get().GetCurrent()->GetReportPath().isEmpty())
|
|
|
|
|
{
|
|
|
|
|
speedPath = RecourceHelper::Get().GetBasePath() + "/" + WorkSpaceManager::Get().GetCurrent()->GetReportPath();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!WorkSpaceManager::Get().GetCurrent()->GetRDPath().isEmpty())
|
|
|
|
|
{
|
|
|
|
|
rdPath = RecourceHelper::Get().GetBasePath() + "/" + WorkSpaceManager::Get().GetCurrent()->GetRDPath();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!WorkSpaceManager::Get().GetCurrent()->GetMatlabParam().isEmpty())
|
|
|
|
|
{
|
|
|
|
|
matlabParam = RecourceHelper::Get().GetBasePath() + "/" + WorkSpaceManager::Get().GetCurrent()->GetMatlabParam();
|
|
|
|
|
}
|
2025-01-04 04:12:51 +00:00
|
|
|
}
|
|
|
|
|
|
2025-10-28 08:12:14 +00:00
|
|
|
//DockWidget* fitCurveDock = new DockWidget(tr("Wave Curve"), 0);
|
|
|
|
|
//fitCurveDock->SetDockWidgetTitleBar(new DockTitleBar(fitCurveDock));
|
|
|
|
|
//fitCurveDock->setObjectName("Dock.WaveCurveDialog");
|
|
|
|
|
//fitCurveDlg_ = new FitCurveDialog();
|
|
|
|
|
//fitCurveDlg_->AttachDock(fitCurveDock);
|
|
|
|
|
//m_mapDockWidget.insert("WaveCurveDialog", fitCurveDock);
|
|
|
|
|
//addDockWidget(Qt::BottomDockWidgetArea, fitCurveDock);
|
2025-01-04 04:12:51 +00:00
|
|
|
|
2025-10-16 08:35:57 +00:00
|
|
|
//fitCurveDlg_->InitWaveFile(wavePath);
|
2025-10-28 08:12:14 +00:00
|
|
|
//DockWidget* fitLgCurveDock = new DockWidget(tr("Speed Curve"), 0);
|
|
|
|
|
//fitLgCurveDock->SetDockWidgetTitleBar(new DockTitleBar(fitLgCurveDock));
|
|
|
|
|
//fitLgCurveDock->setObjectName("Dock.SpeedCurveDialog");
|
2025-01-07 15:45:23 +00:00
|
|
|
|
2025-10-28 08:12:14 +00:00
|
|
|
//fitYLgCurveDlg_ = new FitCurveDialog();
|
|
|
|
|
//fitYLgCurveDlg_->AttachDock(fitLgCurveDock);
|
|
|
|
|
//m_mapDockWidget.insert("SpeedCurveDialog", fitLgCurveDock);
|
|
|
|
|
//addDockWidget(Qt::BottomDockWidgetArea, fitLgCurveDock);
|
|
|
|
|
//tabifyDockWidget(fitCurveDock, fitLgCurveDock);
|
2025-01-04 04:12:51 +00:00
|
|
|
|
|
|
|
|
|
2025-10-16 08:35:57 +00:00
|
|
|
//fitYLgCurveDlg_->InitReportFile(speedPath);
|
2025-01-04 04:12:51 +00:00
|
|
|
|
2025-10-28 08:12:14 +00:00
|
|
|
//DockWidget* surfaceCurveDock = new DockWidget(tr("3D Curve"), 0);
|
|
|
|
|
//surfaceCurveDock->SetDockWidgetTitleBar(new DockTitleBar(surfaceCurveDock));
|
|
|
|
|
//surfaceCurveDock->setObjectName("Dock.3DCurveDialog");
|
2025-01-07 15:45:23 +00:00
|
|
|
|
2025-10-28 08:12:14 +00:00
|
|
|
//surfaceDlg_ = new SurfaceDialog();
|
|
|
|
|
//surfaceDlg_->AttachDock(surfaceCurveDock);
|
|
|
|
|
//m_mapDockWidget.insert("3DCurveDialog", surfaceCurveDock);
|
|
|
|
|
//addDockWidget(Qt::BottomDockWidgetArea, surfaceCurveDock);
|
|
|
|
|
//tabifyDockWidget(fitCurveDock, surfaceCurveDock);
|
2025-01-04 04:12:51 +00:00
|
|
|
|
2025-10-16 08:35:57 +00:00
|
|
|
//surfaceDlg_->InitRD(rdPath);
|
2025-01-04 04:12:51 +00:00
|
|
|
|
2025-10-28 08:12:14 +00:00
|
|
|
//{
|
|
|
|
|
// targetUITable_ = new TargetListWgt;
|
|
|
|
|
|
|
|
|
|
// QStringList headerLabels;
|
|
|
|
|
// headerLabels << tr("Target number") << tr("Signal-to-noise ratio")
|
|
|
|
|
// << tr("Azimuth line of sight") << tr("Pitch gaze angle")
|
|
|
|
|
// << tr("azimuth") << tr("Pitch angle")
|
|
|
|
|
// << tr("attribute") << tr("Doppler")
|
|
|
|
|
// << tr("course") << tr("Speed")
|
|
|
|
|
// << tr("longitude") << tr("latitude")
|
|
|
|
|
// << tr("distance") << tr("velocity")
|
|
|
|
|
// << tr("Radial dimensions") << tr("Target RCS");
|
|
|
|
|
|
|
|
|
|
// targetUITable_->SetHeader(headerLabels);
|
|
|
|
|
// //const QString reportPath = RecourceHelper::Get().GetBasePath() + "/workspace/Report.txt";
|
|
|
|
|
// //targetUITable_->InitFile(speedPath, 50);
|
|
|
|
|
|
|
|
|
|
// DockWidget* dataTableDock = new DockWidget(tr("Report Table"), 0);
|
|
|
|
|
// dataTableDock->SetDockWidgetTitleBar(new DockTitleBar(dataTableDock));
|
|
|
|
|
// dataTableDock->setObjectName("Dock.TargetListWgt_Table");
|
|
|
|
|
// // addDockWidget(pSettingUI->GetArea("TargetListWgt"), dataTableDock);
|
|
|
|
|
// targetUITable_->AttachDock(dataTableDock);
|
|
|
|
|
// m_mapDockWidget.insert("TargetListWgt_Table", dataTableDock);
|
|
|
|
|
// addDockWidget(Qt::BottomDockWidgetArea, dataTableDock);
|
|
|
|
|
// tabifyDockWidget(fitCurveDock, dataTableDock);
|
|
|
|
|
|
|
|
|
|
//}
|
|
|
|
|
|
|
|
|
|
//const QString lampPath = RecourceHelper::Get().GetBasePath() + "/workspace/Lamp.txt";
|
|
|
|
|
|
|
|
|
|
//DockWidget* signalIndicatorLampDock = new DockWidget(tr("Signal Indicator Lamp"), 0);
|
|
|
|
|
//signalIndicatorLampDock->SetDockWidgetTitleBar(new DockTitleBar(signalIndicatorLampDock));
|
|
|
|
|
//signalIndicatorLampDock->setObjectName("Dock.SignalIndicatorLampUI");
|
|
|
|
|
//signalIndicatorLampUI_ = new SignalIndicatorLampUI;
|
|
|
|
|
//signalIndicatorLampUI_->AttachDock(signalIndicatorLampDock);
|
|
|
|
|
////signalIndicatorLampUI_->InitLamp(lampPath);
|
|
|
|
|
|
|
|
|
|
//m_mapDockWidget.insert("SignalIndicatorLampUI", signalIndicatorLampDock);
|
|
|
|
|
//addDockWidget(Qt::BottomDockWidgetArea, signalIndicatorLampDock);
|
|
|
|
|
//tabifyDockWidget(fitCurveDock, signalIndicatorLampDock);
|
|
|
|
|
|
|
|
|
|
// DockWidget* addParamSettingDock = new DockWidget(tr("ParamSetting"), 0);
|
|
|
|
|
// addParamSettingDock->SetDockWidgetTitleBar(new DockTitleBar(addParamSettingDock));
|
|
|
|
|
// addParamSettingDock->setObjectName("Dock.ParamSetting");
|
|
|
|
|
// addParamDlg_ = new AddParamSetting(matlabParam);
|
|
|
|
|
// addParamDlg_->AttachDock(addParamSettingDock);
|
|
|
|
|
// m_mapDockWidget.insert("ParamSetting", addParamSettingDock);
|
|
|
|
|
// addDockWidget(Qt::BottomDockWidgetArea, addParamSettingDock);
|
|
|
|
|
// tabifyDockWidget(fitCurveDock, addParamSettingDock);
|
|
|
|
|
|
|
|
|
|
//DockWidget* matlabDock = new DockWidget(tr("bat File"), 0);
|
|
|
|
|
//matlabDock->SetDockWidgetTitleBar(new DockTitleBar(matlabDock));
|
|
|
|
|
//matlabDock->setObjectName("Dock.Matlab");
|
|
|
|
|
//matlabFileDlg_ = new CodeEdtUI;
|
|
|
|
|
//matlabFileDlg_->AttachDock(matlabDock);
|
|
|
|
|
//m_mapDockWidget.insert("Matlab", matlabDock);
|
|
|
|
|
// addDockWidget(Qt::BottomDockWidgetArea, matlabDock);
|
|
|
|
|
// tabifyDockWidget(fitCurveDock, matlabDock);
|
2025-01-07 14:04:19 +00:00
|
|
|
|
2025-07-05 04:07:30 +00:00
|
|
|
//ui->discript->setText(tr("name: 5year 0412"));
|
|
|
|
|
//ui->status->setText(tr("start: no start"));
|
2025-01-05 11:12:18 +00:00
|
|
|
|
2025-10-12 03:10:10 +00:00
|
|
|
// InitDockLayout();
|
|
|
|
|
|
2025-10-16 03:29:25 +00:00
|
|
|
dataPanelManager_ = new DataPanelManager(this, this);
|
|
|
|
|
|
|
|
|
|
connect(&WorkSpaceManager::Get(), &WorkSpaceManager::WorkSpaceChanged,
|
|
|
|
|
dataPanelManager_, &DataPanelManager::OnWorkspaceChanged);
|
|
|
|
|
|
2025-10-12 03:10:10 +00:00
|
|
|
// Restore previous UI layout if available
|
|
|
|
|
UiLayoutManager::Restore(this, 1);
|
|
|
|
|
|
2025-10-22 01:32:34 +00:00
|
|
|
//InitChartLayout();
|
2025-10-16 08:35:57 +00:00
|
|
|
|
2025-01-05 11:12:18 +00:00
|
|
|
//ui->viewWidget->layout()->addWidget(qtOsgViewWidget_);
|
|
|
|
|
qtOsgViewWidget_->LoadDefaultScene();
|
2025-04-13 15:12:17 +00:00
|
|
|
/*OsgViewer::Get().Initialize();
|
|
|
|
|
OsgViewer::Get().OnFrame();*/
|
2025-01-04 04:12:51 +00:00
|
|
|
|
2025-07-05 04:07:30 +00:00
|
|
|
#if 0
|
|
|
|
|
// MatlabObject* mtlb = new MatlabObject;
|
|
|
|
|
MatlabObject::GetInstance()->RunMatlabFile("");
|
2025-01-04 04:12:51 +00:00
|
|
|
#endif // 1
|
|
|
|
|
}
|
|
|
|
|
|
2025-06-19 14:05:52 +00:00
|
|
|
void MainWindow::UninitUI() {
|
2025-10-12 03:10:10 +00:00
|
|
|
// Save layout state before tearing down widgets
|
|
|
|
|
UiLayoutManager::Save(this, 1);
|
2025-10-16 03:29:25 +00:00
|
|
|
|
|
|
|
|
if (dataPanelManager_) {
|
|
|
|
|
delete dataPanelManager_;
|
|
|
|
|
dataPanelManager_ = nullptr;
|
|
|
|
|
}
|
|
|
|
|
|
2025-06-19 14:05:52 +00:00
|
|
|
if (qtOsgViewWidget_) {
|
|
|
|
|
qtOsgViewWidget_->Uninitialize();
|
|
|
|
|
delete qtOsgViewWidget_;
|
|
|
|
|
qtOsgViewWidget_ = nullptr;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2025-01-04 04:12:51 +00:00
|
|
|
void MainWindow::slotResetWorkSpace()
|
|
|
|
|
{
|
2025-01-07 15:45:23 +00:00
|
|
|
QString wavePath = "", speedPath = "", rdPath = "";
|
2025-07-05 04:07:30 +00:00
|
|
|
if (WorkSpaceManager::Get().GetCurrent()) {
|
|
|
|
|
if (!WorkSpaceManager::Get().GetCurrent()->GetWavePath().isEmpty()) {
|
2025-01-07 15:45:23 +00:00
|
|
|
wavePath = RecourceHelper::Get().GetBasePath() + "/" + WorkSpaceManager::Get().GetCurrent()->GetWavePath();
|
|
|
|
|
}
|
2025-01-04 04:12:51 +00:00
|
|
|
|
2025-07-05 04:07:30 +00:00
|
|
|
if (!WorkSpaceManager::Get().GetCurrent()->GetReportPath().isEmpty()) {
|
2025-01-07 15:45:23 +00:00
|
|
|
speedPath = RecourceHelper::Get().GetBasePath() + "/" + WorkSpaceManager::Get().GetCurrent()->GetReportPath();
|
|
|
|
|
}
|
2025-01-04 04:12:51 +00:00
|
|
|
|
2025-07-05 04:07:30 +00:00
|
|
|
if (!WorkSpaceManager::Get().GetCurrent()->GetRDPath().isEmpty()) {
|
2025-01-07 15:45:23 +00:00
|
|
|
rdPath = RecourceHelper::Get().GetBasePath() + "/" + WorkSpaceManager::Get().GetCurrent()->GetRDPath();
|
|
|
|
|
}
|
2025-01-04 04:12:51 +00:00
|
|
|
}
|
|
|
|
|
|
2025-10-16 08:35:57 +00:00
|
|
|
//fitCurveDlg_->InitWaveFile(wavePath);
|
|
|
|
|
//fitYLgCurveDlg_->InitReportFile(speedPath);
|
|
|
|
|
//surfaceDlg_->InitRD(rdPath);
|
|
|
|
|
//targetUITable_->InitFile(speedPath, 50);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void MainWindow::InitChartLayout()
|
|
|
|
|
{
|
|
|
|
|
QString strChart = RecourceHelper::Get().GetBasePath() + "/workspace/Chart.xml";
|
|
|
|
|
m_mgrChart.Load(strChart);
|
|
|
|
|
|
|
|
|
|
QVariantList varList = m_mgrChart.GetChartWgt();
|
|
|
|
|
for (int nI = 0; nI < varList.size(); nI++)
|
|
|
|
|
{
|
|
|
|
|
QVariantMap mapWgt = varList.at(nI).toMap();
|
|
|
|
|
QString strWgt = mapWgt.value("Name").toString();
|
|
|
|
|
QVariantList listChart = mapWgt.value("Chart").toList();
|
|
|
|
|
|
|
|
|
|
QMainWindow* mainWindow_ = new QMainWindow;
|
|
|
|
|
//connect(mainWindow_, &QMainWindow::tabifiedDockWidgetActivated, this, &MainWindow::OnTabifiedDockWidgetActivated);
|
|
|
|
|
|
|
|
|
|
DockWidget* wgtDock = new DockWidget(strWgt, 0);
|
|
|
|
|
wgtDock->SetDockWidgetTitleBar(new DockTitleBar(wgtDock));
|
|
|
|
|
wgtDock->setWidget(mainWindow_);
|
|
|
|
|
addDockWidget(Qt::BottomDockWidgetArea, wgtDock);
|
|
|
|
|
|
|
|
|
|
for (int nJ = 0; nJ < listChart.size(); nJ++)
|
|
|
|
|
{
|
|
|
|
|
QVariantMap mapChart = listChart.at(nJ).toMap();
|
|
|
|
|
InitChart(mapChart, mainWindow_);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QDockWidget *MainWindow::InitChart(QVariantMap mapChart, QMainWindow* mainWindow)
|
|
|
|
|
{
|
|
|
|
|
QString strName = mapChart.value("Name").toString();
|
|
|
|
|
QString strType = mapChart.value("Type").toString();
|
|
|
|
|
QString after = mapChart.value("after").toString();
|
|
|
|
|
QString orientation = mapChart.value("orientation").toString();
|
|
|
|
|
int nT = mapChart.value("t").toInt();
|
|
|
|
|
QString strFile = mapChart.value("File").toString();
|
|
|
|
|
|
|
|
|
|
DockWidget* pDock = new DockWidget(strName, 0);
|
|
|
|
|
|
|
|
|
|
if (strType == "Wave" || strType == "Report")
|
|
|
|
|
{
|
|
|
|
|
QString xTitle = mapChart.value("xTitle").toString();
|
|
|
|
|
QString yTitle = mapChart.value("yTitle").toString();
|
|
|
|
|
float xMin = mapChart.value("xMin").toFloat();
|
|
|
|
|
float xMax = mapChart.value("xMax").toFloat();
|
|
|
|
|
int xCount = mapChart.value("xCount").toInt();
|
|
|
|
|
float yMin = mapChart.value("yMin").toFloat();
|
|
|
|
|
float yMax = mapChart.value("yMax").toFloat();
|
|
|
|
|
int yCount = mapChart.value("yCount").toInt();
|
|
|
|
|
QVariantList listCurve = mapChart.value("Curve").toList();
|
|
|
|
|
|
|
|
|
|
FitCurveDialog *fitCurveDlg = new FitCurveDialog();
|
|
|
|
|
fitCurveDlg->AttachDock(pDock);
|
|
|
|
|
fitCurveDlg->updateTitle(strName + "-" + strFile);
|
|
|
|
|
fitCurveDlg->updateTitleAxis(xTitle, yTitle);
|
|
|
|
|
fitCurveDlg->updateMinMaxX(xMin, xMax, xCount);
|
|
|
|
|
fitCurveDlg->updateMinMaxY(yMin, yMax, yCount);
|
|
|
|
|
|
|
|
|
|
if (strType == "Wave")
|
|
|
|
|
{
|
|
|
|
|
fitCurveDlg->updateParseWaveFile(strFile, nT, listCurve);
|
|
|
|
|
}
|
|
|
|
|
else if (strType == "Report")
|
|
|
|
|
{
|
|
|
|
|
fitCurveDlg->updateParseReportFile(strFile, nT, listCurve);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else if (strType == "Table")
|
|
|
|
|
{
|
|
|
|
|
QString head = mapChart.value("head").toString();
|
|
|
|
|
QVariantList listCurve = mapChart.value("Curve").toList();
|
|
|
|
|
|
|
|
|
|
TargetListWgt *targetUITable = new TargetListWgt;
|
|
|
|
|
targetUITable->AttachDock(pDock);
|
|
|
|
|
targetUITable->SetHead(head);
|
|
|
|
|
targetUITable->updateTitle(strName + "-" + strFile);
|
|
|
|
|
targetUITable->updateParseFile(strFile, nT, listCurve);
|
|
|
|
|
}
|
|
|
|
|
else if (strType == "Lamp")
|
|
|
|
|
{
|
|
|
|
|
QString openColor = mapChart.value("openColor").toString();
|
|
|
|
|
QString closeColor = mapChart.value("closeColor").toString();
|
|
|
|
|
QVariantList listCurve = mapChart.value("Curve").toList();
|
|
|
|
|
|
|
|
|
|
SignalIndicatorLampUI *signalIndicatorLamp = new SignalIndicatorLampUI;
|
|
|
|
|
signalIndicatorLamp->AttachDock(pDock);
|
|
|
|
|
signalIndicatorLamp->updateTitle(strName + "-" + strFile);
|
|
|
|
|
signalIndicatorLamp->updateLampColor(openColor, closeColor);
|
|
|
|
|
signalIndicatorLamp->updateParseFile(strFile, nT, listCurve);
|
|
|
|
|
}
|
|
|
|
|
else if (strType == "Surface")
|
|
|
|
|
{
|
|
|
|
|
QString xTitle = mapChart.value("xTitle").toString();
|
|
|
|
|
QString yTitle = mapChart.value("yTitle").toString();
|
|
|
|
|
QString zTitle = mapChart.value("zTitle").toString();
|
|
|
|
|
float xMin = mapChart.value("xMin").toFloat();
|
|
|
|
|
float xMax = mapChart.value("xMax").toFloat();
|
|
|
|
|
int xCount = mapChart.value("xCount").toInt();
|
|
|
|
|
float yMin = mapChart.value("yMin").toFloat();
|
|
|
|
|
float yMax = mapChart.value("yMax").toFloat();
|
|
|
|
|
int yCount = mapChart.value("yCount").toInt();
|
|
|
|
|
float zMin = mapChart.value("zMin").toFloat();
|
|
|
|
|
float zMax = mapChart.value("zMax").toFloat();
|
|
|
|
|
int zCount = mapChart.value("zCount").toInt();
|
|
|
|
|
QVariantList listCurve = mapChart.value("Curve").toList();
|
|
|
|
|
|
|
|
|
|
SurfaceDialog *surfaceDlg = new SurfaceDialog();
|
|
|
|
|
surfaceDlg->AttachDock(pDock);
|
|
|
|
|
surfaceDlg->updateTitle(strName + "-" + strFile);
|
|
|
|
|
surfaceDlg->updateTitleAxis(xTitle, yTitle, zTitle);
|
|
|
|
|
surfaceDlg->updateMinMaxX(xMin, xMax, xCount);
|
|
|
|
|
surfaceDlg->updateMinMaxY(yMin, yMax, yCount);
|
|
|
|
|
surfaceDlg->updateMinMaxZ(zMin, zMax, zCount);
|
|
|
|
|
surfaceDlg->updateParseFile(strFile, nT, listCurve);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
mainWindow->addDockWidget(Qt::LeftDockWidgetArea, pDock);
|
|
|
|
|
|
|
|
|
|
QDockWidget* afterDock = m_mapChartWidget.value(after);
|
|
|
|
|
if (afterDock)
|
|
|
|
|
{
|
|
|
|
|
if (orientation == QString("Horizontal"))
|
|
|
|
|
{
|
|
|
|
|
mainWindow->splitDockWidget(afterDock, pDock, Qt::Horizontal);
|
|
|
|
|
}
|
|
|
|
|
else if (orientation == QString("Vertical"))
|
|
|
|
|
{
|
|
|
|
|
mainWindow->splitDockWidget(afterDock, pDock, Qt::Vertical);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
m_mapChartWidget.insert(strName, pDock);
|
|
|
|
|
|
|
|
|
|
return pDock;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
QDockWidget * MainWindow::InitCurveChart(QVariantMap mapChart, QMainWindow * mainWindow)
|
|
|
|
|
{
|
|
|
|
|
return nullptr;
|
2025-01-04 04:12:51 +00:00
|
|
|
}
|