diff --git a/src/translations/Dyt_zh_CN.ts b/src/translations/Dyt_zh_CN.ts index b0ef5fe8..7b505aea 100644 --- a/src/translations/Dyt_zh_CN.ts +++ b/src/translations/Dyt_zh_CN.ts @@ -422,12 +422,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../ui/chartPlot/FitCurveDialog.cpp" line="743"/> + <location filename="../ui/chartPlot/FitCurveDialog.cpp" line="767"/> <source>2D Curve</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../ui/chartPlot/FitCurveDialog.cpp" line="747"/> + <location filename="../ui/chartPlot/FitCurveDialog.cpp" line="771"/> <source>2D(y(lg)) Curve</source> <translation type="unfinished"></translation> </message> @@ -516,146 +516,136 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../ui/MainWindow.cpp" line="113"/> + <location filename="../ui/MainWindow.cpp" line="110"/> <source>Wave Curve</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../ui/MainWindow.cpp" line="122"/> + <location filename="../ui/MainWindow.cpp" line="118"/> <source>Speed Curve</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../ui/MainWindow.cpp" line="132"/> + <location filename="../ui/MainWindow.cpp" line="127"/> <source>3D Curve</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../ui/MainWindow.cpp" line="145"/> - <location filename="../ui/MainWindow.cpp" line="171"/> + <location filename="../ui/MainWindow.cpp" line="139"/> + <location filename="../ui/MainWindow.cpp" line="164"/> <source>Target number</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../ui/MainWindow.cpp" line="145"/> - <location filename="../ui/MainWindow.cpp" line="171"/> + <location filename="../ui/MainWindow.cpp" line="139"/> + <location filename="../ui/MainWindow.cpp" line="164"/> <source>Signal-to-noise ratio</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../ui/MainWindow.cpp" line="146"/> - <location filename="../ui/MainWindow.cpp" line="172"/> + <location filename="../ui/MainWindow.cpp" line="140"/> + <location filename="../ui/MainWindow.cpp" line="165"/> <source>Azimuth line of sight</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../ui/MainWindow.cpp" line="146"/> - <location filename="../ui/MainWindow.cpp" line="172"/> + <location filename="../ui/MainWindow.cpp" line="140"/> + <location filename="../ui/MainWindow.cpp" line="165"/> <source>Pitch gaze angle</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../ui/MainWindow.cpp" line="147"/> - <location filename="../ui/MainWindow.cpp" line="173"/> + <location filename="../ui/MainWindow.cpp" line="141"/> + <location filename="../ui/MainWindow.cpp" line="166"/> <source>azimuth</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../ui/MainWindow.cpp" line="147"/> - <location filename="../ui/MainWindow.cpp" line="173"/> + <location filename="../ui/MainWindow.cpp" line="141"/> + <location filename="../ui/MainWindow.cpp" line="166"/> <source>Pitch angle</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../ui/MainWindow.cpp" line="148"/> - <location filename="../ui/MainWindow.cpp" line="174"/> + <location filename="../ui/MainWindow.cpp" line="142"/> + <location filename="../ui/MainWindow.cpp" line="167"/> <source>attribute</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../ui/MainWindow.cpp" line="148"/> - <location filename="../ui/MainWindow.cpp" line="174"/> + <location filename="../ui/MainWindow.cpp" line="142"/> + <location filename="../ui/MainWindow.cpp" line="167"/> <source>Doppler</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../ui/MainWindow.cpp" line="149"/> - <location filename="../ui/MainWindow.cpp" line="175"/> + <location filename="../ui/MainWindow.cpp" line="143"/> + <location filename="../ui/MainWindow.cpp" line="168"/> <source>course</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../ui/MainWindow.cpp" line="149"/> - <location filename="../ui/MainWindow.cpp" line="175"/> + <location filename="../ui/MainWindow.cpp" line="143"/> + <location filename="../ui/MainWindow.cpp" line="168"/> <source>Speed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../ui/MainWindow.cpp" line="150"/> - <location filename="../ui/MainWindow.cpp" line="176"/> + <location filename="../ui/MainWindow.cpp" line="144"/> + <location filename="../ui/MainWindow.cpp" line="169"/> <source>longitude</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../ui/MainWindow.cpp" line="150"/> - <location filename="../ui/MainWindow.cpp" line="176"/> + <location filename="../ui/MainWindow.cpp" line="144"/> + <location filename="../ui/MainWindow.cpp" line="169"/> <source>latitude</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../ui/MainWindow.cpp" line="151"/> - <location filename="../ui/MainWindow.cpp" line="177"/> + <location filename="../ui/MainWindow.cpp" line="145"/> + <location filename="../ui/MainWindow.cpp" line="170"/> <source>distance</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../ui/MainWindow.cpp" line="151"/> - <location filename="../ui/MainWindow.cpp" line="177"/> + <location filename="../ui/MainWindow.cpp" line="145"/> + <location filename="../ui/MainWindow.cpp" line="170"/> <source>velocity</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../ui/MainWindow.cpp" line="152"/> - <location filename="../ui/MainWindow.cpp" line="178"/> + <location filename="../ui/MainWindow.cpp" line="146"/> + <location filename="../ui/MainWindow.cpp" line="171"/> <source>Radial dimensions</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../ui/MainWindow.cpp" line="152"/> - <location filename="../ui/MainWindow.cpp" line="178"/> + <location filename="../ui/MainWindow.cpp" line="146"/> + <location filename="../ui/MainWindow.cpp" line="171"/> <source>Target RCS</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../ui/MainWindow.cpp" line="158"/> + <location filename="../ui/MainWindow.cpp" line="152"/> <source>Report Table</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../ui/MainWindow.cpp" line="184"/> + <location filename="../ui/MainWindow.cpp" line="177"/> <source>Report</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../ui/MainWindow.cpp" line="195"/> + <location filename="../ui/MainWindow.cpp" line="186"/> <source>Signal Indicator Lamp</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../ui/MainWindow.cpp" line="204"/> + <location filename="../ui/MainWindow.cpp" line="194"/> <source>ParamSetting</source> <translation type="unfinished">参数设置</translation> </message> - <message> - <location filename="../ui/MainWindow.cpp" line="209"/> - <source>name: 5year 0412</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../ui/MainWindow.cpp" line="210"/> - <source>start: no start</source> - <translation type="unfinished"></translation> - </message> </context> <context> <name>ModelBrowser</name> @@ -759,6 +749,8 @@ <message> <location filename="../ui/Menu/PlayManagerMenu.ui" line="20"/> <location filename="../ui/Menu/PlayManagerMenu.cpp" line="55"/> + <location filename="../ui/Menu/PlayManagerMenu.cpp" line="150"/> + <location filename="../ui/Menu/PlayManagerMenu.cpp" line="157"/> <source>play</source> <translation type="unfinished"></translation> </message> @@ -819,6 +811,7 @@ <message> <location filename="../ui/Menu/PlayManagerMenu.cpp" line="48"/> <location filename="../ui/Menu/PlayManagerMenu.cpp" line="52"/> + <location filename="../ui/Menu/PlayManagerMenu.cpp" line="147"/> <source>pause</source> <translation type="unfinished"></translation> </message> @@ -1278,12 +1271,12 @@ <context> <name>QtOsgViewWidget</name> <message> - <location filename="../viewer/QtOsgViewWidget.cpp" line="140"/> + <location filename="../viewer/QtOsgViewWidget.cpp" line="105"/> <source>notify</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../viewer/QtOsgViewWidget.cpp" line="140"/> + <location filename="../viewer/QtOsgViewWidget.cpp" line="105"/> <source>open dyt file failed</source> <translation type="unfinished"></translation> </message> @@ -1570,12 +1563,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../ui/Layout/SignalIndicatorLampUI.cpp" line="38"/> + <location filename="../ui/Layout/SignalIndicatorLampUI.cpp" line="43"/> <source>Signal Indicator Lamp</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../ui/Layout/SignalIndicatorLampUI.cpp" line="186"/> + <location filename="../ui/Layout/SignalIndicatorLampUI.cpp" line="191"/> <source>light</source> <translation type="unfinished"></translation> </message> @@ -1588,7 +1581,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../ui/chartPlot/SurfaceDialog.cpp" line="38"/> + <location filename="../ui/chartPlot/SurfaceDialog.cpp" line="44"/> <source>3D Curve</source> <translation type="unfinished"></translation> </message> @@ -1659,7 +1652,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../ui/Table/targetlistwgt.cpp" line="59"/> + <location filename="../ui/Table/targetlistwgt.cpp" line="65"/> <source>Data Table</source> <translation type="unfinished"></translation> </message> diff --git a/src/ui/Layout/SignalIndicatorLampUI.cpp b/src/ui/Layout/SignalIndicatorLampUI.cpp index ed14530b..9e8514f6 100644 --- a/src/ui/Layout/SignalIndicatorLampUI.cpp +++ b/src/ui/Layout/SignalIndicatorLampUI.cpp @@ -11,11 +11,16 @@ #include <QMessageBox> #include <qdebug.h> +#include "common/SpdLogger.h" +#include "workspace/WorkSpace.h" +#include "workspace/Timestep.h" +#include "workspace/WorkSpaceManager.h" SignalIndicatorLampUI::SignalIndicatorLampUI(QWidget* parent) : QWidget(parent) { ui.setupUi(this); + connect(&WorkSpaceManager::Get(), &WorkSpaceManager::WorkSpaceChanged, this, &SignalIndicatorLampUI::OnWorkSpaceChanged); } SignalIndicatorLampUI::~SignalIndicatorLampUI() @@ -228,6 +233,23 @@ void SignalIndicatorLampUI::onStatusChanged(int status) { SetLampState(vecStatus); } +void SignalIndicatorLampUI::OnWorkSpaceChanged(WorkSpace* worksapce) { + if (worksapce == nullptr) { + LOG_ERROR("worksapce is nullptr"); + return; + } + + connect(worksapce, &WorkSpace::TimestepChanged, this, &SignalIndicatorLampUI::OnTimestepChanged); +} + +void SignalIndicatorLampUI::OnTimestepChanged(Timestep* timestep) { + if (timestep == nullptr) { + LOG_ERROR("timestep is nullptr"); + return; + } + connect(timestep, SIGNAL(TimeChanged(double)), this, SLOT(slotUpdateTime(double))); +} + void SignalIndicatorLampUI::paintEvent(QPaintEvent* event) { QPainter painter(this); diff --git a/src/ui/Layout/SignalIndicatorLampUI.h b/src/ui/Layout/SignalIndicatorLampUI.h index 65d5fad8..21daad0c 100644 --- a/src/ui/Layout/SignalIndicatorLampUI.h +++ b/src/ui/Layout/SignalIndicatorLampUI.h @@ -36,6 +36,8 @@ public: protected slots: void slotUpdateTime(double dTime); void onStatusChanged(int status); + void OnWorkSpaceChanged(class WorkSpace*); + void OnTimestepChanged(class Timestep*); protected: void paintEvent(QPaintEvent* event); diff --git a/src/ui/MainWindow.cpp b/src/ui/MainWindow.cpp index 468c429d..70095266 100644 --- a/src/ui/MainWindow.cpp +++ b/src/ui/MainWindow.cpp @@ -84,10 +84,7 @@ void MainWindow::InitUI() { connect(modelBrowser_, &ModelBrowser::EntityChange, propertyBrowser_, &PropertyBrowser::OnEntityChange); qtOsgViewWidget_ = new QtOsgViewWidget; - //ui->viewWidget->layout()->addWidget(qtOsgViewWidget_); - OsgViewer::Get().Initialize(); - OsgViewer::Get().OnFrame(); - + qtOsgViewWidget_->Initialize(); m_mapDockWidget.insert("PropertyBrowser", attribte); QString wavePath = WorkSpaceManager::Get().GetDYTWaveFile(); @@ -117,7 +114,6 @@ void MainWindow::InitUI() { m_mapDockWidget.insert("WaveCurveDialog", fitCurveDock); fitCurveDlg_->InitWaveFile(wavePath); - connect(WorkSpaceManager::Get().GetCurrent()->GetTimestep(), SIGNAL(TimeChanged(double)), fitCurveDlg_, SLOT(slotUpdateTime(double))); DockWidget* fitLgCurveDock = new DockWidget(tr("Speed Curve"), 0); //addDockWidget(pSettingUI->GetArea("2D(lg)CurveDialog"), fitLgCurveDock); @@ -127,7 +123,6 @@ void MainWindow::InitUI() { fitYLgCurveDlg_->InitReportFile(speedPath); - connect(WorkSpaceManager::Get().GetCurrent()->GetTimestep(), SIGNAL(TimeChanged(double)), fitYLgCurveDlg_, SLOT(slotUpdateTime(double))); DockWidget* surfaceCurveDock = new DockWidget(tr("3D Curve"), 0); // addDockWidget(pSettingUI->GetArea("3DCurveDialog"), surfaceCurveDock); @@ -136,7 +131,6 @@ void MainWindow::InitUI() { m_mapDockWidget.insert("3DCurveDialog", surfaceCurveDock); surfaceDlg_->InitRD(rdPath); - connect(WorkSpaceManager::Get().GetCurrent()->GetTimestep(), SIGNAL(TimeChanged(double)), surfaceDlg_, SLOT(slotUpdateTime(double))); { targetUITable_ = new TargetListWgt; @@ -160,7 +154,6 @@ void MainWindow::InitUI() { targetUITable_->AttachDock(dataTableDock); m_mapDockWidget.insert("TargetListWgt_Table", dataTableDock); - connect(WorkSpaceManager::Get().GetCurrent()->GetTimestep(), SIGNAL(TimeChanged(double)), targetUITable_, SLOT(slotTimeChanged(double))); } { @@ -185,8 +178,6 @@ void MainWindow::InitUI() { // addDockWidget(pSettingUI->GetArea("TargetListWgt"), dataTableDock); targetUI_->AttachDock(dataTableDock); m_mapDockWidget.insert("TargetListWgt", dataTableDock); - - connect(WorkSpaceManager::Get().GetCurrent()->GetTimestep(), SIGNAL(TimeChanged(double)), targetUI_, SLOT(slotTimeChanged(double))); } @@ -196,7 +187,6 @@ void MainWindow::InitUI() { signalIndicatorLampUI_ = new SignalIndicatorLampUI; signalIndicatorLampUI_->AttachDock(signalIndicatorLampDock); signalIndicatorLampUI_->InitLamp(lampPath); - connect(WorkSpaceManager::Get().GetCurrent()->GetLampStatus(), SIGNAL(StatusChanged(int)), signalIndicatorLampUI_, SLOT(onStatusChanged(int))); m_mapDockWidget.insert("SignalIndicatorLampUI", signalIndicatorLampDock); @@ -206,10 +196,15 @@ void MainWindow::InitUI() { addParamDlg_->AttachDock(addParamSettingDock); m_mapDockWidget.insert("ParamSetting", addParamSettingDock); - ui->discript->setText(tr("name: 5year 0412")); - ui->status->setText(tr("start: no start")); + //ui->discript->setText(tr("name: 5year 0412")); + //ui->status->setText(tr("start: no start")); InitDockLayout(); + + //ui->viewWidget->layout()->addWidget(qtOsgViewWidget_); + qtOsgViewWidget_->LoadDefaultScene(); + OsgViewer::Get().Initialize(); + OsgViewer::Get().OnFrame(); #if 0 MatlabObject* mtlb = new MatlabObject; diff --git a/src/ui/Menu/PlayManagerMenu.cpp b/src/ui/Menu/PlayManagerMenu.cpp index b641adc1..86de20a1 100644 --- a/src/ui/Menu/PlayManagerMenu.cpp +++ b/src/ui/Menu/PlayManagerMenu.cpp @@ -113,16 +113,14 @@ void PlayManagerMenu::OnDown() { void PlayManagerMenu::OnWorkspaceChange(WorkSpace* workSpace) { if (nullptr == workSpace) { + LOG_WARN("current is nullptr"); return; } workSpace_ = workSpace; + connect(workSpace, &WorkSpace::TimestepChanged, this, &PlayManagerMenu::OnTimestepChanged); +} - Timestep* timestep = workSpace_->GetTimestep(); - if (nullptr == timestep) { - LOG_INFO("current is nullptr"); - return; - } - +void PlayManagerMenu::OnTimestepChanged(Timestep* timestep) { double step = 0.0; timestep->GetRange(minTime_, maxTime_, step); ui->lbtime->setText(QString::number(minTime_, 'f', 3)); @@ -141,4 +139,26 @@ void PlayManagerMenu::OnWorkspaceChange(WorkSpace* workSpace) { ui->lbUp->setText(QString("x%1").arg(step)); } ); + + connect(timestep, &Timestep::StatusChanged, [this](int statue) { + Timestep::PlayStatus state = static_cast<Timestep::PlayStatus>(statue); + switch (state) { + case Timestep::PlayStatus::PS_Started: + ui->psbPlay->setText(tr("pause")); + break; + case Timestep::PlayStatus::PS_Stoped: { + ui->psbPlay->setText(tr("play")); + ui->lbtime->setText(QString::number(minTime_, 'f', 3)); + ui->lbtimeTotal->setText(QString("/%1(s)").arg(maxTime_)); + ui->horizontalSlider->setValue(0); + } + break; + case Timestep::PlayStatus::PS_Suspended: + ui->psbPlay->setText(tr("play")); + break; + default: + break; + } + } + ); } diff --git a/src/ui/Menu/PlayManagerMenu.h b/src/ui/Menu/PlayManagerMenu.h index d6e0a456..4d8153eb 100644 --- a/src/ui/Menu/PlayManagerMenu.h +++ b/src/ui/Menu/PlayManagerMenu.h @@ -22,6 +22,7 @@ protected: void OnDown(); void OnWorkspaceChange(class WorkSpace* workSpace); + void OnTimestepChanged(class Timestep* timestep); private: diff --git a/src/ui/Table/targetlistwgt.cpp b/src/ui/Table/targetlistwgt.cpp index 874a23a9..2847b98a 100644 --- a/src/ui/Table/targetlistwgt.cpp +++ b/src/ui/Table/targetlistwgt.cpp @@ -15,6 +15,10 @@ #include "../DockWidget.h" #include <QMessageBox> +#include "common/SpdLogger.h" +#include "workspace/WorkSpace.h" +#include "workspace/Timestep.h" +#include "workspace/WorkSpaceManager.h" TargetListWgt::TargetListWgt(QWidget * parent) : QWidget(parent) { ui.setupUi(this); @@ -38,6 +42,8 @@ TargetListWgt::TargetListWgt(QWidget * parent) : QWidget(parent) { ui.lineEdit->setText("1"); ui.lineEdit_2->setText("1"); ui.spinBox_2->setValue(1); + + connect(&WorkSpaceManager::Get(), &WorkSpaceManager::WorkSpaceChanged, this, &TargetListWgt::OnWorkSpaceChanged); } TargetListWgt::~TargetListWgt() { @@ -223,6 +229,23 @@ void TargetListWgt::slotNextPage() UpdatePageData(nCurPage); } +void TargetListWgt::OnWorkSpaceChanged(WorkSpace* worksapce) { + if (worksapce == nullptr) { + LOG_ERROR("worksapce is nullptr"); + return; + } + + connect(worksapce, &WorkSpace::TimestepChanged, this, &TargetListWgt::OnTimestepChanged); +} + +void TargetListWgt::OnTimestepChanged(Timestep* timestep) { + if (timestep == nullptr) { + LOG_ERROR("timestep is nullptr"); + return; + } + connect(timestep, SIGNAL(TimeChanged(double)), this, SLOT(slotUpdateTime(double))); +} + void TargetListWgt::slotTimeChanged(double dTime) { UpdateTable(dTime); diff --git a/src/ui/Table/targetlistwgt.h b/src/ui/Table/targetlistwgt.h index a24219bc..cd6250da 100644 --- a/src/ui/Table/targetlistwgt.h +++ b/src/ui/Table/targetlistwgt.h @@ -64,6 +64,9 @@ protected slots: void slotForwardPage(); // 前一页 void slotNextPage(); // 下一页 + void OnWorkSpaceChanged(class WorkSpace*); + void OnTimestepChanged(class Timestep*); + signals: diff --git a/src/ui/WorkSpace/WorkSpaceDlg.cpp b/src/ui/WorkSpace/WorkSpaceDlg.cpp index 69338f35..576a8c12 100644 --- a/src/ui/WorkSpace/WorkSpaceDlg.cpp +++ b/src/ui/WorkSpace/WorkSpaceDlg.cpp @@ -99,7 +99,7 @@ void WorkSpaceDlg::OnSure() { } emit WorkSpaceManager::Get().WorkSpaceChanged(workSpace); - + WorkSpaceManager::Get().SetCurrent(workSpace); accept(); } diff --git a/src/ui/chartPlot/FitCurveDialog.cpp b/src/ui/chartPlot/FitCurveDialog.cpp index 4c3216b6..e8c46b14 100644 --- a/src/ui/chartPlot/FitCurveDialog.cpp +++ b/src/ui/chartPlot/FitCurveDialog.cpp @@ -5,6 +5,11 @@ #include "../DockTitleBar.h" #include "../DockWidget.h" +#include "common/SpdLogger.h" +#include "workspace/WorkSpace.h" +#include "workspace/Timestep.h" +#include "workspace/WorkSpaceManager.h" + FitCurveDialog::FitCurveDialog(int iType, QWidget* parent) : QDialog(parent), ui(new Ui::FitCurveDialog) @@ -22,6 +27,8 @@ FitCurveDialog::FitCurveDialog(int iType, QWidget* parent) : qApp->setOverrideCursor(Qt::ArrowCursor); //����ϵͳ��������ʾ initQChartView(); + + connect(&WorkSpaceManager::Get(), &WorkSpaceManager::WorkSpaceChanged, this, &FitCurveDialog::OnWorkSpaceChanged); } void FitCurveDialog::initQChartView() { @@ -721,6 +728,23 @@ void FitCurveDialog::ParseReport(const QString& strFile, std::vector<std::vector slotUpdateTime(1); } +void FitCurveDialog::OnWorkSpaceChanged(WorkSpace* worksapce) { + if (worksapce == nullptr) { + LOG_ERROR("worksapce is nullptr"); + return; + } + + connect(worksapce, &WorkSpace::TimestepChanged, this, &FitCurveDialog::OnTimestepChanged); +} + +void FitCurveDialog::OnTimestepChanged(Timestep* timestep) { + if (timestep == nullptr) { + LOG_ERROR("timestep is nullptr"); + return; + } + connect(timestep, SIGNAL(TimeChanged(double)), this, SLOT(slotUpdateTime(double))); +} + FitCurveDialog::~FitCurveDialog() { delete ui; diff --git a/src/ui/chartPlot/FitCurveDialog.h b/src/ui/chartPlot/FitCurveDialog.h index b379bcaf..aa31ed3f 100644 --- a/src/ui/chartPlot/FitCurveDialog.h +++ b/src/ui/chartPlot/FitCurveDialog.h @@ -31,6 +31,8 @@ public: protected: void ParseWave(const QString& strFile, std::vector < std::vector<std::vector<float>>>& vecWavePoint, int iRowCount = 50); void ParseReport(const QString& strFile, std::vector<std::vector<std::vector<float>>>& vecReportPoint, int iRowCount = 50); + void OnWorkSpaceChanged(class WorkSpace*); + void OnTimestepChanged(class Timestep*); public slots: void theSlotMouseEvent(int eventId, QMouseEvent* event); diff --git a/src/ui/chartPlot/SurfaceDialog.cpp b/src/ui/chartPlot/SurfaceDialog.cpp index 3b782ac9..209f01a7 100644 --- a/src/ui/chartPlot/SurfaceDialog.cpp +++ b/src/ui/chartPlot/SurfaceDialog.cpp @@ -8,6 +8,11 @@ #include <QMessageBox> #include <Q3DCamera> +#include "common/SpdLogger.h" +#include "workspace/WorkSpace.h" +#include "workspace/Timestep.h" +#include "workspace/WorkSpaceManager.h" + SurfaceDialog::SurfaceDialog(QWidget *parent) : QWidget(parent) { @@ -16,6 +21,7 @@ SurfaceDialog::SurfaceDialog(QWidget *parent) setWindowTitle("3D Curve"); InitSurface(); + connect(&WorkSpaceManager::Get(), &WorkSpaceManager::WorkSpaceChanged, this, &SurfaceDialog::OnWorkSpaceChanged); } SurfaceDialog::~SurfaceDialog() @@ -271,6 +277,24 @@ void SurfaceDialog::slotUpdateTime(double dTime) m_Surface.setShadowQuality(QAbstract3DGraph::ShadowQuality::ShadowQualityNone); } +void SurfaceDialog::OnWorkSpaceChanged(WorkSpace* worksapce) { + if (worksapce == nullptr) { + LOG_ERROR("worksapce is nullptr"); + return; + } + + connect(worksapce, &WorkSpace::TimestepChanged, this, &SurfaceDialog::OnTimestepChanged); +} + +void SurfaceDialog::OnTimestepChanged(Timestep* timestep) { + if (timestep == nullptr) { + LOG_ERROR("timestep is nullptr"); + return; + } + connect(timestep, SIGNAL(TimeChanged(double)), this, SLOT(slotUpdateTime(double))); +} + + void SurfaceDialog::InitSurface() { m_Surface.setFlags(m_Surface.flags()); diff --git a/src/ui/chartPlot/SurfaceDialog.h b/src/ui/chartPlot/SurfaceDialog.h index 8c4d2b4e..915562dc 100644 --- a/src/ui/chartPlot/SurfaceDialog.h +++ b/src/ui/chartPlot/SurfaceDialog.h @@ -25,6 +25,8 @@ public slots: void slotAddSeries(QVariant varSeriesData); void slotInserKeyPoint(float xValue, float yValue, float zValue); void slotUpdateTime(double dTime); + void OnWorkSpaceChanged(class WorkSpace*); + void OnTimestepChanged(class Timestep*); protected: void InitSurface(); diff --git a/src/viewer/QtOsgViewWidget.cpp b/src/viewer/QtOsgViewWidget.cpp index 8807569a..7f653cd4 100644 --- a/src/viewer/QtOsgViewWidget.cpp +++ b/src/viewer/QtOsgViewWidget.cpp @@ -38,7 +38,7 @@ QtOsgViewWidget::QtOsgViewWidget(QWidget* parent) setAttribute(Qt::WA_OpaquePaintEvent, false); setAttribute(Qt::WA_DontCreateNativeAncestors, false); setFocusPolicy(Qt::StrongFocus); - Initialize(); + //Initialize(); } QtOsgViewWidget::~QtOsgViewWidget() { @@ -71,20 +71,6 @@ void QtOsgViewWidget::Initialize(void) { setMouseTracking(true); - ////OsgSceneManipulator* manipulator = new OsgSceneManipulator; - //CameraControlManipulator* manipulator = new CameraControlManipulator; - ////osg::Vec3f eye(-256.63, 48.57, 82.19); - ////osg::Vec3f center(-164.45, 30.05, 48.14); - ////osg::Vec3f up(0.33, -0.07, 0.94); - - //osg::Vec3 eye(0.0f, 300.f, 60.0f); - //osg::Vec3 center(0.0f, 60.0f, 0.0f); - //osg::Vec3 up(0.0f, 0.0f, 1.0f); - //manipulator->setHomePosition(eye, center, up); - //manipulator->setManipulatorMode(CameraControlManipulator::Roam_ManipulatorMode); - //manipulator->setVerticalAxisFixed(true); - //manipulator->setRoamCamera(eye, center, up); - //manipulator->setDistance(650.0); osgEarth::Util::EarthManipulator* manipulator = new osgEarth::Util::EarthManipulator; osgEarth::Viewpoint vp("home", 107.85, 32.35, 100.0, -2.50, -90.0, 1.5e7); @@ -93,32 +79,6 @@ void QtOsgViewWidget::Initialize(void) { OsgCameraManipulator* cameraManipulator = new OsgCameraManipulator(manipulator, this); view_->Initialize(cameraManipulator); - - //auto pScene = Scenes::SceneManager::GetSingleton().GetCurrentScene(); - //if (nullptr == pScene) { - // pScene = Core::Application::GetSingleton().GetEngine()->CreateScene("Untitled"); - // Scenes::SceneManager::GetSingleton().SetCurrentScene(pScene); - //} - //view_->SetScense(pScene); - - /* scene_ = new OsgScene; - scene_->UseShadows(false); - - scene_->ChangeScene(OsgScene::CLOUDY); - - scene_->AttachView(view_); - scene_->InitEventHandle(view_);*/ - - //scene_->TestBuildModel(); - - const QString path = QString("%1/default2.dyt").arg(Application::GetWorkSpacePath()); - OnLoadDyt(path); - - /*WorkSpace* workspace = WorkSpaceManager::Get().GetOrCreate("defaultDyt"); - workspace->AddScene("default", scene_, true); - workspace_ = workspace;*/ - //WorkSpaceManager::Get(). - } void QtOsgViewWidget::Uninitialize(void) { @@ -133,6 +93,11 @@ void QtOsgViewWidget::Uninitialize(void) { } } +void QtOsgViewWidget::LoadDefaultScene(void) { + dyt_check(nullptr != view_, "view is nullptr"); + WorkSpaceManager::Get().LoadDefaultWorkspace(view_); +} + void QtOsgViewWidget::OnLoadDyt(const QString& path) { LOG_INFO("load dyt path:{}", path.toStdString()); WorkSpace* workSpace = WorkSpaceManager::Get().LoadDyt(path, view_); diff --git a/src/viewer/QtOsgViewWidget.h b/src/viewer/QtOsgViewWidget.h index b8a8cd52..583f4eca 100644 --- a/src/viewer/QtOsgViewWidget.h +++ b/src/viewer/QtOsgViewWidget.h @@ -24,6 +24,8 @@ public: void Initialize(void); void Uninitialize(void); + void LoadDefaultScene(void); + void OnLoadDyt(const QString& path); //void setKeyboardModifiers(QInputEvent* event); diff --git a/src/workspace/WorkSpace.cpp b/src/workspace/WorkSpace.cpp index 97a3b105..141f9d2a 100644 --- a/src/workspace/WorkSpace.cpp +++ b/src/workspace/WorkSpace.cpp @@ -119,6 +119,7 @@ bool WorkSpace::SetTimestep(Timestep* timestep) { } timestep_ = timestep; + emit TimestepChanged(timestep_); return true; } @@ -138,6 +139,7 @@ bool WorkSpace::SetLampStatus(class LampStatus* lampStatus) { } lampStatus_ = lampStatus; + emit LampStatusChanged(lampStatus_); return true; } @@ -205,3 +207,12 @@ void WorkSpace::End() { item->End(); } } + +void WorkSpace::OnLoaded() { + if (nullptr != lampStatus_) { + emit LampStatusChanged(lampStatus_); + } + if (nullptr != timestep_) { + emit TimestepChanged(timestep_); + } +} diff --git a/src/workspace/WorkSpace.h b/src/workspace/WorkSpace.h index 01bdf3c1..00fa3dc3 100644 --- a/src/workspace/WorkSpace.h +++ b/src/workspace/WorkSpace.h @@ -24,6 +24,9 @@ public: inline const QString& GetName() const { return name_; } + inline const QString& GetPath() const { + return path_; + } inline void SetUUid(const QString& uuid) { uuid_ = uuid; } @@ -77,9 +80,13 @@ public: void OnFrame(double dt); void End(); + void OnLoaded(); + Q_SIGNALS: void EntityAdded(class Entity* entity); void EntityRemoved(class Entity* entity); + void TimestepChanged(class Timestep* timestep); + void LampStatusChanged(class LampStatus* lampStatus); private: QString name_; diff --git a/src/workspace/WorkSpaceManager.cpp b/src/workspace/WorkSpaceManager.cpp index 21b98581..3426c839 100644 --- a/src/workspace/WorkSpaceManager.cpp +++ b/src/workspace/WorkSpaceManager.cpp @@ -1,11 +1,12 @@ #include "workspace/WorkSpaceManager.h" +#include<time.h> +#include <QSettings> + #include "workspace/WorkSpace.h" #include "workspace/Timestep.h" #include "common/SpdLogger.h" -#include<time.h> - template<> WorkSpaceManager* Singleton<WorkSpaceManager>::instance_ = nullptr; WorkSpaceManager::WorkSpaceManager(QObject* parent) @@ -17,7 +18,48 @@ WorkSpaceManager::~WorkSpaceManager() { } void WorkSpaceManager::OnDestory() { + SaveDefaultWorkspace(); +} +WorkSpace* WorkSpaceManager::LoadDefaultWorkspace(class OsgView* view) { + const QString iniFile = GetDefaultWorkSpaceName(); + if (!QFile::exists(iniFile)) { + LOG_ERROR("default workspace file not exist:{}", iniFile.toStdString()); + return nullptr; + } + + QSettings settings(iniFile, QSettings::IniFormat); + const QString path = settings.value("workspace/path", "").toString(); + if (path.isEmpty()) { + LOG_ERROR("default workspace path is empty"); + return nullptr; + } + WorkSpace* workspace = LoadDyt(path, view); + if (nullptr == workspace) { + LOG_ERROR("load default workspace failed"); + return nullptr; + } + + SetCurrent(workspace); + return workspace; +} + +void WorkSpaceManager::SaveDefaultWorkspace() { + const QString iniFile = GetDefaultWorkSpaceName(); + if (!QFile::exists(iniFile)) { + LOG_ERROR("default workspace file not exist:{}", iniFile.toStdString()); + return; + } + + WorkSpace* current = GetCurrent(); + if (nullptr == current) { + LOG_ERROR("current workspace is nullptr"); + return; + } + + const QString path = current->GetPath(); + QSettings settings(iniFile, QSettings::IniFormat); + settings.setValue("workspace/path", path); } bool WorkSpaceManager::Contains(const QString& name) const { @@ -76,6 +118,8 @@ void WorkSpaceManager::SetCurrent(WorkSpace* workspace) { lastTime_ = clock(); emit WorkSpaceChanged(current_); + + current_->OnLoaded(); } void WorkSpaceManager::OnFrame() { @@ -94,3 +138,13 @@ void WorkSpaceManager::OnFrame() { lastTime_ = t; } + +QString WorkSpaceManager::GetDefaultWorkSpaceName() { +#if _DEBUG + const QString iniFile = QString("%1workspace/config.ini").arg(QString(CONFIG_PATH)).arg(skin); +#else + const QString appDirPath = QApplication::applicationDirPath(); + const QString iniFile = QString("%1/config/workspace/config.ini").arg(appDirPath); +#endif + return iniFile; +} diff --git a/src/workspace/WorkSpaceManager.h b/src/workspace/WorkSpaceManager.h index 1e485152..3749cb9f 100644 --- a/src/workspace/WorkSpaceManager.h +++ b/src/workspace/WorkSpaceManager.h @@ -19,6 +19,9 @@ public: ~WorkSpaceManager(); void OnDestory(); + WorkSpace* LoadDefaultWorkspace(class OsgView* view); + void SaveDefaultWorkspace(); + bool Contains(const QString& name) const; bool Remove(const QString& name); WorkSpace* LoadDyt(const QString& dyt, class OsgView* view); @@ -64,6 +67,9 @@ public: signals: void WorkSpaceChanged(WorkSpace*); +private: + QString GetDefaultWorkSpaceName(); + private: std::unordered_map<QString, WorkSpace*> workSpaces_; WorkSpace* current_{ nullptr };