@@ -245,8 +245,13 @@ def makemenubar(self):
245245 self .menubar = MenuBar (self )
246246 FrameWork .AppleMenu (self .menubar , self .getabouttext (), self .do_about )
247247 self .makeusermenus ()
248-
249- def scriptswalk (self , top , menu ):
248+
249+ def scriptswalk (self , top , menu , done = None ):
250+ if done is None :
251+ done = {}
252+ if done .has_key (top ):
253+ return
254+ done [top ] = 1
250255 import os , macfs , string
251256 try :
252257 names = os .listdir (top )
@@ -258,19 +263,22 @@ def scriptswalk(self, top, menu):
258263 for name in names :
259264 fss , isdir , isalias = macfs .ResolveAliasFile (name )
260265 path = fss .as_pathname ()
266+ if done .has_key (path ):
267+ continue
261268 name = string .strip (name )
262269 if name [- 3 :] == '---' :
263270 menu .addseparator ()
264271 elif isdir :
265272 submenu = FrameWork .SubMenu (menu , name )
266- self .scriptswalk (path , submenu )
273+ self .scriptswalk (path , submenu , done )
267274 else :
268275 creator , type = fss .GetCreatorType ()
269276 if type == 'TEXT' :
270277 if name [- 3 :] == '.py' :
271278 name = name [:- 3 ]
272279 item = FrameWork .MenuItem (menu , name , None , self .domenu_script )
273280 self ._scripts [(menu .id , item .item )] = path
281+ done [path ] = 1
274282 os .chdir (savedir )
275283
276284 def domenu_script (self , id , item , window , event ):
@@ -352,7 +360,8 @@ def getscript(self, filename):
352360 import string
353361 lowpath = string .lower (filename )
354362 for wid , window in self ._windows .items ():
355- if hasattr (window , "path" ) and lowpath == string .lower (window .path ):
363+ if hasattr (window , "path" ) and type (window .path ) == StringType and \
364+ lowpath == string .lower (window .path ):
356365 return window
357366 elif hasattr (window , "path" ) and filename == wid .GetWTitle ():
358367 return window
0 commit comments