diff --git a/src/translations/Dyt_zh_CN.ts b/src/translations/Dyt_zh_CN.ts
index 021ac0f5..c6837218 100644
--- a/src/translations/Dyt_zh_CN.ts
+++ b/src/translations/Dyt_zh_CN.ts
@@ -2763,32 +2763,25 @@
SimuRunMenu
-
+
no workspace
-
+
no commands
-
+
Commands
-
+
unnamed
-
-
-
-
- MatlabParam
-
-
SimuRunMenuClass
diff --git a/src/ui/DockTitleBar.cpp b/src/ui/DockTitleBar.cpp
index 3f63dc78..36dd9ec7 100644
--- a/src/ui/DockTitleBar.cpp
+++ b/src/ui/DockTitleBar.cpp
@@ -15,17 +15,13 @@ DockTitleBar::DockTitleBar(QWidget* parent)
ui->setupUi(this);
connect(ui->sys_close, &QPushButton::clicked, this, &DockTitleBar::signalClose);
connect(ui->sys_float, &QPushButton::clicked, this, &DockTitleBar::signalToggleFloating);
+ connect(ui->sys_max, &QPushButton::clicked, this, &DockTitleBar::signalMax);
}
DockTitleBar::~DockTitleBar() {
delete ui;
}
-//QSize DockTitleBar::minimumSizeHint() const {
-// QSize s = size();
-// return s;
-//}
-
void DockTitleBar::SetTitle(const QString& title) {
ui->sys_title->setText(title);
}
@@ -38,3 +34,17 @@ void DockTitleBar::paintEvent(QPaintEvent* event) {
style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
}
+void DockTitleBar::SetFloatVisible(bool bVisible)
+{
+ ui->sys_float->setVisible(bVisible);
+}
+
+void DockTitleBar::SetMaxVisible(bool bVisible)
+{
+ ui->sys_max->setVisible(bVisible);
+}
+
+void DockTitleBar::SetCloseVisible(bool bVisible)
+{
+ ui->sys_close->setVisible(bVisible);
+}
\ No newline at end of file
diff --git a/src/ui/DockTitleBar.h b/src/ui/DockTitleBar.h
index 1441eae0..f766a159 100644
--- a/src/ui/DockTitleBar.h
+++ b/src/ui/DockTitleBar.h
@@ -16,6 +16,9 @@ public:
//QSize minimumSizeHint() const override;
void SetTitle(const QString& title) override;
+ void SetFloatVisible(bool bVisible);
+ void SetMaxVisible(bool bVisible);
+ void SetCloseVisible(bool bVisible);
protected:
void paintEvent(QPaintEvent* event) override;
diff --git a/src/ui/DockTitleBar.ui b/src/ui/DockTitleBar.ui
index 10d2d74f..20b2561e 100644
--- a/src/ui/DockTitleBar.ui
+++ b/src/ui/DockTitleBar.ui
@@ -6,7 +6,7 @@
0
0
- 213
+ 367
40
@@ -14,20 +14,17 @@
DockTitleBar
-
- 0
-
- 0
+ 20
- 0
+ 5
- 0
+ 5
- 0
+ 5
-
@@ -62,6 +59,19 @@
+ -
+
+
+
+ 32
+ 32
+
+
+
+
+
+
+
-
diff --git a/src/ui/DockWidget.cpp b/src/ui/DockWidget.cpp
index cbe29d2c..29548c19 100644
--- a/src/ui/DockWidget.cpp
+++ b/src/ui/DockWidget.cpp
@@ -35,12 +35,14 @@ DockWidget::DockWidget(const QString& title, QWidget* parent)
windowManagerMenu->AddDockWidget(this);
}
+ m_bMax = false;
//setStyleSheet(QString("border: 1px solid #A2C2DB;"));
}
DockWidget::DockWidget(QWidget* parent)
: QDockWidget(parent) {
setFeatures(DockWidgetClosable | DockWidgetMovable | DockWidgetFloatable);
+ m_bMax = false;
}
@@ -58,6 +60,7 @@ void DockWidget::SetDockWidgetTitleBar(DockWidgetTitleBar* titleBar) {
if (nullptr != titleBar_) {
disconnect(titleBar_, &DockWidgetTitleBar::signalClose, this, &DockWidget::close);
disconnect(titleBar_, &DockWidgetTitleBar::signalToggleFloating, this, &DockWidget::OnToggleFloat);
+ disconnect(titleBar_, &DockWidgetTitleBar::signalMax, this, &DockWidget::OnMax);
}
titleBar_ = titleBar;
if (nullptr == titleBar_) {
@@ -68,6 +71,7 @@ void DockWidget::SetDockWidgetTitleBar(DockWidgetTitleBar* titleBar) {
titleBar_->SetTitle(windowTitle());
connect(titleBar_, &DockWidgetTitleBar::signalClose, this, &DockWidget::OnClose);
connect(titleBar_, &DockWidgetTitleBar::signalToggleFloating, this, &DockWidget::OnToggleFloat);
+ connect(titleBar_, &DockWidgetTitleBar::signalMax, this, &DockWidget::OnMax);
QDockWidget::setTitleBarWidget(titleBar_);
}
@@ -95,6 +99,23 @@ void DockWidget::OnToggleFloat() {
setFloating(!isFloating());
}
+void DockWidget::OnMax() {
+ if (!isFloating())
+ {
+ setFloating(true);
+ }
+ if (m_bMax)
+ {
+ showNormal();
+ m_bMax = false;
+ }
+ else
+ {
+ showMaximized();
+ m_bMax = true;
+ }
+}
+
void DockWidgetTitleBar::mouseDoubleClickEvent(QMouseEvent* event) {
QWidget::mouseDoubleClickEvent(event);
emit signalToggleFloating();
diff --git a/src/ui/DockWidget.h b/src/ui/DockWidget.h
index 8e878c59..f7171b6d 100644
--- a/src/ui/DockWidget.h
+++ b/src/ui/DockWidget.h
@@ -24,6 +24,7 @@ protected:
Q_SIGNALS:
void signalClose();
void signalToggleFloating();
+ void signalMax();
};
class DockWidget : public QDockWidget {
@@ -49,7 +50,9 @@ protected:
private:
void OnClose();
void OnToggleFloat();
+ void OnMax();
private:
DockWidgetTitleBar* titleBar_{ nullptr };
+ bool m_bMax;
};
\ No newline at end of file
diff --git a/src/ui/Layout/AddParamSetting.ui b/src/ui/Layout/AddParamSetting.ui
index 70819476..5cffe7c6 100644
--- a/src/ui/Layout/AddParamSetting.ui
+++ b/src/ui/Layout/AddParamSetting.ui
@@ -13,6 +13,11 @@
AddParamSetting
+
+ QWidget#AddParamSettingClass {
+ border: 2px solid #7FB3D5;
+}
+
-
diff --git a/src/ui/MainFrame.cpp b/src/ui/MainFrame.cpp
index d5679ab9..f254b246 100644
--- a/src/ui/MainFrame.cpp
+++ b/src/ui/MainFrame.cpp
@@ -122,6 +122,8 @@ void MainFrame::InitUI() {
MainWindow* mainWindow = new MainWindow(this);
layout->addWidget(mainWindow);
+ simuRunMenu->SetMainWindow(mainWindow);
+
OsgWidget* viewWidget = mainWindow->GetViewWidget();
connect(fileMenu, &FileManagerMenu::LoadDyt, viewWidget, &OsgWidget::OnLoadDyt);
connect(viewWidget, &OsgWidget::signalResetWorkSpace, mainWindow, &MainWindow::slotResetWorkSpace);
diff --git a/src/ui/MainWindow.cpp b/src/ui/MainWindow.cpp
index 3f9e0526..8dd31391 100644
--- a/src/ui/MainWindow.cpp
+++ b/src/ui/MainWindow.cpp
@@ -61,10 +61,10 @@ void MainWindow::InitUI() {
DockWidget* model = new DockWidget(tr("model elements"), 0);
model->SetDockWidgetTitleBar(new DockTitleBar(model));
model->setObjectName("Dock.ModelBrowser");
- // addDockWidget(pSettingUI->GetArea("ModelBrowser"), model);
modelBrowser_ = new ModelBrowser(0);
modelBrowser_->AttachDock(model);
m_mapDockWidget.insert("ModelBrowser", model);
+ addDockWidget(Qt::LeftDockWidgetArea, model);
// 创建预制模型面板
DockWidget* presetModel = new DockWidget(tr("preset models"), 0);
@@ -72,6 +72,7 @@ void MainWindow::InitUI() {
presetModel->setObjectName("Dock.PresetModelPanel");
presetModelPanel_ = new PresetModelPanel(0);
presetModelPanel_->AttachDock(presetModel);
+ addDockWidget(Qt::LeftDockWidgetArea, presetModel);
m_mapDockWidget.insert("PresetModelPanel", presetModel);
DockWidget* attribte = new DockWidget(tr("attribte"), 0);
@@ -96,36 +97,34 @@ void MainWindow::InitUI() {
addDockWidget(Qt::LeftDockWidgetArea, viewDock);
m_mapDockWidget.insert("MainView", viewDock);
- addDockWidget(Qt::LeftDockWidgetArea, model);
- addDockWidget(Qt::LeftDockWidgetArea, presetModel);
splitDockWidget(model, viewDock, Qt::Horizontal);
-
- // 将预制模型面板与模型浏览器标签化
- tabifyDockWidget(model, presetModel);
- QString wavePath ="", speedPath = "", rdPath = "", matlabParam="";
- if (WorkSpaceManager::Get().GetCurrent())
- {
- if (!WorkSpaceManager::Get().GetCurrent()->GetWavePath().isEmpty())
- {
- wavePath = RecourceHelper::Get().GetBasePath() + "/" + WorkSpaceManager::Get().GetCurrent()->GetWavePath();
- }
+ // 将预制模型面板与模型浏览器标签化
+ tabifyDockWidget(model, presetModel);
- if (!WorkSpaceManager::Get().GetCurrent()->GetReportPath().isEmpty())
- {
- speedPath = RecourceHelper::Get().GetBasePath() + "/" + WorkSpaceManager::Get().GetCurrent()->GetReportPath();
- }
+ //QString wavePath ="", speedPath = "", rdPath = "", matlabParam="";
+ //if (WorkSpaceManager::Get().GetCurrent())
+ //{
+ // if (!WorkSpaceManager::Get().GetCurrent()->GetWavePath().isEmpty())
+ // {
+ // wavePath = RecourceHelper::Get().GetBasePath() + "/" + WorkSpaceManager::Get().GetCurrent()->GetWavePath();
+ // }
- if (!WorkSpaceManager::Get().GetCurrent()->GetRDPath().isEmpty())
- {
- rdPath = RecourceHelper::Get().GetBasePath() + "/" + WorkSpaceManager::Get().GetCurrent()->GetRDPath();
- }
+ // if (!WorkSpaceManager::Get().GetCurrent()->GetReportPath().isEmpty())
+ // {
+ // speedPath = RecourceHelper::Get().GetBasePath() + "/" + WorkSpaceManager::Get().GetCurrent()->GetReportPath();
+ // }
- if (!WorkSpaceManager::Get().GetCurrent()->GetMatlabParam().isEmpty())
- {
- matlabParam = RecourceHelper::Get().GetBasePath() + "/" + WorkSpaceManager::Get().GetCurrent()->GetMatlabParam();
- }
- }
+ // if (!WorkSpaceManager::Get().GetCurrent()->GetRDPath().isEmpty())
+ // {
+ // rdPath = RecourceHelper::Get().GetBasePath() + "/" + WorkSpaceManager::Get().GetCurrent()->GetRDPath();
+ // }
+
+ // if (!WorkSpaceManager::Get().GetCurrent()->GetMatlabParam().isEmpty())
+ // {
+ // matlabParam = RecourceHelper::Get().GetBasePath() + "/" + WorkSpaceManager::Get().GetCurrent()->GetMatlabParam();
+ // }
+ //}
//DockWidget* fitCurveDock = new DockWidget(tr("Wave Curve"), 0);
//fitCurveDock->SetDockWidgetTitleBar(new DockTitleBar(fitCurveDock));
diff --git a/src/ui/Menu/PlayManagerMenu.ui b/src/ui/Menu/PlayManagerMenu.ui
index ec605623..00d646cd 100644
--- a/src/ui/Menu/PlayManagerMenu.ui
+++ b/src/ui/Menu/PlayManagerMenu.ui
@@ -6,7 +6,7 @@
0
0
- 847
+ 1123
58
@@ -16,6 +16,12 @@
-
+
+
+ 0
+ 35
+
+
play
@@ -23,6 +29,12 @@
-
+
+
+ 0
+ 35
+
+
stop
@@ -101,6 +113,12 @@
-
+
+
+ 0
+ 35
+
+
up
@@ -108,6 +126,12 @@
-
+
+
+ 0
+ 35
+
+
down
diff --git a/src/ui/Menu/SimuRunMenu.cpp b/src/ui/Menu/SimuRunMenu.cpp
index f12f4f25..ca859267 100644
--- a/src/ui/Menu/SimuRunMenu.cpp
+++ b/src/ui/Menu/SimuRunMenu.cpp
@@ -1,5 +1,8 @@
#include "ui/Menu/SimuRunMenu.h"
#include "ui/Layout/AddParamSetting.h"
+#include "ui/DockWidget.h"
+#include "ui/DockTitleBar.h"
+#include "ui/MainWindow.h"
#include
#include
@@ -13,6 +16,7 @@ SimuRunMenu::SimuRunMenu(QWidget *parent)
: QWidget(parent)
{
m_pParam = NULL;
+ m_mainWindow = NULL;
QHBoxLayout* layout = new QHBoxLayout(this);
layout->setContentsMargins(9, 0, 0, 0);
@@ -122,9 +126,9 @@ void SimuRunMenu::CreateMatlabParam()
QToolButton *pBtn = new QToolButton();
pBtn->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
- pBtn->setText(tr("MatlabParam"));
+ pBtn->setText(QString::fromLocal8Bit(""));
pBtn->setIcon(QIcon(":/res/default/menu_setting_restore.png"));
- pBtn->setToolTip(tr("MatlabParam"));
+ pBtn->setToolTip(QString::fromLocal8Bit("Matlab"));
connect(pBtn, SIGNAL(clicked()), this, SLOT(slotHandleMatlabParam()));
@@ -180,11 +184,28 @@ void SimuRunMenu::slotHandleMatlabParam()
{
if (!m_pParam)
{
+ m_pParam = new DockWidget(m_mainWindow);
+ m_pParam->setAllowedAreas(Qt::NoDockWidgetArea);
+
+ DockTitleBar* titleBar = new DockTitleBar(m_pParam);
+ titleBar->SetFloatVisible(false);
+ titleBar->SetMaxVisible(false);
+ m_pParam->SetDockWidgetTitleBar(titleBar);
+ m_pParam->setWindowTitle(QString::fromLocal8Bit(""));
+
QString strDir = WorkSpaceManager::Get().GetCurrent()->GetDir();
- m_pParam = new AddParamSetting(strDir);
+ AddParamSetting *pParam = new AddParamSetting(strDir);
+ m_pParam->setWidget(pParam);
+
+ m_pParam->resize(1000, 600);
}
- m_pParam->setWindowTitle(tr("MatlabParam"));
+ m_pParam->setFloating(true);
m_pParam->show();
}
+}
+
+void SimuRunMenu::SetMainWindow(MainWindow* mainWindow)
+{
+ m_mainWindow = mainWindow;
}
\ No newline at end of file
diff --git a/src/ui/Menu/SimuRunMenu.h b/src/ui/Menu/SimuRunMenu.h
index bd8b0f74..0d36db4a 100644
--- a/src/ui/Menu/SimuRunMenu.h
+++ b/src/ui/Menu/SimuRunMenu.h
@@ -5,7 +5,8 @@
#include "workspace/CommandManager.h"
#include "workspace/CommandExecutor.h"
-class AddParamSetting;
+class DockWidget;
+class MainWindow;
class SimuRunMenu : public QWidget {
Q_OBJECT
@@ -14,6 +15,8 @@ public:
SimuRunMenu(QWidget *parent = nullptr);
~SimuRunMenu();
+ void SetMainWindow(MainWindow* mainWindow);
+
private slots:
void OnWorkspaceChanged(class WorkSpace* ws);
@@ -30,5 +33,6 @@ private:
void ClearAllBtn();
private:
- AddParamSetting *m_pParam;
+ DockWidget *m_pParam;
+ MainWindow* m_mainWindow;
};
diff --git a/src/ui/Panel/CurvePanel.cpp b/src/ui/Panel/CurvePanel.cpp
index 659b5505..cffb39f1 100644
--- a/src/ui/Panel/CurvePanel.cpp
+++ b/src/ui/Panel/CurvePanel.cpp
@@ -317,9 +317,10 @@ void CurvePanel::initQChartView() {
curveChart = new QChart();
curveChart->setTheme(QChart::ChartThemeBlueIcy);
+ curveChart->layout()->setContentsMargins(0, 0, 0, 0);
curveChart->setBackgroundRoundness(0);
curveChartView->setChart(curveChart);
-
+
m_pAxisX = new QValueAxis;
m_pAxisX->setRange(0, 10);
m_pAxisX->setLabelsAngle(-90);
@@ -331,9 +332,10 @@ void CurvePanel::initQChartView() {
curveChartView->setRenderHint(QPainter::Antialiasing);
- QHBoxLayout* pLayout = new QHBoxLayout(this);
- pLayout->setContentsMargins(0, 0, 0, 0);
- pLayout->addWidget(curveChartView);
+ QHBoxLayout* mainLayout = new QHBoxLayout(this);
+ mainLayout->setContentsMargins(0, 0, 0, 0);
+ mainLayout->addWidget(curveChartView);
+ setLayout(mainLayout);
}
void CurvePanel::OnDataPanelUpdated(FileEntryCurve* fileEntry) {
diff --git a/src/ui/Panel/LightPanel.cpp b/src/ui/Panel/LightPanel.cpp
index a27879fe..2a23104d 100644
--- a/src/ui/Panel/LightPanel.cpp
+++ b/src/ui/Panel/LightPanel.cpp
@@ -140,6 +140,8 @@ void LightPanel::updateParseFile(const QString & strFile, int nT, FileEntryLight
m_mapLamp.insert(strKey, pLampLab);
}
}
+ pMainLyt->setContentsMargins(5, 0, 5, 0);
+ setLayout(pMainLyt);
while (!file.atEnd())
{
diff --git a/src/ui/Panel/SurfacePanel.cpp b/src/ui/Panel/SurfacePanel.cpp
index 0f9bc92a..4076060f 100644
--- a/src/ui/Panel/SurfacePanel.cpp
+++ b/src/ui/Panel/SurfacePanel.cpp
@@ -83,6 +83,7 @@ void SurfacePanel::InitUI()
containerHandle->setAttribute(Qt::WA_OpaquePaintEvent, true);
containerHandle->setAttribute(Qt::WA_NoSystemBackground, false);
containerHandle->setUpdatesEnabled(false);
+ containerHandle->setMinimumHeight(100);
m_pSeries->setBaseColor(Qt::green);
m_pSeries->setColorStyle(Q3DTheme::ColorStyleUniform);
diff --git a/src/ui/PresetModelPanel.cpp b/src/ui/PresetModelPanel.cpp
index da4ffb61..04f415cc 100644
--- a/src/ui/PresetModelPanel.cpp
+++ b/src/ui/PresetModelPanel.cpp
@@ -48,7 +48,7 @@ void PresetModelPanel::AttachDock(DockWidget* dockWidget)
void PresetModelPanel::InitUI()
{
mainLayout_ = new QVBoxLayout(this);
- mainLayout_->setContentsMargins(5, 5, 5, 5);
+ mainLayout_->setContentsMargins(0, 0, 0, 0);
mainLayout_->setSpacing(5);
toolBox_ = new QToolBox(this);
@@ -70,10 +70,10 @@ QWidget* PresetModelPanel::CreateShipPage()
QVBoxLayout* layout = new QVBoxLayout(page);
QStringList shipModels = {
- "Destroyer",
- "Aircraft Carrier",
- "Frigate",
- "Submarine"
+ tr("Destroyer"),
+ tr("Aircraft Carrier"),
+ tr("Frigate"),
+ tr("Submarine")
};
shipList_ = CreateModelList(page, "Ship", shipModels);
@@ -88,10 +88,10 @@ QWidget* PresetModelPanel::CreateSatellitePage()
QVBoxLayout* layout = new QVBoxLayout(page);
QStringList satelliteModels = {
- "Geostationary Satellite",
- "Communication Satellite",
- "Weather Satellite",
- "Navigation Satellite"
+ tr("Geostationary Satellite"),
+ tr("Communication Satellite"),
+ tr("Weather Satellite"),
+ tr("Navigation Satellite")
};
satelliteList_ = CreateModelList(page, "Satellite", satelliteModels);
@@ -106,10 +106,10 @@ QWidget* PresetModelPanel::CreateMissilePage()
QVBoxLayout* layout = new QVBoxLayout(page);
QStringList missileModels = {
- "Hypersonic Missile",
- "Cruise Missile",
- "Ballistic Missile",
- "Anti-Ship Missile"
+ tr("Hypersonic Missile"),
+ tr("Cruise Missile"),
+ tr("Ballistic Missile"),
+ tr("Anti-Ship Missile")
};
missileList_ = CreateModelList(page, "Missile", missileModels);
@@ -124,10 +124,10 @@ QWidget* PresetModelPanel::CreateJammerPage()
QVBoxLayout* layout = new QVBoxLayout(page);
QStringList jammerModels = {
- "Passive Jammer",
- "Active Jammer",
- "Electronic Warfare Pod",
- "Decoy System"
+ tr("Passive Jammer"),
+ tr("Active Jammer"),
+ tr("Electronic Warfare Pod"),
+ tr("Decoy System")
};
jammerList_ = CreateModelList(page, "Jammer", jammerModels);
diff --git a/src/workspace/WorkSpaceXMLWrite.cpp b/src/workspace/WorkSpaceXMLWrite.cpp
index e75d5a15..b6121793 100644
--- a/src/workspace/WorkSpaceXMLWrite.cpp
+++ b/src/workspace/WorkSpaceXMLWrite.cpp
@@ -77,12 +77,18 @@ bool WorkSpaceXMLWrite::SaveTimeStep(tinyxml2::XMLElement* scene) {
}
bool WorkSpaceXMLWrite::SaveLamp(tinyxml2::XMLElement* scene) {
- tinyxml2::XMLElement* lamp = scene->InsertNewChildElement("lamp");
- const QString lampPath = workSpace_->GetLampStatus()->GetPath();
- if (!lampPath.isEmpty()) {
- lamp->SetAttribute("path", lampPath.toStdString().c_str());
- }
- return true;
+ LampStatus *pLampStatus = workSpace_->GetLampStatus();
+ if (pLampStatus)
+ {
+ const QString lampPath = pLampStatus->GetPath();
+ if (!lampPath.isEmpty()) {
+ tinyxml2::XMLElement* lamp = scene->InsertNewChildElement("lamp");
+ lamp->SetAttribute("path", lampPath.toStdString().c_str());
+ return true;
+ }
+ }
+
+ return false;
}
bool WorkSpaceXMLWrite::SaveCommond(tinyxml2::XMLElement* scene) {