import wx
import os
class text(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, size = (600, 550))
#barra de menu
menubar = wx.MenuBar()
#menu: contenido
menu = wx.Menu() #archivo
nuev = wx.Menu()
nuev.Append(100, "&Nuevo\tCtrl+N", 'Nuevo archivo')
nuev.Append(200, "Nueva &Ventana\tCtrl+O", 'Nueva ventana para otro archivo')
menu.AppendMenu(-1, "Nuevo", nuev)
menu.Append(2, "&Abrir\tCtrl+A", "Abrir Archivo existente")
menu.Append(3, "&Guardar\tCtrl+G", "Guardar archivo")
menu.Append(4, "Guardar &Como\tCtrl+M", "guardar copia de archivo")
menu.AppendSeparator()
menu.Append(5, "&Salir\tCtrl+Q", "Salir del programa")
edit = wx.Menu()
edit.Append(10, "&Deshacer\tCtrl+Z", 'deshacer ultimo')
edit.Append(11, "&Rehacer\tCtrl+U", 'hacer denuevo')
edit.AppendSeparator()
edit.Append(12, "&Seleccionar Todo\tCtrl+E", 'seleccionar todo el texto')
edit.AppendSeparator()
edit.Append(13, "&Cortar\tCtrl+X", 'cortar texto seleccionado')
edit.Append(14, "&Pegar\tCtrl+V", 'pegar texto')
edit.Append(15, "Cop&iar\tCtrl+C", 'Copiar texto seleccionado')
help = wx.Menu()
help.Append(20, "&Acerca de...", 'Sobre este programa')
menubar.Append(menu, "&Archivo")
menubar.Append(edit, "&Edicion")
menubar.Append(help, "A&yuda")
self.SetMenuBar(menubar)
#texto enrikecido
self.text = wx.TextCtrl(self, -1, style = wx.TE_MULTILINE | wx.TE_RICH2)
self.text.SetInsertionPoint(0)
points = self.text.GetFont().GetPointSize()
f = wx.Font(points + 2, wx.MODERN, wx.NORMAL, wx.BOLD, False)
self.text.SetStyle(13, 12, wx.TextAttr("white", wx.NullColour, f))
self.text.SetBackgroundColour('Black')
#eventos
self.Bind(wx.EVT_MENU, self.OnSalir, id=5)
self.Bind(wx.EVT_MENU, self.OnVentan, id=200)
self.Bind(wx.EVT_MENU, self.OnOpen, id=2)
self.Bind(wx.EVT_MENU, self.OnSave, id=3)
self.Bind(wx.EVT_MENU, self.OnSaveAs, id=4)
#mostrar
self.filename = ""
self.CreateStatusBar()
self.Centre()
self.createToolBar()
self.Show(True)
def SaveFile(self):
if self.filename:
data = self.text.GetValue()
f = open(self.filename, 'w')
Pickle.dump(data, f)
f.close()
def ReadFile(self):
if self.filename:
try:
f = open(self.filename, 'r')
data = Pickle.load(f)
f.close()
self.textSetLinesData(data)
except Pickle.UnpicklerError:
wx.MessageBox("%s no es un archivo compatible." % self.filename, "oops!", style=wx.OK|wx.ICON_EXCLAMATION)
wildcard = "Archivos Hipertext (*.txt)|*.txt|Todos los archivos (*.*)| *.*"
def OnOpen(self, event):
dlg = wx.FileDialog(self, "Abrir archivos de HiperTexto", os.getcwd(), style=wx.OPEN, wildcard=self.wildcard)
if dlg.ShowModal() == wx.ID_OK:
self.filename = dlg.GetPath()
self.ReadFile()
self.SetTitle(self.title +' -- '+ self.filename)
dlg.Destroy()
def OnSave(self, event):
if not self.filename:
self.OnSaveAs(event)
else:
self.SaveFile()
def OnSaveAs(self, event):
dlg = wx.FileDialog(self, "Guardar archivo como...", os.getcwd(), style=wx.SAVE|wx.OVERWRITE_PROMPT, wildcard = self.wildcard)
if dlg.ShowModal() == wx.ID_OK:
filename = dlg.GetPath()
if not os.path.splitext(filename)[1]:
filename = filename +'.txt'
self.filename = filename
self.SaveFile()
self.SetTitle(self.title +'--'+ self.filename)
dlg.Destroy()
def OnSalir(self, event):
self.Close()
def OnVentan(self, event):
editor = text(None, -1, 'Text Editor')
editor.Centre()
editor.Show()
def createToolBar(self):
toolbar = self.CreateToolBar()
toolbar.AddSimpleTool(200, wx.Bitmap('icns/Nuevo.png'), 'Nuevo', '')
toolbar.AddSimpleTool(2, wx.Bitmap('icns/abrir.png'), 'Abrir', '')
toolbar.AddSimpleTool(3, wx.Bitmap('icns/Guardar.png'), 'Guardar', '')
toolbar.AddSeparator()
toolbar.AddSimpleTool(33, wx.Bitmap('icns/cortar.png'), 'Cortar', '')
toolbar.AddSimpleTool(34, wx.Bitmap('icns/copiar.png'), 'copiar', '')
toolbar.AddSimpleTool(35, wx.Bitmap('icns/pegar.png'), 'Pegar', '')
toolbar.AddSeparator()
toolbar.AddSimpleTool(36, wx.Bitmap('icns/des.png'), 'Deshacer', '')
toolbar.AddSimpleTool(37, wx.Bitmap('icns/rea.png'), 'Rehacer', '')
toolbar.Realize()
##Eventos de herramientas
app = wx.App()
text(None, -1, 'Hipertext Editor')
app.MainLoop()