[Idle-dev] CVS: idle EditorWindow.py,1.21,1.22 IOBinding.py,1.3,1.4 configDialog.py,1.45,1.46
Stephen M. Gava
elguavas@users.sourceforge.net
Wed, 27 Mar 2002 00:40:48 -0800
Update of /cvsroot/idlefork/idle
In directory usw-pr-cvs1:/tmp/cvs-serv11862
Modified Files:
EditorWindow.py IOBinding.py configDialog.py
Log Message:
further work on new config system;
recent files menu
Index: EditorWindow.py
===================================================================
RCS file: /cvsroot/idlefork/idle/EditorWindow.py,v
retrieving revision 1.21
retrieving revision 1.22
diff -C2 -r1.21 -r1.22
*** EditorWindow.py 27 Mar 2002 02:24:54 -0000 1.21
--- EditorWindow.py 27 Mar 2002 08:40:46 -0000 1.22
***************
*** 106,109 ****
--- 106,111 ----
#configDialog.py so it can access all EditorWindow instaces
self.top.instanceDict=flist.inversedict
+ self.recentFilesPath=os.path.join(idleConf.GetUserCfgDir(),
+ 'recent-files.lst')
self.vbar = vbar = Scrollbar(top, name='vbar')
self.text_frame = text_frame = Frame(top)
***************
*** 179,182 ****
--- 181,189 ----
self.undo = undo = self.UndoDelegator(); per.insertfilter(undo)
self.io = io = self.IOBinding(self)
+ #create the Recent Files submenu
+ self.menuRecentFiles=Menu(self.menubar)
+ self.menudict['file'].insert_cascade(3,label='Recent Files',
+ underline=0,menu=self.menuRecentFiles)
+ self.UpdateRecentFilesList()
text.undo_block_start = undo.undo_block_start
***************
*** 254,257 ****
--- 261,265 ----
mbar.add_cascade(label=label, menu=menu, underline=underline)
self.fill_menus()
+ #create the ExtraHelp menu, if required
self.ResetExtraHelpMenu()
***************
*** 543,552 ****
for menuItem in menuList:
self.menuExtraHelp.add_command(label=menuItem[0],
! command=lambda:self.display_docs(menuItem[1]))
else: #no extra help items
if hasattr(self,'menuExtraHelp'):
helpMenu.delete(cascadeIndex-1)
del(self.menuExtraHelp)
def saved_change_hook(self):
short = self.short_title()
--- 551,617 ----
for menuItem in menuList:
self.menuExtraHelp.add_command(label=menuItem[0],
! command=self.__DisplayExtraHelpCallback(menuItem[1]))
else: #no extra help items
if hasattr(self,'menuExtraHelp'):
helpMenu.delete(cascadeIndex-1)
del(self.menuExtraHelp)
+
+ def __DisplayExtraHelpCallback(self,helpFile):
+ def DisplayExtraHelp(helpFile=helpFile):
+ self.display_docs(helpFile)
+ return DisplayExtraHelp
+ def UpdateRecentFilesList(self,newFile=None):
+ #load or update the recent files list, and menu if required
+ rfList=[]
+ if os.path.exists(self.recentFilesPath):
+ RFfile=open(self.recentFilesPath,'r')
+ try:
+ rfList=RFfile.readlines()
+ finally:
+ RFfile.close()
+ if newFile:
+ newFile=os.path.abspath(newFile)+'\n'
+ if newFile in rfList:
+ rfList.remove(newFile)
+ rfList.insert(0,newFile)
+ rfList=self.__CleanRecentFiles(rfList)
+ print self.top.instanceDict
+ print self
+ if rfList:
+ for instance in self.top.instanceDict.keys():
+ instance.menuRecentFiles.delete(1,END)
+ for file in rfList:
+ fileName=file[0:-1]
+ instance.menuRecentFiles.add_command(label=fileName,
+ command=instance.__RecentFileCallback(fileName))
+
+ def __CleanRecentFiles(self,rfList):
+ origRfList=rfList[:]
+ count=0
+ nonFiles=[]
+ for path in rfList:
+ if not os.path.exists(path[0:-1]):
+ nonFiles.append(count)
+ count=count+1
+ if nonFiles:
+ nonFiles.reverse()
+ for index in nonFiles:
+ del(rfList[index])
+ if len(rfList)>19:
+ rfList=rfList[0:19]
+ #if rfList != origRfList:
+ RFfile=open(self.recentFilesPath,'w')
+ try:
+ RFfile.writelines(rfList)
+ finally:
+ RFfile.close()
+ return rfList
+
+ def __RecentFileCallback(self,fileName):
+ def OpenRecentFile(fileName=fileName):
+ self.io.open(editFile=fileName)
+ return OpenRecentFile
+
def saved_change_hook(self):
short = self.short_title()
***************
*** 629,632 ****
--- 694,701 ----
def _close(self):
+ print self.io.filename
+ if self.io.filename:
+ self.UpdateRecentFilesList(newFile=self.io.filename)
+
WindowList.unregister_callback(self.postwindowsmenu)
if self.close_hook:
Index: IOBinding.py
===================================================================
RCS file: /cvsroot/idlefork/idle/IOBinding.py,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -r1.3 -r1.4
*** IOBinding.py 13 Jul 2001 04:18:32 -0000 1.3
--- IOBinding.py 27 Mar 2002 08:40:46 -0000 1.4
***************
*** 73,79 ****
self.filename_change_hook()
! def open(self, event):
if self.editwin.flist:
! filename = self.askopenfile()
if filename:
# if the current window has no filename and hasn't been
--- 73,82 ----
self.filename_change_hook()
! def open(self, event=None, editFile=None):
if self.editwin.flist:
! if not editFile:
! filename = self.askopenfile()
! else:
! filename=editFile
if filename:
# if the current window has no filename and hasn't been
***************
*** 94,98 ****
self.text.focus_set()
return "break"
! filename = self.askopenfile()
if filename:
self.loadfile(filename)
--- 97,104 ----
self.text.focus_set()
return "break"
! if not editFile:
! filename = self.askopenfile()
! else:
! filename=editFile
if filename:
self.loadfile(filename)
Index: configDialog.py
===================================================================
RCS file: /cvsroot/idlefork/idle/configDialog.py,v
retrieving revision 1.45
retrieving revision 1.46
diff -C2 -r1.45 -r1.46
*** configDialog.py 27 Mar 2002 02:25:44 -0000 1.45
--- configDialog.py 27 Mar 2002 08:40:46 -0000 1.46
***************
*** 1073,1082 ****
save all configuration changes to user config files.
"""
- #if self.changedItems['main'].has_key('HelpFiles'):
#this section gets completely replaced
- print idleConf.GetAllExtraHelpSourcesList()
idleConf.userCfg['main'].remove_section('HelpFiles')
idleConf.userCfg['main'].Save()
- print idleConf.GetAllExtraHelpSourcesList()
for configType in self.changedItems.keys():
cfgTypeHasChanges=0
--- 1073,1079 ----
***************
*** 1087,1091 ****
cfgTypeHasChanges=1
if cfgTypeHasChanges:
- print configType,'- changed'
idleConf.userCfg[configType].Save()
self.ResetChangedItems() #clear the changed items dict
--- 1084,1087 ----