/////////////////////////////////////////////////////////////////////////////////
//
// This file is part of SACAMOS, cable models for EMI simulations in SPICE.
// It was developed by the University of Nottingham and the Netherlands Aerospace
// Centre (NLR) for ESA under contract number 4000112765/14/NL/HK.
//
// Copyright (C) 2015 - 2018 University of Nottingham
//
// SACAMOS is free software: you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the Free Software
// Foundation, either version 3 of the License, or (at your option) any later
// version.
//
// SACAMOS is distributed in the hope that it will be useful, but
// WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
// or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
// for more details.
//
// A copy of the GNU General Public License version 3 can be found in the
// file GNU_GPL_v3 in the root or at <http://www.gnu.org/licenses/>.
//
// wxWidgets is currently licenced under the "wxWindows Library Licence".
// A copy of the wxWindows Library Licence, Version 3.1 can be found in the file
// wxWindows_Library_Licence_v3-1 in the root or at:
// <https://www.wxwidgets.org/about/licence/>
//
// The University of Nottingham can be contacted at: ggiemr@nottingham.ac.uk
//
// File Contents:
//
// NAME
//     TP.h
//
// DESCRIPTION
//     GUI for the construction of cable_spec file for cable type: Twisted pair
//
// AUTHOR(S)
//     Steve Greedy
//
/////////////////////////////////////////////////////////////////////////////////
#ifndef TP_H
#define TP_H

//(*Headers(TP)
#include <wx/notebook.h>
#include <wx/sizer.h>
#include <wx/stattext.h>
#include <wx/textctrl.h>
#include <wx/checkbox.h>
#include <wx/statline.h>
#include <wx/panel.h>
#include <wx/button.h>
#include <wx/dialog.h>
#include <wx/combobox.h>
//*)

// Additional wxWidgets Includes
#include <wx/msgdlg.h>
#include <wx/dcclient.h>

// Application Includes
#include "FD_ESR.h"
#include "MESH_LAPLACE.h"
#include "MESH_PARAM.h"
#include "UTILITIES.h"
#include "RUN_STATUS.h"

// Standard Library Header Files
#include <iostream>
#include <fstream>
#include <sstream>

using namespace std;

class TP: public wxDialog
{
	public:

		TP(wxWindow* parent,wxWindowID id=wxID_ANY,const wxPoint& pos=wxDefaultPosition,const wxSize& size=wxDefaultSize);
		virtual ~TP();

		void SetPathToMOD(wxString, wxString);
		wxString pathToMOD;
		wxString MODname;

        void WriteCableFile(wxString);

        void EditExistingCable();
        bool EDIT_EXISTING;

        void tpSchematic();
        void OnHighlightSchematic(wxCommandEvent & event);

        wxString FD_ESR1;
        wxString FD_ESR2;
        wxString FD_ESR3;
        wxString FD_ESR4;
        wxString FD_ESR5;
        wxString FD_ESR6;
        wxString FD_ESR7;
        wxString FD_ESR8;
        wxString FD_ESR9;
        wxString FD_ESR10;
        bool FD_Default;

        wxString FD_ORDER;
        bool FD_log;
        bool FD_lin;
        wxString FD_Fmin;
        wxString FD_Fmax;
        wxString FD_Num;

        wxString MESH_PARAM1;
        wxString MESH_PARAM2;
        wxString MESH_PARAM3;
        wxString MESH_PARAM4;


		//(*Declarations(TP)
		wxStaticText* StaticText10;
		wxStaticText* StaticText22;
		wxStaticText* StaticText9;
		wxStaticText* StaticText20;
		wxTextCtrl* TextCtrl4;
		wxNotebook* Notebook1;
		wxStaticText* StaticText13;
		wxStaticText* StaticText2;
		wxPanel* Panel4;
		wxStaticText* StaticText14;
		wxButton* Button1;
		wxTextCtrl* TextCtrl16;
		wxStaticText* StaticText26;
		wxStaticText* StaticText6;
		wxTextCtrl* TextCtrl6;
		wxStaticText* StaticText19;
		wxStaticText* StaticText8;
		wxStaticText* StaticText11;
		wxCheckBox* CheckBox3;
		wxStaticText* StaticText18;
		wxCheckBox* CheckBox2;
		wxPanel* Panel1;
		wxStaticText* StaticText1;
		wxStaticText* StaticText3;
		wxButton* Button2;
		wxStaticText* StaticText21;
		wxPanel* Panel3;
		wxStaticLine* StaticLine4;
		wxTextCtrl* TextCtrl18;
		wxCheckBox* CheckBox1;
		wxStaticLine* StaticLine2;
		wxStaticText* StaticText23;
		wxStaticText* StaticText24;
		wxTextCtrl* TextCtrl17;
		wxButton* Button3;
		wxTextCtrl* TextCtrl14;
		wxTextCtrl* TextCtrl15;
		wxStaticText* StaticText5;
		wxStaticText* StaticText7;
		wxTextCtrl* TextCtrl13;
		wxStaticLine* StaticLine3;
		wxStaticLine* StaticLine1;
		wxTextCtrl* TextCtrl8;
		wxCheckBox* CheckBox4;
		wxTextCtrl* TextCtrl2;
		wxComboBox* ComboBox1;
		wxTextCtrl* TextCtrl7;
		wxTextCtrl* TextCtrl1;
		wxStaticText* StaticText15;
		wxStaticText* StaticText12;
		wxTextCtrl* TextCtrl9;
		wxPanel* Panel2;
		wxTextCtrl* TextCtrl5;
		wxStaticText* StaticText25;
		wxStaticText* StaticText17;
		wxStaticText* StaticText4;
		wxTextCtrl* TextCtrl3;
		wxTextCtrl* TextCtrl10;
		wxTextCtrl* TextCtrl12;
		wxTextCtrl* TextCtrl11;
		wxStaticText* StaticText16;
		//*)

	protected:

		//(*Identifiers(TP)
		static const long ID_STATICTEXT1;
		static const long ID_TEXTCTRL1;
		static const long ID_STATICTEXT2;
		static const long ID_TEXTCTRL2;
		static const long ID_STATICTEXT3;
		static const long ID_TEXTCTRL3;
		static const long ID_STATICTEXT4;
		static const long ID_TEXTCTRL4;
		static const long ID_STATICTEXT5;
		static const long ID_TEXTCTRL5;
		static const long ID_STATICTEXT6;
		static const long ID_TEXTCTRL6;
		static const long ID_STATICTEXT7;
		static const long ID_TEXTCTRL7;
		static const long ID_STATICTEXT8;
		static const long ID_TEXTCTRL8;
		static const long ID_STATICTEXT9;
		static const long ID_TEXTCTRL9;
		static const long ID_PANEL1;
		static const long ID_STATICTEXT10;
		static const long ID_TEXTCTRL10;
		static const long ID_STATICTEXT11;
		static const long ID_TEXTCTRL11;
		static const long ID_STATICTEXT13;
		static const long ID_STATICTEXT12;
		static const long ID_STATICTEXT14;
		static const long ID_CHECKBOX1;
		static const long ID_PANEL2;
		static const long ID_STATICTEXT23;
		static const long ID_STATICTEXT24;
		static const long ID_STATICTEXT25;
		static const long ID_TEXTCTRL17;
		static const long ID_STATICTEXT26;
		static const long ID_TEXTCTRL18;
		static const long ID_CHECKBOX4;
		static const long ID_STATICTEXT15;
		static const long ID_TEXTCTRL12;
		static const long ID_STATICLINE1;
		static const long ID_STATICLINE2;
		static const long ID_STATICTEXT16;
		static const long ID_TEXTCTRL13;
		static const long ID_STATICTEXT17;
		static const long ID_TEXTCTRL14;
		static const long ID_STATICLINE3;
		static const long ID_STATICLINE4;
		static const long ID_STATICTEXT18;
		static const long ID_TEXTCTRL15;
		static const long ID_STATICTEXT19;
		static const long ID_TEXTCTRL16;
		static const long ID_PANEL3;
		static const long ID_NOTEBOOK1;
		static const long ID_STATICTEXT20;
		static const long ID_CHECKBOX2;
		static const long ID_STATICTEXT22;
		static const long ID_COMBOBOX1;
		static const long ID_STATICTEXT21;
		static const long ID_CHECKBOX3;
		static const long ID_BUTTON1;
		static const long ID_BUTTON2;
		static const long ID_BUTTON3;
		static const long ID_PANEL4;
		//*)

	private:

		//(*Handlers(TP)
		void OnButton1Click(wxCommandEvent& event);
		void OnButton2Click(wxCommandEvent& event);
		void OnButton3Click(wxCommandEvent& event);
		void OnCheckBox1Click(wxCommandEvent& event);
		void OnTextCtrl2Text(wxCommandEvent& event);
		void OnTextCtrl3Text(wxCommandEvent& event);
		void OnTextCtrl4Text(wxCommandEvent& event);
		void OnTextCtrl5Text(wxCommandEvent& event);
		void OnTextCtrl6Text(wxCommandEvent& event);
		void OnTextCtrl7Text(wxCommandEvent& event);
		void OnTextCtrl8Text(wxCommandEvent& event);
		void OnTextCtrl9Text(wxCommandEvent& event);
		void OnTextCtrl10Text(wxCommandEvent& event);
		void OnTextCtrl11Text(wxCommandEvent& event);
		void OnPanel4Paint(wxPaintEvent& event);
		void OnPanel4LeftDClick(wxMouseEvent& event);
		void OnNotebook1PageChanging(wxNotebookEvent& event);
		void OnCheckBox3Click(wxCommandEvent& event);
		void OnPanel4MouseWheel(wxMouseEvent& event);
		void OnComboBox1Selected(wxCommandEvent& event);
		void OnTextCtrl12Text(wxCommandEvent& event);
		void OnTextCtrl13Text(wxCommandEvent& event);
		void OnTextCtrl14Text(wxCommandEvent& event);
		void OnTextCtrl15Text(wxCommandEvent& event);
		void OnTextCtrl16Text(wxCommandEvent& event);
		void OnTextCtrl17Text(wxCommandEvent& event);
		void OnTextCtrl18Text(wxCommandEvent& event);
		void OnCheckBox4Click(wxCommandEvent& event);
		void OnPaint(wxPaintEvent& event);
		void OnInit(wxInitDialogEvent& event);
		//*)

		DECLARE_EVENT_TABLE()
};

#endif
