Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Implementacion DialogoPersonal Antonio Villanueva
- * * se tiene que utilizar con DialogoPersonal.h donde estan las definiciones https://pastebin.com/2R8zD1jG
- * //g++ -Wall -static-libstdc++ -std=c++11 -Wunused-but-set-variable `wx-config --cxxflags` -o DialogPers *.cpp `wx-config --libs`
- */
- #include "wx/valtext.h"
- #include "wx/valgen.h"
- #include "DialogoPersonal.h"
- //----------------------------------------------------------------------
- #include <wx/image.h>
- IMPLEMENT_APP(DialogoPersonalApp);
- bool DialogoPersonalApp::OnInit()
- {
- bool wxsOK = true;
- wxInitAllImageHandlers();
- if ( wxsOK )
- {
- DialogoPersonal Dlg(0); //Instancia la DialogoPersonal
- SetTopWindow(&Dlg);
- Dlg.ShowModal();
- wxsOK = false;
- }
- return wxsOK;
- }
- //----------------------------------------------------------------------
- IMPLEMENT_CLASS(DialogoPersonal,wxDialog)
- //Definiciones de la tabla de eventos, funciones asociadas a los eventos
- BEGIN_EVENT_TABLE(DialogoPersonal,wxDialog)
- EVT_UPDATE_UI(ID_VOTO,DialogoPersonal::OnVotoUpdate)
- EVT_BUTTON(ID_RESET,DialogoPersonal::OnResetClick)
- EVT_BUTTON(ID_HELP,DialogoPersonal::OnHelpClick)
- EVT_BUTTON(ID_OK,DialogoPersonal::OnOK)
- EVT_BUTTON(ID_CANCELAR,DialogoPersonal::OnCancelar)
- END_EVENT_TABLE()
- //Constructores de DialogoPersonal
- DialogoPersonal::DialogoPersonal(){
- Init();
- }
- DialogoPersonal::DialogoPersonal(wxWindow* parent,
- wxWindowID id ,const wxString& caption,
- const wxPoint& pos,const wxSize& size ,long style){
- Init();
- Crea(parent,id,caption,pos,size,style);
- }
- //Inicializacion por defecto de las variables miembro m_
- //Inicializar en constructor......
- void DialogoPersonal::DialogoPersonal::Init(){
- m_nombre=wxEmptyString;//nombre por defecto vacio
- m_edad=25;
- m_sexo=false;
- m_voto=false;
- }
- //Creacion
- bool DialogoPersonal::Crea(wxWindow* parent,wxWindowID id,
- const wxString& caption,const wxPoint& pos,const wxSize& size,long style){
- //Para extra estilos , antes de la creacion del Dialogo
- SetExtraStyle(wxWS_EX_BLOCK_EVENTS| wxDIALOG_EX_CONTEXTHELP);
- //Si error en la funcion wxDialog::Create retorna falso opciones DEFECTO minimizar y resizer ...
- if (! wxDialog::Create(parent,id,caption,pos,size,wxDEFAULT_DIALOG_STYLE |wxMINIMIZE_BOX|wxRESIZE_BORDER)){return false;}
- CreaControles();
- SetDialogHelp();
- SetDialogValidators();
- //Ajusta el Dialogo al minimo tamano dictado por sizers
- GetSizer()->Fit (this);
- //Asegua el tamnao minimo del Dialogo
- GetSizer()->SetSizeHints(this);
- //Centra el Dialogo en el parent o si no existe en la pantalla
- Centre();
- return true;
- };
- //Control creacion de DialogoPersonal
- void DialogoPersonal::CreaControles(){
- //wxBoxSizer Superior
- wxBoxSizer* topSizer=new wxBoxSizer(wxVERTICAL);
- this->SetSizer(topSizer);
- //Segundo wxBoxSizer para dar mas espacio alrededor de los controles
- wxBoxSizer* boxSizer=new wxBoxSizer(wxVERTICAL);
- //Se anade al wxBoxSizer Superior topSizer
- topSizer->Add(boxSizer,0,wxALIGN_CENTER_HORIZONTAL|wxALL,5);
- //Mensaje del Dialogo
- wxStaticText* descr=new wxStaticText(this,wxID_STATIC,
- wxT("Introduzca su nombre ,edad,sexo y su intencion de voto"),
- wxDefaultPosition,wxDefaultSize,0);
- boxSizer->Add(descr,0,wxALIGN_LEFT| wxALL,5);
- //Espacio
- //boxSizer->Add(5,5,0,wxALIGN_CENTER_HORIZONTAL|wxALL,5);
- boxSizer->AddSpacer(5);
- //Label text control
- wxStaticText* nombreLabel=new wxStaticText(this,wxID_STATIC,
- wxT("&Nombre "),wxDefaultPosition,wxDefaultSize,0);
- boxSizer->Add(nombreLabel);
- //wxTextControl ...el control de texto
- wxTextCtrl* nombreCtrl=new wxTextCtrl (this,ID_NOMBRE,wxT("Icaro"),
- wxDefaultPosition,wxDefaultSize,0);
- boxSizer->Add(nombreCtrl,0,wxGROW|wxALL,5);//Se expande
- //wxBoxSizer Horizontal para guardar las distintas selecciones edad,sexo,voto
- wxBoxSizer* SeleccionHor=new wxBoxSizer(wxHORIZONTAL);
- boxSizer->Add(SeleccionHor,0,wxGROW|wxALL,5);
- //wxSpinControl seleccion de Edad
- wxSpinCtrl* edadSpin=new wxSpinCtrl(this,ID_EDAD,wxT("&Edad :"),
- wxDefaultPosition,wxSize(60,-1),wxSP_ARROW_KEYS,0,120,25);
- SeleccionHor->Add(edadSpin,0,wxALIGN_CENTER_VERTICAL|wxALL,5);
- //Etiqueta control de sexo
- wxStaticText* sexLabel=new wxStaticText(this,wxID_STATIC,wxT("&Sex"),
- wxDefaultPosition,wxDefaultSize,0);
- SeleccionHor->Add(sexLabel,0,wxALIGN_CENTER_VERTICAL|wxALL,5);
- //Crea un array de wxStrings con dos selecciones Macho Hembra
- wxString sexStrings[]={wxT("Macho"),wxT("Hembra")};
- wxChoice* sexChoice=new wxChoice(this,ID_SEXO,wxDefaultPosition,wxSize(80,-1),
- WXSIZEOF(sexStrings),sexStrings,0);
- sexChoice->SetStringSelection(wxT("Hembra"));//Seleccion wxString por defecto
- SeleccionHor->Add(sexChoice,0,wxALIGN_CENTER_VERTICAL|wxALL,5);//Anade Choice
- //Ande un espacio ... Spacer wxSizer::Add(size, size, 0)
- boxSizer->Add(5,5,1,wxALL,5);//ERROR !!!!!!!
- //wxCheckBox VOTO
- wxCheckBox* votoCheck=new wxCheckBox(this,ID_VOTO,wxT("&Voto"),wxDefaultPosition,wxDefaultSize,0);
- votoCheck->SetValue(true);//Seleccion por defecto
- SeleccionHor->Add(votoCheck,0,wxALIGN_CENTER_VERTICAL|wxALL,5);
- //SeleccionHor->AddSpacer(5);
- //Una linea divisora antes de los botones OK y CANCEL la ponemos en el boxSizer casi principal
- wxStaticLine* linea=new wxStaticLine(this,wxID_STATIC,wxDefaultPosition,wxDefaultSize,wxLI_HORIZONTAL);
- boxSizer->Add(linea,0,wxGROW|wxALL,5);
- //wxBoxSizer para los BOTONES inferiores OK,RESET,CANCEL,HELP
- wxBoxSizer* Botonera=new wxBoxSizer(wxHORIZONTAL);
- boxSizer->Add(Botonera,0, wxALL,5);
- //BOTONES RESET OK CANCEL HELP
- wxButton* botonReset=new wxButton( this, ID_RESET , wxT("&Reset") ,wxDefaultPosition , wxDefaultSize , 0);
- Botonera->Add(botonReset,0,wxALL,5);//RESET
- wxButton* botonHelp=new wxButton( this, ID_HELP , wxT("&Help") ,wxDefaultPosition , wxDefaultSize , 0);
- Botonera->Add(botonHelp,0,wxALL,5);//HELP
- wxButton* botonOk=new wxButton( this, ID_OK , wxT("&Ok") ,wxDefaultPosition , wxDefaultSize , 0);
- Botonera->Add(botonOk,0,wxALL,5);//OK
- wxButton* botonCancel=new wxButton( this, ID_CANCELAR , wxT("&Cancel") ,wxDefaultPosition , wxDefaultSize , 0);
- Botonera->Add(botonCancel,0,wxALL,5);//CANCEL
- }
- //Fija los "validators" para los controles de Dialogo
- void DialogoPersonal::SetDialogValidators(){
- FindWindow(ID_NOMBRE)->SetValidator(wxTextValidator(wxFILTER_ALPHA,& m_nombre));
- FindWindow(ID_EDAD)->SetValidator(wxGenericValidator(& m_edad));
- FindWindow(ID_SEXO)->SetValidator(wxGenericValidator(& m_sexo));
- FindWindow(ID_VOTO)->SetValidator(wxGenericValidator(& m_voto));
- }
- //Fija el texto de ayuda para los controles de dialogo
- void DialogoPersonal::SetDialogHelp(){
- wxString nombreHelp=wxT(" Entre su nombre ");
- wxString edadHelp=wxT(" Indique su edad ");
- wxString sexoHelp=wxT(" Especifique su sexo ");
- wxString votoHelp=wxT("Marcar si quiere votar ");
- FindWindow(ID_NOMBRE)->SetHelpText(nombreHelp);
- FindWindow(ID_NOMBRE)->SetToolTip(nombreHelp);
- FindWindow(ID_EDAD)->SetHelpText(edadHelp);
- FindWindow(ID_EDAD)->SetToolTip(edadHelp);
- FindWindow(ID_SEXO)->SetHelpText(sexoHelp);
- FindWindow(ID_SEXO)->SetToolTip(sexoHelp);
- FindWindow(ID_VOTO)->SetHelpText(votoHelp);
- FindWindow(ID_VOTO)->SetToolTip(votoHelp);
- }
- //wxEVT_UPDATE_UI gestion eventos for ID_CHECKBOX
- void DialogoPersonal::OnVotoUpdate(wxUpdateUIEvent& event){
- wxSpinCtrl* ctrlEdad=(wxSpinCtrl*) FindWindow(ID_EDAD);
- if (ctrlEdad->GetValue() <18){ //Edad mayor de edad ?
- event.Enable(false);//Por defecto lo deja en falso
- event.Check(false);//Sin posibilidad de checkeo
- }else{ event.Enable(true);} //Verdadero
- }
- //wxEVT_COMMAND_BUTTON_CLICKED gestion eventos para ID_RESET
- void DialogoPersonal::OnResetClick(wxCommandEvent& event){
- Init();
- TransferDataToWindow();
- wxMessageBox (wxT("t e s t "));
- }
- //wxEVT_COMMAND_BUTTON_CLICKED gestion eventos para ID_HELP
- void DialogoPersonal::OnHelpClick(wxCommandEvent& event){
- //Un message Box ...
- wxString helpText=wxT("Indique nombre edad y sexo \n")
- wxT("Asi como su voto \n ");
- wxMessageBox (helpText,wxT("Ayuda "),wxOK|wxICON_INFORMATION,this);
- }
- //wxEVT_COMMAND_BUTTON_CLICKED event handler para ID_OK
- void DialogoPersonal::OnOK(wxCommandEvent& event){
- //Antes valida y transfiere datos de la ventana a las variables
- if (Validate () && TransferDataFromWindow()) {
- wxMessageBox (m_nombre +
- " , "+ wxString::Format(wxT("%i"),m_edad)+
- " , "+ wxString::Format(wxT("%i"),m_sexo)+
- " , "+ wxString::Format(wxT("%i"),m_voto)
- );
- }
- }
- //wxEVT_COMMAND_BUTTON_CLICKED event handler para ID_CANCEL
- void DialogoPersonal::OnCancelar(wxCommandEvent& event){
- wxMessageBox (wxT("Close "));
- Close(); //Genera wxCloseEvent
- }
- DialogoPersonal::~DialogoPersonal(){wxMessageBox (wxT("Destructor"));} //Destructor
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement