From 69caff5ce7b7ea770be0347777d26f135ad99a61 Mon Sep 17 00:00:00 2001 From: brige Date: Sat, 5 Jul 2025 12:07:30 +0800 Subject: [PATCH] modify new ui --- src/translations/Dyt_zh_CN.ts | 57 +++++++++----------- src/ui/MainWindow.cpp | 42 +++++++-------- src/viewer/CameraControlManipulator.cpp | 8 ++- src/workspace/WorkSpace.cpp | 71 +++++++++++++++++++++++++ src/workspace/WorkSpace.h | 38 +++++-------- src/workspace/WorkSpaceXMLParse.cpp | 30 +++++++++++ src/workspace/WorkSpaceXMLParse.h | 1 + src/workspace/WorkSpaceXMLWrite.cpp | 2 +- 8 files changed, 170 insertions(+), 79 deletions(-) diff --git a/src/translations/Dyt_zh_CN.ts b/src/translations/Dyt_zh_CN.ts index 87e57480..53106946 100644 --- a/src/translations/Dyt_zh_CN.ts +++ b/src/translations/Dyt_zh_CN.ts @@ -523,133 +523,128 @@ - + model elements - + attribte - + Wave Curve - + Speed Curve - + 3D Curve - + Target number - + Signal-to-noise ratio - + Azimuth line of sight - + Pitch gaze angle - + azimuth - + Pitch angle - + attribute - + Doppler - + course - + Speed - + longitude - + latitude - + distance - + velocity - + Radial dimensions - + Target RCS - + Report Table - + Signal Indicator Lamp - + ParamSetting - - Matlab File - - - - - name: 5year 0412 + + bat File diff --git a/src/ui/MainWindow.cpp b/src/ui/MainWindow.cpp index 81da8cb9..17a420b0 100644 --- a/src/ui/MainWindow.cpp +++ b/src/ui/MainWindow.cpp @@ -38,7 +38,6 @@ MainWindow::MainWindow(QWidget* parent) } MainWindow::~MainWindow() { - //OsgViewer::Get().Uninitialize(); UninitUI(); delete ui; } @@ -167,13 +166,13 @@ void MainWindow::InitUI() { addParamDlg_->AttachDock(addParamSettingDock); m_mapDockWidget.insert("ParamSetting", addParamSettingDock); - DockWidget* matlabDock = new DockWidget(tr("Matlab File"), 0); - matlabFileDlg_ = new CodeEdtUI; - matlabFileDlg_->AttachDock(matlabDock); - m_mapDockWidget.insert("Matlab", matlabDock); + DockWidget* matlabDock = new DockWidget(tr("bat File"), 0); + matlabFileDlg_ = new CodeEdtUI; + matlabFileDlg_->AttachDock(matlabDock); + m_mapDockWidget.insert("Matlab", matlabDock); - ui->discript->setText(tr("name: 5year 0412")); - //ui->status->setText(tr("start: no start")); + //ui->discript->setText(tr("name: 5year 0412")); + //ui->status->setText(tr("start: no start")); InitDockLayout(); @@ -182,9 +181,9 @@ void MainWindow::InitUI() { /*OsgViewer::Get().Initialize(); OsgViewer::Get().OnFrame();*/ -#if 1 - // MatlabObject* mtlb = new MatlabObject; - MatlabObject::GetInstance()->RunMatlabFile(""); +#if 0 + // MatlabObject* mtlb = new MatlabObject; + MatlabObject::GetInstance()->RunMatlabFile(""); #endif // 1 } @@ -201,10 +200,12 @@ void MainWindow::InitDockLayout() { tabWidget_->removeTab(0); } - QVariantList listTab = pSettingUI->GetAreaLayout().toList(); - for (int i = 0; i < listTab.size(); i++) { - QVariantMap mapTab = listTab[i].toMap(); - QString strTabName = mapTab.value("Name").toString(); + tabWidget_->tabBar()->setExpanding(true); + + QVariantList listTab = pSettingUI->GetAreaLayout().toList(); + for (int i = 0; i < listTab.size(); i++) { + QVariantMap mapTab = listTab[i].toMap(); + QString strTabName = mapTab.value("Name").toString(); QMainWindow* mainWindow_ = new QMainWindow; connect(mainWindow_, &QMainWindow::tabifiedDockWidgetActivated, this, &MainWindow::OnTabifiedDockWidgetActivated); @@ -269,6 +270,7 @@ void MainWindow::InitDockLayout() { } } + tabWidget_->tabBar()->setMinimumWidth(500); /* AddDockArea("DockLeftArea"); AddDockArea("DockTopArea"); AddDockArea("DockRightArea"); @@ -351,20 +353,16 @@ void MainWindow::slotShowUISetting() { void MainWindow::slotResetWorkSpace() { QString wavePath = "", speedPath = "", rdPath = ""; - if (WorkSpaceManager::Get().GetCurrent()) - { - if (!WorkSpaceManager::Get().GetCurrent()->GetWavePath().isEmpty()) - { + if (WorkSpaceManager::Get().GetCurrent()) { + if (!WorkSpaceManager::Get().GetCurrent()->GetWavePath().isEmpty()) { wavePath = RecourceHelper::Get().GetBasePath() + "/" + WorkSpaceManager::Get().GetCurrent()->GetWavePath(); } - if (!WorkSpaceManager::Get().GetCurrent()->GetReportPath().isEmpty()) - { + if (!WorkSpaceManager::Get().GetCurrent()->GetReportPath().isEmpty()) { speedPath = RecourceHelper::Get().GetBasePath() + "/" + WorkSpaceManager::Get().GetCurrent()->GetReportPath(); } - if (!WorkSpaceManager::Get().GetCurrent()->GetRDPath().isEmpty()) - { + if (!WorkSpaceManager::Get().GetCurrent()->GetRDPath().isEmpty()) { rdPath = RecourceHelper::Get().GetBasePath() + "/" + WorkSpaceManager::Get().GetCurrent()->GetRDPath(); } } diff --git a/src/viewer/CameraControlManipulator.cpp b/src/viewer/CameraControlManipulator.cpp index 2c47f927..76b4ee36 100644 --- a/src/viewer/CameraControlManipulator.cpp +++ b/src/viewer/CameraControlManipulator.cpp @@ -143,6 +143,9 @@ void CameraControlManipulator::setByMatrix(const osg::Matrixd& matrix) { fixVerticalAxis(_center, _rotation, true); } break; + + default: + break; } } @@ -192,6 +195,9 @@ osg::Matrixd CameraControlManipulator::getMatrix() const { osg::Matrixd::translate(_center); } break; + + default: + break; } return matrix; @@ -352,7 +358,7 @@ bool CameraControlManipulator::calcMovement() { // get delta time double eventTimeDelta = _ga_t0->getTime() - _ga_t1->getTime(); if (eventTimeDelta < 0.) { - OSG_WARN << "Manipulator warning: eventTimeDelta = " << eventTimeDelta; + OSG_WARN << "Manipulator warning: eventTimeDelta = " << eventTimeDelta << std::endl; eventTimeDelta = 0.; } diff --git a/src/workspace/WorkSpace.cpp b/src/workspace/WorkSpace.cpp index 1970a0d9..9836479f 100644 --- a/src/workspace/WorkSpace.cpp +++ b/src/workspace/WorkSpace.cpp @@ -14,6 +14,7 @@ #include "xml/tinyxml2.h" #include "common/SpdLogger.h" #include "entities/Entity.h" +#include "utils/FileUtils.h" //#include "workspace/WorkSpaceItemGroup.h" //#include "workspace/WorkSpaceRiverGroup.h" //#include "workspace/WorkSpaceRiverNetGroup.h" @@ -38,6 +39,76 @@ const QString WorkSpace::GetDir() const { return info.absolutePath(); } +void WorkSpace::SetSimMatlab(const QString& path) { + QFileInfo fileInfo(path); + QString dirPath = QString("%1/%2").arg(GetDir(), fileInfo.fileName()); + bool sucess = FileUtils::CopyFileToPath(path, dirPath, true); + LOG_INFO("copy simmatlab file {}: {} to {}", + path.toLocal8Bit().data(), + dirPath.toLocal8Bit().data(), + sucess); + simMatlabPath_ = fileInfo.fileName(); +} + +const QString WorkSpace::GetSimMatlab() const { + QString path = QString("%1/%2").arg(GetDir(), simMatlabPath_); + return path; +} + +void WorkSpace::SetWavePath(const QString& path) +{ + QFileInfo fileInfo(path); + QString dirPath = QString("%1/%2").arg(GetDir(), fileInfo.fileName()); + bool sucess = FileUtils::CopyFileToPath(path, dirPath, true); + LOG_INFO("copy Wave file {}: {} to {}", + path.toLocal8Bit().data(), + dirPath.toLocal8Bit().data(), + sucess); + waveFile_ = fileInfo.fileName(); +} + +const QString WorkSpace::GetWavePath() const +{ + QString path = QString("%1/%2").arg(GetDir(), waveFile_); + return path; +} + +void WorkSpace::SetReportPath(const QString& path) +{ + QFileInfo fileInfo(path); + QString dirPath = QString("%1/%2").arg(GetDir(), fileInfo.fileName()); + bool sucess = FileUtils::CopyFileToPath(path, dirPath, true); + LOG_INFO("copy Wave file {}: {} to {}", + path.toLocal8Bit().data(), + dirPath.toLocal8Bit().data(), + sucess); + reportFile_ = fileInfo.fileName(); +} + +const QString WorkSpace::GetReportPath() const +{ + QString path = QString("%1/%2").arg(GetDir(), reportFile_); + return path; +} + +void WorkSpace::SetRDPath(const QString& path) +{ + QFileInfo fileInfo(path); + QString dirPath = QString("%1/%2").arg(GetDir(), fileInfo.fileName()); + bool sucess = FileUtils::CopyFileToPath(path, dirPath, true); + LOG_INFO("copy RD file {}: {} to {}", + path.toLocal8Bit().data(), + dirPath.toLocal8Bit().data(), + sucess); + rdFile_ = fileInfo.fileName(); +} + +const QString WorkSpace::GetRDPath() const +{ + QString path = QString("%1/%2").arg(GetDir(), rdFile_); + return path; +} + void WorkSpace::AddEntity(Entity* entity) { if (nullptr == entity) { LOG_WARN("entity is nullptr"); diff --git a/src/workspace/WorkSpace.h b/src/workspace/WorkSpace.h index 8094fcf2..b5b44259 100644 --- a/src/workspace/WorkSpace.h +++ b/src/workspace/WorkSpace.h @@ -46,12 +46,8 @@ public: inline const QString& GetDescribe() const { return describe_; } - inline void SetSimMatlab(const QString& path) { - simMatlabPath_ = path; - } - inline const QString GetSimMatlab() const { - return simMatlabPath_; - } + void SetSimMatlab(const QString& path); + const QString GetSimMatlab() const; inline void SetMatlabParam(const QString& path) { matlabParamPath_ = path; @@ -60,26 +56,14 @@ public: return matlabParamPath_; } - inline void SetWavePath(const QString& path) { - waveFile_ = path; - } - inline const QString GetWavePath() const { - return waveFile_; - } + void SetWavePath(const QString& path); + const QString GetWavePath() const; - inline void SetReportPath(const QString& path) { - reportFile_ = path; - } - inline const QString GetReportPath() const { - return reportFile_; - } + void SetReportPath(const QString& path) ; + const QString GetReportPath() const; - inline void SetRDPath(const QString& path) { - rdFile_ = path; - } - inline const QString GetRDPath() const { - return rdFile_; - } + void SetRDPath(const QString& path); + const QString GetRDPath() const; inline void SetHomeViewpoint(const osgEarth::Viewpoint& viewpoint) { homeViewpoint_ = viewpoint; @@ -140,6 +124,11 @@ Q_SIGNALS: void TimestepChanged(class Timestep* timestep); void LampStatusChanged(class LampStatus* lampStatus); +protected: + const QString& GetSimMatlabName() const { + return simMatlabPath_; + } + private: QString name_; QString uuid_; @@ -160,5 +149,6 @@ private: class Timestep* timestep_{ nullptr }; class LampStatus* lampStatus_{ nullptr }; class Entity* trackedEntity_{ nullptr }; + friend class WorkSpaceXMLWrite; }; diff --git a/src/workspace/WorkSpaceXMLParse.cpp b/src/workspace/WorkSpaceXMLParse.cpp index 71604656..e3321cfc 100644 --- a/src/workspace/WorkSpaceXMLParse.cpp +++ b/src/workspace/WorkSpaceXMLParse.cpp @@ -155,6 +155,33 @@ bool WorkSpaceXMLParse::ParseChart(const tinyxml2::XMLElement* element) return true; } +bool WorkSpaceXMLParse::ParseSimMatlab(const tinyxml2::XMLElement* element) +{ + if (nullptr == element) { + LOG_WARN("element is nullptr"); + return false; + } + + const tinyxml2::XMLElement* xmlElement = element->FirstChildElement(); + while (nullptr != xmlElement) { + const char* name = xmlElement->Name(); + if (0 == strcmp(name, "SimMatlab")) + { + QVariantMap varChart; + const tinyxml2::XMLAttribute* attribute = xmlElement->FirstAttribute(); + while (nullptr != attribute) { + + WorkSpaceManager::Get().GetCurrent()->SetSimMatlab(QString::fromLocal8Bit(attribute->Value())); + attribute = attribute->Next(); + } + } + + xmlElement = xmlElement->NextSiblingElement(); + } + + return true; +} + bool WorkSpaceXMLParse::ParseReport(const tinyxml2::XMLElement* element) { QString strFile = ""; @@ -208,6 +235,9 @@ bool WorkSpaceXMLParse::Load(const QString& dyt) { else if (0 == strcmp(name, "ReportInfo")) { ParseReport(xmlElement); } + else if (0 == strcmp(name, "SimMatlab")) { + ParseSimMatlab(xmlElement); + } xmlElement = xmlElement->NextSiblingElement(); } diff --git a/src/workspace/WorkSpaceXMLParse.h b/src/workspace/WorkSpaceXMLParse.h index 219f6fb5..60f4b468 100644 --- a/src/workspace/WorkSpaceXMLParse.h +++ b/src/workspace/WorkSpaceXMLParse.h @@ -34,6 +34,7 @@ private: bool ParseEntities(const tinyxml2::XMLElement* element); bool ParseChart(const tinyxml2::XMLElement* element); bool ParseReport(const tinyxml2::XMLElement* element); + bool ParseSimMatlab(const tinyxml2::XMLElement* element); private: QString name_; diff --git a/src/workspace/WorkSpaceXMLWrite.cpp b/src/workspace/WorkSpaceXMLWrite.cpp index acaa67b8..8a55034e 100644 --- a/src/workspace/WorkSpaceXMLWrite.cpp +++ b/src/workspace/WorkSpaceXMLWrite.cpp @@ -114,7 +114,7 @@ bool WorkSpaceXMLWrite::SaveChart(tinyxml2::XMLElement* scene, tinyxml2::XMLDocu tinyxml2::XMLElement* chart = doc->NewElement("SimMatlab"); charts->LinkEndChild(chart); - chart->SetAttribute("SimMatlab", workSpace_->GetSimMatlab().toLocal8Bit().constData()); + chart->SetAttribute("SimMatlab", workSpace_->GetSimMatlabName().toLocal8Bit().constData()); } return true;