Added an "Open Recent" command. Fixes 607810.
diff --git a/Mac/Tools/IDE/PyEdit.py b/Mac/Tools/IDE/PyEdit.py
index ef31486..6cac553 100644
--- a/Mac/Tools/IDE/PyEdit.py
+++ b/Mac/Tools/IDE/PyEdit.py
@@ -63,6 +63,7 @@
 			text = f.read()
 			f.close()
 			self._creator, filetype = MacOS.GetCreatorAndType(path)
+			self.addrecentfile(path)
 		else:
 			raise IOError, "file '%s' does not exist" % path
 		self.path = path
@@ -399,6 +400,7 @@
 			del linecache.cache[self.path]
 		import macostools
 		macostools.touched(self.path)
+		self.addrecentfile(self.path)
 	
 	def can_save(self, menuitem):
 		return self.editgroup.editor.changed or self.editgroup.editor.selchanged
@@ -780,6 +782,10 @@
 	
 	def selectline(self, lineno, charoffset = 0):
 		self.editgroup.editor.selectline(lineno - 1, charoffset)
+		
+	def addrecentfile(self, filename):
+		app = W.getapplication()
+		app.addrecentfile(filename)
 
 class _saveoptions:
 	
diff --git a/Mac/Tools/IDE/PythonIDEMain.py b/Mac/Tools/IDE/PythonIDEMain.py
index c79d9fc..9efaa22 100644
--- a/Mac/Tools/IDE/PythonIDEMain.py
+++ b/Mac/Tools/IDE/PythonIDEMain.py
@@ -76,6 +76,8 @@
 		newitem = FrameWork.MenuItem(m, "New", "N", 'new')
 		openitem = FrameWork.MenuItem(m, "Open"+ELIPSES, "O", 'open')
 		openbynameitem = FrameWork.MenuItem(m, "Open File by Name"+ELIPSES, "D", 'openbyname')
+		self.openrecentmenu = FrameWork.SubMenu(m, "Open Recent")
+		self.makeopenrecentmenu()
 		FrameWork.Separator(m)
 		closeitem = FrameWork.MenuItem(m, "Close", "W", 'close')
 		saveitem = FrameWork.MenuItem(m, "Save", "S", 'save')
@@ -278,11 +280,49 @@
 		self._openwindowscheckmark = 0
 		self.checkopenwindowsmenu()
 		
+	def makeopenrecentmenu(self):
+		for i in range(len(self.openrecentmenu.items)):
+			self.openrecentmenu.menu.DeleteMenuItem(1)
+			self.openrecentmenu.items = []
+		prefs = self.getprefs()
+		filelist = prefs.recentfiles
+		if not filelist:
+			self.openrecentmenu.enable(0)
+			return
+		self.openrecentmenu.enable(1)
+		for filename in filelist:
+			item = FrameWork.MenuItem(self.openrecentmenu, filename, None, callback = self.domenu_openrecent)
+		
+	def addrecentfile(self, file):
+		prefs = self.getprefs()
+		filelist = prefs.recentfiles
+		if not filelist:
+			filelist = []
+		
+		if file in filelist:
+			if file == filelist[0]:
+				return
+			filelist.remove(file)
+		filelist.insert(0, file)
+		filelist = filelist[:10]
+		prefs.recentfiles = filelist
+		prefs.save()
+		self.makeopenrecentmenu()
+		
 	def domenu_openwindows(self, id, item, window, event):
 		w = self._openwindows[item]
 		w.ShowWindow()
 		w.SelectWindow()
 	
+	def domenu_openrecent(self, id, item, window, event):
+		prefs = self.getprefs()
+		filelist = prefs.recentfiles
+		if not filelist:
+			filelist = []
+		item = item - 1
+		filename = filelist[item]
+		self.openscript(filename)
+	
 	def domenu_quit(self):
 		self._quit()