Advertisement
AntonioVillanueva

Notebook en wxWidgets

Jun 25th, 2018
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 8.50 KB | None | 0 0
  1. //Test wxNotebook wxSizer,wxButton,wxBitmapButton,wxStaticText, wxChoice  en wxWidgets Antonio Villanueva
  2.  
  3. //g++ -Wall -static-libstdc++ -std=c++11 -Wunused-but-set-variable `wx-config --cxxflags` -o hola *.cpp `wx-config --libs`
  4. //Declara la clase aplicacion
  5.  
  6. //#include "imagen.xpm" //Imagen en formato xpm
  7. #include <iostream>
  8. #include "wx/wx.h"
  9. #include <wx/imaglist.h> //wxImageList carga imagenes xpm
  10. #include "copy.xpm" //Imagenes xpm 16x15
  11. #include "cut.xpm"//Imagenes xpm 16x15
  12. #include "paste.xpm"//Imagenes xpm 16x15
  13.  
  14. //#include "print.xpm" //Imagen impresora
  15.  
  16. #include <wx/notebook.h> //un notebook
  17. //#include <wx/app.h>
  18. //using namespace std;
  19.  
  20. #include <wx/stattext.h>
  21. #include <wx/sizer.h> //Layouts
  22.  
  23. wxString title ("Barra Superior");
  24.  
  25. //Declaraciones
  26. //----------------------------------------------------------------------
  27. //Cada aplicacion wxWidget define una clase derivada de wxApp
  28. class MiApp:public wxApp
  29. {
  30.     public:
  31.     //Llamado al inicio startup, es como el main en c
  32.     virtual bool OnInit();//main wxWidgets , mas abajo se implementa
  33. };
  34.  
  35. //Declaracion de la clase frame principal
  36.  
  37. //----------------------------------------------------------------------
  38.  
  39. class MiFrame:public wxFrame
  40. {
  41.     public:
  42.     //Constructor de la clase
  43.     MiFrame(const wxString& titulo);
  44.    
  45.     // Dos "event handlers" , gestion de eventos
  46.     void OnQuit(wxCommandEvent& event);
  47.     void OnAbout(wxCommandEvent& event);   
  48.     //void OnSize(wxSizeEvent& event);//Manipulacion del Frame
  49.     void OnButtonOk(wxCommandEvent& event);//Click boton OK
  50.    
  51.     private:
  52.     /*Macro para informar a wxWidgets de la gestion de eventos
  53.     *Declara la tabla de eventos en esta clase ,mas abajo
  54.     * la implemento entre BEGIN_ y END_EVENT_TABLE
  55.     */
  56.    
  57.     //Declaracion dinamica eventos no utilizo el macro
  58.     //Trabajaremos desde OnInit para eventos dinamicos
  59.     DECLARE_EVENT_TABLE()
  60. };
  61. //----------------------------------------------------------------------
  62. //----------------------------------------------------------------------
  63.  
  64. /*Implementacion , MiApp
  65. *Cuando se crea el objeto MiApp se asigna a la variable global wxTheApp
  66. * pero mejor que hacer un CAST emplear el MACRO  DECLARE_APP despues de
  67. * la declaracion de la clase , wxGetApp retorna una ref. al objeto MiApp
  68. */
  69. DECLARE_APP(MiApp)
  70.  
  71. //Macro que Proporciona a wxWidgets los medios de crear el objeto MiApp
  72. IMPLEMENT_APP(MiApp)
  73.  
  74. //----------------------------------------------------------------------
  75. //----------------------------------------------------------------------
  76. //----------------------------------------------------------------------
  77.  
  78. //Implementacion OnInit,Inicializa la aplicacion
  79.  
  80. bool MiApp::OnInit()
  81. {
  82.     //Crea la ventana principal , una instancia de nuestra clase MiFrame
  83.     //El titulo lo pasamos al constructor envuelto en el macro wxT
  84.     //macro de conversion de strings y char al tipo apropiado
  85.     MiFrame *frame=new MiFrame(wxT("Titulo Mini wxWidgets"));
  86.    
  87.     //Mostrar la ventana
  88.     frame->Show(true);
  89.    
  90.     //Arranca el bucle de eventos
  91.     return true ;//Si false limpia sus estructuras y sale
  92. }
  93.  
  94. //----------------------------------------------------------------------
  95.  
  96. //Tabla de eventos para MiFrame DECLARE_EVENT_TABLE() en MiFrame
  97. //Deteccion de los clicks de raton con wxID_ABOUT y wxID_EXIT
  98. //Que se dirigen a MiFrame::OnAbout y OnQuit
  99.  
  100. BEGIN_EVENT_TABLE (         MiFrame,wxFrame)
  101.     EVT_MENU(wxID_ABOUT,    MiFrame::OnAbout)
  102.     EVT_MENU(wxID_EXIT,     MiFrame::OnQuit)
  103.     //EVT_SIZE(             MiFrame::OnSize)//No tiene argumento
  104.     //EVT_BUTTON(wxID_OK,       MiFrame::OnButtonOk)
  105. END_EVENT_TABLE()
  106.  
  107. //Declaracion de OnAbout conectado al click del raton desde la EVENT_TABLE
  108. void MiFrame::OnAbout(wxCommandEvent& event)
  109. {
  110.     wxString mensaje;
  111.     //Contenido dentro de la ventana abierta
  112.     mensaje.Printf(wxT("La version wxWidgets es %s"),wxVERSION_STRING);
  113.     //Nombre de la barra de titulo Antonio Villanueva
  114.     wxMessageBox (mensaje,wxT("Antonio Villanueva"),wxOK | wxICON_INFORMATION,this);
  115. }
  116. //Declaracion de OnQuit conectado al click del raton desde la EVENT_TABLE
  117. void MiFrame::OnQuit(wxCommandEvent& event)
  118. {
  119.     //Destruccion del Frame , de hecho va generar un wxEVT_CLOSE_WINDOW
  120.     //wxWidgets gestiona por defecto este evento
  121.     Close();
  122. }
  123.  
  124. void MiFrame::OnButtonOk(wxCommandEvent& event)//Manipula boton OK
  125. {
  126.     //Abre ventana informando ....
  127.     wxMessageBox( wxT("Has hecho click en el boton OK !") );
  128. }
  129.  
  130.  
  131. //Constructor de MiFrame implementa un icono una barra status y menu
  132. //wxID_ANY le dice a Widgets de generar un identificador por su cuenta
  133. MiFrame::MiFrame(const wxString& titulo):wxFrame(NULL,wxID_ANY,title)
  134. {
  135.     //Define el icono del frame
  136.     //SetIcon(wxIcon(imagen_xpm));
  137.    
  138.     //Crea la barra de Menu
  139.     wxMenu *fileMenu=new wxMenu;
  140.    
  141.     //Crea el menu
  142.     wxMenu *menuAyuda=new wxMenu;
  143.    
  144.     //Anade el Acerca de en el menu de ayuda
  145.     menuAyuda->Append(wxID_ABOUT,wxT("&Acerca ...\tF1"),
  146.                         wxT("Muestra Dialogo Acerca de "));
  147.                            
  148.     //Anade el Salir en el fileMenu                    
  149.     fileMenu->Append(wxID_EXIT,wxT("E&xit\tALT+X"),
  150.                                 wxT("Salir "));
  151.     //Creamos la barra de menus
  152.     wxMenuBar *menuBar=new wxMenuBar();
  153.    
  154.     //Ahora los anadimos a la barra de menu
  155.     menuBar->Append(fileMenu,wxT("&File"));
  156.     menuBar->Append(menuAyuda,wxT("&Ayuda"));
  157.    
  158.     //Adjuntamos este Menu al Frame
  159.     SetMenuBar(menuBar);
  160.        
  161.     //Crea una barra de estado inferior,solo para divertirnos
  162.     CreateStatusBar(2);
  163.     SetStatusText(wxT("Barra inferior"));//Inferior ventana
  164.        
  165.     //Carga imagenes
  166.     // Se pueden encontrar wxWidgets/samples/toolbar/bitmaps/
  167.  
  168.     wxImageList* imageList= new wxImageList(16,15,true,3);
  169.    
  170.     imageList->Add(wxIcon(copy_xpm));//imagen xpm copia
  171.     imageList->Add(wxIcon(cut_xpm));//imagen xpm corta
  172.     imageList->Add(wxIcon(paste_xpm));//imagen xpm pega
  173.    
  174.     //Crea el notebook
  175.     //wxNotebook* notebook=new wxNotebook();
  176.     wxNotebook* notebook = new wxNotebook(this, wxID_ANY, wxPoint(160,144), wxDefaultSize, 0, _T("ID_NOTEBOOK1")); 
  177.    
  178.     //Asigna la lista de imagnes xpm tamano col=16 row=15  
  179.     notebook->AssignImageList(imageList);
  180.    
  181.     //Crea tres wxPanel
  182.     wxPanel* window1=new wxPanel(notebook,wxID_ANY);   
  183.     notebook->AddPage(window1,wxT("Tab uno"),true,0);
  184.    
  185.     wxPanel* window2=new wxPanel(notebook,wxID_ANY);   
  186.     notebook->AddPage(window2,wxT("Tab dos"),true,1);
  187.    
  188.     wxPanel* window3=new wxPanel(notebook,wxID_ANY);   
  189.     notebook->AddPage(window3,wxT("Tab tres"),true,2);
  190.  
  191.     wxStaticText* label = new wxStaticText(
  192.         window1, wxID_ANY, wxT("Ejemplo de texto") );
  193.    
  194.     //Crea Botones
  195.     //4 en el wxPanel window1
  196.     wxButton* boton1=new wxButton(window1,wxID_OK,wxT("OK 1"));
  197.     wxButton* boton2=new wxButton(window1,wxID_OK,wxT("OK 2"));
  198.     wxButton* boton3=new wxButton(window1,wxID_OK,wxT("OK 3"));
  199.     wxButton* boton4=new wxButton(window1,wxID_OK,wxT("OK 4"));            
  200.     wxButton* boton5=new wxButton(window2,wxID_OK,wxT("BOTON 5"),wxDefaultPosition, wxDefaultSize, wxBU_RIGHT);  
  201.    
  202.     wxButton* boton6=new wxButton(window3,wxID_CANCEL,wxT("CANCELA"));
  203.    
  204.     //wxBitmapButton
  205.     wxBitmap imagen (wxT("print.xpm"),wxBITMAP_TYPE_XPM);//BITMAP
  206.     wxBitmapButton* botonX=new wxBitmapButton(window2,wxID_PRINT,imagen,wxDefaultPosition,wxDefaultSize,wxBU_AUTODRAW);
  207.    
  208.        
  209.     //Crea Sizers wxBoxSizer VERTICAL HORIZONTAL
  210.    
  211.     wxBoxSizer *vbox = new wxBoxSizer(wxVERTICAL);
  212.     wxBoxSizer *hbox1 = new wxBoxSizer(wxHORIZONTAL);
  213.     wxBoxSizer *hbox2 = new wxBoxSizer(wxHORIZONTAL);
  214.    
  215.    
  216.     //Crea Sizer para ventana  2
  217.     wxBoxSizer *hbox3= new wxBoxSizer(wxHORIZONTAL);//Para window 3 boton 5
  218.     hbox3->Add(boton5);
  219.     hbox3->Add(botonX);
  220.     window2->SetSizer(hbox3);
  221.  
  222.  
  223.     //Anade la wxBoxSizer hbox1 los botones
  224.    
  225.     vbox->Add(hbox1);//Anade wxBoxSizer HORIZONTAL1 al VERTICAL  
  226.     vbox->Add(hbox2);//Anade wxBoxSizer HORIZONTAL2 al VERTICAL  
  227.        
  228.     hbox1->Add(boton1);//Anade al wxBoxSizer HORIZONTAL1 botones..
  229.     hbox1->Add(boton2);
  230.     hbox1->Add(boton3);    
  231.    
  232.     hbox2->Add(boton4);//Anade al wxBoxSizer HORIZONTAL2 botones..
  233.     hbox2->Add(label);//Anade al wxBoxSizer HORIZONTAL2 texto
  234.  
  235.     //Anade en wxBoxSizer la window1
  236.     hbox1->Add(window1,wxEXPAND);
  237.  
  238.     //wxBoxSizer empleado en el wxPanel (window1) ,(vbox) con (hbox1 y 2)
  239.     window1->SetSizer(vbox);
  240.  
  241.  
  242.   //wxChoice
  243.   //Crea cadenas de texto
  244.   wxArrayString cadenas;
  245.   cadenas.Add(wxT("uno"));
  246.   cadenas.Add(wxT("dos"));
  247.   cadenas.Add(wxT("tres"));
  248.   cadenas.Add(wxT("cuatro"));  
  249.  
  250.   //Crea el selector wxChoice anade los strings cadenas de texto
  251.   wxChoice* seleccion=new wxChoice(window2,wxID_ANY,wxDefaultPosition,wxDefaultSize,cadenas);
  252.  
  253.   //Anade al wxBoxSizer hbox2
  254.   hbox2->Add(seleccion);
  255.  
  256. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement