#include "SimulationSARTool.h"
#include "LAMPMainWidget.h"
#include "RasterMainWidget.h"
#include "ToolBoxWidget.h"
#include "QSimulationSARPolynomialOrbitModel.h"
#include "QSimulationLookTableDialog.h"
#include "QCreateSARIntensityByLookTableDialog.h"
#include "QtSimulationGeoSARSigma0Dialog.h"
#include "QtLinearToIntenisityDialog.h"
#include "InitCreateImageXYZDialog.h"
#include "ImagePlaneAtiInterpDialog.h"
#include "QCreateInSARImagePlaneXYZRDialog.h"
#include "QLookTableResampleFromWGS84ToRange.h"
#include "QSARSimulationComplexEchoDataDialog.h"
#include "QSimulationBPImageMultiProduction.h"
#include "QLonLatInterpAtiFromDEM.h"
#include "QL1ASARProcessDialog.h"

#include "SimulationSARToolSARSatalliteSimulationWorkflow.h"

void RegisterPreToolBox(LAMPMainWidget::RasterMainWidget* mainwindows, ToolBoxWidget* toolbox)
{
	emit toolbox->addBoxToolItemSIGNAL(new SARSimlulationRFPCToolButton(toolbox)); // 300
	emit toolbox->addBoxToolItemSIGNAL(new SARSimulationTBPImageToolButton(toolbox));
	emit toolbox->addBoxToolItemSIGNAL(new QSimulationSAROrbitModelToolButton(toolbox));
	emit toolbox->addBoxToolItemSIGNAL(new LookTableComputerClassToolButton(toolbox));
	emit toolbox->addBoxToolItemSIGNAL(new QCreateSARIntensityByLookTableToolButton(toolbox));
	emit toolbox->addBoxToolItemSIGNAL(new QtSimulationGeoSARSigma0ToolButton(toolbox));
	emit toolbox->addBoxToolItemSIGNAL(new QtLinearToIntenisityToolButton(toolbox));
	emit toolbox->addBoxToolItemSIGNAL(new InitCreateImageXYZToolButton(toolbox));
	emit toolbox->addBoxToolItemSIGNAL(new ImagePlaneAtiInterpToolButton(toolbox));
	emit toolbox->addBoxToolItemSIGNAL(new QCreateInSARImagePlaneXYZRToolButton(toolbox));
	emit toolbox->addBoxToolItemSIGNAL(new QInSARBPImageToolButton(toolbox));
	emit toolbox->addBoxToolItemSIGNAL(new QLookTableResampleFromWGS84ToRangeToolButton(toolbox));
	emit toolbox->addBoxToolItemSIGNAL(new QSARSimulationComplexEchoDataDialogToolButton(toolbox));
	emit toolbox->addBoxToolItemSIGNAL(new QSimulationBPImageMultiProductionToolButton(toolbox));
	emit toolbox->addBoxToolItemSIGNAL(new QLonLatInterpAtiFromDEMToolButton(toolbox));
	emit toolbox->addBoxToolItemSIGNAL(new QL1ASARProcessDialogToolButton(toolbox));

#ifdef __SIMULATIONSARTOOL__SARSATALLITESIMULATIONWORKFLOW__H__

	initSimulationSARToolSARSateSimulationWorkflow(toolbox);
#endif



}



SARSimlulationRFPCToolButton::SARSimlulationRFPCToolButton(QWidget* parent)
{
	this->toolPath = QVector<QString>(0);
	this->toolPath.push_back(u8"仿真工具库");
	this->toolname = QString(u8"RFPC");
}

SARSimlulationRFPCToolButton::~SARSimlulationRFPCToolButton()
{

}


void SARSimlulationRFPCToolButton::excute()
{

	QImageSARRFPC* dialog = new QImageSARRFPC();
	dialog->show();
}

SARSimulationTBPImageToolButton::SARSimulationTBPImageToolButton(QWidget* parent)
{
	this->toolPath = QVector<QString>(0);
	this->toolPath.push_back(u8"成像工具库");
	this->toolname = QString(u8"TimeBP仿真成像");
}

SARSimulationTBPImageToolButton::~SARSimulationTBPImageToolButton()
{
}

void SARSimulationTBPImageToolButton::excute()
{
	QSimulationBPImage* dialog = new QSimulationBPImage;
	dialog->show();
}




QSimulationSAROrbitModelToolButton::QSimulationSAROrbitModelToolButton(QWidget* parent)
{
	this->toolPath = QVector<QString>(0);
	this->toolPath.push_back(u8"仿真工具库");
	this->toolname = QString(u8"轨道仿真");
}

QSimulationSAROrbitModelToolButton::~QSimulationSAROrbitModelToolButton()
{
}
void QSimulationSAROrbitModelToolButton::excute()
{
	QSimulationPolynomialSAROrbitModel* dialog = new QSimulationPolynomialSAROrbitModel;
	dialog->show();
}



LookTableComputerClassToolButton::LookTableComputerClassToolButton(QWidget* parent)
{
	this->toolPath = QVector<QString>(0);
	this->toolPath.push_back(u8"仿真工具库");
	this->toolname = QString(u8"查找表生成");
}

LookTableComputerClassToolButton::~LookTableComputerClassToolButton()
{
}
void LookTableComputerClassToolButton::excute()
{
	QSimulationLookTableDialog* dialog = new QSimulationLookTableDialog;
	dialog->show();
}

QCreateSARIntensityByLookTableToolButton::QCreateSARIntensityByLookTableToolButton(QWidget* parent)
{
	this->toolPath = QVector<QString>(0);
	this->toolPath.push_back(u8"仿真工具库");
	this->toolname = QString(u8"生成模拟强度图");
}

QCreateSARIntensityByLookTableToolButton::~QCreateSARIntensityByLookTableToolButton()
{
}

void QCreateSARIntensityByLookTableToolButton::excute()
{
	QCreateSARIntensityByLookTableDialog* dialog = new QCreateSARIntensityByLookTableDialog;
	dialog->show();
}

QtSimulationGeoSARSigma0ToolButton::QtSimulationGeoSARSigma0ToolButton(QWidget* parent)
{
	this->toolPath = QVector<QString>(0);
	this->toolPath.push_back(u8"仿真工具库");
	this->toolname = QString(u8"生成模拟强度图(地距)");
}

QtSimulationGeoSARSigma0ToolButton::~QtSimulationGeoSARSigma0ToolButton()
{
}
void QtSimulationGeoSARSigma0ToolButton::excute()
{
	QtSimulationGeoSARSigma0Dialog* dialog = new QtSimulationGeoSARSigma0Dialog;
	dialog->show();
}

QtLinearToIntenisityToolButton::QtLinearToIntenisityToolButton(QWidget* parent)
{
	this->toolPath = QVector<QString>(0);
	this->toolPath.push_back(u8"仿真工具库");
	this->toolname = QString(u8"dB转线性值");
}

QtLinearToIntenisityToolButton::~QtLinearToIntenisityToolButton()
{
}
void QtLinearToIntenisityToolButton::excute()
{
	QtLinearToIntenisityDialog* dialog = new QtLinearToIntenisityDialog;
	dialog->show();
}

InitCreateImageXYZToolButton::InitCreateImageXYZToolButton(QWidget* parent)
{
	this->toolPath = QVector<QString>(0);
	this->toolPath.push_back(u8"成像工具库");
	this->toolname = QString(u8"1.构建成像粗平面");
}

InitCreateImageXYZToolButton::~InitCreateImageXYZToolButton()
{

}

void InitCreateImageXYZToolButton::run()
{
	InitCreateImageXYZDialog* dialog = new InitCreateImageXYZDialog;
	dialog->show();
}

ImagePlaneAtiInterpToolButton::ImagePlaneAtiInterpToolButton(QWidget* parent)
{
	this->toolPath = QVector<QString>(0);
	this->toolPath.push_back(u8"成像工具库");
	this->toolname = QString(u8"2.粗平面映射DEM");
}
ImagePlaneAtiInterpToolButton::~ImagePlaneAtiInterpToolButton()
{
}

void ImagePlaneAtiInterpToolButton::run()
{
	ImagePlaneAtiInterpDialog* dialog = new ImagePlaneAtiInterpDialog;
	dialog->show();
}

QCreateInSARImagePlaneXYZRToolButton::QCreateInSARImagePlaneXYZRToolButton(QWidget* parent)
{
	this->toolPath = QVector<QString>(0);
	this->toolPath.push_back(u8"InSAR仿真工具库");
	this->toolname = QString(u8"1.创建InSAR地距成像平面");
}

QCreateInSARImagePlaneXYZRToolButton::~QCreateInSARImagePlaneXYZRToolButton()
{
}

void QCreateInSARImagePlaneXYZRToolButton::run()
{
	QCreateInSARImagePlaneXYZRDialog* dialog = new QCreateInSARImagePlaneXYZRDialog;
	dialog->show();
}

QInSARBPImageToolButton::QInSARBPImageToolButton(QWidget* parent)
{
	this->toolPath = QVector<QString>(0);
	this->toolPath.push_back(u8"InSAR仿真工具库");
	this->toolname = QString(u8"2.InSAR地距BP成像");
}

QInSARBPImageToolButton::~QInSARBPImageToolButton()
{
}

void QInSARBPImageToolButton::run()
{
	QSimulationBPImage* dialog = new QSimulationBPImage;
	dialog->show();
}

QLookTableResampleFromWGS84ToRangeToolButton::QLookTableResampleFromWGS84ToRangeToolButton(QWidget* parent)
{
	this->toolPath = QVector<QString>(0);
	this->toolPath.push_back(u8"仿真工具库");
	this->toolname = QString(u8"查找表的反向插值");
}

QLookTableResampleFromWGS84ToRangeToolButton::~QLookTableResampleFromWGS84ToRangeToolButton()
{
}

void QLookTableResampleFromWGS84ToRangeToolButton::run()
{
	QLookTableResampleFromWGS84ToRange* dialog = new QLookTableResampleFromWGS84ToRange;
	dialog->show();
}

//QSARSimulationComplexEchoDataDialog

QSARSimulationComplexEchoDataDialogToolButton::QSARSimulationComplexEchoDataDialogToolButton(QWidget* parent)
{
	this->toolPath = QVector<QString>(0);
	this->toolPath.push_back(u8"成像工具库");
	this->toolname = QString(u8"回波反采样工具（测试）");
}

QSARSimulationComplexEchoDataDialogToolButton::~QSARSimulationComplexEchoDataDialogToolButton()
{
}

void QSARSimulationComplexEchoDataDialogToolButton::run()
{
	QSARSimulationComplexEchoDataDialog* dialog = new QSARSimulationComplexEchoDataDialog;
	dialog->show();
}

QSimulationBPImageMultiProductionToolButton::QSimulationBPImageMultiProductionToolButton(QWidget* parent)
{
	this->toolPath = QVector<QString>(0);
	this->toolPath.push_back(u8"成像工具库");
	this->toolname = QString(u8"1-2级产品生产");
}

QSimulationBPImageMultiProductionToolButton::~QSimulationBPImageMultiProductionToolButton()
{
}

void QSimulationBPImageMultiProductionToolButton::run()
{
	QSimulationBPImageMultiProduction* dialog = new QSimulationBPImageMultiProduction;
	dialog->show();
}

QLonLatInterpAtiFromDEMToolButton::QLonLatInterpAtiFromDEMToolButton(QWidget* parent)
{
	this->toolPath = QVector<QString>(0);
	this->toolPath.push_back(u8"成像工具库");
	this->toolname = QString(u8"生产斜距成像平面");
}

QLonLatInterpAtiFromDEMToolButton::~QLonLatInterpAtiFromDEMToolButton()
{
}

void QLonLatInterpAtiFromDEMToolButton::run()
{
	QLonLatInterpAtiFromDEM* dialog = new QLonLatInterpAtiFromDEM;
	dialog->show();
}

QL1ASARProcessDialogToolButton::QL1ASARProcessDialogToolButton(QWidget* parent)
{
	this->toolPath = QVector<QString>(0);
	this->toolPath.push_back(u8"成像工具库");
	this->toolname = QString(u8"生产L1B级产品");
}

QL1ASARProcessDialogToolButton::~QL1ASARProcessDialogToolButton()
{
}

void QL1ASARProcessDialogToolButton::run()
{
	QL1ASARProcessDialog* dialog = new QL1ASARProcessDialog;
	dialog->show();
}
