/* +------------------------------------------------------------------------+
   |                     Mobile Robot Programming Toolkit (MRPT)            |
   |                          https://www.mrpt.org/                         |
   |                                                                        |
   | Copyright (c) 2005-2023, Individual contributors, see AUTHORS file     |
   | See: https://www.mrpt.org/Authors - All rights reserved.               |
   | Released under BSD License. See: https://www.mrpt.org/License          |
   +------------------------------------------------------------------------+ */

#ifndef CDLGCAMTRACKING_H
#define CDLGCAMTRACKING_H

//(*Headers(CDlgCamTracking)
#include <wx/button.h>
#include <wx/checkbox.h>
#include <wx/dialog.h>
#include <wx/grid.h>
#include <wx/menu.h>
#include <wx/sizer.h>
#include <wx/textctrl.h>
//*)

#include <mrpt/poses/CPose3DInterpolator.h>

class _DSceneViewerFrame;

class CDlgCamTracking : public wxDialog
{
   public:
	CDlgCamTracking(
		_DSceneViewerFrame* parent, wxWindowID id = wxID_ANY,
		const wxPoint& pos = wxDefaultPosition,
		const wxSize& size = wxDefaultSize);
	~CDlgCamTracking() override;

	//(*Declarations(CDlgCamTracking)
	wxButton* btnStop;
	wxButton* btnGrab;
	wxButton* btnSave;
	wxButton* btnStart;
	wxButton* btnClose;
	wxMenuItem* MenuItem1;
	wxButton* btnLoad;
	wxGrid* gridPoses;
	wxCheckBox* cbConstVel;
	wxTextCtrl* edVel;
	wxMenu menuGrid;
	//*)

	// The camera path:
	mrpt::poses::CPose3DInterpolator m_poses;
	void UpdateTableFromPoses();

   protected:
	_DSceneViewerFrame* m_main_win;

	//(*Identifiers(CDlgCamTracking)
	static const long ID_BUTTON2;
	static const long ID_BUTTON3;
	static const long ID_BUTTON4;
	static const long ID_CHECKBOX1;
	static const long ID_TEXTCTRL1;
	static const long ID_BUTTON6;
	static const long ID_BUTTON5;
	static const long ID_GRID1;
	static const long ID_BUTTON1;
	static const long ID_MENUITEM1;
	//*)

   private:
	//(*Handlers(CDlgCamTracking)
	void OnbtnCloseClick(wxCommandEvent& event);
	void OnMenuItemDelete(wxCommandEvent& event);
	void OnbtnSaveClick(wxCommandEvent& event);
	void OnbtnLoadClick(wxCommandEvent& event);
	void OnbtnGrabClick(wxCommandEvent& event);
	void OnbtnStartClick(wxCommandEvent& event);
	void OnbtnStopClick(wxCommandEvent& event);
	//*)

	DECLARE_EVENT_TABLE()
};

#endif
