Advertisement
AntonioVillanueva

Navegando por directorios test wxTreeITemData,wxTreeCtrl,wxI

Jul 30th, 2018
245
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.52 KB | None | 0 0
  1. //Navegando por directorios test wxTreeITemData,wxTreeCtrl,wxImageList Villanueva
  2. //Existe un fichero de cabecera ArbolDirectorio.h y uno de declaraciones ArbolDirectorio.cpp
  3. //g++ -Wall -static-libstdc++ -std=c++11 -Wunused-but-set-variable `wx-config --cxxflags` -o ejecutable *.cpp `wx-config --libs`
  4. #include <wx/wx.h>
  5. #include <wx/msgdlg.h> //wxMessageBox
  6. #include <wx/menu.h> //Barra de menus
  7. #include <wx/imaglist.h>//wxImageList
  8. #include <wx/treectrl.h>
  9. #include <wx/dirctrl.h>
  10. #include <wx/treebase.h>//wxTreeItemId
  11.  
  12. #include <wx/icon.h>
  13. #include <wx/gdicmn.h> //wxICON macro
  14. //imagenes
  15. #include "icono.xpm" //fichero imagen xpm
  16. #include "directorio.xpm" //imagen de un DIR
  17. #include "directorio_abierto.xpm" //imagen de un DIR Open
  18. #include "fichero.xpm" //imagen de un fichero
  19.  
  20. //Declaramos la clase Aplicacion wxWidgets
  21.  
  22. class ArbolApp:public wxApp
  23. {
  24.     public:
  25.     //Llamado al inicio
  26.     virtual bool OnInit();
  27. };
  28.  
  29. //El Frame principal derivado de wxFrame
  30.  
  31. class Arbol:public wxFrame
  32. {
  33.     public:
  34.         Arbol(const wxString& titulo);//Constructor
  35.    
  36.     //Gestion de eventos
  37.         void OnQuit(wxCommandEvent& event);
  38.         void OnAbout(wxCommandEvent& event);
  39.    
  40.     private:
  41.     //Macro .. clase para la gestion de eventos
  42.         DECLARE_EVENT_TABLE()
  43. };
  44.  
  45. class MiArbolDeDatos : public wxTreeItemData
  46. {
  47.     public:
  48.         MiArbolDeDatos(const wxString& desc):m_desc(desc){}
  49.         const wxString& GetDesc();
  50.         void creaArbol(wxWindow* parent);            
  51.     private:
  52.         wxString m_desc;//variable miembro  
  53. };
  54.  
  55. //Aqui acaban las declaraciones , sigue el fichero de definiciones cpp
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62. //Navegando por directorios test wxTreeITemData,wxTreeCtrl,wxImageList Villanueva
  63. //Existe un fichero de cabecera ArbolDirectorio.h
  64. //g++ -Wall -static-libstdc++ -std=c++11 -Wunused-but-set-variable `wx-config --cxxflags` -o ejecutable *.cpp `wx-config --libs`
  65. #include "ArbolDirectorio.h"
  66.  
  67. DECLARE_APP(ArbolApp)
  68. IMPLEMENT_APP (ArbolApp)
  69.  
  70. bool ArbolApp::OnInit(){
  71.     //Crea la ventana principal ,"main window"
  72.     Arbol *frame=new Arbol(wxT("Arbol"));
  73.     //Muestra
  74.     frame->Show(true);
  75.    
  76.     //Arranza el bucle de eventos
  77.     return true;
  78. }
  79.  
  80. //----------------------------------------------------------------------
  81. //----------------------------------------------------------------------
  82.  
  83. //Implemento la tabla de eventos de la clase Arbol
  84.  
  85. BEGIN_EVENT_TABLE(Arbol,wxFrame)
  86.     EVT_MENU(wxID_ABOUT,Arbol::OnAbout)
  87.     EVT_MENU(wxID_EXIT,Arbol::OnQuit)
  88. END_EVENT_TABLE()
  89.  
  90. //----------------------------------------------------------------------
  91. //----------------------------------------------------------------------
  92.  
  93. ////Constructor
  94. Arbol::Arbol(const wxString& titulo):wxFrame(NULL,wxID_ANY,wxT("Arbol"))
  95. {
  96.     //Fija el icono
  97.     SetIcon(wxIcon("icono.xpm"));//static char * icono_xpm[]=
  98.     //home/icaro/Bureau/c++/wxTree
  99.    
  100.     //Barra de Menus
  101.     wxMenuBar *BarraMenu= new wxMenuBar();
  102.    
  103.     //Crea dos wxMenu que colgaran de wxMenuBar
  104.     wxMenu *menuFichero=new wxMenu;
  105.     wxMenu *menuAyuda=new wxMenu;
  106.    
  107.     //Asocio ID a los wxMenus
  108.     menuFichero->Append(wxID_EXIT,wxT("&Salir"));
  109.     menuAyuda->Append(wxID_ABOUT,wxT("&Acerca de"));    
  110.    
  111.     //Finalmente los cuelgo en la barra de Menus
  112.     BarraMenu->Append(menuFichero,wxT("&File"));
  113.     BarraMenu->Append(menuAyuda,wxT("&Salir"));
  114.    
  115.     SetMenuBar(BarraMenu); //Utiliza una barra de menus
  116.    
  117.     MiArbolDeDatos* a=new MiArbolDeDatos(wxT("Test"));
  118.     a->creaArbol(this);
  119.    
  120. }
  121.  
  122. //Implemento OnAbout y en OnQuit
  123. void Arbol::OnAbout(wxCommandEvent& event){
  124.     wxString mensaje("A.Villanueva");
  125.     wxMessageBox(mensaje,wxT("Acerca de"),wxOK|wxICON_INFORMATION,this);
  126. }
  127.  
  128. void Arbol::OnQuit(wxCommandEvent& event){Close();}//Salir
  129.  
  130. //----------------------------------------------------------------------
  131. //----------------------------------------------------------------------
  132.  
  133. // El Arbol de Datos
  134.  
  135. const wxString& MiArbolDeDatos::GetDesc(){return m_desc;}
  136.  
  137. void MiArbolDeDatos::creaArbol(wxWindow* parent)
  138. {
  139.     wxTreeCtrl* treeCtrl = new wxTreeCtrl(
  140.         parent,
  141.         wxID_ANY,
  142.         wxPoint(0,0),
  143.         wxSize(200,385),
  144.         wxTR_HAS_BUTTONS | wxTR_SINGLE);
  145.  
  146.     //static char * imagen_xpm[]  "16 15 2 1"
  147.     wxImageList* listaImagenes= new wxImageList(16,15);
  148.    
  149.     listaImagenes->Add(directorio_xpm);
  150.     listaImagenes->Add(directorio_abierto_xpm);
  151.     listaImagenes->Add(fichero_xpm);       
  152.    
  153.     treeCtrl->AssignImageList(listaImagenes);
  154.    
  155.     wxTreeItemId raizId=treeCtrl->AddRoot(wxT("Raiz"),0,0);                    
  156.     wxTreeItemId Item1=treeCtrl->AppendItem(raizId,wxT("Fichero_1"),1,0);                      
  157.     wxTreeItemId Item2=treeCtrl->AppendItem(raizId,wxT("Fichero_2"),2,0);                      
  158.                                        
  159. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement