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) {