#pragma once

#include "simulationsartool_global.h"
#include "QToolAbstract.h"
#include "QSARLookTableSimualtionGUI.h"
#include "QImageSARRFPC.h"
#include "QSimulationBPImage.h"

namespace LAMPMainWidget {
    class RasterMainWidget;
}

class ToolBoxWidget;


extern "C" SIMULATIONSARTOOL_EXPORT void RegisterPreToolBox(LAMPMainWidget::RasterMainWidget* mainwindows, ToolBoxWidget* toolbox);




class  SIMULATIONSARTOOL_EXPORT SARSimlulationRFPCToolButton : public QToolAbstract {
	Q_OBJECT
public:
	SARSimlulationRFPCToolButton(QWidget* parent = nullptr);
	~SARSimlulationRFPCToolButton();
public slots:
	virtual void excute() override;

};


class SIMULATIONSARTOOL_EXPORT  SARSimulationTBPImageToolButton : public QToolAbstract {
	Q_OBJECT
public:
	SARSimulationTBPImageToolButton(QWidget* parent = nullptr);
	~SARSimulationTBPImageToolButton();
public slots:
	virtual void excute() override;

};




class QSimulationSAROrbitModelToolButton :public QToolAbstract {
	Q_OBJECT
public:
	QSimulationSAROrbitModelToolButton(QWidget* parent = nullptr);
	~QSimulationSAROrbitModelToolButton();
public slots:

	virtual void excute() override;
};


class SIMULATIONSARTOOL_EXPORT  LookTableComputerClassToolButton : public QToolAbstract {
	Q_OBJECT
public:
	LookTableComputerClassToolButton(QWidget* parent = nullptr);
	~LookTableComputerClassToolButton();
public slots:
	 
	virtual void excute() override;

};

class SIMULATIONSARTOOL_EXPORT  QCreateSARIntensityByLookTableToolButton : public QToolAbstract {
	Q_OBJECT
public:
	QCreateSARIntensityByLookTableToolButton(QWidget* parent = nullptr);
	~QCreateSARIntensityByLookTableToolButton();
public  slots:

	virtual void excute() override;

};

// QtSimulationGeoSARSigma0Dialog

class SIMULATIONSARTOOL_EXPORT  QtSimulationGeoSARSigma0ToolButton : public QToolAbstract {
	Q_OBJECT
public:
	QtSimulationGeoSARSigma0ToolButton(QWidget* parent = nullptr);
	~QtSimulationGeoSARSigma0ToolButton();
public  slots:

	virtual void excute() override;

};



class SIMULATIONSARTOOL_EXPORT  QtLinearToIntenisityToolButton : public QToolAbstract {
	Q_OBJECT
public:
	QtLinearToIntenisityToolButton(QWidget* parent = nullptr);
	~QtLinearToIntenisityToolButton();
public  slots:

	virtual void excute() override;

};


class SIMULATIONSARTOOL_EXPORT  InitCreateImageXYZToolButton : public QToolAbstract {
	Q_OBJECT
public:
	InitCreateImageXYZToolButton(QWidget* parent = nullptr);
	~InitCreateImageXYZToolButton();
public  :
	virtual void run() override;

};


class SIMULATIONSARTOOL_EXPORT  ImagePlaneAtiInterpToolButton : public QToolAbstract {
	Q_OBJECT
public:
	ImagePlaneAtiInterpToolButton(QWidget* parent = nullptr);
	~ImagePlaneAtiInterpToolButton();
public:
	virtual void run() override;

};


class SIMULATIONSARTOOL_EXPORT  QCreateInSARImagePlaneXYZRToolButton : public QToolAbstract {
	Q_OBJECT
public:
	QCreateInSARImagePlaneXYZRToolButton(QWidget* parent = nullptr);
	~QCreateInSARImagePlaneXYZRToolButton();
public:
	virtual void run() override;

};

class SIMULATIONSARTOOL_EXPORT  QInSARBPImageToolButton : public QToolAbstract {
	Q_OBJECT
public:
	QInSARBPImageToolButton(QWidget* parent = nullptr);
	~QInSARBPImageToolButton();
public:
	virtual void run() override;

};

class SIMULATIONSARTOOL_EXPORT QLookTableResampleFromWGS84ToRangeToolButton : public QToolAbstract {
	Q_OBJECT
public:
	QLookTableResampleFromWGS84ToRangeToolButton(QWidget* parent = nullptr);
	~QLookTableResampleFromWGS84ToRangeToolButton();
public:
	virtual void run() override;

};


class SIMULATIONSARTOOL_EXPORT QSARSimulationComplexEchoDataDialogToolButton : public QToolAbstract {
	Q_OBJECT
public:
	QSARSimulationComplexEchoDataDialogToolButton(QWidget* parent = nullptr);
	~QSARSimulationComplexEchoDataDialogToolButton();
public:
	virtual void run() override;

};

class SIMULATIONSARTOOL_EXPORT QSimulationBPImageMultiProductionToolButton : public QToolAbstract {
	Q_OBJECT
public:
	QSimulationBPImageMultiProductionToolButton(QWidget* parent = nullptr);
	~QSimulationBPImageMultiProductionToolButton();
public:
	virtual void run() override;

};





class SIMULATIONSARTOOL_EXPORT QLonLatInterpAtiFromDEMToolButton : public QToolAbstract {
	Q_OBJECT
public:
	QLonLatInterpAtiFromDEMToolButton(QWidget* parent = nullptr);
	~QLonLatInterpAtiFromDEMToolButton();
public:
	virtual void run() override;

};


 


class SIMULATIONSARTOOL_EXPORT QL1ASARProcessDialogToolButton : public QToolAbstract {
	Q_OBJECT
public:
	QL1ASARProcessDialogToolButton(QWidget* parent = nullptr);
	~QL1ASARProcessDialogToolButton();
public:
	virtual void run() override;

};

