/***************************************************************
 * Name:      DialogosMain.cpp
 * Purpose:   Code for Application Frame
 * Author:    Armando L N Delgado (arluidel@gmail.com)
 * Created:   2017-09-01
 * Copyright: Armando L N Delgado (http://www.inf.ufpr.br/nicolui)
 * License:
 **************************************************************/

#include "DialogosMain.h"
#include <wx/msgdlg.h>

//(*InternalHeaders(DialogosDialog)
#include <wx/settings.h>
#include <wx/string.h>
#include <wx/intl.h>
#include <wx/font.h>
//*)

#include <wx/filename.h>
#include <wx/control.h>
#include <wx/sizer.h>
#include <wx/statbox.h>
#include <iostream>
#include <iomanip>

#include "Principal.h"
#include "Arquivo.h"
#include "Utils.h"

//helper functions
enum wxbuildinfoformat {
    short_f, long_f };

wxString wxbuildinfo(wxbuildinfoformat format)
{
    wxString wxbuild(wxVERSION_STRING);

    if (format == long_f )
    {
#if defined(__WXMSW__)
        wxbuild << _T("-Windows");
#elif defined(__UNIX__)
        wxbuild << _T("-Linux");
#endif

#if wxUSE_UNICODE
        wxbuild << _T("-Unicode build");
#else
        wxbuild << _T("-ANSI build");
#endif // wxUSE_UNICODE
    }

    return wxbuild;
}

//(*IdInit(DialogosDialog)
const long DialogosDialog::ID_TEXTCTRL12 = wxNewId();
const long DialogosDialog::ID_TEXTCTRL6 = wxNewId();
const long DialogosDialog::ID_TEXTCTRL7 = wxNewId();
const long DialogosDialog::ID_TEXTCTRL10 = wxNewId();
const long DialogosDialog::ID_TEXTCTRL11 = wxNewId();
const long DialogosDialog::ID_TEXTCTRL9 = wxNewId();
const long DialogosDialog::ID_TEXTCTRL8 = wxNewId();
const long DialogosDialog::ID_TEXTCTRL1 = wxNewId();
const long DialogosDialog::ID_BUTTON6 = wxNewId();
const long DialogosDialog::ID_BUTTON4 = wxNewId();
const long DialogosDialog::ID_BUTTON1 = wxNewId();
const long DialogosDialog::ID_BUTTON3 = wxNewId();
const long DialogosDialog::ID_TEXTCTRL2 = wxNewId();
const long DialogosDialog::ID_TEXTCTRL3 = wxNewId();
const long DialogosDialog::ID_TEXTCTRL4 = wxNewId();
const long DialogosDialog::ID_TEXTCTRL5 = wxNewId();
const long DialogosDialog::ID_TEXTCTRL13 = wxNewId();
const long DialogosDialog::ID_TEXTCTRL14 = wxNewId();
const long DialogosDialog::ID_TEXTCTRL15 = wxNewId();
const long DialogosDialog::ID_BUTTON2 = wxNewId();
const long DialogosDialog::ID_BUTTON5 = wxNewId();
//*)

BEGIN_EVENT_TABLE(DialogosDialog,wxDialog)
    //(*EventTable(DialogosDialog)
    //*)
END_EVENT_TABLE()

DialogosDialog::DialogosDialog(wxWindow* parent,wxWindowID id)
{
    //(*Initialize(DialogosDialog)
    wxBoxSizer* BoxSizer7;
    wxBoxSizer* BoxSizer11;
    wxBoxSizer* BoxSizer12;

    Create(parent, wxID_ANY, _("Exemplo WxDialog"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER, _T("wxID_ANY"));
    SetMinSize(wxSize(-1,-1));
    SetMaxSize(wxSize(-1,-1));
    BoxSizer1 = new wxBoxSizer(wxHORIZONTAL);
    BoxSizer2 = new wxBoxSizer(wxVERTICAL);
    BoxSizer4 = new wxBoxSizer(wxHORIZONTAL);
    StaticBoxSizer10 = new wxStaticBoxSizer(wxVERTICAL, this, _("ENTRADA"));
    BoxSizer5 = new wxBoxSizer(wxHORIZONTAL);
    StaticBoxSizer8 = new wxStaticBoxSizer(wxHORIZONTAL, this, _("N"));
    TextCtrl12 = new wxTextCtrl(this, ID_TEXTCTRL12, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER, wxDefaultValidator, _T("ID_TEXTCTRL12"));
    TextCtrl12->SetMaxLength(15);
    StaticBoxSizer8->Add(TextCtrl12, 0, wxALL, 5);
    BoxSizer5->Add(StaticBoxSizer8, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
    StaticBoxSizer2 = new wxStaticBoxSizer(wxHORIZONTAL, this, _("X"));
    TextCtrl6 = new wxTextCtrl(this, ID_TEXTCTRL6, wxEmptyString, wxDefaultPosition, wxSize(60,100), wxTE_AUTO_SCROLL|wxTE_MULTILINE, wxDefaultValidator, _T("ID_TEXTCTRL6"));
    StaticBoxSizer2->Add(TextCtrl6, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
    BoxSizer5->Add(StaticBoxSizer2, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
    StaticBoxSizer1 = new wxStaticBoxSizer(wxHORIZONTAL, this, _("Y"));
    TextCtrl7 = new wxTextCtrl(this, ID_TEXTCTRL7, wxEmptyString, wxDefaultPosition, wxSize(60,100), wxTE_AUTO_SCROLL|wxTE_PROCESS_ENTER|wxTE_PROCESS_TAB|wxTE_MULTILINE, wxDefaultValidator, _T("ID_TEXTCTRL7"));
    StaticBoxSizer1->Add(TextCtrl7, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
    BoxSizer5->Add(StaticBoxSizer1, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
    StaticBoxSizer10->Add(BoxSizer5, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
    StaticBoxSizer9 = new wxStaticBoxSizer(wxVERTICAL, this, wxEmptyString);
    BoxSizer7 = new wxBoxSizer(wxHORIZONTAL);
    StaticBoxSizer6 = new wxStaticBoxSizer(wxHORIZONTAL, this, _("DSS"));
    TextCtrl10 = new wxTextCtrl(this, ID_TEXTCTRL10, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER, wxDefaultValidator, _T("ID_TEXTCTRL10"));
    TextCtrl10->SetMaxLength(15);
    StaticBoxSizer6->Add(TextCtrl10, 0, wxALL, 5);
    BoxSizer7->Add(StaticBoxSizer6, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
    StaticBoxSizer7 = new wxStaticBoxSizer(wxHORIZONTAL, this, _("DP"));
    TextCtrl11 = new wxTextCtrl(this, ID_TEXTCTRL11, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER, wxDefaultValidator, _T("ID_TEXTCTRL11"));
    TextCtrl11->SetMaxLength(15);
    StaticBoxSizer7->Add(TextCtrl11, 0, wxALL, 5);
    BoxSizer7->Add(StaticBoxSizer7, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
    StaticBoxSizer9->Add(BoxSizer7, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
    StaticBoxSizer5 = new wxStaticBoxSizer(wxVERTICAL, this, _("US"));
    TextCtrl9 = new wxTextCtrl(this, ID_TEXTCTRL9, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER, wxDefaultValidator, _T("ID_TEXTCTRL9"));
    TextCtrl9->SetMaxLength(15);
    StaticBoxSizer5->Add(TextCtrl9, 0, wxALL, 5);
    StaticBoxSizer9->Add(StaticBoxSizer5, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
    BoxSizer6 = new wxBoxSizer(wxHORIZONTAL);
    StaticBoxSizer4 = new wxStaticBoxSizer(wxHORIZONTAL, this, _("E1"));
    TextCtrl8 = new wxTextCtrl(this, ID_TEXTCTRL8, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER, wxDefaultValidator, _T("ID_TEXTCTRL8"));
    TextCtrl8->SetMaxLength(15);
    StaticBoxSizer4->Add(TextCtrl8, 0, wxALL, 5);
    BoxSizer6->Add(StaticBoxSizer4, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
    StaticBoxSizer3 = new wxStaticBoxSizer(wxHORIZONTAL, this, _("E2"));
    TextCtrl1 = new wxTextCtrl(this, ID_TEXTCTRL1, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER, wxDefaultValidator, _T("ID_TEXTCTRL1"));
    TextCtrl1->SetMaxLength(15);
    StaticBoxSizer3->Add(TextCtrl1, 0, wxALL, 5);
    BoxSizer6->Add(StaticBoxSizer3, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
    StaticBoxSizer9->Add(BoxSizer6, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
    StaticBoxSizer10->Add(StaticBoxSizer9, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 0);
    BoxSizer12 = new wxBoxSizer(wxVERTICAL);
    BoxSizer11 = new wxBoxSizer(wxHORIZONTAL);
    Button6 = new wxButton(this, ID_BUTTON6, _("Importar"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON6"));
    BoxSizer11->Add(Button6, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
    Button4 = new wxButton(this, ID_BUTTON4, _("Exportar"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON4"));
    BoxSizer11->Add(Button4, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
    BoxSizer12->Add(BoxSizer11, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
    BoxSizer3 = new wxBoxSizer(wxHORIZONTAL);
    Button1 = new wxButton(this, ID_BUTTON1, _("Anterior"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON1"));
    Button1->Disable();
    BoxSizer3->Add(Button1, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
    Button3 = new wxButton(this, ID_BUTTON3, _("Proximo"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON3"));
    Button3->Disable();
    BoxSizer3->Add(Button3, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
    BoxSizer12->Add(BoxSizer3, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
    StaticBoxSizer10->Add(BoxSizer12, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
    BoxSizer4->Add(StaticBoxSizer10, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
    StaticBoxSizer11 = new wxStaticBoxSizer(wxVERTICAL, this, _("RESULTADOS"));
    StaticBoxSizer12 = new wxStaticBoxSizer(wxHORIZONTAL, this, _("T1"));
    TextCtrl2 = new wxTextCtrl(this, ID_TEXTCTRL2, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER|wxTE_READONLY, wxDefaultValidator, _T("ID_TEXTCTRL2"));
    TextCtrl2->SetMaxLength(15);
    TextCtrl2->Disable();
    TextCtrl2->SetForegroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_MENUTEXT));
    TextCtrl2->SetBackgroundColour(wxColour(251,155,122));
    wxFont TextCtrl2Font(10,wxFONTFAMILY_DEFAULT,wxFONTSTYLE_NORMAL,wxFONTWEIGHT_BOLD,false,_T("Arial"),wxFONTENCODING_DEFAULT);
    TextCtrl2->SetFont(TextCtrl2Font);
    StaticBoxSizer12->Add(TextCtrl2, 0, wxALL, 5);
    StaticBoxSizer11->Add(StaticBoxSizer12, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
    StaticBoxSizer13 = new wxStaticBoxSizer(wxHORIZONTAL, this, _("T2"));
    TextCtrl3 = new wxTextCtrl(this, ID_TEXTCTRL3, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER|wxTE_READONLY, wxDefaultValidator, _T("ID_TEXTCTRL3"));
    TextCtrl3->SetMaxLength(15);
    TextCtrl3->Disable();
    TextCtrl3->SetForegroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_MENUTEXT));
    TextCtrl3->SetBackgroundColour(wxColour(251,155,122));
    wxFont TextCtrl3Font(10,wxFONTFAMILY_DEFAULT,wxFONTSTYLE_NORMAL,wxFONTWEIGHT_BOLD,false,_T("Arial"),wxFONTENCODING_DEFAULT);
    TextCtrl3->SetFont(TextCtrl3Font);
    StaticBoxSizer13->Add(TextCtrl3, 0, wxALL, 5);
    StaticBoxSizer11->Add(StaticBoxSizer13, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
    StaticBoxSizer14 = new wxStaticBoxSizer(wxHORIZONTAL, this, _("T3"));
    TextCtrl4 = new wxTextCtrl(this, ID_TEXTCTRL4, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER|wxTE_READONLY, wxDefaultValidator, _T("ID_TEXTCTRL4"));
    TextCtrl4->SetMaxLength(15);
    TextCtrl4->Disable();
    TextCtrl4->SetForegroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_MENUTEXT));
    TextCtrl4->SetBackgroundColour(wxColour(251,155,122));
    wxFont TextCtrl4Font(10,wxFONTFAMILY_DEFAULT,wxFONTSTYLE_NORMAL,wxFONTWEIGHT_BOLD,false,_T("Arial"),wxFONTENCODING_DEFAULT);
    TextCtrl4->SetFont(TextCtrl4Font);
    StaticBoxSizer14->Add(TextCtrl4, 0, wxALL, 5);
    StaticBoxSizer11->Add(StaticBoxSizer14, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
    StaticBoxSizer15 = new wxStaticBoxSizer(wxHORIZONTAL, this, _("T4"));
    TextCtrl5 = new wxTextCtrl(this, ID_TEXTCTRL5, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER|wxTE_READONLY, wxDefaultValidator, _T("ID_TEXTCTRL5"));
    TextCtrl5->SetMaxLength(15);
    TextCtrl5->Disable();
    TextCtrl5->SetForegroundColour(wxColour(0,0,0));
    TextCtrl5->SetBackgroundColour(wxColour(251,155,122));
    wxFont TextCtrl5Font(10,wxFONTFAMILY_DEFAULT,wxFONTSTYLE_NORMAL,wxFONTWEIGHT_BOLD,false,_T("Arial"),wxFONTENCODING_DEFAULT);
    TextCtrl5->SetFont(TextCtrl5Font);
    StaticBoxSizer15->Add(TextCtrl5, 0, wxALL, 5);
    StaticBoxSizer11->Add(StaticBoxSizer15, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
    StaticBoxSizer18 = new wxStaticBoxSizer(wxHORIZONTAL, this, _("T5"));
    TextCtrl13 = new wxTextCtrl(this, ID_TEXTCTRL13, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER|wxTE_READONLY, wxDefaultValidator, _T("ID_TEXTCTRL13"));
    TextCtrl13->SetMaxLength(15);
    TextCtrl13->Disable();
    TextCtrl13->SetForegroundColour(wxColour(0,0,0));
    TextCtrl13->SetBackgroundColour(wxColour(251,155,122));
    wxFont TextCtrl13Font(10,wxFONTFAMILY_DEFAULT,wxFONTSTYLE_NORMAL,wxFONTWEIGHT_BOLD,false,_T("Arial"),wxFONTENCODING_DEFAULT);
    TextCtrl13->SetFont(TextCtrl13Font);
    StaticBoxSizer18->Add(TextCtrl13, 0, wxALL, 5);
    StaticBoxSizer11->Add(StaticBoxSizer18, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
    StaticBoxSizer17 = new wxStaticBoxSizer(wxHORIZONTAL, this, _("R2"));
    TextCtrl14 = new wxTextCtrl(this, ID_TEXTCTRL14, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER|wxTE_READONLY, wxDefaultValidator, _T("ID_TEXTCTRL14"));
    TextCtrl14->SetMaxLength(15);
    TextCtrl14->Disable();
    TextCtrl14->SetForegroundColour(wxColour(0,0,0));
    TextCtrl14->SetBackgroundColour(wxColour(251,155,122));
    wxFont TextCtrl14Font(10,wxFONTFAMILY_DEFAULT,wxFONTSTYLE_NORMAL,wxFONTWEIGHT_BOLD,false,_T("Arial"),wxFONTENCODING_DEFAULT);
    TextCtrl14->SetFont(TextCtrl14Font);
    StaticBoxSizer17->Add(TextCtrl14, 0, wxALL, 5);
    StaticBoxSizer11->Add(StaticBoxSizer17, 1, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
    StaticBoxSizer16 = new wxStaticBoxSizer(wxHORIZONTAL, this, _("RMS"));
    TextCtrl15 = new wxTextCtrl(this, ID_TEXTCTRL15, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxTE_PROCESS_ENTER|wxTE_READONLY, wxDefaultValidator, _T("ID_TEXTCTRL15"));
    TextCtrl15->SetMaxLength(15);
    TextCtrl15->Disable();
    TextCtrl15->SetForegroundColour(wxColour(0,0,0));
    TextCtrl15->SetBackgroundColour(wxColour(251,155,122));
    wxFont TextCtrl15Font(10,wxFONTFAMILY_DEFAULT,wxFONTSTYLE_NORMAL,wxFONTWEIGHT_BOLD,false,_T("Arial"),wxFONTENCODING_DEFAULT);
    TextCtrl15->SetFont(TextCtrl15Font);
    StaticBoxSizer16->Add(TextCtrl15, 0, wxALL, 5);
    StaticBoxSizer11->Add(StaticBoxSizer16, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
    BoxSizer4->Add(StaticBoxSizer11, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
    BoxSizer2->Add(BoxSizer4, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
    BoxSizer9 = new wxBoxSizer(wxHORIZONTAL);
    Button2 = new wxButton(this, ID_BUTTON2, _("Simular"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON2"));
    BoxSizer9->Add(Button2, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 4);
    Button5 = new wxButton(this, ID_BUTTON5, _("Novo"), wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON5"));
    BoxSizer9->Add(Button5, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
    BoxSizer2->Add(BoxSizer9, 0, wxALL|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
    BoxSizer1->Add(BoxSizer2, 0, wxEXPAND, 0);
    SetSizer(BoxSizer1);
    FileDialog1 = new wxFileDialog(this, _("Select file"), wxEmptyString, wxEmptyString, _("*.dat"), wxFD_SAVE|wxFD_CHANGE_DIR, wxDefaultPosition, wxDefaultSize, _T("wxFileDialog"));
    FileDialog2 = new wxFileDialog(this, _("Select file"), wxEmptyString, wxEmptyString, _("*.dat"), wxFD_OPEN|wxFD_FILE_MUST_EXIST|wxFD_CHANGE_DIR, wxDefaultPosition, wxDefaultSize, _T("wxFileDialog"));
    BoxSizer1->Fit(this);
    BoxSizer1->SetSizeHints(this);

    Connect(ID_TEXTCTRL12,wxEVT_COMMAND_TEXT_ENTER,(wxObjectEventFunction)&DialogosDialog::OnTextCtrl12Text);
    Connect(ID_TEXTCTRL12,wxEVT_COMMAND_TEXT_MAXLEN,(wxObjectEventFunction)&DialogosDialog::OnTextCtrl12Text);
    Connect(ID_TEXTCTRL6,wxEVT_COMMAND_TEXT_UPDATED,(wxObjectEventFunction)&DialogosDialog::OnTextCtrl6Text);
    Connect(ID_TEXTCTRL7,wxEVT_COMMAND_TEXT_UPDATED,(wxObjectEventFunction)&DialogosDialog::OnTextCtrl7Text);
    Connect(ID_TEXTCTRL10,wxEVT_COMMAND_TEXT_ENTER,(wxObjectEventFunction)&DialogosDialog::OnTextCtrl10Text);
    Connect(ID_TEXTCTRL10,wxEVT_COMMAND_TEXT_MAXLEN,(wxObjectEventFunction)&DialogosDialog::OnTextCtrl10Text);
    Connect(ID_TEXTCTRL11,wxEVT_COMMAND_TEXT_ENTER,(wxObjectEventFunction)&DialogosDialog::OnTextCtrl11Text);
    Connect(ID_TEXTCTRL11,wxEVT_COMMAND_TEXT_MAXLEN,(wxObjectEventFunction)&DialogosDialog::OnTextCtrl11Text);
    Connect(ID_TEXTCTRL9,wxEVT_COMMAND_TEXT_ENTER,(wxObjectEventFunction)&DialogosDialog::OnTextCtrl9Text);
    Connect(ID_TEXTCTRL9,wxEVT_COMMAND_TEXT_MAXLEN,(wxObjectEventFunction)&DialogosDialog::OnTextCtrl9Text);
    Connect(ID_TEXTCTRL8,wxEVT_COMMAND_TEXT_ENTER,(wxObjectEventFunction)&DialogosDialog::OnTextCtrl8Text);
    Connect(ID_TEXTCTRL8,wxEVT_COMMAND_TEXT_MAXLEN,(wxObjectEventFunction)&DialogosDialog::OnTextCtrl8Text);
    Connect(ID_TEXTCTRL1,wxEVT_COMMAND_TEXT_ENTER,(wxObjectEventFunction)&DialogosDialog::OnTextCtrl1Text);
    Connect(ID_TEXTCTRL1,wxEVT_COMMAND_TEXT_MAXLEN,(wxObjectEventFunction)&DialogosDialog::OnTextCtrl1Text);
    Connect(ID_BUTTON6,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&DialogosDialog::OnButton6Click);
    Connect(ID_BUTTON4,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&DialogosDialog::OnButton4Click);
    Connect(ID_BUTTON1,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&DialogosDialog::OnButton1Click);
    Connect(ID_BUTTON3,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&DialogosDialog::OnButton3Click);
    Connect(ID_TEXTCTRL2,wxEVT_COMMAND_TEXT_ENTER,(wxObjectEventFunction)&DialogosDialog::OnTextCtrl1Text);
    Connect(ID_TEXTCTRL2,wxEVT_COMMAND_TEXT_MAXLEN,(wxObjectEventFunction)&DialogosDialog::OnTextCtrl1Text);
    Connect(ID_TEXTCTRL3,wxEVT_COMMAND_TEXT_ENTER,(wxObjectEventFunction)&DialogosDialog::OnTextCtrl1Text);
    Connect(ID_TEXTCTRL3,wxEVT_COMMAND_TEXT_MAXLEN,(wxObjectEventFunction)&DialogosDialog::OnTextCtrl1Text);
    Connect(ID_TEXTCTRL4,wxEVT_COMMAND_TEXT_ENTER,(wxObjectEventFunction)&DialogosDialog::OnTextCtrl1Text);
    Connect(ID_TEXTCTRL4,wxEVT_COMMAND_TEXT_MAXLEN,(wxObjectEventFunction)&DialogosDialog::OnTextCtrl1Text);
    Connect(ID_TEXTCTRL5,wxEVT_COMMAND_TEXT_ENTER,(wxObjectEventFunction)&DialogosDialog::OnTextCtrl1Text);
    Connect(ID_TEXTCTRL5,wxEVT_COMMAND_TEXT_MAXLEN,(wxObjectEventFunction)&DialogosDialog::OnTextCtrl1Text);
    Connect(ID_TEXTCTRL13,wxEVT_COMMAND_TEXT_ENTER,(wxObjectEventFunction)&DialogosDialog::OnTextCtrl1Text);
    Connect(ID_TEXTCTRL13,wxEVT_COMMAND_TEXT_MAXLEN,(wxObjectEventFunction)&DialogosDialog::OnTextCtrl1Text);
    Connect(ID_TEXTCTRL14,wxEVT_COMMAND_TEXT_ENTER,(wxObjectEventFunction)&DialogosDialog::OnTextCtrl1Text);
    Connect(ID_TEXTCTRL14,wxEVT_COMMAND_TEXT_MAXLEN,(wxObjectEventFunction)&DialogosDialog::OnTextCtrl1Text);
    Connect(ID_TEXTCTRL15,wxEVT_COMMAND_TEXT_ENTER,(wxObjectEventFunction)&DialogosDialog::OnTextCtrl1Text);
    Connect(ID_TEXTCTRL15,wxEVT_COMMAND_TEXT_MAXLEN,(wxObjectEventFunction)&DialogosDialog::OnTextCtrl1Text);
    Connect(ID_BUTTON2,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&DialogosDialog::OnButton2Click);
    Connect(ID_BUTTON5,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&DialogosDialog::OnButton5Click);
    //*)

    //TextCtrl6->Connect(ID_TEXTCTRL6,wxEVT_KILL_FOCUS,(wxObjectEventFunction)&DialogosDialog::OnTextCtrl6Text, NULL, this);
    //TextCtrl7->Connect(ID_TEXTCTRL7,wxEVT_KILL_FOCUS,(wxObjectEventFunction)&DialogosDialog::OnTextCtrl7Text, NULL, this);

    limpaEntrada(this);

    // US
    *TextCtrl9 << 0.0;
    //E1
    *TextCtrl8 << 0.0;
    //E2
    *TextCtrl1 << 0.0;

    limpaSaida(this);
}

DialogosDialog::~DialogosDialog()
{
    //(*Destroy(DialogosDialog)
    //*)
}

// Importar de ARQUIVO de simulação
void DialogosDialog::OnButton6Click(wxCommandEvent& event)
{
    if(FileDialog2->ShowModal() == wxID_OK) {
        if (readArq(FileDialog2->GetPath().ToStdString())) {
            Button1->Enable();
            Button3->Enable();

            limpaEntrada(this);
            regIdx = 0;
            SetEntrada(this);
            limpaSaida(this);
        }
        else {
            Button1->Disable();
            Button3->Disable();
        }
    }
}

// Exportar para ARQUIVO de simulação
void DialogosDialog::OnButton4Click(wxCommandEvent& event)
{
    if(FileDialog1->ShowModal() == wxID_OK)
        saveArq(FileDialog1->GetPath().ToStdString());
}

//ANTERIOR
void DialogosDialog::OnButton1Click(wxCommandEvent& event)
{
    limpaEntrada(this);

    regIdx = (--regIdx + simul.size()) % simul.size();

    SetEntrada(this);
    limpaSaida(this);
}

// PRÓXIMO
void DialogosDialog::OnButton3Click(wxCommandEvent& event)
{
    limpaEntrada(this);

    regIdx = ++regIdx % simul.size();

    SetEntrada(this);
    limpaSaida(this);
}

// EXECUTAR
void DialogosDialog::OnButton2Click(wxCommandEvent& event)
{
    limpaSaida(this);
    principal();
    SetSaida(this);
}

// NOVO
void DialogosDialog::OnButton5Click(wxCommandEvent& event)
{
    limpaEntrada(this);
    Button1->Disable();
    Button3->Disable();
    limpaSaida(this);
}

// N
void DialogosDialog::OnTextCtrl12Text(wxCommandEvent& event)
{
    validaCampo(TextCtrl12, TextCtrl6, &simul[regIdx].N);
}

// X
void DialogosDialog::OnTextCtrl6Text(wxCommandEvent& event)
{
    procLista(TextCtrl6, TextCtrl7, simul[regIdx].X);
}

// Y
void DialogosDialog::OnTextCtrl7Text(wxCommandEvent& event)
{
    procLista(TextCtrl7, TextCtrl10, simul[regIdx].Y);
}

// DSS
void DialogosDialog::OnTextCtrl10Text(wxCommandEvent& event)
{
    validaCampo(TextCtrl10, TextCtrl11, &simul[regIdx].DSS);
}

// DP
void DialogosDialog::OnTextCtrl11Text(wxCommandEvent& event)
{
    validaCampo(TextCtrl11, TextCtrl9, &simul[regIdx].DP);
}

// US
void DialogosDialog::OnTextCtrl9Text(wxCommandEvent& event)
{
    validaCampo(TextCtrl9, TextCtrl8, &simul[regIdx].US);
}

// E1
void DialogosDialog::OnTextCtrl8Text(wxCommandEvent& event)
{
    validaCampo(TextCtrl8, TextCtrl1, &simul[regIdx].E1);
}

// E2
void DialogosDialog::OnTextCtrl1Text(wxCommandEvent& event)
{
    validaCampo(TextCtrl1, TextCtrl1, &simul[regIdx].E2);
    Button2->SetFocus();
}


