Added an "Open Recent" command. Fixes 607810.
authorJack Jansen <jack.jansen@cwi.nl>
Tue, 25 Feb 2003 15:08:02 +0000 (15:08 +0000)
committerJack Jansen <jack.jansen@cwi.nl>
Tue, 25 Feb 2003 15:08:02 +0000 (15:08 +0000)
Mac/Tools/IDE/PyEdit.py
Mac/Tools/IDE/PythonIDEMain.py

index ef31486785edda48ae7de0c770d977bef8ed5c0d..6cac553fcccde12d280b9661bede3fda9695061f 100644 (file)
@@ -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
@@ -780,6 +782,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:
        
index c79d9fcba55ff0bded506b279ccd2c67918ec230..9efaa22677cc6708538ce80a464e7f1d5945d1d1 100644 (file)
@@ -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()