Advertisement
AntonioVillanueva

ToggleButton en wxWidgets

Jul 9th, 2018
218
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.88 KB | None | 0 0
  1. /Test ToggleButton en wxWidgets Antonio Villanueva
  2. //g++ -Wall -static-libstdc++ -std=c++11 -Wunused-but-set-variable `wx-config --cxxflags` -o hola *.cpp `wx-config --libs`
  3. #include <iostream>
  4. #include "wx/wx.h"
  5. #include <wx/stattext.h>
  6. #include <wx/sizer.h> //Layouts
  7. #include <wx/tglbtn.h> //wxToggleButton
  8.  
  9. //Declaraciones
  10. //----------------------------------------------------------------------
  11. //Cada aplicacion wxWidget define una clase derivada de wxApp
  12. class MiApp:public wxApp
  13. {
  14.     public:
  15.     //Llamado al inicio startup, es como el main en c
  16.     virtual bool OnInit();//main wxWidgets , mas abajo se implementa
  17. };
  18.  
  19. //Declaracion de la clase frame principal
  20.  
  21. //----------------------------------------------------------------------
  22.  
  23. class MiFrame:public wxFrame
  24. {
  25.     public:
  26.     //Constructor de la clase
  27.     MiFrame(const wxString& titulo);
  28.     void OnButtonOk(wxCommandEvent& event);//Manipula boton OK     
  29.    
  30.     // "event handlers" , gestion de eventos
  31.     void BotonPalanca(wxCommandEvent& event);//Eventos wxToggleButton  
  32.            
  33.     private:
  34.  
  35.     wxPanel* ventana;
  36.    
  37.     wxStaticText* label;
  38.     wxStaticText* datos;
  39.     wxToggleButton* toggleButton;//wxToggleButton
  40.  
  41.     /*Macro para informar a wxWidgets de la gestion de eventos
  42.     *Declara la tabla de eventos en esta clase ,mas abajo
  43.     * la implemento entre BEGIN_ y END_EVENT_TABLE
  44.     */
  45.    
  46.     //Declaracion dinamica eventos no utilizo el macro
  47.     //Trabajaremos desde OnInit para eventos dinamicos
  48.     DECLARE_EVENT_TABLE()
  49. };
  50. //----------------------------------------------------------------------
  51. //----------------------------------------------------------------------
  52.  
  53. /*Implementacion , MiApp
  54. *Cuando se crea el objeto MiApp se asigna a la variable global wxTheApp
  55. * pero mejor que hacer un CAST emplear el MACRO  DECLARE_APP despues de
  56. * la declaracion de la clase , wxGetApp retorna una ref. al objeto MiApp
  57. */
  58. DECLARE_APP(MiApp)
  59.  
  60. //Macro que Proporciona a wxWidgets los medios de crear el objeto MiApp
  61. IMPLEMENT_APP(MiApp)
  62.  
  63. //----------------------------------------------------------------------
  64. //----------------------------------------------------------------------
  65. //----------------------------------------------------------------------
  66.  
  67. //Implementacion OnInit,Inicializa la aplicacion
  68.  
  69. bool MiApp::OnInit()
  70. {
  71.     //Crea la ventana principal , una instancia de nuestra clase MiFrame
  72.     //El titulo lo pasamos al constructor envuelto en el macro wxT
  73.     //macro de conversion de strings y char al tipo apropiado
  74.     MiFrame *frame=new MiFrame(wxT("Titulo Test wxWidgets"));
  75.    
  76.     //Mostrar la ventana
  77.     frame->Show(true);
  78.    
  79.     //Arranca el bucle de eventos
  80.     return true ;//Si false limpia sus estructuras y sale
  81. }
  82.  
  83. //----------------------------------------------------------------------
  84.  
  85. const wxWindowIDRef ID_BOTPAL = wxWindow::NewControlId();
  86. //Tabla de eventos para MiFrame DECLARE_EVENT_TABLE() en MiFrame
  87.  
  88. BEGIN_EVENT_TABLE ( MiFrame,wxFrame)
  89.     EVT_TOGGLEBUTTON(ID_BOTPAL,MiFrame::BotonPalanca) //Evento wxToggleButton
  90. END_EVENT_TABLE()
  91.  
  92. //wxID_ANY le dice a Widgets de generar un identificador por su cuenta
  93. MiFrame::MiFrame(const wxString& titulo):wxFrame(NULL,wxID_ANY,wxT("Barra Sup"))
  94. {
  95.     //Crea  wxPanel
  96.     //Create (wxWindow *parent, wxWindowID id=wxID_ANY, const wxPoint &pos=wxDefaultPosition, const wxSize &size=wxDefaultSize, long style=wxTAB_TRAVERSAL, const wxString &name=wxPanelNameStr)
  97.     ventana=new wxPanel(this,wxID_ANY);
  98.                  
  99.     //Crea Sizers wxBoxSizer VERTICAL HORIZONTAL    
  100.     wxBoxSizer* vbox  = new wxBoxSizer(wxVERTICAL); //sizer Vertical
  101.     wxBoxSizer* hbox1 = new wxBoxSizer(wxHORIZONTAL);//sizer Horizontal
  102.     wxBoxSizer* hbox2 = new wxBoxSizer(wxHORIZONTAL);//sizer Horizontal
  103.  
  104.     //Anade la wxBoxSizer los dos wxSizer horizontales  hbox1 & hbox2  
  105.     vbox->Add(hbox1);//Anade wxBoxSizer HORIZONTAL1 al VERTICAL
  106.     vbox->Add(hbox2);//Anade wxBoxSizer HORIZONTAL2 al VERTICAL    
  107.  
  108.     ventana->SetSizer(vbox);//wxPanel utiliza el wxSizer vertical
  109.  
  110.     //inicializa wxStaticText como labels
  111.     label = new wxStaticText( ventana, wxID_ANY, " BARRA -> ");
  112.     datos = new wxStaticText( ventana, wxID_ANY, " ESTADO = ");
  113.        
  114.     wxButton* boton1=new wxButton(ventana,wxID_OK,wxT("OK 1"));
  115.     hbox1->Add(boton1);
  116.      
  117.     //wxToggleButton el boton palanca
  118.     toggleButton=new wxToggleButton(ventana,ID_BOTPAL,wxT("Boton Palanca"),
  119.     wxDefaultPosition,wxDefaultSize);
  120.     toggleButton->SetValue(true);
  121.    
  122.     //Anade componentes a los wxSizer
  123.     hbox1->Add(datos);//Barra superior datos   
  124.     hbox2->Add(label);//Barra inferior una etiqueta
  125.     hbox2->Add(toggleButton);//y finalmente anadimos  el wxTextCtrl
  126. }      
  127.  
  128. void MiFrame::OnButtonOk(wxCommandEvent& event)//Manipula boton OK
  129. {
  130.     //Abre ventana informando ....
  131.     wxMessageBox( wxT("Has hecho click en el boton OK !") );
  132. }
  133.  
  134. void  MiFrame::BotonPalanca(wxCommandEvent& event){//Eventos wxToggleButton
  135.   datos->SetLabel(" ESTADO = " + wxString ( (toggleButton->GetValue()) ? "ON" :" OFF" ) );
  136. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement