/* +------------------------------------------------------------------------+
   |                     Mobile Robot Programming Toolkit (MRPT)            |
   |                          https://www.mrpt.org/                         |
   |                                                                        |
   | Copyright (c) 2005-2024, 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 CFORMRAWMAP_H
#define CFORMRAWMAP_H

//(*Headers(CFormRawMap)
#include <wx/bmpbuttn.h>
#include <wx/button.h>
#include <wx/dialog.h>
#include <wx/panel.h>
#include <wx/sizer.h>
#include <wx/slider.h>
#include <wx/spinctrl.h>
#include <wx/stattext.h>
#include <wx/textctrl.h>
//*)

// The "custom class" mpWindow, from the wxMathPlot libray by David Schalig
//  See http://sourceforge.net/projects/wxmathplot
#include <mrpt/3rdparty/mathplot/mathplot.h>
#include <mrpt/gui/CDisplayWindow3D.h>

class CFormRawMap : public wxDialog
{
 public:
  CFormRawMap(wxWindow* parent, wxWindowID id = -1);
  ~CFormRawMap() override;

  //(*Identifiers(CFormRawMap)
  static const long ID_STATICTEXT7;
  static const long ID_STATICTEXT6;
  static const long ID_STATICTEXT5;
  static const long ID_STATICTEXT1;
  static const long ID_SLIDER1;
  static const long ID_SPINCTRL1;
  static const long ID_STATICTEXT3;
  static const long ID_SLIDER2;
  static const long ID_SPINCTRL2;
  static const long ID_STATICTEXT10;
  static const long ID_SLIDER3;
  static const long ID_SPINCTRL3;
  static const long ID_BUTTON2;
  static const long ID_BUTTON6;
  static const long ID_BUTTON5;
  static const long ID_BUTTON1;
  static const long ID_BUTTON3;
  static const long ID_BUTTON7;
  static const long ID_BUTTON8;
  static const long ID_BUTTON9;
  static const long ID_STATICTEXT8;
  static const long ID_STATICTEXT2;
  static const long ID_BUTTON4;
  static const long ID_TEXTCTRL1;
  static const long ID_PANEL1;
  static const long ID_CUSTOM2;
  static const long ID_PANEL3;
  //*)

 public:
  //(*Handlers(CFormRawMap)
  void OnslFromCmdScrollThumbTrack(wxScrollEvent& event);
  void OnslToCmdScrollThumbTrack(wxScrollEvent& event);
  void OnbtnGenerateClick(wxCommandEvent& event);
  void OnbtnSaveTxtClick(wxCommandEvent& event);
  void OnbtnSave3DClick(wxCommandEvent& event);
  void OnbtnCloseClick(wxCommandEvent& event);
  void OnslDecimateCmdScrollThumbTrack(wxScrollEvent& event);
  void OnslToCmdScroll(wxScrollEvent& event);
  void OnbtnGeneratePathsClick(wxCommandEvent& event);
  void OnGenerateFromRTK(wxCommandEvent& event);
  void OnbtnSavePathClick(wxCommandEvent& event);
  void OnbtnSaveObsPathClick(wxCommandEvent& event);
  void OnbtnView3DClick(wxCommandEvent& event);
  void OnbtnHelpClick(wxCommandEvent& event);
  //*)

  //(*Declarations(CFormRawMap)
  wxSlider* slDecimate;
  wxSpinCtrl* edDec;
  wxStaticText* StaticText2;
  wxStaticText* lbLength;
  wxButton* btnClose;
  wxSpinCtrl* edLast;
  wxSpinCtrl* edFirst;
  wxFlexGridSizer* FlexGridSizer3;
  wxStaticText* lbCount;
  wxStaticText* StaticText6;
  wxButton* btnSavePath;
  wxFlexGridSizer* FlexGridSizer2;
  wxStaticText* StaticText1;
  wxStaticText* StaticText3;
  wxButton* btnGeneratePaths;
  wxButton* btnGenerate;
  wxButton* btnSave3D;
  wxPanel* Panel3;
  wxTextCtrl* edOpts;
  wxStaticText* StaticText5;
  mpWindow* plotMap;
  wxSlider* slFrom;
  wxSlider* slTo;
  wxBoxSizer* BoxSizer1;
  wxButton* btnView3D;
  wxButton* btnSaveObsPath;
  wxPanel* Panel2;
  wxButton* btnSaveTxt;
  wxFlexGridSizer* FlexGridSizer1;
  wxStaticText* StaticText4;
  wxButton* btnGenerateRTK;
  //*)

 private:
  mrpt::gui::CDisplayWindow3D::Ptr win3Dmap;

  DECLARE_EVENT_TABLE()
};

#endif
