From 3a6970b2d13bacb2f57518f35f72ba0aadaa2734 Mon Sep 17 00:00:00 2001
From: 15712809671 <136563253+15712809671@users.noreply.github.com>
Date: Sun, 5 Jan 2025 22:29:59 +0800
Subject: [PATCH] add sim menu

---
 src/ui/Layout/CodeEdtUI.cpp         | 77 ++++++++++++++++++++++++++---
 src/ui/Layout/CodeEdtUI.h           |  7 ++-
 src/ui/MainFrame.cpp                | 14 +-----
 src/ui/Menu/ChartPlotMenu.cpp       | 44 ++++++-----------
 src/ui/Menu/ChartPlotMenu.h         | 11 +----
 src/ui/Menu/ChartPlotMenu.ui        | 28 +----------
 src/ui/Menu/SimuRunMenu.cpp         | 10 ++++
 src/ui/Menu/SimuRunMenu.h           | 16 ++++++
 src/ui/Menu/SimuRunMenu.ui          | 22 +++++++++
 src/ui/Table/targetlistwgt.cpp      |  4 +-
 src/workspace/WorkSpaceManager.h    | 38 ++++++++++++++
 src/workspace/WorkSpaceXMLParse.cpp | 29 +++++++++++
 src/workspace/WorkSpaceXMLWrite.cpp | 18 +++++++
 13 files changed, 230 insertions(+), 88 deletions(-)
 create mode 100644 src/ui/Menu/SimuRunMenu.cpp
 create mode 100644 src/ui/Menu/SimuRunMenu.h
 create mode 100644 src/ui/Menu/SimuRunMenu.ui

diff --git a/src/ui/Layout/CodeEdtUI.cpp b/src/ui/Layout/CodeEdtUI.cpp
index fdf31c9e..50988582 100644
--- a/src/ui/Layout/CodeEdtUI.cpp
+++ b/src/ui/Layout/CodeEdtUI.cpp
@@ -10,6 +10,8 @@
 #include <QFont>
 #include <qdebug.h>
 
+#include "../../workspace/WorkSpaceManager.h"
+
 #include "SyntaxHighlighter.h"
 
 #include "../DockTitleBar.h"
@@ -32,12 +34,19 @@ CodeEdtUI::CodeEdtUI(QWidget *parent)
 
     // �����˵�  
     QMenu* fileMenu = menuBar()->addMenu(tr("&file"));
-    QAction* openAction = new QAction(tr("&Import the template"), this);
+    QAction* openMainAction = new QAction(tr("&Import the Main template"), this);
+    QAction* openLDAction = new QAction(tr("&Import the LD template"), this);
+    QAction* openSeekerSimAction = new QAction(tr("&Import the SeekerSim template"), this);
     QAction* saveAction = new QAction(tr("&save"), this);
-    fileMenu->addAction(openAction);
+    fileMenu->addAction(openMainAction);
+    fileMenu->addAction(openLDAction);
+    fileMenu->addAction(openSeekerSimAction);
     fileMenu->addAction(saveAction);
 
-    connect(openAction, &QAction::triggered, this, &CodeEdtUI::openFile);
+    connect(openMainAction, &QAction::triggered, this, &CodeEdtUI::openMainFile);
+    connect(openLDAction, &QAction::triggered, this, &CodeEdtUI::openLDFile);
+    connect(openSeekerSimAction, &QAction::triggered, this, &CodeEdtUI::openSeekerSimFile);
+
     connect(saveAction, &QAction::triggered, this, &CodeEdtUI::saveFile);
 
     // ״̬��  
@@ -61,11 +70,19 @@ void CodeEdtUI::AttachDock(DockWidget* dockWidget)
     dockWidget->SetDockWidgetTitleBar(dockTitleBar);
 }
 
-void CodeEdtUI::openFile() {
-    QString fileName = QFileDialog::getOpenFileName(this, "Open File", "", "Matlab Files (*.m)");
+void CodeEdtUI::openMainFile() {
+    QString fileName = WorkSpaceManager::Get().GetDYTMMainFile(); //QFileDialog::getOpenFileName(this, "Open File", "", "Matlab Files (*.m)");
+    if (fileName.isEmpty())
+    {
+        fileName = QFileDialog::getOpenFileName(this, "Open File", "", "Matlab Files (*.m)");
+        WorkSpaceManager::Get().SetDYTMMainFile(fileName);
+    }
+
     if (!fileName.isEmpty()) {
         QFile file(fileName);
         if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
+            editor->clear();
+
             QTextStream in(&file);
             editor->setPlainText(in.readAll());
             file.close();
@@ -73,10 +90,56 @@ void CodeEdtUI::openFile() {
     }
 }
 
-void CodeEdtUI::saveFile() {
-    QString fileName = QFileDialog::getSaveFileName(this, "Save File", "", "Matlab Files (*.m)");
+void CodeEdtUI::openLDFile()
+{
+    QString fileName = WorkSpaceManager::Get().GetDYTMLDFile(); //QFileDialog::getOpenFileName(this, "Open File", "", "Matlab Files (*.m)");
+    if (fileName.isEmpty())
+    {
+        fileName = QFileDialog::getOpenFileName(this, "Open File", "", "Matlab Files (*.m)");
+        WorkSpaceManager::Get().SetDYTMLDFile(fileName);
+    }
+    
     if (!fileName.isEmpty()) {
         QFile file(fileName);
+        if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
+            editor->clear();
+
+            QTextStream in(&file);
+            editor->setPlainText(in.readAll());
+            file.close();
+
+            m_strCurOpenFile = fileName;
+        }
+    }
+}
+
+void CodeEdtUI::openSeekerSimFile()
+{
+    QString fileName = WorkSpaceManager::Get().GetDYTMSeekerSimFile(); //QFileDialog::getOpenFileName(this, "Open File", "", "Matlab Files (*.m)");
+    if (fileName.isEmpty())
+    {
+        fileName = QFileDialog::getOpenFileName(this, "Open File", "", "Matlab Files (*.m)");
+        WorkSpaceManager::Get().SetDYTMSeekerSimFile(fileName);
+    }
+
+    if (!fileName.isEmpty()) {
+        QFile file(fileName);
+        if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
+            editor->clear();
+
+            QTextStream in(&file);
+            editor->setPlainText(in.readAll());
+            file.close();
+
+            m_strCurOpenFile = fileName;
+        }
+    }
+}
+
+void CodeEdtUI::saveFile() {
+    //QString fileName = QFileDialog::getSaveFileName(this, "Save File", "", "Matlab Files (*.m)");
+    if (!m_strCurOpenFile.isEmpty()) {
+        QFile file(m_strCurOpenFile);
         if (file.open(QIODevice::WriteOnly | QIODevice::Text)) {
             QTextStream out(&file);
             out << editor->toPlainText();
diff --git a/src/ui/Layout/CodeEdtUI.h b/src/ui/Layout/CodeEdtUI.h
index c6e98a64..746150a3 100644
--- a/src/ui/Layout/CodeEdtUI.h
+++ b/src/ui/Layout/CodeEdtUI.h
@@ -12,7 +12,10 @@ public:
     void AttachDock(class DockWidget* dockWidget);
 
 protected slots:
-    void openFile();
+    void openMainFile();
+    void openLDFile();
+    void openSeekerSimFile();
+
     void saveFile();
 
 private:
@@ -20,5 +23,7 @@ private:
 
     class QPlainTextEdit* editor;
 
+    QString m_strCurOpenFile;
+
     class SyntaxHighlighter* syntaxHighlighter{ nullptr };
 };
diff --git a/src/ui/MainFrame.cpp b/src/ui/MainFrame.cpp
index 689c2aa8..b786f9d2 100644
--- a/src/ui/MainFrame.cpp
+++ b/src/ui/MainFrame.cpp
@@ -108,10 +108,8 @@ void MainFrame::InitUI() {
     PlayManagerMenu* playMenu = new PlayManagerMenu(this);
     AddMenuWidget("play_manager", tr("play manager"), playMenu);
 
-   // ChartPlotMenu *chartMenu = new ChartPlotMenu(this);
-   
-
-   // AddMenuWidget("chartPlot_manager", tr("chartPlot manager"), chartMenu);
+    ChartPlotMenu *chartMenu = new ChartPlotMenu(this);
+    AddMenuWidget("simu_manager", tr("simu manager"), chartMenu);
 
     MainWindow* mainWindow = new MainWindow(this);
     layout->addWidget(mainWindow);
@@ -120,14 +118,6 @@ void MainFrame::InitUI() {
     connect(fileMenu, &FileManagerMenu::LoadDyt, viewWidget, &QtOsgViewWidget::OnLoadDyt);
     connect(viewWidget, &QtOsgViewWidget::signalResetWorkSpace, mainWindow, &MainWindow::slotResetWorkSpace);
 
-    //connect(chartMenu, &ChartPlotMenu::signalAddCurve, mainWindow->GetFitCurveDlg(), &FitCurveDialog::slotAddSeries);
-    //connect(chartMenu, &ChartPlotMenu::signalDelCurve, mainWindow->GetFitCurveDlg(), &FitCurveDialog::slotDelCurve);
-
-    //connect(chartMenu, &ChartPlotMenu::signalAddLgCurve, mainWindow->GetFitYLgCurveDlg(), &FitCurveDialog::slotAddSeries);
-    //connect(chartMenu, &ChartPlotMenu::signalDelLgCurve, mainWindow->GetFitYLgCurveDlg(), &FitCurveDialog::slotDelCurve);
-
-    //connect(chartMenu, &ChartPlotMenu::signalAddSurfaceCurve, mainWindow->GetSurfaceDlg(), &SurfaceDialog::slotAddSeries);
-
     connect(system_, &SystemManagerMenu::signalShowUISetting, mainWindow, &MainWindow::slotShowUISetting);
 
     if (ui->menuWidget->count() > 0) {
diff --git a/src/ui/Menu/ChartPlotMenu.cpp b/src/ui/Menu/ChartPlotMenu.cpp
index f1c2bc6d..4b278de5 100644
--- a/src/ui/Menu/ChartPlotMenu.cpp
+++ b/src/ui/Menu/ChartPlotMenu.cpp
@@ -1,9 +1,10 @@
 #include "ChartPlotMenu.h"
 
-#include "../chartPlot/DYTChart.h"
+#include "../Matlab/MatlabObject.h"
 
 #include "workspace/WorkSpace.h"
 #include "workspace/WorkSpaceManager.h"
+#include <qmessagebox.h>
 
 ChartPlotMenu::ChartPlotMenu(QWidget *parent)
 	: QWidget(parent)
@@ -20,33 +21,16 @@ ChartPlotMenu::~ChartPlotMenu()
 
 void ChartPlotMenu::InitMenu()
 {
-
-	/*if (!m_p2DChart)
-	{
-		m_p2DChart = new DYTChart(1);
-
-		WorkSpaceManager::Get().SetDYTChart2D(m_p2DChart);
-
-		connect(m_p2DChart, &DYTChart::signalAddCurve, this, &ChartPlotMenu::signalAddCurve);
-		connect(m_p2DChart, &DYTChart::signalDelCurve, this, &ChartPlotMenu::signalDelCurve);
-	}
-
-	if (!m_p2DLgChart)
-	{
-		m_p2DLgChart = new DYTChart(2);
-
-		WorkSpaceManager::Get().SetDYTChart2DLg(m_p2DLgChart);
-
-		connect(m_p2DLgChart, &DYTChart::signalAddLgCurve, this, &ChartPlotMenu::signalAddLgCurve);
-		connect(m_p2DLgChart, &DYTChart::signalDelLgCurve, this, &ChartPlotMenu::signalDelLgCurve);
-	}
-
-	if (!m_p3DChart)
-	{
-		m_p3DChart = new DYTChart(3);
-
-		WorkSpaceManager::Get().SetDYTChart3D(m_p3DChart);
-
-		connect(m_p3DChart, &DYTChart::signalAddSurfaceCurve, this, &ChartPlotMenu::signalAddSurfaceCurve);
-	}*/
+	connect(ui.toolButton, &QToolButton::clicked, this, [=] {
+		MatlabObject mtlb;
+		QString strFile = WorkSpaceManager::Get().GetDYTMMainFile();
+		if (!strFile.isEmpty())
+		{
+			mtlb.RunMatlabFile(strFile);
+		}
+		else
+		{
+			QMessageBox::information(nullptr, QString::fromLocal8Bit("��ʾ"), QString::fromLocal8Bit("��������ļ�·���Ƿ���ڣ�"));
+		}
+		});
 }
diff --git a/src/ui/Menu/ChartPlotMenu.h b/src/ui/Menu/ChartPlotMenu.h
index 312e48e1..e7212410 100644
--- a/src/ui/Menu/ChartPlotMenu.h
+++ b/src/ui/Menu/ChartPlotMenu.h
@@ -17,18 +17,9 @@ protected:
 	void InitMenu();
 
 signals:
-	void signalAddCurve(QVariant varCurve);   // ��������
-	void signalDelCurve(int iID);  // ɾ������
-
-	void signalAddLgCurve(QVariant varCurve);   // ��������
-	void signalDelLgCurve(int iID);  // ɾ������
-
-	void signalAddSurfaceCurve(QVariant varCurve);   // ��������
+	
 
 private:
 	Ui::ChartPlotMenuClass ui;
 
-	DYTChart* m_p2DChart = NULL;
-	DYTChart* m_p2DLgChart = NULL;
-	DYTChart* m_p3DChart = NULL;
 };
diff --git a/src/ui/Menu/ChartPlotMenu.ui b/src/ui/Menu/ChartPlotMenu.ui
index e5eb20db..6fed6772 100644
--- a/src/ui/Menu/ChartPlotMenu.ui
+++ b/src/ui/Menu/ChartPlotMenu.ui
@@ -25,33 +25,7 @@
         </size>
        </property>
        <property name="text">
-        <string>2D Curver</string>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QToolButton" name="toolButton_3">
-       <property name="minimumSize">
-        <size>
-         <width>60</width>
-         <height>30</height>
-        </size>
-       </property>
-       <property name="text">
-        <string>2D(lg) Curver</string>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QToolButton" name="toolButton_2">
-       <property name="minimumSize">
-        <size>
-         <width>60</width>
-         <height>30</height>
-        </size>
-       </property>
-       <property name="text">
-        <string>3D Curver</string>
+        <string>Run Simu</string>
        </property>
       </widget>
      </item>
diff --git a/src/ui/Menu/SimuRunMenu.cpp b/src/ui/Menu/SimuRunMenu.cpp
new file mode 100644
index 00000000..cb555e12
--- /dev/null
+++ b/src/ui/Menu/SimuRunMenu.cpp
@@ -0,0 +1,10 @@
+#include "SimuRunMenu.h"
+
+SimuRunMenu::SimuRunMenu(QWidget *parent)
+	: QWidget(parent)
+{
+	ui.setupUi(this);
+}
+
+SimuRunMenu::~SimuRunMenu()
+{}
diff --git a/src/ui/Menu/SimuRunMenu.h b/src/ui/Menu/SimuRunMenu.h
new file mode 100644
index 00000000..28ac1222
--- /dev/null
+++ b/src/ui/Menu/SimuRunMenu.h
@@ -0,0 +1,16 @@
+#pragma once
+
+#include <QWidget>
+#include "ui_SimuRunMenu.h"
+
+class SimuRunMenu : public QWidget
+{
+	Q_OBJECT
+
+public:
+	SimuRunMenu(QWidget *parent = nullptr);
+	~SimuRunMenu();
+
+private:
+	Ui::SimuRunMenuClass ui;
+};
diff --git a/src/ui/Menu/SimuRunMenu.ui b/src/ui/Menu/SimuRunMenu.ui
new file mode 100644
index 00000000..55b22d5b
--- /dev/null
+++ b/src/ui/Menu/SimuRunMenu.ui
@@ -0,0 +1,22 @@
+<UI version="4.0" >
+ <class>SimuRunMenuClass</class>
+ <widget class="QWidget" name="SimuRunMenuClass" >
+  <property name="objectName" >
+   <string notr="true">SimuRunMenuClass</string>
+  </property>
+  <property name="geometry" >
+   <rect>
+	<x>0</x>
+	<y>0</y>
+	<width>600</width>
+	<height>400</height>
+   </rect>
+  </property>
+  <property name="windowTitle" >
+   <string>SimuRunMenu</string>
+  </property>$centralwidget$
+ </widget>
+ <layoutDefault spacing="6" margin="11" />
+ <pixmapfunction></pixmapfunction>
+ <connections/>
+</UI>
diff --git a/src/ui/Table/targetlistwgt.cpp b/src/ui/Table/targetlistwgt.cpp
index 2847b98a..f93e002a 100644
--- a/src/ui/Table/targetlistwgt.cpp
+++ b/src/ui/Table/targetlistwgt.cpp
@@ -435,7 +435,9 @@ void TargetListWgt::UpdatePageData(int iPageNum)
 
 		for (int iCol = 0; iCol < varColList.size(); iCol++)
 		{
-			ui.tableWidget->setItem(iRow, iCol, new QTableWidgetItem(varColList[iCol].toString()));
+			QString strVal;
+			strVal.sprintf("%.6f", varColList[iCol].toFloat());
+			ui.tableWidget->setItem(iRow, iCol, new QTableWidgetItem(strVal));
 		}
 
 		iRow++;
diff --git a/src/workspace/WorkSpaceManager.h b/src/workspace/WorkSpaceManager.h
index 4edca06a..8e6046c5 100644
--- a/src/workspace/WorkSpaceManager.h
+++ b/src/workspace/WorkSpaceManager.h
@@ -47,6 +47,24 @@ public:
 		return true;
 	}
 
+	bool SetDYTMMainFile(const QString& file)
+	{
+		m_mMainFile = file;
+		return true;
+	}
+
+	bool SetDYTMLDFile(const QString& file)
+	{
+		m_mLDFile = file;
+		return true;
+	}
+
+	bool SetDYTMSeekerSimFile(const QString& file)
+	{
+		m_mSeekerSimFile = file;
+		return true;
+	}
+
 	QString GetDYTWaveFile()
 	{
 		return m_waveFile;
@@ -62,6 +80,21 @@ public:
 		return m_rdFile;
 	}
 
+	QString GetDYTMMainFile()
+	{
+		return m_mMainFile;
+	}
+
+	QString GetDYTMLDFile()
+	{
+		return m_mLDFile;
+	}
+
+	QString GetDYTMSeekerSimFile()
+	{
+		return m_mSeekerSimFile;
+	}
+
 	void OnFrame();
 
 signals:
@@ -79,4 +112,9 @@ private:
 	QString m_waveFile;
 	QString m_reportFile;
 	QString m_rdFile;
+
+	QString m_mMainFile;
+	QString m_mLDFile;
+	QString m_mSeekerSimFile;
+
 };
\ No newline at end of file
diff --git a/src/workspace/WorkSpaceXMLParse.cpp b/src/workspace/WorkSpaceXMLParse.cpp
index 14ecad9e..72ed03e2 100644
--- a/src/workspace/WorkSpaceXMLParse.cpp
+++ b/src/workspace/WorkSpaceXMLParse.cpp
@@ -127,7 +127,36 @@ bool WorkSpaceXMLParse::ParseChart(const tinyxml2::XMLElement* element)
                 attribute = attribute->Next();
             }
         }
+        else if (0 == strcmp(name, "MMain"))
+        {
+            QVariantMap varChart;
+            const tinyxml2::XMLAttribute* attribute = xmlElement->FirstAttribute();
+            while (nullptr != attribute) {
 
+                WorkSpaceManager::Get().SetDYTMMainFile(QString::fromLocal8Bit(attribute->Value()));
+                attribute = attribute->Next();
+            }
+        }
+        else if (0 == strcmp(name, "MLD"))
+        {
+            QVariantMap varChart;
+            const tinyxml2::XMLAttribute* attribute = xmlElement->FirstAttribute();
+            while (nullptr != attribute) {
+
+                WorkSpaceManager::Get().SetDYTMLDFile(QString::fromLocal8Bit(attribute->Value()));
+                attribute = attribute->Next();
+            }
+        }
+        else if (0 == strcmp(name, "MSeekerSim"))
+        {
+            QVariantMap varChart;
+            const tinyxml2::XMLAttribute* attribute = xmlElement->FirstAttribute();
+            while (nullptr != attribute) {
+
+                WorkSpaceManager::Get().SetDYTMSeekerSimFile(QString::fromLocal8Bit(attribute->Value()));
+                attribute = attribute->Next();
+            }
+        }
         xmlElement = xmlElement->NextSiblingElement();
     }
 
diff --git a/src/workspace/WorkSpaceXMLWrite.cpp b/src/workspace/WorkSpaceXMLWrite.cpp
index cbe6c270..98a79d7b 100644
--- a/src/workspace/WorkSpaceXMLWrite.cpp
+++ b/src/workspace/WorkSpaceXMLWrite.cpp
@@ -108,5 +108,23 @@ bool WorkSpaceXMLWrite::SaveChart(tinyxml2::XMLElement* scene, tinyxml2::XMLDocu
         chart->SetAttribute("RD", WorkSpaceManager::Get().GetDYTRDFile().toLocal8Bit().constData());
     }
 
+    {
+        tinyxml2::XMLElement* chart = doc->NewElement("MMain");
+        charts->LinkEndChild(chart);
+
+        chart->SetAttribute("MMain", WorkSpaceManager::Get().GetDYTMMainFile().toLocal8Bit().constData());
+    }
+    {
+        tinyxml2::XMLElement* chart = doc->NewElement("MLD");
+        charts->LinkEndChild(chart);
+
+        chart->SetAttribute("MLD", WorkSpaceManager::Get().GetDYTMLDFile().toLocal8Bit().constData());
+    }
+    {
+        tinyxml2::XMLElement* chart = doc->NewElement("MSeekerSim");
+        charts->LinkEndChild(chart);
+
+        chart->SetAttribute("MSeekerSim", WorkSpaceManager::Get().GetDYTMSeekerSimFile().toLocal8Bit().constData());
+    }
     return true;
 }