Código python:
Ver original
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()