old_contents: """
  A number of function that enhance IDLE on MacOSX when it used as a normal
  GUI application (as opposed to an X11 application).
  """
  import sys
  
  def runningAsOSXApp():
      """ Returns True iff running from the IDLE.app bundle on OSX """
      return (sys.platform == 'darwin' and 'IDLE.app' in sys.argv[0])
  
  def addOpenEventSupport(root, flist):
      """
      This ensures that the application will respont to open AppleEvents, which
      makes is feaseable to use IDLE as the default application for python files.
      """
      def doOpenFile(*args):
          for fn in args:
              flist.open(fn)
  
      # The command below is a hook in aquatk that is called whenever the app
      # receives a file open event. The callback can have multiple arguments,
      # one for every file that should be opened.
      root.createcommand("::tk::mac::OpenDocument", doOpenFile)
  
  def hideTkConsole(root):
      root.tk.call('console', 'hide')
  
  
  def setupApp(root, flist):
      """
      Perform setup for the OSX application bundle.
      """
      if not runningAsOSXApp(): return
  
      hideTkConsole(root)
      addOpenEventSupport(root, flist)
  
new_contents: """
  A number of function that enhance IDLE on MacOSX when it used as a normal
  GUI application (as opposed to an X11 application).
  """
  import sys
  
  def runningAsOSXApp():
      """ Returns True iff running from the IDLE.app bundle on OSX """
      return (sys.platform == 'darwin' and 'IDLE.app' in sys.argv[0])
  
  def addOpenEventSupport(root, flist):
      """
      This ensures that the application will respont to open AppleEvents, which
      makes is feaseable to use IDLE as the default application for python files.
      """
      def doOpenFile(*args):
          for fn in args:
              flist.open(fn)
  
      # The command below is a hook in aquatk that is called whenever the app
      # receives a file open event. The callback can have multiple arguments,
      # one for every file that should be opened.
      root.createcommand("::tk::mac::OpenDocument", doOpenFile)
  
  def hideTkConsole(root):
      root.tk.call('console', 'hide')
  
  def overrideRootMenu(root, flist):
      """
      Replace the Tk root menu by something that's more appropriate for
      IDLE.
      """
      # The menu that is attached to the Tk root (".") is also used by AquaTk for 
      # all windows that don't specify a menu of their own. The default menubar
      # contains a number of menus, none of which are appropriate for IDLE. The
      # Most annoying of those is an 'About Tck/Tk...' menu in the application
      # menu.
      #
      # This function replaces the default menubar by a mostly empty one, it
      # should only contain the correct application menu and the window menu.
      #
      # Due to a (mis-)feature of TkAqua the user will also see an empty Help
      # menu.
      from Tkinter import Menu, Text, Text
      from EditorWindow import prepstr, get_accelerator
      import Bindings
      import WindowList
      from MultiCall import MultiCallCreator
  
      menubar = Menu(root)
      root.configure(menu=menubar)
      menudict = {}
  
      menudict['windows'] = menu = Menu(menubar, name='windows')
      menubar.add_cascade(label='Window', menu=menu, underline=0)
  
      def postwindowsmenu(menu=menu):
          end = menu.index('end')
          if end is None:
              end = -1
  
          if end > 0:
              menu.delete(0, end)
          WindowList.add_windows_to_menu(menu)
      WindowList.register_callback(postwindowsmenu)
  
      menudict['application'] = menu = Menu(menubar, name='apple')
      menubar.add_cascade(label='IDLE', menu=menu)
  
      def about_dialog(event=None):
          import aboutDialog
          aboutDialog.AboutDialog(root, 'About IDLE')
  
      def config_dialog(event=None):
          import configDialog
          configDialog.ConfigDialog(root, 'Settings')
  
      root.bind('<<about-idle>>', about_dialog)
      root.bind('<<open-config-dialog>>', config_dialog)
      if flist:
          root.bind('<<close-all-windows>>', flist.close_all_callback)
  
      for mname, entrylist in Bindings.menudefs:
          menu = menudict.get(mname)
          if not menu: 
              continue
          for entry in entrylist:
              if not entry:
                  menu.add_separator()
              else:
                  label, eventname = entry
                  underline, label = prepstr(label)
                  accelerator = get_accelerator(Bindings.default_keydefs, 
                          eventname)
                  def command(text=root, eventname=eventname):
                      text.event_generate(eventname)
                  menu.add_command(label=label, underline=underline,
                          command=command, accelerator=accelerator)
  
      
  
  
  
  def setupApp(root, flist):
      """
      Perform setup for the OSX application bundle.
      """
      if not runningAsOSXApp(): return
  
      hideTkConsole(root)
      overrideRootMenu(root, flist)
      addOpenEventSupport(root, flist)
  
subject: Fix for bug #1517996: Class and Path browsers show Tk menu