Commit c00b6d7a authored by Jack Jansen's avatar Jack Jansen

Added an "Open Recent" command. Fixes 607810.

parent f4a9ac25
......@@ -63,6 +63,7 @@ class Editor(W.Window):
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 @@ class Editor(W.Window):
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
......@@ -781,6 +783,10 @@ class Editor(W.Window):
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:
def __init__(self, creator, eoln):
......
......@@ -76,6 +76,8 @@ class PythonIDE(Wapplication.Application):
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 @@ class PythonIDE(Wapplication.Application):
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()
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment