#include "MainWindow.h" #include #include "utils/UiLayoutManager.h" #include "PropertyBrowser.h" #include "ModelBrowser.h" #include "ModelBrowser/PresetModelPanel.h" #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" #include "Panel/DataPanelManager.h" #include "ui_MainWindow.h" #include "viewer/OsgWidget.h" #include "DockTitleBar.h" MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); LOG_INFO("MainWindow::MainWindow - Constructor called, about to call InitUI"); InitUI(); LOG_INFO("MainWindow::MainWindow - Constructor completed"); } MainWindow::~MainWindow() { UninitUI(); delete ui; } void MainWindow::InitUI() { LOG_INFO("MainWindow::InitUI - Function started"); QWidget* centralWidget = takeCentralWidget(); if (nullptr != centralWidget) { delete centralWidget; } setDockNestingEnabled(true); setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea); setCorner(Qt::BottomRightCorner, Qt::RightDockWidgetArea); setDockOptions(QMainWindow::AllowTabbedDocks | QMainWindow::AllowNestedDocks | QMainWindow::AnimatedDocks); DockWidget* model = new DockWidget(tr("model elements"), 0); model->SetDockWidgetTitleBar(new DockTitleBar(model)); model->setObjectName("Dock.ModelBrowser"); modelBrowser_ = new ModelBrowser(0); modelBrowser_->AttachDock(model); mapDockWidget_.insert("ModelBrowser", model); addDockWidget(Qt::LeftDockWidgetArea, model); // 创建预制模型面板 DockWidget* presetModel = new DockWidget(tr("preset models"), 0); presetModel->SetDockWidgetTitleBar(new DockTitleBar(presetModel)); presetModel->setObjectName("Dock.PresetModelPanel"); presetModelPanel_ = new PresetModelPanel(0); presetModelPanel_->AttachDock(presetModel); addDockWidget(Qt::LeftDockWidgetArea, presetModel); mapDockWidget_.insert("PresetModelPanel", presetModel); DockWidget* attribte = new DockWidget(tr("attribte"), 0); attribte->SetDockWidgetTitleBar(new DockTitleBar(attribte)); attribte->setObjectName("Dock.PropertyBrowser"); //addDockWidget(pSettingUI->GetArea("PropertyBrowser"), attribte); propertyBrowser_ = new PropertyBrowser(0); propertyBrowser_->AttachDock(attribte); mapDockWidget_.insert("PropertyBrowser", attribte); addDockWidget(Qt::RightDockWidgetArea, attribte); connect(modelBrowser_, &ModelBrowser::WorkSpaceChange, propertyBrowser_, &PropertyBrowser::OnWorkSpaceChange); connect(modelBrowser_, &ModelBrowser::EntityChange, propertyBrowser_, &PropertyBrowser::OnEntityChange); qtOsgViewWidget_ = new OsgWidget; qtOsgViewWidget_->Initialize(); DockWidget* viewDock = new DockWidget(tr("Main View"), 0); viewDock->SetDockWidgetTitleBar(new DockTitleBar(viewDock)); viewDock->setObjectName("Dock.MainView"); viewDock->setWidget(qtOsgViewWidget_); addDockWidget(Qt::LeftDockWidgetArea, viewDock); mapDockWidget_.insert("MainView", viewDock); splitDockWidget(model, viewDock, Qt::Horizontal); // 将预制模型面板与模型浏览器标签化 tabifyDockWidget(model, presetModel); dataPanelManager_ = new DataPanelManager(this, this); connect(&WorkSpaceManager::Get(), &WorkSpaceManager::WorkSpaceChanged, dataPanelManager_, &DataPanelManager::OnWorkspaceChanged); // Restore previous UI layout if available LOG_INFO("MainWindow::InitUI - About to call UiLayoutManager::Restore"); UiLayoutManager::Restore(this, 1); LOG_INFO("MainWindow::InitUI - UiLayoutManager::Restore completed"); //ui->viewWidget->layout()->addWidget(qtOsgViewWidget_); qtOsgViewWidget_->LoadDefaultScene(); #if 0 MatlabObject::GetInstance()->RunMatlabFile(""); #endif // 1 } void MainWindow::UninitUI() { // Save layout state before tearing down widgets UiLayoutManager::Save(this, 1); if (dataPanelManager_) { delete dataPanelManager_; dataPanelManager_ = nullptr; } if (qtOsgViewWidget_) { qtOsgViewWidget_->Uninitialize(); delete qtOsgViewWidget_; qtOsgViewWidget_ = nullptr; } } void MainWindow::slotResetWorkSpace() { QString wavePath = "", speedPath = "", rdPath = ""; if (WorkSpaceManager::Get().GetCurrent()) { if (!WorkSpaceManager::Get().GetCurrent()->GetWavePath().isEmpty()) { wavePath = RecourceHelper::Get().GetBasePath() + "/" + WorkSpaceManager::Get().GetCurrent()->GetWavePath(); } 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(); } } }