
#ifndef MYAPP_H
#define MYAPP_H

#include "wx/wx.h"
#include <stdlib.h>
#include <iostream>
#include <exception>
#include "Interficie_Terra.h"
#include "Servidor_Xmlrpc_Terra.h"
#include "Flying_Team_Terra.h"
#include <ptime.h>
#include <pasync.h>
////
//// DEFINICION DE CLASES
////

// Clase principal
class MyApp: public wxApp
{
    virtual bool OnInit();
};

// Ventana principal
class MyFrame: public wxFrame
{
public:
    // Constructor
    MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size);

    // Callbacks de eventos
    void OnQuit(wxCommandEvent& event);
    void OnIniciarButton(wxCommandEvent& command);
    void OnFinalizarButton(wxCommandEvent& command);
    void OnActivarMovimientoButton(wxCommandEvent& command);
    void OnDesactivarMovimientoButton(wxCommandEvent& command);
    void OnGirarRobotButton(wxCommandEvent& command);
    void OnFotoButton(wxCommandEvent& command);
    void OnGirarCamarasButton(wxCommandEvent& command);
    void OnCamaraActivaButton(wxCommandEvent& command);
    void OnExitButton(wxCommandEvent& command);
    
    // Control de las etiquetas de estado
    void MyFrame::SetPosicionRobot(wxString value);
    void MyFrame::SetAnglesRobot(wxString value);
    void MyFrame::SetMaterial(wxString value);
    void MyFrame::SetNivelHierro(wxString value);
    void MyFrame::SetNivelLuz(wxString value);
    void MyFrame::SetTemperatura(wxString value);
    void MyFrame::SetNivelBateria(wxString value);
    void MyFrame::SetNivelXRay(wxString value);
    void MyFrame::SetImagen(wxString value);
    void MyFrame::Alarm(wxString value);

    // Asociación de eventos
    DECLARE_EVENT_TABLE()
    
private:
        // Elementos gráficos
        wxButton *IniciarButton;
        wxButton *FinalizarButton;
        wxButton *ActivarMovimientoButton;
        wxButton *DesactivarMovimientoButton;
        wxButton *GirarRobotButton;
        wxButton *FotoButton;
        wxButton *GirarCamarasButton;
        wxButton *CamaraActivaButton;
        wxButton *ExitButton;
        //wxChoice *camara;
        wxChoice *camaraActiva;
        wxChoice *grados1;
        wxChoice *grados2;
        wxStaticBitmap *foto;
        wxStaticText *posicionRobot;
        wxStaticText *anglesRobot;
        wxStaticText *material;
        wxStaticText *nivelHierro;
        wxStaticText *nivelLuz;
        wxStaticText *temperatura;
        wxStaticText *nivelBateria;
        wxStaticText *nivelXRay;
};

// ID para identificar eventos
enum {
     ID_Quit = 1,
     BUTTON_INICIAR,
     BUTTON_FINALIZAR,
     BUTTON_ACTIVAR_MOVIMIENTO,
     BUTTON_DESACTIVAR_MOVIMIENTO,
     BUTTON_GIRAR_ROBOT,
     BUTTON_FOTO,
     BUTTON_GIRAR_CAMARAS,
     BUTTON_CAMARA_ACTIVA,
     BUTTON_EXIT
};

// Asociación de eventos
BEGIN_EVENT_TABLE(MyFrame, wxFrame)
    EVT_MENU(ID_Quit, MyFrame::OnQuit)
    EVT_BUTTON(BUTTON_INICIAR, MyFrame::OnIniciarButton)
    EVT_BUTTON(BUTTON_FINALIZAR, MyFrame::OnFinalizarButton)
    EVT_BUTTON(BUTTON_ACTIVAR_MOVIMIENTO, MyFrame::OnActivarMovimientoButton)
    EVT_BUTTON(BUTTON_DESACTIVAR_MOVIMIENTO, MyFrame::OnDesactivarMovimientoButton)
    EVT_BUTTON(BUTTON_GIRAR_ROBOT, MyFrame::OnGirarRobotButton)
    EVT_BUTTON(BUTTON_FOTO, MyFrame::OnFotoButton)
    EVT_BUTTON(BUTTON_CAMARA_ACTIVA, MyFrame::OnCamaraActivaButton)
    EVT_BUTTON(BUTTON_GIRAR_CAMARAS, MyFrame::OnGirarCamarasButton)
    EVT_BUTTON(BUTTON_EXIT, MyFrame::OnExitButton)
END_EVENT_TABLE()
//// FIN DEFINICION DE CLASES

////////////////



#endif