Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Test wxNotebook wxSizer,wxButton,wxBitmapButton,wxStaticText, wxChoice en wxWidgets Antonio Villanueva
- //g++ -Wall -static-libstdc++ -std=c++11 -Wunused-but-set-variable `wx-config --cxxflags` -o hola *.cpp `wx-config --libs`
- //Declara la clase aplicacion
- //#include "imagen.xpm" //Imagen en formato xpm
- #include <iostream>
- #include "wx/wx.h"
- #include <wx/imaglist.h> //wxImageList carga imagenes xpm
- #include "copy.xpm" //Imagenes xpm 16x15
- #include "cut.xpm"//Imagenes xpm 16x15
- #include "paste.xpm"//Imagenes xpm 16x15
- //#include "print.xpm" //Imagen impresora
- #include <wx/notebook.h> //un notebook
- //#include <wx/app.h>
- //using namespace std;
- #include <wx/stattext.h>
- #include <wx/sizer.h> //Layouts
- wxString title ("Barra Superior");
- //Declaraciones
- //----------------------------------------------------------------------
- //Cada aplicacion wxWidget define una clase derivada de wxApp
- class MiApp:public wxApp
- {
- public:
- //Llamado al inicio startup, es como el main en c
- virtual bool OnInit();//main wxWidgets , mas abajo se implementa
- };
- //Declaracion de la clase frame principal
- //----------------------------------------------------------------------
- class MiFrame:public wxFrame
- {
- public:
- //Constructor de la clase
- MiFrame(const wxString& titulo);
- // Dos "event handlers" , gestion de eventos
- void OnQuit(wxCommandEvent& event);
- void OnAbout(wxCommandEvent& event);
- //void OnSize(wxSizeEvent& event);//Manipulacion del Frame
- void OnButtonOk(wxCommandEvent& event);//Click boton OK
- private:
- /*Macro para informar a wxWidgets de la gestion de eventos
- *Declara la tabla de eventos en esta clase ,mas abajo
- * la implemento entre BEGIN_ y END_EVENT_TABLE
- */
- //Declaracion dinamica eventos no utilizo el macro
- //Trabajaremos desde OnInit para eventos dinamicos
- DECLARE_EVENT_TABLE()
- };
- //----------------------------------------------------------------------
- //----------------------------------------------------------------------
- /*Implementacion , MiApp
- *Cuando se crea el objeto MiApp se asigna a la variable global wxTheApp
- * pero mejor que hacer un CAST emplear el MACRO DECLARE_APP despues de
- * la declaracion de la clase , wxGetApp retorna una ref. al objeto MiApp
- */
- DECLARE_APP(MiApp)
- //Macro que Proporciona a wxWidgets los medios de crear el objeto MiApp
- IMPLEMENT_APP(MiApp)
- //----------------------------------------------------------------------
- //----------------------------------------------------------------------
- //----------------------------------------------------------------------
- //Implementacion OnInit,Inicializa la aplicacion
- bool MiApp::OnInit()
- {
- //Crea la ventana principal , una instancia de nuestra clase MiFrame
- //El titulo lo pasamos al constructor envuelto en el macro wxT
- //macro de conversion de strings y char al tipo apropiado
- MiFrame *frame=new MiFrame(wxT("Titulo Mini wxWidgets"));
- //Mostrar la ventana
- frame->Show(true);
- //Arranca el bucle de eventos
- return true ;//Si false limpia sus estructuras y sale
- }
- //----------------------------------------------------------------------
- //Tabla de eventos para MiFrame DECLARE_EVENT_TABLE() en MiFrame
- //Deteccion de los clicks de raton con wxID_ABOUT y wxID_EXIT
- //Que se dirigen a MiFrame::OnAbout y OnQuit
- BEGIN_EVENT_TABLE ( MiFrame,wxFrame)
- EVT_MENU(wxID_ABOUT, MiFrame::OnAbout)
- EVT_MENU(wxID_EXIT, MiFrame::OnQuit)
- //EVT_SIZE( MiFrame::OnSize)//No tiene argumento
- //EVT_BUTTON(wxID_OK, MiFrame::OnButtonOk)
- END_EVENT_TABLE()
- //Declaracion de OnAbout conectado al click del raton desde la EVENT_TABLE
- void MiFrame::OnAbout(wxCommandEvent& event)
- {
- wxString mensaje;
- //Contenido dentro de la ventana abierta
- mensaje.Printf(wxT("La version wxWidgets es %s"),wxVERSION_STRING);
- //Nombre de la barra de titulo Antonio Villanueva
- wxMessageBox (mensaje,wxT("Antonio Villanueva"),wxOK | wxICON_INFORMATION,this);
- }
- //Declaracion de OnQuit conectado al click del raton desde la EVENT_TABLE
- void MiFrame::OnQuit(wxCommandEvent& event)
- {
- //Destruccion del Frame , de hecho va generar un wxEVT_CLOSE_WINDOW
- //wxWidgets gestiona por defecto este evento
- Close();
- }
- void MiFrame::OnButtonOk(wxCommandEvent& event)//Manipula boton OK
- {
- //Abre ventana informando ....
- wxMessageBox( wxT("Has hecho click en el boton OK !") );
- }
- //Constructor de MiFrame implementa un icono una barra status y menu
- //wxID_ANY le dice a Widgets de generar un identificador por su cuenta
- MiFrame::MiFrame(const wxString& titulo):wxFrame(NULL,wxID_ANY,title)
- {
- //Define el icono del frame
- //SetIcon(wxIcon(imagen_xpm));
- //Crea la barra de Menu
- wxMenu *fileMenu=new wxMenu;
- //Crea el menu
- wxMenu *menuAyuda=new wxMenu;
- //Anade el Acerca de en el menu de ayuda
- menuAyuda->Append(wxID_ABOUT,wxT("&Acerca ...\tF1"),
- wxT("Muestra Dialogo Acerca de "));
- //Anade el Salir en el fileMenu
- fileMenu->Append(wxID_EXIT,wxT("E&xit\tALT+X"),
- wxT("Salir "));
- //Creamos la barra de menus
- wxMenuBar *menuBar=new wxMenuBar();
- //Ahora los anadimos a la barra de menu
- menuBar->Append(fileMenu,wxT("&File"));
- menuBar->Append(menuAyuda,wxT("&Ayuda"));
- //Adjuntamos este Menu al Frame
- SetMenuBar(menuBar);
- //Crea una barra de estado inferior,solo para divertirnos
- CreateStatusBar(2);
- SetStatusText(wxT("Barra inferior"));//Inferior ventana
- //Carga imagenes
- // Se pueden encontrar wxWidgets/samples/toolbar/bitmaps/
- wxImageList* imageList= new wxImageList(16,15,true,3);
- imageList->Add(wxIcon(copy_xpm));//imagen xpm copia
- imageList->Add(wxIcon(cut_xpm));//imagen xpm corta
- imageList->Add(wxIcon(paste_xpm));//imagen xpm pega
- //Crea el notebook
- //wxNotebook* notebook=new wxNotebook();
- wxNotebook* notebook = new wxNotebook(this, wxID_ANY, wxPoint(160,144), wxDefaultSize, 0, _T("ID_NOTEBOOK1"));
- //Asigna la lista de imagnes xpm tamano col=16 row=15
- notebook->AssignImageList(imageList);
- //Crea tres wxPanel
- wxPanel* window1=new wxPanel(notebook,wxID_ANY);
- notebook->AddPage(window1,wxT("Tab uno"),true,0);
- wxPanel* window2=new wxPanel(notebook,wxID_ANY);
- notebook->AddPage(window2,wxT("Tab dos"),true,1);
- wxPanel* window3=new wxPanel(notebook,wxID_ANY);
- notebook->AddPage(window3,wxT("Tab tres"),true,2);
- wxStaticText* label = new wxStaticText(
- window1, wxID_ANY, wxT("Ejemplo de texto") );
- //Crea Botones
- //4 en el wxPanel window1
- wxButton* boton1=new wxButton(window1,wxID_OK,wxT("OK 1"));
- wxButton* boton2=new wxButton(window1,wxID_OK,wxT("OK 2"));
- wxButton* boton3=new wxButton(window1,wxID_OK,wxT("OK 3"));
- wxButton* boton4=new wxButton(window1,wxID_OK,wxT("OK 4"));
- wxButton* boton5=new wxButton(window2,wxID_OK,wxT("BOTON 5"),wxDefaultPosition, wxDefaultSize, wxBU_RIGHT);
- wxButton* boton6=new wxButton(window3,wxID_CANCEL,wxT("CANCELA"));
- //wxBitmapButton
- wxBitmap imagen (wxT("print.xpm"),wxBITMAP_TYPE_XPM);//BITMAP
- wxBitmapButton* botonX=new wxBitmapButton(window2,wxID_PRINT,imagen,wxDefaultPosition,wxDefaultSize,wxBU_AUTODRAW);
- //Crea Sizers wxBoxSizer VERTICAL HORIZONTAL
- wxBoxSizer *vbox = new wxBoxSizer(wxVERTICAL);
- wxBoxSizer *hbox1 = new wxBoxSizer(wxHORIZONTAL);
- wxBoxSizer *hbox2 = new wxBoxSizer(wxHORIZONTAL);
- //Crea Sizer para ventana 2
- wxBoxSizer *hbox3= new wxBoxSizer(wxHORIZONTAL);//Para window 3 boton 5
- hbox3->Add(boton5);
- hbox3->Add(botonX);
- window2->SetSizer(hbox3);
- //Anade la wxBoxSizer hbox1 los botones
- vbox->Add(hbox1);//Anade wxBoxSizer HORIZONTAL1 al VERTICAL
- vbox->Add(hbox2);//Anade wxBoxSizer HORIZONTAL2 al VERTICAL
- hbox1->Add(boton1);//Anade al wxBoxSizer HORIZONTAL1 botones..
- hbox1->Add(boton2);
- hbox1->Add(boton3);
- hbox2->Add(boton4);//Anade al wxBoxSizer HORIZONTAL2 botones..
- hbox2->Add(label);//Anade al wxBoxSizer HORIZONTAL2 texto
- //Anade en wxBoxSizer la window1
- hbox1->Add(window1,wxEXPAND);
- //wxBoxSizer empleado en el wxPanel (window1) ,(vbox) con (hbox1 y 2)
- window1->SetSizer(vbox);
- //wxChoice
- //Crea cadenas de texto
- wxArrayString cadenas;
- cadenas.Add(wxT("uno"));
- cadenas.Add(wxT("dos"));
- cadenas.Add(wxT("tres"));
- cadenas.Add(wxT("cuatro"));
- //Crea el selector wxChoice anade los strings cadenas de texto
- wxChoice* seleccion=new wxChoice(window2,wxID_ANY,wxDefaultPosition,wxDefaultSize,cadenas);
- //Anade al wxBoxSizer hbox2
- hbox2->Add(seleccion);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement