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 #include +#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 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 @@ - 2D Curver - - - - - - - - 60 - 30 - - - - 2D(lg) Curver - - - - - - - - 60 - 30 - - - - 3D Curver + Run Simu 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 +#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 @@ + + SimuRunMenuClass + + + SimuRunMenuClass + + + + 0 + 0 + 600 + 400 + + + + SimuRunMenu + $centralwidget$ + + + + + 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; }