| 1 | #-*- coding:iso8859-1 -*- |
|---|
| 2 | """ |
|---|
| 3 | Este archivo es parte de Pyragua |
|---|
| 4 | |
|---|
| 5 | Pyragua es software libre; lo puedes redistribuir y/o modificar |
|---|
| 6 | bajo los terminos de la Licencia Publica General (GNU GPL) como fue |
|---|
| 7 | publicada por la Free Software Foundation; cualquier versión 2 de la |
|---|
| 8 | Licencia. |
|---|
| 9 | |
|---|
| 10 | Este programa es distribuido con la esperanza de que será útil, |
|---|
| 11 | pero SIN GARANTIA ALGUNA; ni con la garantía explícita de |
|---|
| 12 | MERCABILIDAD o de que SERVIRA PARA UN PROPOSITO EN PARTICULAR. |
|---|
| 13 | Mire la Licencia Pública General de la GNU para más detalles. |
|---|
| 14 | |
|---|
| 15 | Debió recibir una copia de la Licencia Pública General de la GNU junto con |
|---|
| 16 | este programa; sino, escriba a la Free Software Foundation, |
|---|
| 17 | Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
|---|
| 18 | """ |
|---|
| 19 | |
|---|
| 20 | import wx |
|---|
| 21 | # Para i18n |
|---|
| 22 | import gettext |
|---|
| 23 | gettext.install("pyragua",unicode=1) |
|---|
| 24 | _ = gettext.gettext |
|---|
| 25 | |
|---|
| 26 | class PanelProyecto(wx.Panel): |
|---|
| 27 | def __init__(self,*args,**kwargs): |
|---|
| 28 | wx.Panel.__init__(self,*args,**kwargs) |
|---|
| 29 | |
|---|
| 30 | self.nProyecto=wx.Notebook(self, -1,style =wx.BORDER_SUNKEN) |
|---|
| 31 | |
|---|
| 32 | |
|---|
| 33 | # oProyecto es una lista que guarda los lo que se le inserta al NoteBook |
|---|
| 34 | self.oProyecto=[] |
|---|
| 35 | # ProyectoName guarda los nombres de cada pestana esto es para luego darle soporte a otros idiomas |
|---|
| 36 | self.ProyectoName = [] |
|---|
| 37 | # El agregar inserta Todo lo que va ir en el NoteBook |
|---|
| 38 | self.Agregar() |
|---|
| 39 | self.Layout() |
|---|
| 40 | |
|---|
| 41 | self.Proyectos.Bind(wx.EVT_TREE_ITEM_RIGHT_CLICK, self.OnRightClick) |
|---|
| 42 | |
|---|
| 43 | def Layout(self): |
|---|
| 44 | sProyecto = wx.BoxSizer(wx.VERTICAL) |
|---|
| 45 | self.sProyecto = sProyecto |
|---|
| 46 | cont = 0 |
|---|
| 47 | for i in self.oProyecto: |
|---|
| 48 | self.nProyecto.AddPage(i,self.ProyectoName[cont]) |
|---|
| 49 | cont = cont +1 |
|---|
| 50 | self.sProyecto.Add(self.nProyecto,1,wx.EXPAND,0) |
|---|
| 51 | self.SetSizer(self.sProyecto) |
|---|
| 52 | self.SetAutoLayout(True) |
|---|
| 53 | self.sProyecto.Layout() |
|---|
| 54 | |
|---|
| 55 | def Destroy(self): |
|---|
| 56 | event.Skip() |
|---|
| 57 | |
|---|
| 58 | def Agregar(self): |
|---|
| 59 | """Esto agrega el tree ctrl con todas sus propiedades""" |
|---|
| 60 | self.Proyectos = wx.TreeCtrl(self.nProyecto, -1, style=wx.TR_HAS_BUTTONS|wx.TR_DEFAULT_STYLE|wx.SUNKEN_BORDER )#|wx.TR_HIDE_ROOT |
|---|
| 61 | |
|---|
| 62 | # Creo las imagenes para los archivos del Tree Ctrl |
|---|
| 63 | TamImagenes = (16,16) |
|---|
| 64 | ListaImagenes = wx.ImageList(TamImagenes[0], TamImagenes[1]) |
|---|
| 65 | FolderIco = ListaImagenes.Add(wx.ArtProvider_GetBitmap(wx.ART_FOLDER, wx.ART_OTHER, TamImagenes)) |
|---|
| 66 | FolderOpenIco = ListaImagenes.Add(wx.ArtProvider_GetBitmap(wx.ART_FILE_OPEN, wx.ART_OTHER, TamImagenes)) |
|---|
| 67 | self.ArchivosIco = ArchivosIco = ListaImagenes.Add(wx.ArtProvider_GetBitmap(wx.ART_NORMAL_FILE, wx.ART_OTHER, TamImagenes)) |
|---|
| 68 | self.Proyectos.SetImageList(ListaImagenes) |
|---|
| 69 | self.ListaImagenes = ListaImagenes |
|---|
| 70 | |
|---|
| 71 | #Aca agrega la raiz y le da la Propiedades |
|---|
| 72 | self.root = self.Proyectos.AddRoot("Proyectos") |
|---|
| 73 | self.Proyectos.SetPyData(self.root, None) |
|---|
| 74 | self.Proyectos.SetItemImage(self.root, FolderIco, wx.TreeItemIcon_Normal) |
|---|
| 75 | self.Proyectos.SetItemImage(self.root, FolderOpenIco, wx.TreeItemIcon_Expanded) |
|---|
| 76 | #Aca agrego los proyectos Abiertos |
|---|
| 77 | cProyectosAbiertos = self.Proyectos.AppendItem(self.root, "Proyectos Abiertos") # c es por que es un child de self.root |
|---|
| 78 | self.Proyectos.SetPyData(cProyectosAbiertos, None) |
|---|
| 79 | self.Proyectos.SetItemImage(cProyectosAbiertos, FolderIco, wx.TreeItemIcon_Normal) |
|---|
| 80 | self.Proyectos.SetItemImage(cProyectosAbiertos, FolderOpenIco, wx.TreeItemIcon_Expanded) |
|---|
| 81 | self.cProyectosAbiertos = cProyectosAbiertos |
|---|
| 82 | #Aca agrego los proyectos Cerrados |
|---|
| 83 | cProyectosCerrados = self.Proyectos.AppendItem(self.root, "Proyectos Cerrados") |
|---|
| 84 | self.Proyectos.SetPyData(cProyectosCerrados, None) |
|---|
| 85 | self.Proyectos.SetItemImage(cProyectosCerrados, FolderIco, wx.TreeItemIcon_Normal) |
|---|
| 86 | self.Proyectos.SetItemImage(cProyectosCerrados, FolderOpenIco, wx.TreeItemIcon_Expanded) |
|---|
| 87 | self.cProyectosCerrados = cProyectosCerrados |
|---|
| 88 | #Aca agrego para los arhivos individuales aviertos |
|---|
| 89 | cArchivos = self.Proyectos.AppendItem(self.root, "Archivos") |
|---|
| 90 | self.Proyectos.SetPyData(cArchivos, None) |
|---|
| 91 | self.Proyectos.SetItemImage(cArchivos, FolderIco, wx.TreeItemIcon_Normal) |
|---|
| 92 | self.Proyectos.SetItemImage(cArchivos, FolderOpenIco, wx.TreeItemIcon_Expanded) |
|---|
| 93 | self.cArchivos = cArchivos |
|---|
| 94 | |
|---|
| 95 | self.Proyectos.Expand(self.root) # expande el arbol |
|---|
| 96 | self.ProyectoName.append("Proyectos") |
|---|
| 97 | self.oProyecto.append(self.Proyectos) |
|---|
| 98 | |
|---|
| 99 | """Esto agrega el Control de Directorio y sus propiedades""" |
|---|
| 100 | self.directorio = wx.GenericDirCtrl(self.nProyecto, -1,style=wx.DIRCTRL_SHOW_FILTERS, |
|---|
| 101 | filter="All files (*.*)|*.*|Python files (*.py)|*.py") |
|---|
| 102 | self.ProyectoName.append("Examinar") |
|---|
| 103 | self.oProyecto.append(self.directorio) |
|---|
| 104 | |
|---|
| 105 | def OnRightClick(self, event): |
|---|
| 106 | """Al presionar el Click derecho desplega un menu""" |
|---|
| 107 | self.popupMenuId = {} |
|---|
| 108 | menu = wx.Menu() |
|---|
| 109 | lista = ["Abrir","Cerrar"] |
|---|
| 110 | for i in lista: |
|---|
| 111 | self.popupMenuId[i] = wx.NewId() |
|---|
| 112 | menu.Append(self.popupMenuId[i], i) |
|---|
| 113 | |
|---|
| 114 | self.Bind(wx.EVT_MENU, self.AgregarArchivo, id=self.popupMenuId["Abrir"]) |
|---|
| 115 | self.PopupMenu(menu) |
|---|
| 116 | menu.Destroy() |
|---|
| 117 | |
|---|
| 118 | def AgregarProyecto(self,event): |
|---|
| 119 | NomProyecto = wx.TextEntryDialog(self, 'Cual es el nombre del proyecto','Agregar Proyecto', '') |
|---|
| 120 | if NomProyecto.ShowModal() == wx.ID_OK: |
|---|
| 121 | Proyecto = self.Proyectos.AppendItem(self.cProyectosAbiertos, 'sadsadjsla') |
|---|
| 122 | self.Proyectos.SetPyData(Proyecto, None) |
|---|
| 123 | self.Proyectos.SetItemImage(Proyecto, FolderIco, wx.TreeItemIcon_Normal) |
|---|
| 124 | self.Proyectos.SetItemImage(Proyecto, FolderOpenIco, wx.TreeItemIcon_Expanded) |
|---|
| 125 | self.Proyectos.Expand(self.cProyectosAbiertos) |
|---|
| 126 | NomProyecto.Destroy() |
|---|
| 127 | |
|---|
| 128 | def AgregarArchivo(self,event): |
|---|
| 129 | NomArchivo = wx.TextEntryDialog(self, 'Cual es el nombre del archivo', 'Agregar Archivos', '') |
|---|
| 130 | if NomArchivo.ShowModal() == wx.ID_OK: |
|---|
| 131 | Archivos = self.Proyectos.AppendItem(self.cArchivos, 'sadsadjsla') |
|---|
| 132 | self.Proyectos.SetPyData(Archivos, None) |
|---|
| 133 | self.Proyectos.SetItemImage(Archivos, self.ArchivosIco, wx.TreeItemIcon_Normal) |
|---|
| 134 | #self.Proyectos.Expand(self.cArchivos) |
|---|
| 135 | NomArchivo.Destroy() |
|---|
| 136 | |
|---|