#include "SimulationSARToolSARSatalliteSimulationWorkflow.h"
#include "QSimulationSARPolynomialOrbitModel.h"
#include "QtSimulationGeoSARSigma0Dialog.h"
#include <QSimulationLookTableDialog.h>
#include <QCreateSARIntensityByLookTableDialog.h>
#include <QImageSARRFPC.h>
#include <QCreateInSARImagePlaneXYZRDialog.h>
#include <QLookTableResampleFromWGS84ToRange.h>
#include <QSimulationBPImageMultiProduction.h>
#include <QL1ASARProcessDialog.h>
  
SIMULATIONSARTOOL_EXPORT void initSimulationSARToolSARSateSimulationWorkflow(ToolBoxWidget* toolbox)
{
	// 2. 轨道节点模型拟合
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"GF3B仿真流程"}, new QPolyfitSatelliteGPSModelToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"GF3C仿真流程"}, new QPolyfitSatelliteGPSModelToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"LT1A仿真流程"}, new QPolyfitSatelliteGPSModelToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"LT1B仿真流程"}, new QPolyfitSatelliteGPSModelToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"HJ2E仿真流程"}, new QPolyfitSatelliteGPSModelToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"HJ2F仿真流程"}, new QPolyfitSatelliteGPSModelToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"LT04仿真流程"}, new QPolyfitSatelliteGPSModelToolButton(toolbox));


	// 5. 基于DEM和分类信息的SAR图像模拟
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"GF3B仿真流程",u8"基于DEM和分类信息的SAR图像模拟"}, new QGeneratorGeoSimulationRsaterToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"GF3C仿真流程",u8"基于DEM和分类信息的SAR图像模拟"}, new QGeneratorGeoSimulationRsaterToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"LT1A仿真流程",u8"基于DEM和分类信息的SAR图像模拟"}, new QGeneratorGeoSimulationRsaterToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"LT1B仿真流程",u8"基于DEM和分类信息的SAR图像模拟"}, new QGeneratorGeoSimulationRsaterToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"HJ2E仿真流程",u8"基于DEM和分类信息的SAR图像模拟"}, new QGeneratorGeoSimulationRsaterToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"HJ2F仿真流程",u8"基于DEM和分类信息的SAR图像模拟"}, new QGeneratorGeoSimulationRsaterToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"LT04仿真流程",u8"基于DEM和分类信息的SAR图像模拟"}, new QGeneratorGeoSimulationRsaterToolButton(toolbox));


	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"GF3B仿真流程", u8"基于DEM和分类信息的SAR图像模拟"}, new QGeneratorMapGeoAndSltLookTableToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"GF3C仿真流程", u8"基于DEM和分类信息的SAR图像模拟"}, new QGeneratorMapGeoAndSltLookTableToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"LT1A仿真流程", u8"基于DEM和分类信息的SAR图像模拟"}, new QGeneratorMapGeoAndSltLookTableToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"LT1B仿真流程", u8"基于DEM和分类信息的SAR图像模拟"}, new QGeneratorMapGeoAndSltLookTableToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"HJ2E仿真流程", u8"基于DEM和分类信息的SAR图像模拟"}, new QGeneratorMapGeoAndSltLookTableToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"HJ2F仿真流程", u8"基于DEM和分类信息的SAR图像模拟"}, new QGeneratorMapGeoAndSltLookTableToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"LT04仿真流程", u8"基于DEM和分类信息的SAR图像模拟"}, new QGeneratorMapGeoAndSltLookTableToolButton(toolbox));


	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"GF3B仿真流程", u8"基于DEM和分类信息的SAR图像模拟"}, new QSimulationSlrSARRasterToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"GF3C仿真流程", u8"基于DEM和分类信息的SAR图像模拟"}, new QSimulationSlrSARRasterToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"LT1A仿真流程", u8"基于DEM和分类信息的SAR图像模拟"}, new QSimulationSlrSARRasterToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"LT1B仿真流程", u8"基于DEM和分类信息的SAR图像模拟"}, new QSimulationSlrSARRasterToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"HJ2E仿真流程", u8"基于DEM和分类信息的SAR图像模拟"}, new QSimulationSlrSARRasterToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"HJ2F仿真流程", u8"基于DEM和分类信息的SAR图像模拟"}, new QSimulationSlrSARRasterToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"LT04仿真流程", u8"基于DEM和分类信息的SAR图像模拟"}, new QSimulationSlrSARRasterToolButton(toolbox));




	//6. 基于回波仿真成像
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"GF3B仿真流程", u8"基于回波仿真成像"}, new QEchoDataSimulationSARRFPCToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"GF3C仿真流程", u8"基于回波仿真成像"}, new QEchoDataSimulationSARRFPCToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"LT1A仿真流程", u8"基于回波仿真成像"}, new QEchoDataSimulationSARRFPCToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"LT1B仿真流程", u8"基于回波仿真成像"}, new QEchoDataSimulationSARRFPCToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"HJ2E仿真流程", u8"基于回波仿真成像"}, new QEchoDataSimulationSARRFPCToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"HJ2F仿真流程", u8"基于回波仿真成像"}, new QEchoDataSimulationSARRFPCToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"LT04仿真流程", u8"基于回波仿真成像"}, new QEchoDataSimulationSARRFPCToolButton(toolbox));

	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"GF3B仿真流程", u8"基于回波仿真成像"}, new QInSARImageNetGeneratorToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"GF3C仿真流程", u8"基于回波仿真成像"}, new QInSARImageNetGeneratorToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"LT1A仿真流程", u8"基于回波仿真成像"}, new QInSARImageNetGeneratorToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"LT1B仿真流程", u8"基于回波仿真成像"}, new QInSARImageNetGeneratorToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"HJ2E仿真流程", u8"基于回波仿真成像"}, new QInSARImageNetGeneratorToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"HJ2F仿真流程", u8"基于回波仿真成像"}, new QInSARImageNetGeneratorToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"LT04仿真流程", u8"基于回波仿真成像"}, new QInSARImageNetGeneratorToolButton(toolbox));


	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"GF3B仿真流程",u8"基于回波仿真成像"}, new QGeneratorMapGeoAndSltLookTableToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"GF3C仿真流程",u8"基于回波仿真成像"}, new QGeneratorMapGeoAndSltLookTableToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"LT1A仿真流程",u8"基于回波仿真成像"}, new QGeneratorMapGeoAndSltLookTableToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"LT1B仿真流程",u8"基于回波仿真成像"}, new QGeneratorMapGeoAndSltLookTableToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"HJ2E仿真流程",u8"基于回波仿真成像"}, new QGeneratorMapGeoAndSltLookTableToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"HJ2F仿真流程",u8"基于回波仿真成像"}, new QGeneratorMapGeoAndSltLookTableToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"LT04仿真流程",u8"基于回波仿真成像"}, new QGeneratorMapGeoAndSltLookTableToolButton(toolbox));

	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"GF3B仿真流程", u8"基于回波仿真成像"}, new QMapLooktableToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"GF3C仿真流程", u8"基于回波仿真成像"}, new QMapLooktableToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"LT1A仿真流程", u8"基于回波仿真成像"}, new QMapLooktableToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"LT1B仿真流程", u8"基于回波仿真成像"}, new QMapLooktableToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"HJ2E仿真流程", u8"基于回波仿真成像"}, new QMapLooktableToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"HJ2F仿真流程", u8"基于回波仿真成像"}, new QMapLooktableToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"LT04仿真流程", u8"基于回波仿真成像"}, new QMapLooktableToolButton(toolbox));



	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"GF3B仿真流程", u8"基于回波仿真成像"}, new QSimulationBPImageMultiProductionLevel1_2ToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"GF3C仿真流程", u8"基于回波仿真成像"}, new QSimulationBPImageMultiProductionLevel1_2ToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"LT1A仿真流程", u8"基于回波仿真成像"}, new QSimulationBPImageMultiProductionLevel1_2ToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"LT1B仿真流程", u8"基于回波仿真成像"}, new QSimulationBPImageMultiProductionLevel1_2ToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"HJ2E仿真流程", u8"基于回波仿真成像"}, new QSimulationBPImageMultiProductionLevel1_2ToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"HJ2F仿真流程", u8"基于回波仿真成像"}, new QSimulationBPImageMultiProductionLevel1_2ToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"LT04仿真流程", u8"基于回波仿真成像"}, new QSimulationBPImageMultiProductionLevel1_2ToolButton(toolbox));



	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"GF3B仿真流程", u8"基于回波仿真成像"}, new QSimulationBPImageL1BToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"GF3C仿真流程", u8"基于回波仿真成像"}, new QSimulationBPImageL1BToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"LT1A仿真流程", u8"基于回波仿真成像"}, new QSimulationBPImageL1BToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"LT1B仿真流程", u8"基于回波仿真成像"}, new QSimulationBPImageL1BToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"HJ2E仿真流程", u8"基于回波仿真成像"}, new QSimulationBPImageL1BToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"HJ2F仿真流程", u8"基于回波仿真成像"}, new QSimulationBPImageL1BToolButton(toolbox));
	emit toolbox->addBoxToolItemInPathSIGNAL(QVector<QString>{u8"大场景仿真流程", u8"LT04仿真流程", u8"基于回波仿真成像"}, new QSimulationBPImageL1BToolButton(toolbox));
 

	return ;
}

QPolyfitSatelliteGPSModelToolButton::QPolyfitSatelliteGPSModelToolButton(QWidget* parent)
{
	this->toolname = QString(u8"根据轨道节点拟合轨道模型");
}

QPolyfitSatelliteGPSModelToolButton::~QPolyfitSatelliteGPSModelToolButton()
{
}

void QPolyfitSatelliteGPSModelToolButton::run()
{
	QSimulationPolynomialSAROrbitModel* dialog = new QSimulationPolynomialSAROrbitModel;
	dialog->setWindowTitle(u8"根据轨道节点拟合轨道模型");
	dialog->show();
}

QGeneratorGeoSimulationRsaterToolButton::QGeneratorGeoSimulationRsaterToolButton(QWidget* parent)
{
	this->toolname = QString(u8"1.生成地距模拟影像");
}

QGeneratorGeoSimulationRsaterToolButton::~QGeneratorGeoSimulationRsaterToolButton()
{
}

void QGeneratorGeoSimulationRsaterToolButton::run()
{
	QtSimulationGeoSARSigma0Dialog* dialog = new QtSimulationGeoSARSigma0Dialog;
	dialog->setWindowTitle(u8"生成地距模拟影像");
	dialog->show();
}

QGeneratorMapGeoAndSltLookTableToolButton::QGeneratorMapGeoAndSltLookTableToolButton(QWidget* parent)
{
	this->toolname = QString(u8"2.计算坐标映射表");
}

QGeneratorMapGeoAndSltLookTableToolButton::~QGeneratorMapGeoAndSltLookTableToolButton()
{
}

void QGeneratorMapGeoAndSltLookTableToolButton::run()
{
	QSimulationLookTableDialog* dialog = new QSimulationLookTableDialog;
	dialog->setWindowTitle(u8"创建地距-斜距映射表");
	dialog->show();
}

QSimulationSlrSARRasterToolButton::QSimulationSlrSARRasterToolButton(QWidget* parent)
{
	this->toolname = QString(u8"3.生成斜距模拟影像");
}

QSimulationSlrSARRasterToolButton::~QSimulationSlrSARRasterToolButton()
{
}

void QSimulationSlrSARRasterToolButton::run()
{
	QCreateSARIntensityByLookTableDialog* dialog = new QCreateSARIntensityByLookTableDialog;
	dialog->setWindowTitle(u8"生成斜距模拟影像");
	dialog->show();
}

QEchoDataSimulationSARRFPCToolButton::QEchoDataSimulationSARRFPCToolButton(QWidget* parent)
{
	this->toolname = QString(u8"1.距离频域脉冲相干法");
}

QEchoDataSimulationSARRFPCToolButton::~QEchoDataSimulationSARRFPCToolButton()
{
}

void QEchoDataSimulationSARRFPCToolButton::run()
{
	QImageSARRFPC* dialog = new QImageSARRFPC();
	dialog->setWindowTitle(u8"生成回波-距离频域脉冲相干法");
	dialog->show();
}

QInSARImageNetGeneratorToolButton::QInSARImageNetGeneratorToolButton(QWidget* parent)
{
	this->toolname = QString(u8"1.成像网格生成");
}

QInSARImageNetGeneratorToolButton::~QInSARImageNetGeneratorToolButton()
{
}

void QInSARImageNetGeneratorToolButton::run()
{
	QCreateInSARImagePlaneXYZRDialog* dialog = new QCreateInSARImagePlaneXYZRDialog;
	dialog->setWindowTitle(u8"成像平面网格划分");
	dialog->show();
}

QMapLooktableToolButton::QMapLooktableToolButton(QWidget* parent)
{
	this->toolname = QString(u8"3.创建地理编码查找表");
}

QMapLooktableToolButton::~QMapLooktableToolButton()
{
}

void QMapLooktableToolButton::run()
{
	QLookTableResampleFromWGS84ToRange* dialog = new QLookTableResampleFromWGS84ToRange;
	dialog->setWindowTitle(u8"创建地理编码双向查找表");
	dialog->show();
}

QSimulationBPImageMultiProductionLevel1_2ToolButton::QSimulationBPImageMultiProductionLevel1_2ToolButton(QWidget* parent)
{
	this->toolname = QString(u8"4. 生成1~2级产品");
}

QSimulationBPImageMultiProductionLevel1_2ToolButton::~QSimulationBPImageMultiProductionLevel1_2ToolButton()
{
}

void QSimulationBPImageMultiProductionLevel1_2ToolButton::run()
{
	QSimulationBPImageMultiProduction* dialog = new QSimulationBPImageMultiProduction;
	dialog->setWindowTitle(u8"生成1~2级产品");
	dialog->show();
}

QSimulationBPImageL1BToolButton::QSimulationBPImageL1BToolButton(QWidget* parent)
{
	this->toolname = QString(u8"4. 生成L1B级产品");

}

QSimulationBPImageL1BToolButton::~QSimulationBPImageL1BToolButton()
{
}

void QSimulationBPImageL1BToolButton::run()
{
	QL1ASARProcessDialog* dialog = new QL1ASARProcessDialog;
	dialog->setWindowTitle(u8"生成L1B级产品");
	dialog->show();
}
