[Python-checkins] python/dist/src/Tools/idle EditorWindow.py,1.38.18.3,1.38.18.4

rhettinger@users.sourceforge.net rhettinger@users.sourceforge.net
Fri, 04 Oct 2002 20:58:18 -0700


Update of /cvsroot/python/python/dist/src/Tools/idle
In directory usw-pr-cvs1:/tmp/cvs-serv17647

Modified Files:
      Tag: release22-maint
	EditorWindow.py 
Log Message:
Backport 1.43:

Extended IDLE's open module menu item to handle hierarchical module names.
Closes SF patch 600152.



Index: EditorWindow.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Tools/idle/EditorWindow.py,v
retrieving revision 1.38.18.3
retrieving revision 1.38.18.4
diff -C2 -d -r1.38.18.3 -r1.38.18.4
*** EditorWindow.py	23 Sep 2002 14:17:15 -0000	1.38.18.3
--- EditorWindow.py	5 Oct 2002 03:58:16 -0000	1.38.18.4
***************
*** 82,85 ****
--- 82,99 ----
  """ % idlever.IDLE_VERSION
  
+ def _find_module(fullname, path=None):
+     """Version of imp.find_module() that handles hierarchical module names"""
+ 
+     file = None
+     for tgt in fullname.split('.'):
+         if file is not None:
+             file.close()            # close intermediate files
+         (file, filename, descr) = imp.find_module(tgt, path)
+         if descr[2] == imp.PY_SOURCE:
+             break                   # find but not load the source file
+         module = imp.load_module(tgt, file, filename, descr)
+         path = module.__path__
+     return file, filename, descr
+ 
  class EditorWindow:
  
***************
*** 341,348 ****
              if not name:
                  return
-         # XXX Ought to support package syntax
          # XXX Ought to insert current file's directory in front of path
          try:
!             (f, file, (suffix, mode, type)) = imp.find_module(name)
          except (NameError, ImportError), msg:
              tkMessageBox.showerror("Import error", str(msg), parent=self.text)
--- 355,361 ----
              if not name:
                  return
          # XXX Ought to insert current file's directory in front of path
          try:
!             (f, file, (suffix, mode, type)) = _find_module(name)
          except (NameError, ImportError), msg:
              tkMessageBox.showerror("Import error", str(msg), parent=self.text)