#include "A05_F01.h"

IMPLEMENT_APP(MyApp)

enum idEjemplo {
   ID_CHOICE = 0,
   ID_STATICTEXT,
   ID_COMBOBOX,
   ID_CHECKBOX_BL,
   ID_CHECKBOX_IT,
   ID_CHECKBOX_UN,
   ID_LISTBOX,
   ID_RADIOBOX,
   ID_TEXTCTRL,
   ID_EXIT
};

BEGIN_EVENT_TABLE(MyFrame, wxFrame)
   EVT_CHOICE(ID_CHOICE, MyFrame::OnChoice)
   EVT_COMBOBOX(ID_COMBOBOX, MyFrame::OnComboBox)
   EVT_CHECKBOX(ID_CHECKBOX_BL, MyFrame::OnCheckBoxBold)
   EVT_CHECKBOX(ID_CHECKBOX_IT, MyFrame::OnCheckBoxItalic)
   EVT_CHECKBOX(ID_CHECKBOX_UN, MyFrame::OnCheckBoxUnderline)
   EVT_LISTBOX(ID_LISTBOX, MyFrame::OnListBox)
   EVT_RADIOBOX(ID_RADIOBOX, MyFrame::OnRadioBox)
   EVT_BUTTON(ID_EXIT, MyFrame::OnExit)
END_EVENT_TABLE()

bool MyApp::OnInit()
{
   MyFrame *frame = new MyFrame(wxT("Ejemplo
   Capitulo 05"));
   
   frame->Show(true);
   
   return true;
}

MyFrame::MyFrame(const wxString& title)
       : wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(450,300))
{
   wxArrayString chString, cbString, lbString, rbString;
   chString.Add(wxT("Predeterminado
   1"));
   chString.Add(wxT("Predeterminado
   2"));
   chString.Add(wxT("Predeterminado
   3"));
   cbString.Add(wxT("Arial"));
   cbString.Add(wxT("Times
   New Roman"));
   cbString.Add(wxT("Sans
   Serif"));
   lbString.Add(wxT("8"));
   lbString.Add(wxT("12"));
   lbString.Add(wxT("16"));
   lbString.Add(wxT("20"));
   rbString.Add(wxT("Negro"));
   rbString.Add(wxT("Azul"));
   
   lblFont = new wxStaticText(this, ID_STATICTEXT, wxT("Fuente:"), wxPoint(310,85), wxDefaultSize);
   lblchoice = new wxStaticText(this, ID_STATICTEXT, wxT("Predefinidos:"), wxPoint(310,10), wxDefaultSize);
   lblStyle = new wxStaticText(this, ID_STATICTEXT, wxString::FromUTF8("Estilos:"), wxPoint(165,10), wxDefaultSize);
   lblSize = new wxStaticText(this, ID_STATICTEXT, wxString::FromUTF8("TamaƱo:"), wxPoint(30,10), wxDefaultSize);
   lblText = new wxStaticText(this, ID_STATICTEXT, wxT("Texto:"), wxPoint(10,100), wxDefaultSize);
   choice = new wxChoice(this, ID_CHOICE, wxPoint(310,25), wxDefaultSize, chString);
   cbFont = new wxComboBox(this, ID_COMBOBOX, wxT("Arial"), wxPoint(310,100), wxDefaultSize, cbString, wxCB_READONLY);
   lbSize = new wxListBox(this, ID_LISTBOX, wxPoint(45,25), wxSize(30,65), lbString, wxLB_SINGLE);
   ckStyleBl = new wxCheckBox(this, ID_CHECKBOX_BL, wxT("Negrita"), wxPoint(165,25), wxDefaultSize);
   ckStyleIt = new wxCheckBox(this, ID_CHECKBOX_IT, wxT("Cursiva"), wxPoint(165,45), wxDefaultSize);
   ckStyleUn = new wxCheckBox(this, ID_CHECKBOX_UN, wxT("Subrayado"), wxPoint(165,65), wxDefaultSize);
   rbColor = new wxRadioBox(this, ID_RADIOBOX, wxT("Colores"), wxPoint(310,165), wxDefaultSize, rbString, 2, 1);
   tcText = new xTextCtrl(this, ID_TEXTCTRL, wxEmptyString, wxPoint(10,115), wxSize(275,150), wxTE_NO_VSCROLL|wxTE_MULTILINE);
   btnExit = new wxButton(this, ID_EXIT, wxT("&Salir"), wxPoint(325,235), wxDefaultSize);
}

void MyFrame::OnChoice(wxCommandEvent& event)
{
  if(choice->GetSelection()==0)
    tcText->SetFont(wxFont(12,tcText->GetFont().GetFamily(),wxFONTSTYLE_ITALIC,tcText->GetFont().GetWeight(),tcText->GetFont.GetUnderlined(),wxT("")));
  else
    if(choice->GetSelection()==1)
      tcText->SetFont(wxFont(8,wxFONTFAMILY_SWISS,tcText->GetFont().GetStyle(),wxFONTWEIGHT_BOLD,tcText->GetFont.GetUnderlined(),wxT("")));
    else
      if(choice->GetSelection()==2)
        tcText->SetFont(wxFont(16,wxFONTFAMILY_ROMAN,tcText->GetFont().GetStyle(),tcText->GetFont().GetWeight(),1,wxT("")));
}
>
void MyFrame::OnListBox(wxCommandEvent& event)
{
  if(lbSize->IsSelected(0))
    tcText->SetFont(wxFont(8,tcText->GetFont().GetFamily(),tcText->GetFont().GetStyle(),tcText->GetFont().GetWeight(),tcText->GetFont().GetUnderlined(),wxT("")));
  else
    if(lbSize->IsSelected(1))
      tcText->SetFont(wxFont(12,tcText->GetFont().GetFamily(),tcText->GetFont().GetStyle(),tcText->GetFont().GetWeight(),tcText->GetFont().GetUnderlined(),wxT("")));
    else
      if(lbSize->IsSelected(2))
        tcText->SetFont(wxFont(16,tcText->GetFont().GetFamily(),tcText->GetFont().GetStyle(),tcText->GetFont().GetWeight(),tcText->GetFont().GetUnderlined(),wxT("")));
      else
        if(lbSize->IsSelected(3))
          tcText->SetFont(wxFont(20,tcText->GetFont().GetFamily(),tcText->GetFont().GetStyle(),tcText->GetFont().GetWeight(),tcText->GetFont().GetUnderlined(),wxT("")));
}

void MyFrame::OnCheckBoxBold(wxCommandEvent& event)
{
  if(ckStyleBl->IsChecked())
    tcText->SetFont(wxFont(tcText->GetFont().GetPointSize(),tcText->GetFont().GetFamily(),tcText->GetFont().GetStyle(),wxFONTWEIGHT_BOLD,tcText->GetFont().GetUnderlined(),wxT("")));
  else
    tcText->SetFont(wxFont(tcText->GetFont().GetPointSize(),tcText->GetFont().GetFamily(),tcText->GetFont().GetStyle(),wxFONTWEIGHT_NORMAL,tcText->GetFont().GetUnderlined(),wxT("")));
}

void MyFrame::OnCheckBoxItalic(wxCommandEvent& event)
{
  if(ckStyleIt->IsChecked())
    tcText->SetFont(wxFont(tcText->GetFont().GetPointSize(),tcText->GetFont().GetFamily(),wxFONTSTYLE_ITALIC,tcText->GetFont().GetWeight(),tcText->GetFont().GetUnderlined(),wxT("")));
  else
    tcText->SetFont(wxFont(tcText->GetFont().GetPointSize(),tcText->GetFont().GetFamily(),wxFONTSTYLE_NORMAL,tcText->GetFont().GetWeight(),tcText->GetFont().GetUnderlined(),wxT("")));
}

void MyFrame::OnCheckBoxUnderline(wxCommandEvent& event)
{
  if(ckStyleUn->IsChecked())
    tcText->SetFont(wxFont(tcText->GetFont().GetPointSize(),tcText->GetFont().GetFamily(),tcText->GetFont().GetStyle(),tcText->GetFont().GetWeight(),1,wxT("")));
  else
    tcText->SetFont(wxFont(tcText->GetFont().GetPointSize(),tcText->GetFont().GetFamily(),tcText->GetFont().GetStyle(),tcText->GetFont().GetWeight(),0,wxT("")));
}

void MyFrame::OnComboBox(wxCommandEvent& event)
{
  if(cbFont->GetSelection()==0);
    tcText->SetFont(wxFont(tcText->GetFont().GetPointSize(),tcText->GetFont().GetFamily(),tcText->GetFont().GetStyle(),tcText->GetFont().GetWeight(),tcText->GetFont.GetUnderlined(),wxT("")));
  else
    if(cbFont->GetSelection()==1);
      tcText->SetFont(wxFont(tcText->GetFont().GetPointSize(),wxFONTFAMILY_ROMAN,tcText->GetFont().GetStyle(),tcText->GetFont().GetWeight(),tcText->GetFont.GetUnderlined(),wxT("")));
    else
      if(cbFont->GetSelection()==2)
        tcText->SetFont(wxFont(tcText->GetFont().GetPointSize(),wxFONTFAMILY_SWISS,tcText->GetFont().GetStyle(),tcText->GetFont().GetWeight(),tcText->GetFont.GetUnderlined(),wxT("")));
}

void MyFrame::OnRadioBox(wxCommandEvent& event)
{
  if(rbColor->GetSelection()==0)
    tcText->SetForegroundColour(wxColour(0,0,0));
  else
    if(rbColor->GetSelection()==1)
      tcText->SetForegroundColour(wxColour(0,0,255));
}

void MyFrame::OnExit(wxCommandEvent& event)
{
   Close();
}