2025-01-04 04:12:51 +00:00
# include "MainWindow.h"
# include <QBoxLayout>
# include <QUrl>
# include <QFile>
# include <QFileInfo>
# include <QMimeDatabase>
# include <QDir>
# include <qtabwidget.h>
# include "PropertyBrowser.h"
# include "ModelBrowser.h"
# include "DockWidget.h"
# include "viewer/QtOsgViewWidget.h"
# include "viewer/OsgViewer.h"
# include "chartPlot/FitCurveDialog.h"
# include "chartPlot/SurfaceDialog.h"
# include "Layout/LayoutSettingUI.h"
# include "Layout/SignalIndicatorLampUI.h"
# include "Layout/AddParamSetting.h"
# include "Layout/CodeEdtUI.h"
# include "Table/targetlistwgt.h"
# include "common/RecourceHelper.h"
# include "../workspace/WorkSpaceManager.h"
# include "../workspace/WorkSpace.h"
# include "../workspace/Timestep.h"
# include "../workspace/LampStatus.h"
# include "Matlab/MatlabObject.h"
# include "ui_MainWindow.h"
MainWindow : : MainWindow ( QWidget * parent )
: QMainWindow ( parent )
, ui ( new Ui : : MainWindow ) {
ui - > setupUi ( this ) ;
InitUI ( ) ;
}
MainWindow : : ~ MainWindow ( ) {
OsgViewer : : Get ( ) . Uninitialize ( ) ;
delete ui ;
}
void MainWindow : : InitUI ( ) {
tabWidget_ = new QTabWidget ;
tabWidget_ - > setTabPosition ( QTabWidget : : South ) ;
tabWidget_ - > tabBar ( ) - > setMinimumWidth ( 300 ) ;
ui - > viewWidget - > layout ( ) - > addWidget ( tabWidget_ ) ;
pSettingUI = new LayoutSettingUI ( ) ;
const QString uiLaytouPath = RecourceHelper : : Get ( ) . GetBasePath ( ) + " /workspace/UILayout.xml " ;
pSettingUI - > InitConfig ( uiLaytouPath ) ;
//pSettingUI->show();
connect ( pSettingUI , & LayoutSettingUI : : signalUpdate , this , & MainWindow : : InitDockLayout ) ;
setCorner ( Qt : : BottomLeftCorner , Qt : : LeftDockWidgetArea ) ;
setCorner ( Qt : : BottomRightCorner , Qt : : RightDockWidgetArea ) ;
DockWidget * model = new DockWidget ( tr ( " model elements " ) , 0 ) ;
// addDockWidget(pSettingUI->GetArea("ModelBrowser"), model);
modelBrowser_ = new ModelBrowser ( 0 ) ;
modelBrowser_ - > AttachDock ( model ) ;
m_mapDockWidget . insert ( " ModelBrowser " , model ) ;
DockWidget * attribte = new DockWidget ( tr ( " attribte " ) , 0 ) ;
//addDockWidget(pSettingUI->GetArea("PropertyBrowser"), attribte);
propertyBrowser_ = new PropertyBrowser ( 0 ) ;
propertyBrowser_ - > AttachDock ( attribte ) ;
m_mapDockWidget . insert ( " PropertyBrowser " , attribte ) ;
connect ( modelBrowser_ , & ModelBrowser : : WorkSpaceChange , propertyBrowser_ , & PropertyBrowser : : OnWorkSpaceChange ) ;
connect ( modelBrowser_ , & ModelBrowser : : EntityChange , propertyBrowser_ , & PropertyBrowser : : OnEntityChange ) ;
qtOsgViewWidget_ = new QtOsgViewWidget ;
2025-01-05 11:12:18 +00:00
qtOsgViewWidget_ - > Initialize ( ) ;
2025-01-04 04:12:51 +00:00
m_mapDockWidget . insert ( " PropertyBrowser " , attribte ) ;
QString wavePath = WorkSpaceManager : : Get ( ) . GetDYTWaveFile ( ) ;
if ( wavePath . isEmpty ( ) ) {
wavePath = RecourceHelper : : Get ( ) . GetBasePath ( ) + " /workspace/Wave.txt " ;
WorkSpaceManager : : Get ( ) . SetDYTWaveFile ( wavePath ) ;
}
// const QString wavePath = RecourceHelper::Get().GetBasePath() + "/workspace/Wave.txt";
QString speedPath = WorkSpaceManager : : Get ( ) . GetDYTReportFile ( ) ;
if ( speedPath . isEmpty ( ) ) {
speedPath = RecourceHelper : : Get ( ) . GetBasePath ( ) + " /workspace/Report.txt " ;
WorkSpaceManager : : Get ( ) . SetDYTReportFile ( speedPath ) ;
}
//const QString speedPath = RecourceHelper::Get().GetBasePath() + "/workspace/Report.txt";
QString rdPath = WorkSpaceManager : : Get ( ) . GetDYTRDFile ( ) ;
if ( rdPath . isEmpty ( ) ) {
rdPath = RecourceHelper : : Get ( ) . GetBasePath ( ) + " /workspace/RD.txt " ;
WorkSpaceManager : : Get ( ) . SetDYTRDFile ( rdPath ) ;
}
// const QString rdPath = RecourceHelper::Get().GetBasePath() + "/workspace/RD.txt";
DockWidget * fitCurveDock = new DockWidget ( tr ( " Wave Curve " ) , 0 ) ;
// addDockWidget(pSettingUI->GetArea("2DCurveDialog"), fitCurveDock);
fitCurveDlg_ = new FitCurveDialog ( 1 ) ;
fitCurveDlg_ - > AttachDock ( fitCurveDock ) ;
m_mapDockWidget . insert ( " WaveCurveDialog " , fitCurveDock ) ;
fitCurveDlg_ - > InitWaveFile ( wavePath ) ;
DockWidget * fitLgCurveDock = new DockWidget ( tr ( " Speed Curve " ) , 0 ) ;
//addDockWidget(pSettingUI->GetArea("2D(lg)CurveDialog"), fitLgCurveDock);
fitYLgCurveDlg_ = new FitCurveDialog ( 1 ) ;
fitYLgCurveDlg_ - > AttachDock ( fitLgCurveDock ) ;
m_mapDockWidget . insert ( " SpeedCurveDialog " , fitLgCurveDock ) ;
fitYLgCurveDlg_ - > InitReportFile ( speedPath ) ;
DockWidget * surfaceCurveDock = new DockWidget ( tr ( " 3D Curve " ) , 0 ) ;
// addDockWidget(pSettingUI->GetArea("3DCurveDialog"), surfaceCurveDock);
surfaceDlg_ = new SurfaceDialog ( ) ;
surfaceDlg_ - > AttachDock ( surfaceCurveDock ) ;
m_mapDockWidget . insert ( " 3DCurveDialog " , surfaceCurveDock ) ;
surfaceDlg_ - > InitRD ( rdPath ) ;
{
targetUITable_ = new TargetListWgt ;
QStringList headerLabels ;
headerLabels < < tr ( " Target number " ) < < tr ( " Signal-to-noise ratio " ) //QString::fromLocal8Bit("Ŀ<> <C4BF> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ") << QString::fromLocal8Bit("<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ")
< < tr ( " Azimuth line of sight " ) < < tr ( " Pitch gaze angle " ) // QString::fromLocal8Bit("<22> <> λ<EFBFBD> <CEBB> <EFBFBD> ߽<EFBFBD> ") << QString::fromLocal8Bit("<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ߽<EFBFBD> ")
< < tr ( " azimuth " ) < < tr ( " Pitch angle " ) // QString::fromLocal8Bit("<22> <> λ<EFBFBD> <CEBB> ") << QString::fromLocal8Bit("<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ")
< < tr ( " attribute " ) < < tr ( " Doppler " ) // QString::fromLocal8Bit("<22> <> <EFBFBD> <EFBFBD> ") << QString::fromLocal8Bit("<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ")
< < tr ( " course " ) < < tr ( " Speed " ) // QString::fromLocal8Bit("<22> <> <EFBFBD> <EFBFBD> ") << QString::fromLocal8Bit("<22> <> <EFBFBD> <EFBFBD> ")
< < tr ( " longitude " ) < < tr ( " latitude " ) // QString::fromLocal8Bit("<22> <> <EFBFBD> <EFBFBD> ") << QString::fromLocal8Bit("γ <> <CEB3> ")
< < tr ( " distance " ) < < tr ( " velocity " ) // QString::fromLocal8Bit("<22> <> <EFBFBD> <EFBFBD> ") << QString::fromLocal8Bit("<22> ٶ<EFBFBD> ")
< < tr ( " Radial dimensions " ) < < tr ( " Target RCS " ) ; // QString::fromLocal8Bit("<22> <> <EFBFBD> <EFBFBD> <EFBFBD> ߴ <EFBFBD> ") << QString::fromLocal8Bit("Ŀ<> <C4BF> RCS");
targetUITable_ - > SetHeader ( headerLabels ) ;
//const QString reportPath = RecourceHelper::Get().GetBasePath() + "/workspace/Report.txt";
targetUITable_ - > InitFile ( speedPath , 50 ) ;
DockWidget * dataTableDock = new DockWidget ( tr ( " Report Table " ) , 0 ) ;
// addDockWidget(pSettingUI->GetArea("TargetListWgt"), dataTableDock);
targetUITable_ - > AttachDock ( dataTableDock ) ;
m_mapDockWidget . insert ( " TargetListWgt_Table " , dataTableDock ) ;
}
{
targetUI_ = new TargetListWgt ;
//WorkSpaceManager::Get().SetTargetListWgt(targetUITable_);
QStringList headerLabels ;
headerLabels < < tr ( " Target number " ) < < tr ( " Signal-to-noise ratio " ) //QString::fromLocal8Bit("Ŀ<> <C4BF> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ") << QString::fromLocal8Bit("<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ")
< < tr ( " Azimuth line of sight " ) < < tr ( " Pitch gaze angle " ) // QString::fromLocal8Bit("<22> <> λ<EFBFBD> <CEBB> <EFBFBD> ߽<EFBFBD> ") << QString::fromLocal8Bit("<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ߽<EFBFBD> ")
< < tr ( " azimuth " ) < < tr ( " Pitch angle " ) // QString::fromLocal8Bit("<22> <> λ<EFBFBD> <CEBB> ") << QString::fromLocal8Bit("<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ")
< < tr ( " attribute " ) < < tr ( " Doppler " ) // QString::fromLocal8Bit("<22> <> <EFBFBD> <EFBFBD> ") << QString::fromLocal8Bit("<22> <> <EFBFBD> <EFBFBD> <EFBFBD> <EFBFBD> ")
< < tr ( " course " ) < < tr ( " Speed " ) // QString::fromLocal8Bit("<22> <> <EFBFBD> <EFBFBD> ") << QString::fromLocal8Bit("<22> <> <EFBFBD> <EFBFBD> ")
< < tr ( " longitude " ) < < tr ( " latitude " ) // QString::fromLocal8Bit("<22> <> <EFBFBD> <EFBFBD> ") << QString::fromLocal8Bit("γ <> <CEB3> ")
< < tr ( " distance " ) < < tr ( " velocity " ) // QString::fromLocal8Bit("<22> <> <EFBFBD> <EFBFBD> ") << QString::fromLocal8Bit("<22> ٶ<EFBFBD> ")
< < tr ( " Radial dimensions " ) < < tr ( " Target RCS " ) ; // QString::fromLocal8Bit("<22> <> <EFBFBD> <EFBFBD> <EFBFBD> ߴ <EFBFBD> ") << QString::fromLocal8Bit("Ŀ<> <C4BF> RCS");
targetUI_ - > SetHeader ( headerLabels ) ;
const QString reportPath = RecourceHelper : : Get ( ) . GetBasePath ( ) + " /workspace/Report.txt " ;
targetUI_ - > InitFile ( reportPath , 50 ) ;
DockWidget * dataTableDock = new DockWidget ( tr ( " Report " ) , 0 ) ;
// addDockWidget(pSettingUI->GetArea("TargetListWgt"), dataTableDock);
targetUI_ - > AttachDock ( dataTableDock ) ;
m_mapDockWidget . insert ( " TargetListWgt " , dataTableDock ) ;
}
const QString lampPath = RecourceHelper : : Get ( ) . GetBasePath ( ) + " /workspace/Lamp.txt " ;
DockWidget * signalIndicatorLampDock = new DockWidget ( tr ( " Signal Indicator Lamp " ) , 0 ) ;
signalIndicatorLampUI_ = new SignalIndicatorLampUI ;
signalIndicatorLampUI_ - > AttachDock ( signalIndicatorLampDock ) ;
signalIndicatorLampUI_ - > InitLamp ( lampPath ) ;
m_mapDockWidget . insert ( " SignalIndicatorLampUI " , signalIndicatorLampDock ) ;
const QString iniPath = RecourceHelper : : Get ( ) . GetBasePath ( ) + " /workspace/ParamSetting.ini " ;
DockWidget * addParamSettingDock = new DockWidget ( tr ( " ParamSetting " ) , 0 ) ;
addParamDlg_ = new CodeEdtUI ;
addParamDlg_ - > AttachDock ( addParamSettingDock ) ;
m_mapDockWidget . insert ( " ParamSetting " , addParamSettingDock ) ;
2025-01-05 11:12:18 +00:00
//ui->discript->setText(tr("name: 5year 0412"));
//ui->status->setText(tr("start: no start"));
2025-01-04 04:12:51 +00:00
InitDockLayout ( ) ;
2025-01-05 11:12:18 +00:00
//ui->viewWidget->layout()->addWidget(qtOsgViewWidget_);
qtOsgViewWidget_ - > LoadDefaultScene ( ) ;
OsgViewer : : Get ( ) . Initialize ( ) ;
OsgViewer : : Get ( ) . OnFrame ( ) ;
2025-01-04 04:12:51 +00:00
#if 0
MatlabObject * mtlb = new MatlabObject ;
mtlb - > RunMatlabFile ( " D: \\ DYT \\ TestGUI \\ TestGUI \\ LDPlatformTest.m " ) ;
# endif // 1
}
void MainWindow : : InitDockLayout ( ) {
while ( tabWidget_ - > count ( ) > 0 ) {
tabWidget_ - > removeTab ( 0 ) ;
}
QVariantList listTab = pSettingUI - > GetAreaLayout ( ) . toList ( ) ;
for ( int i = 0 ; i < listTab . size ( ) ; i + + ) {
QVariantMap mapTab = listTab [ i ] . toMap ( ) ;
QString strTabName = mapTab . value ( " Name " ) . toString ( ) ;
QMainWindow * mainWindow_ = new QMainWindow ;
QVariantList listDocArea = mapTab . value ( " Widget " ) . toList ( ) ;
tabWidget_ - > insertTab ( i , mainWindow_ , strTabName ) ;
if ( listDocArea [ 0 ] . toList ( ) . size ( ) > 0 ) {
mainWindow_ - > setCentralWidget ( qtOsgViewWidget_ ) ;
OsgViewer : : Get ( ) . Initialize ( ) ;
OsgViewer : : Get ( ) . OnFrame ( ) ;
} else {
mainWindow_ - > takeCentralWidget ( ) ;
}
if ( listDocArea . size ( ) > 0 ) {
QDockWidget * lastDock = nullptr ;
for ( int j = 1 ; j < listDocArea . size ( ) ; j + + ) {
Qt : : DockWidgetArea dockArea ;
if ( j = = 1 ) {
dockArea = Qt : : LeftDockWidgetArea ;
} else if ( j = = 2 ) {
dockArea = Qt : : TopDockWidgetArea ;
} else if ( j = = 3 ) {
dockArea = Qt : : RightDockWidgetArea ;
} else if ( j = = 4 ) {
dockArea = Qt : : BottomDockWidgetArea ;
}
QVariantList listDocAreaChild = listDocArea [ j ] . toList ( ) ;
for ( int m = 0 ; m < listDocAreaChild . size ( ) ; m + + ) {
QVariant varWidget = listDocAreaChild [ m ] ;
if ( varWidget . type ( ) = = QVariant : : String ) {
QDockWidget * pDock = m_mapDockWidget . value ( varWidget . toString ( ) ) ;
if ( pDock = = nullptr ) {
continue ;
}
mainWindow_ - > addDockWidget ( dockArea , pDock ) ;
lastDock = pDock ;
} else {
QVariantList listWidget = varWidget . toList ( ) ;
for ( int k = 0 ; k < listWidget . size ( ) ; k + + ) {
QDockWidget * pDock = m_mapDockWidget . value ( listWidget [ k ] . toString ( ) ) ;
mainWindow_ - > addDockWidget ( dockArea , pDock ) ;
if ( k = = 0 ) {
if ( lastDock ) {
mainWindow_ - > splitDockWidget ( lastDock , pDock , Qt : : Vertical ) ;
}
} else {
mainWindow_ - > splitDockWidget ( lastDock , pDock , Qt : : Horizontal ) ;
}
lastDock = pDock ;
}
}
}
}
}
}
/* AddDockArea("DockLeftArea");
AddDockArea ( " DockTopArea " ) ;
AddDockArea ( " DockRightArea " ) ;
AddDockArea ( " DockBottomArea " ) ; */
}
void MainWindow : : AddDockArea ( const QString & strArea ) {
Qt : : DockWidgetArea dockArea ;
Qt : : Orientation orient ;
if ( strArea = = " DockLeftArea " ) {
dockArea = Qt : : LeftDockWidgetArea ;
orient = Qt : : Vertical ;
} else if ( strArea = = " DockTopArea " ) {
dockArea = Qt : : TopDockWidgetArea ;
orient = Qt : : Horizontal ;
} else if ( strArea = = " DockRightArea " ) {
dockArea = Qt : : RightDockWidgetArea ;
orient = Qt : : Vertical ;
} else if ( strArea = = " DockBottomArea " ) {
dockArea = Qt : : BottomDockWidgetArea ;
orient = Qt : : Horizontal ;
} else {
return ;
}
QList < QDockWidget * > listAdd ;
QVariant varArea = pSettingUI - > GetAreaLayout ( ) ;
if ( varArea . isValid ( ) ) {
QVariantList listWidget = varArea . toList ( ) ;
for each ( QVariant varWidget in listWidget ) {
if ( varWidget . type ( ) = = QVariant : : String ) {
QDockWidget * pDock = m_mapDockWidget . value ( varWidget . toString ( ) ) ;
addDockWidget ( dockArea , pDock ) ;
listAdd . push_back ( pDock ) ;
} else {
QDockWidget * pLastDock = nullptr ;
QVariantList listTab = varWidget . toList ( ) ;
for each ( QVariant tabChild in listTab ) {
QDockWidget * pDock = m_mapDockWidget . value ( tabChild . toString ( ) ) ;
addDockWidget ( dockArea , pDock ) ;
if ( pLastDock ) {
//tabifyDockWidget(pLastDock, pDock);
splitDockWidget ( pLastDock , pDock , Qt : : Horizontal ) ;
}
listAdd . push_back ( pDock ) ;
pLastDock = pDock ;
}
}
}
}
QList < int > listSpliter ;
for ( size_t i = 0 ; i < listAdd . size ( ) ; i + + ) {
listSpliter . push_back ( 1 ) ;
}
resizeDocks ( listAdd , listSpliter , orient ) ;
}
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 ) ;
}