== Rudy Schockaert == Email: rudy.schockaert@gmail.com {{{ #!python import os, wx ID_OPEN = 101 ID_SAVE = 102 ID_SAVEAS = 103 ID_EXIT = 104 ID_ABOUT = 111 class MainWindow(wx.Frame): """ We simply derive a new class of Frame. """ def __init__(self,parent,id,title): wx.Frame.__init__(self,parent,wx.ID_ANY, title, size = ( 400,200), style=wx.DEFAULT_FRAME_STYLE|wx.NO_FULL_REPAINT_ON_RESIZE) self.dirname = os.curdir self.filename = '' self.modified = False self.control = wx.TextCtrl(self, 1, style=wx.TE_MULTILINE) self.CreateStatusBar() self.fileMenu = wx.Menu() self.fileMenu.Append(ID_OPEN, "&Open", " Open a file to edit") self.fileMenu.Append(ID_SAVE, "&Save", " Save your modifications") self.fileMenu.Enable(ID_SAVE, False) self.fileMenu.Append(ID_SAVEAS, "Save &As", " Save your modifications to another file") self.fileMenu.Enable(ID_SAVEAS, False) self.fileMenu.AppendSeparator() self.fileMenu.Append(ID_EXIT, "&Exit", " Terminate the program") helpMenu = wx.Menu() helpMenu.Append(ID_ABOUT, "&About", " Information about this program") menuBar = wx.MenuBar() menuBar.Append(self.fileMenu, "&File") menuBar.Append(helpMenu, "&Help") self.SetMenuBar(menuBar) self.Connect(ID_OPEN, -1, wx.wxEVT_COMMAND_MENU_SELECTED, self.OnOpen) self.Connect(ID_SAVE, -1, wx.wxEVT_COMMAND_MENU_SELECTED, self.OnSave) self.Connect(ID_SAVEAS, -1, wx.wxEVT_COMMAND_MENU_SELECTED, self.OnSaveAs) self.Connect(ID_EXIT, -1, wx.wxEVT_COMMAND_MENU_SELECTED, self.OnExit) self.Connect(ID_ABOUT, -1, wx.wxEVT_COMMAND_MENU_SELECTED, self.OnAbout) self.control.Connect(-1, -1, wx.wxEVT_COMMAND_TEXT_UPDATED, self.OnTextUpdated) self.Show(True) def OnAbout(self,e): d= wx.MessageDialog( self, " A sample editor \n" " in wxPython","About Sample Editor", wx.OK) # Create a message dialog box d.ShowModal() # Shows it d.Destroy() # finally destroy it when finished. def OnOpen(self,e): """ Open a file""" dlg = wx.FileDialog(self, "Choose a file", self.dirname, "", "*.*", wx.OPEN) if dlg.ShowModal() == wx.ID_OK: self.filename=dlg.GetFilename() self.dirname=dlg.GetDirectory() f=open(os.path.join(self.dirname,self.filename),'r') self.control.SetValue(f.read()) f.close() self.SetTitle(self.filename) dlg.Destroy() def OnSave(self,e): f=open(os.path.join(self.dirname,self.filename),'w') f.write(self.control.GetValue()) f.close() def OnSaveAs(self,e): """ Save file as ...""" dlg = wx.FileDialog(self, "Save file as ...", self.dirname, self.filename, "*.*", wx.SAVE) if dlg.ShowModal() == wx.ID_OK: self.filename=dlg.GetFilename() self.fileMenu.Enable(ID_SAVE, True) self.dirname=dlg.GetDirectory() self.OnSave(True) self.SetTitle(self.filename) dlg.Destroy() def OnExit(self,e): self.Close(True) # Close the frame. def OnTextUpdated(self,e): self.modified = True if self.filename <> '': self.fileMenu.Enable(ID_SAVE, True) self.fileMenu.Enable(ID_SAVEAS, True) app = wx.PySimpleApp() frame = MainWindow(None, -1, "Sample editor") app.MainLoop() }}}