From 2db92867b5908a012eceb8912c58e73b1421ac40 Mon Sep 17 00:00:00 2001
From: 15712809671 <136563253+15712809671@users.noreply.github.com>
Date: Sat, 28 Dec 2024 23:12:43 +0800
Subject: [PATCH] =?UTF-8?q?matlab=E6=96=87=E4=BB=B6=E7=BC=96=E8=BE=91?=
=?UTF-8?q?=E7=95=8C=E9=9D=A2=EF=BC=8C=E6=89=93=E5=BC=80dyt=E6=96=87?=
=?UTF-8?q?=E4=BB=B6=E5=88=B7=E6=96=B0=E6=95=B0=E6=8D=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Source/src/CMakeLists.txt | 3 +
Source/src/translations/Dyt_zh_CN.ts | 42 ++++++++---
Source/src/ui/Layout/AddParamSetting.cpp | 52 +++++++++----
Source/src/ui/Layout/AddParamSetting.h | 3 +
Source/src/ui/Layout/AddParamSetting.ui | 5 ++
Source/src/ui/Layout/CodeEdtUI.cpp | 86 ++++++++++++++++++++++
Source/src/ui/Layout/CodeEdtUI.h | 24 ++++++
Source/src/ui/Layout/CodeEdtUI.ui | 28 +++++++
Source/src/ui/Layout/SyntaxHighlighter.cpp | 58 +++++++++++++++
Source/src/ui/Layout/SyntaxHighlighter.h | 24 ++++++
Source/src/ui/MainFrame.cpp | 1 +
Source/src/ui/MainWindow.cpp | 39 ++++++++--
Source/src/ui/MainWindow.h | 5 +-
Source/src/ui/Matlab/MatlabObject.cpp | 25 ++-----
Source/src/ui/Matlab/MatlabObject.h | 2 +-
Source/src/viewer/QtOsgViewWidget.cpp | 2 +
Source/src/viewer/QtOsgViewWidget.h | 3 +
Source/workspace/UILayout.xml | 75 ++++++++++---------
18 files changed, 390 insertions(+), 87 deletions(-)
create mode 100644 Source/src/ui/Layout/CodeEdtUI.cpp
create mode 100644 Source/src/ui/Layout/CodeEdtUI.h
create mode 100644 Source/src/ui/Layout/CodeEdtUI.ui
create mode 100644 Source/src/ui/Layout/SyntaxHighlighter.cpp
create mode 100644 Source/src/ui/Layout/SyntaxHighlighter.h
diff --git a/Source/src/CMakeLists.txt b/Source/src/CMakeLists.txt
index 4600a883..f4bd7c0e 100644
--- a/Source/src/CMakeLists.txt
+++ b/Source/src/CMakeLists.txt
@@ -169,6 +169,9 @@ target_link_libraries(
osgSim
libMatlabDataArray
libMatlabEngine
+ libeng
+ libmx
+ libmat
# python39
)
diff --git a/Source/src/translations/Dyt_zh_CN.ts b/Source/src/translations/Dyt_zh_CN.ts
index 8796220c..3d828672 100644
--- a/Source/src/translations/Dyt_zh_CN.ts
+++ b/Source/src/translations/Dyt_zh_CN.ts
@@ -4,7 +4,7 @@
AddParamSetting
-
+
ParamSetting
参数设置
@@ -52,17 +52,22 @@
初始值
-
+
+ 数据输入示例
+
+
+
+
添加
添加
-
+
删除
删除
-
+
应用
应用
@@ -90,6 +95,21 @@
3D画布
+
+ CodeEdtUI
+
+ ParamSetting
+ 参数设置
+
+
+
+ CodeEdtUIClass
+
+
+ CodeEdtUI
+
+
+
DYTChart
@@ -388,37 +408,37 @@
主窗口
-
+
model elements
模型元素
-
+
attribte
属性
-
+
Wave Curve
波浪曲线
-
+
Speed Curve
速度曲线
-
+
3D Curve
3D曲线
-
+
Report Table
报表
-
+
Report
上报
diff --git a/Source/src/ui/Layout/AddParamSetting.cpp b/Source/src/ui/Layout/AddParamSetting.cpp
index 9b4d7850..572034d5 100644
--- a/Source/src/ui/Layout/AddParamSetting.cpp
+++ b/Source/src/ui/Layout/AddParamSetting.cpp
@@ -12,6 +12,8 @@
#include "python/PythonModule.h"
+
+
AddParamSetting::AddParamSetting(const QString& strDir, QWidget* parent)
: QWidget(parent)
{
@@ -19,6 +21,16 @@ AddParamSetting::AddParamSetting(const QString& strDir, QWidget* parent)
setWindowFlags(/*Qt::FramelessWindowHint | */Qt::Window);
+ listType << "String" << "Int" << "Double" << "Int[]" << "Double[]" << "String[]" << "a+bi";
+
+ mapDataDes["String"] = "Value";
+ mapDataDes["Int"] = "1";
+ mapDataDes["Double"] = "1.0";
+ mapDataDes["Int[]"] = u8"һά[1,2,3,4,5....]ά[1,2,3,4,5;6,7,8,9,10]";
+ mapDataDes["Double[]"] = u8"һά[1.0,2.0,3.0,...]ά[1.0,2.0,3.0;6.0,7.0,8.0]";
+ mapDataDes["String[]"] = u8"һά[s1,s2,s3,s4,s5....]ά[s1,s2,s3,s4,s5;s6,s7,s8,s9,s10]";
+ mapDataDes["a+bi"] = "1+2(i)";
+
m_strDir = strDir;
QHeaderView* horizontalHeader = ui.tableWidget->horizontalHeader();
@@ -70,7 +82,7 @@ void AddParamSetting::InitTable()
QString strMaxValue = sett.value("MaxValue").toString();
QString strMinValue = sett.value("MinValue").toString();
QString strDecimal = sett.value("Decimal").toString();
- QString strValue = sett.value("Value","0").toString();
+ QString strValue = sett.value("Value", "0").toString();
QStringList values;
values << strName << strDes << strType << strMaxValue << strMinValue << strDecimal << strValue;
@@ -103,9 +115,6 @@ void AddParamSetting::InsertRow()
//
{
- QStringList listType;
- listType << "String" << "Int" << "Float";
-
QComboBox* pCombox = new QComboBox;
pCombox->addItems(listType);
pCombox->setCurrentIndex(0);
@@ -150,13 +159,20 @@ void AddParamSetting::InsertRow()
iCol++;
}
- //
+ //
{
QString strText = u8"ֵ";
QLineEdit* pValue = new QLineEdit;
pValue->setText(strText);
pValue->setProperty("Row", iRow);
ui.tableWidget->setCellWidget(iRow, iCol, pValue);
+ iCol++;
+ }
+
+ {
+ QString strText = mapDataDes["String"];
+ ui.tableWidget->setItem(iRow, iCol, new QTableWidgetItem(strText));
+ ui.tableWidget->item(iRow, iCol)->setSelected(false);
}
}
@@ -182,9 +198,6 @@ void AddParamSetting::InsertRow(QStringList values)
//
{
- QStringList listType;
- listType << "String" << "Int" << "Float";
-
QComboBox* pCombox = new QComboBox;
pCombox->addItems(listType);
pCombox->setCurrentText(values[2]);
@@ -196,7 +209,7 @@ void AddParamSetting::InsertRow(QStringList values)
iCol++;
}
- if (values[2] == "Float")
+ if (values[2] == "Double")
{
// ֵ
{
@@ -350,6 +363,13 @@ void AddParamSetting::InsertRow(QStringList values)
ui.tableWidget->setItem(iRow, iCol, new QTableWidgetItem(strText));
}
}
+
+ {
+ iCol++;
+ QString strText = mapDataDes[values[2]];
+ ui.tableWidget->setItem(iRow, iCol, new QTableWidgetItem(strText));
+ ui.tableWidget->item(iRow, iCol)->setSelected(false);
+ }
}
void AddParamSetting::RemoveRow()
@@ -388,7 +408,7 @@ void AddParamSetting::slotButtonCommit()
sett.clear();
sett.sync();
- for (int iRow = 0; iRow < ui.tableWidget->rowCount(); iRow++)
+ for (int iRow = 0; iRow < ui.tableWidget->rowCount()-1; iRow++)
{
QString strGroup = QString::number(iRow + 1);
QString strName = ui.tableWidget->item(iRow, 0)->text();
@@ -415,7 +435,7 @@ void AddParamSetting::slotButtonCommit()
QSpinBox* pCuralue = (QSpinBox*)ui.tableWidget->cellWidget(iRow, 6);
sett.setValue("Value", pCuralue->value());
}
- else if (strType == "Float")
+ else if (strType == "Double")
{
QDoubleSpinBox* pMaxValue = (QDoubleSpinBox*)ui.tableWidget->cellWidget(iRow, 3);
sett.setValue("MaxValue", pMaxValue->value());
@@ -438,7 +458,7 @@ void AddParamSetting::slotButtonCommit()
QLineEdit* pCuralue = (QLineEdit*)ui.tableWidget->cellWidget(iRow, 6);
sett.setValue("Value", pCuralue->text());
}
-
+
sett.endGroup();
}
@@ -452,7 +472,7 @@ void AddParamSetting::slotIntMaxValueChanged(int iValue)
int iRow = pSender->property("Row").toInt();
// жСֵǷСڵǰõֵ
- QSpinBox* pMinValue = (QSpinBox*)ui.tableWidget->cellWidget(iRow,4);
+ QSpinBox* pMinValue = (QSpinBox*)ui.tableWidget->cellWidget(iRow, 4);
if (pMinValue->value() >= iValue)
{
// ûԭֵ
@@ -655,5 +675,11 @@ void AddParamSetting::slotSelectDataType(const QString& strType)
QWidget* pDecimalValue = ui.tableWidget->cellWidget(iRow, 5);
pDecimalValue->setDisabled(true);
}
+
+ {
+ QString strText = mapDataDes[strType];
+ ui.tableWidget->setItem(iRow, 7, new QTableWidgetItem(strText));
+ ui.tableWidget->item(iRow, 7)->setSelected(false);
+ }
}
}
diff --git a/Source/src/ui/Layout/AddParamSetting.h b/Source/src/ui/Layout/AddParamSetting.h
index 8f6f5d59..f94e21f0 100644
--- a/Source/src/ui/Layout/AddParamSetting.h
+++ b/Source/src/ui/Layout/AddParamSetting.h
@@ -40,4 +40,7 @@ private:
Ui::AddParamSettingClass ui;
QString m_strDir;
+
+ QStringList listType;
+ QMap mapDataDes;
};
diff --git a/Source/src/ui/Layout/AddParamSetting.ui b/Source/src/ui/Layout/AddParamSetting.ui
index 7206e230..82dc229a 100644
--- a/Source/src/ui/Layout/AddParamSetting.ui
+++ b/Source/src/ui/Layout/AddParamSetting.ui
@@ -51,6 +51,11 @@
初始值
+
+
+ 数据输入示例
+
+
-
diff --git a/Source/src/ui/Layout/CodeEdtUI.cpp b/Source/src/ui/Layout/CodeEdtUI.cpp
new file mode 100644
index 00000000..82060a03
--- /dev/null
+++ b/Source/src/ui/Layout/CodeEdtUI.cpp
@@ -0,0 +1,86 @@
+#include "CodeEdtUI.h"
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+#include "SyntaxHighlighter.h"
+
+#include "../DockTitleBar.h"
+#include "../DockWidget.h"
+
+CodeEdtUI::CodeEdtUI(QWidget *parent)
+ : QMainWindow(parent)
+{
+ ui.setupUi(this);
+
+ // ༭
+ editor = new QPlainTextEdit(this);
+
+ QFont serifFont("Times", 20, QFont::Bold);
+ editor->setFont(serifFont);
+
+ syntaxHighlighter = new SyntaxHighlighter(editor->document());
+
+ setCentralWidget(editor);
+
+ // ˵
+ QMenu* fileMenu = menuBar()->addMenu(u8"&ļ");
+ QAction* openAction = new QAction(u8"&ģ", this);
+ QAction* saveAction = new QAction(u8"&", this);
+ fileMenu->addAction(openAction);
+ fileMenu->addAction(saveAction);
+
+ connect(openAction, &QAction::triggered, this, &CodeEdtUI::openFile);
+ connect(saveAction, &QAction::triggered, this, &CodeEdtUI::saveFile);
+
+ // ״̬
+ statusBar();
+}
+
+void CodeEdtUI::AttachDock(DockWidget* dockWidget)
+{
+ if (nullptr == dockWidget) {
+ qDebug() << __FUNCTION__ << "dockwidget is nullptr";
+ return;
+ }
+
+ dockWidget->SetDockWidgetTitleBar(nullptr);
+ dockWidget->setWidget(this);
+
+ DockTitleBar* dockTitleBar = new DockTitleBar;
+
+ dockTitleBar->SetTitle(u8"matlab༭");
+
+ dockWidget->SetDockWidgetTitleBar(dockTitleBar);
+}
+
+void CodeEdtUI::openFile() {
+ QString fileName = QFileDialog::getOpenFileName(this, "Open File", "", "Matlab Files (*.m)");
+ if (!fileName.isEmpty()) {
+ QFile file(fileName);
+ if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
+ QTextStream in(&file);
+ editor->setPlainText(in.readAll());
+ file.close();
+ }
+ }
+}
+
+void CodeEdtUI::saveFile() {
+ QString fileName = QFileDialog::getSaveFileName(this, "Save File", "", "Matlab Files (*.m)");
+ if (!fileName.isEmpty()) {
+ QFile file(fileName);
+ if (file.open(QIODevice::WriteOnly | QIODevice::Text)) {
+ QTextStream out(&file);
+ out << editor->toPlainText();
+ file.close();
+ }
+ }
+}
\ No newline at end of file
diff --git a/Source/src/ui/Layout/CodeEdtUI.h b/Source/src/ui/Layout/CodeEdtUI.h
new file mode 100644
index 00000000..c6e98a64
--- /dev/null
+++ b/Source/src/ui/Layout/CodeEdtUI.h
@@ -0,0 +1,24 @@
+#pragma once
+
+#include
+#include "ui_CodeEdtUI.h"
+
+class CodeEdtUI : public QMainWindow
+{
+ Q_OBJECT
+
+public:
+ CodeEdtUI(QWidget *parent = Q_NULLPTR);
+ void AttachDock(class DockWidget* dockWidget);
+
+protected slots:
+ void openFile();
+ void saveFile();
+
+private:
+ Ui::CodeEdtUIClass ui;
+
+ class QPlainTextEdit* editor;
+
+ class SyntaxHighlighter* syntaxHighlighter{ nullptr };
+};
diff --git a/Source/src/ui/Layout/CodeEdtUI.ui b/Source/src/ui/Layout/CodeEdtUI.ui
new file mode 100644
index 00000000..e6c647ac
--- /dev/null
+++ b/Source/src/ui/Layout/CodeEdtUI.ui
@@ -0,0 +1,28 @@
+
+ CodeEdtUIClass
+
+
+ CodeEdtUIClass
+
+
+
+ 0
+ 0
+ 600
+ 400
+
+
+
+ CodeEdtUI
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Source/src/ui/Layout/SyntaxHighlighter.cpp b/Source/src/ui/Layout/SyntaxHighlighter.cpp
new file mode 100644
index 00000000..83414838
--- /dev/null
+++ b/Source/src/ui/Layout/SyntaxHighlighter.cpp
@@ -0,0 +1,58 @@
+#include "SyntaxHighlighter.h"
+
+SyntaxHighlighter::SyntaxHighlighter(QTextDocument* parent)
+ : QSyntaxHighlighter(parent)
+{
+ HighlightingRule rule;
+
+ // ؼָ
+ QStringList keywordPatterns;
+ keywordPatterns << "\\bif\\b" << "\\belse\\b" << "\\bwhile\\b" << "\\bfor\\b"
+ << "\\bclass\\b" << "\\bstruct\\b" << "\\bpublic\\b"
+ << "\\bprivate\\b" << "\\bprotected\\b" << "\\bvoid\\b"
+ << "\\bint\\b" << "\\bfloat\\b" << "\\bdouble\\b"
+ << "\\bfunction\\b" << "\\bconst\\b" << "\\bbool\\b"
+ << "\\bforeach\\b" << "\\bfor\\b" << "\\bauto\\b" << "\\bcase\\b"
+ << "\\bdefault\\b";
+
+ foreach(const QString & pattern, keywordPatterns) {
+ rule.pattern = QRegularExpression(pattern);
+ rule.format.setForeground(Qt::blue);
+ highlightingRules.append(rule);
+ }
+
+ //
+ rule.pattern = QRegularExpression("\\b[A-Z][a-zA-Z0-9_]*\\b");
+ rule.format.setForeground(Qt::darkGreen);
+ highlightingRules.append(rule);
+
+ // ַ
+ rule.pattern = QRegularExpression("\".*\"");
+ rule.format.setForeground(Qt::darkMagenta);
+ highlightingRules.append(rule);
+
+ // ע
+ rule.pattern = QRegularExpression("//[^\n]*");
+ rule.format.setForeground(Qt::gray);
+ highlightingRules.append(rule);
+
+ // ע
+ rule.pattern = QRegularExpression("/\\*.*?\\*/", QRegularExpression::DotMatchesEverythingOption);
+ rule.format.setForeground(Qt::gray);
+ highlightingRules.append(rule);
+}
+
+SyntaxHighlighter::~SyntaxHighlighter()
+{
+}
+
+void SyntaxHighlighter::highlightBlock(const QString& text)
+{
+ foreach(const HighlightingRule & rule, highlightingRules) {
+ QRegularExpressionMatchIterator matchIterator = rule.pattern.globalMatch(text);
+ while (matchIterator.hasNext()) {
+ QRegularExpressionMatch match = matchIterator.next();
+ setFormat(match.capturedStart(), match.capturedLength(), rule.format);
+ }
+ }
+}
diff --git a/Source/src/ui/Layout/SyntaxHighlighter.h b/Source/src/ui/Layout/SyntaxHighlighter.h
new file mode 100644
index 00000000..e3c7d6c7
--- /dev/null
+++ b/Source/src/ui/Layout/SyntaxHighlighter.h
@@ -0,0 +1,24 @@
+#pragma once
+
+#include
+#include
+
+class SyntaxHighlighter : public QSyntaxHighlighter
+{
+ Q_OBJECT
+
+public:
+ SyntaxHighlighter(QTextDocument* parent = nullptr);
+ ~SyntaxHighlighter();
+
+protected:
+ void highlightBlock(const QString& text) override;
+
+private:
+ struct HighlightingRule {
+ QRegularExpression pattern;
+ QTextCharFormat format;
+ };
+
+ QVector highlightingRules;
+};
diff --git a/Source/src/ui/MainFrame.cpp b/Source/src/ui/MainFrame.cpp
index fb250859..d71cd058 100644
--- a/Source/src/ui/MainFrame.cpp
+++ b/Source/src/ui/MainFrame.cpp
@@ -118,6 +118,7 @@ void MainFrame::InitUI() {
QtOsgViewWidget* viewWidget = mainWindow->GetViewWidget();
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);
diff --git a/Source/src/ui/MainWindow.cpp b/Source/src/ui/MainWindow.cpp
index 6fb8fcc1..80859e9f 100644
--- a/Source/src/ui/MainWindow.cpp
+++ b/Source/src/ui/MainWindow.cpp
@@ -21,6 +21,7 @@
#include "Layout/LayoutSettingUI.h"
#include "Layout/SignalIndicatorLampUI.h"
#include "Layout/AddParamSetting.h"
+#include "Layout/CodeEdtUI.h"
#include "Table/targetlistwgt.h"
#include "common/RecourceHelper.h"
@@ -111,6 +112,8 @@ void MainWindow::InitUI() {
WorkSpaceManager::Get().SetDYTRDFile(rdPath);
}
// const QString rdPath = RecourceHelper::Get().GetBasePath() + "/workspace/RD.txt";
+
+ const QString lampPath = RecourceHelper::Get().GetBasePath() + "/workspace/Lamp.txt";
DockWidget* fitCurveDock = new DockWidget(tr("Wave Curve"), 0);
// addDockWidget(pSettingUI->GetArea("2DCurveDialog"), fitCurveDock);
@@ -191,9 +194,6 @@ void MainWindow::InitUI() {
connect(WorkSpaceManager::Get().GetCurrent()->GetTimestep(), SIGNAL(TimeChanged(double)), targetUI_, SLOT(slotTimeChanged(double)));
}
-
- const QString lampPath = RecourceHelper::Get().GetBasePath() + "/workspace/Lamp.txt";
-
DockWidget* signalIndicatorLampDock = new DockWidget(tr("Signal Indicator Lamp"), 0);
signalIndicatorLampUI_ = new SignalIndicatorLampUI;
signalIndicatorLampUI_->AttachDock(signalIndicatorLampDock);
@@ -204,7 +204,7 @@ void MainWindow::InitUI() {
const QString iniPath = RecourceHelper::Get().GetBasePath() + "/workspace/ParamSetting.ini";
DockWidget* addParamSettingDock = new DockWidget(tr("ParamSetting"), 0);
- addParamDlg_ = new AddParamSetting(iniPath);
+ addParamDlg_ = new CodeEdtUI;
addParamDlg_->AttachDock(addParamSettingDock);
m_mapDockWidget.insert("ParamSetting", addParamSettingDock);
@@ -213,7 +213,7 @@ void MainWindow::InitUI() {
InitDockLayout();
-#if 0
+#if 1
MatlabObject* mtlb = new MatlabObject;
mtlb->RunMatlabFile("D:\\DYT\\TestGUI\\TestGUI\\LDPlatformTest.m");
#endif // 1
@@ -401,3 +401,32 @@ void MainWindow::slotShowUISetting()
{
pSettingUI->show();
}
+
+void MainWindow::slotResetWorkSpace()
+{
+ QString wavePath = WorkSpaceManager::Get().GetDYTWaveFile();
+ if (wavePath.isEmpty())
+ {
+ wavePath = RecourceHelper::Get().GetBasePath() + "/workspace/Wave.txt";
+ WorkSpaceManager::Get().SetDYTWaveFile(wavePath);
+ }
+
+ QString speedPath = WorkSpaceManager::Get().GetDYTReportFile();
+ if (speedPath.isEmpty())
+ {
+ speedPath = RecourceHelper::Get().GetBasePath() + "/workspace/Report.txt";
+ WorkSpaceManager::Get().SetDYTReportFile(speedPath);
+ }
+
+ QString rdPath = WorkSpaceManager::Get().GetDYTRDFile();
+ if (rdPath.isEmpty())
+ {
+ rdPath = RecourceHelper::Get().GetBasePath() + "/workspace/RD.txt";
+ WorkSpaceManager::Get().SetDYTRDFile(rdPath);
+ }
+
+ fitCurveDlg_->InitWaveFile(wavePath);
+ fitYLgCurveDlg_->InitReportFile(speedPath);
+ surfaceDlg_->InitRD(rdPath);
+ targetUITable_->InitFile(speedPath, 50);
+}
diff --git a/Source/src/ui/MainWindow.h b/Source/src/ui/MainWindow.h
index 9c093330..a2bf163a 100644
--- a/Source/src/ui/MainWindow.h
+++ b/Source/src/ui/MainWindow.h
@@ -37,6 +37,9 @@ public:
void slotShowUISetting();
+public slots:
+ void slotResetWorkSpace();
+
private:
void InitUI();
@@ -62,7 +65,7 @@ private:
class TargetListWgt* targetUITable_{ nullptr };
class QTabWidget* tabWidget_{ nullptr };
class SignalIndicatorLampUI* signalIndicatorLampUI_{ nullptr };
- class AddParamSetting* addParamDlg_{ nullptr };
+ class CodeEdtUI* addParamDlg_{ nullptr };
QMap m_mapDockWidget;
diff --git a/Source/src/ui/Matlab/MatlabObject.cpp b/Source/src/ui/Matlab/MatlabObject.cpp
index 98bc715b..334347c1 100644
--- a/Source/src/ui/Matlab/MatlabObject.cpp
+++ b/Source/src/ui/Matlab/MatlabObject.cpp
@@ -2,10 +2,7 @@
#include
-#include
-#include
-
-using namespace matlab::engine;
+#include "engine.h"
MatlabObject::MatlabObject(QObject *parent)
: QObject(parent)
@@ -25,20 +22,12 @@ void MatlabObject::RunMatlabFile(const QString& strFile)
QTextCodec* code = QTextCodec::codecForName("utf-8");
std::string strRun = code->fromUnicode(strMatlabRun.toUtf8().data()).data();
- std::u16string utf16_str = string2u16string(strRun);
- // MATLAB Engine
- std::unique_ptr matlabPtr = startMATLAB();
- if (matlabPtr)
- {
- // Mļ
- matlabPtr->eval(utf16_str);
+ Engine* ep;
+ if (!(ep = engOpen("\0"))) {
+ fprintf(stderr, "\nCan't start MATLAB engine\n");
+ return; // EXIT_FAILURE;
}
+
+ engClose(ep);
}
-std::u16string MatlabObject::string2u16string(std::string& str)
-{
- std::wstring_convert, char16_t> convert;
- std::u16string utf16_str = convert.from_bytes(str);
-
- return utf16_str;
-}
diff --git a/Source/src/ui/Matlab/MatlabObject.h b/Source/src/ui/Matlab/MatlabObject.h
index a9973e1b..c0c960d8 100644
--- a/Source/src/ui/Matlab/MatlabObject.h
+++ b/Source/src/ui/Matlab/MatlabObject.h
@@ -14,5 +14,5 @@ public:
protected:
- std::u16string string2u16string(std::string& str);
+ //std::u16string string2u16string(std::string& str);
};
diff --git a/Source/src/viewer/QtOsgViewWidget.cpp b/Source/src/viewer/QtOsgViewWidget.cpp
index f6bc22c2..bfa27549 100644
--- a/Source/src/viewer/QtOsgViewWidget.cpp
+++ b/Source/src/viewer/QtOsgViewWidget.cpp
@@ -142,6 +142,8 @@ void QtOsgViewWidget::OnLoadDyt(const QString& path) {
}
workspace_ = workSpace;
+
+ emit signalResetWorkSpace();
}
void QtOsgViewWidget::resizeEvent(QResizeEvent* event) {
diff --git a/Source/src/viewer/QtOsgViewWidget.h b/Source/src/viewer/QtOsgViewWidget.h
index 452ddc69..ce0b2293 100644
--- a/Source/src/viewer/QtOsgViewWidget.h
+++ b/Source/src/viewer/QtOsgViewWidget.h
@@ -29,6 +29,9 @@ public:
void OnLoadDyt(const QString& path);
// void setKeyboardModifiers(QInputEvent* event);
+signals:
+ void signalResetWorkSpace();
+
protected:
//void InitEventHandle(Core::ICameraManipulator* pCameraMainp, Core::IView* pView);
diff --git a/Source/workspace/UILayout.xml b/Source/workspace/UILayout.xml
index 56fe68b8..9d2b9ffd 100644
--- a/Source/workspace/UILayout.xml
+++ b/Source/workspace/UILayout.xml
@@ -1,41 +1,40 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+