[Python-checkins] r56204 - python/trunk/Lib/idlelib/macosxSupport.py

ronald.oussoren python-checkins at python.org
Mon Jul 9 08:02:21 CEST 2007


Author: ronald.oussoren
Date: Mon Jul  9 08:02:21 2007
New Revision: 56204

Modified:
   python/trunk/Lib/idlelib/macosxSupport.py
Log:
Patch 1693258: Fix for duplicate "preferences" menu-OS X


Modified: python/trunk/Lib/idlelib/macosxSupport.py
==============================================================================
--- python/trunk/Lib/idlelib/macosxSupport.py	(original)
+++ python/trunk/Lib/idlelib/macosxSupport.py	Mon Jul  9 08:02:21 2007
@@ -3,6 +3,7 @@
 GUI application (as opposed to an X11 application).
 """
 import sys
+import Tkinter
 
 def runningAsOSXApp():
     """ Returns True iff running from the IDLE.app bundle on OSX """
@@ -23,7 +24,11 @@
     root.createcommand("::tk::mac::OpenDocument", doOpenFile)
 
 def hideTkConsole(root):
-    root.tk.call('console', 'hide')
+    try:
+        root.tk.call('console', 'hide')
+    except Tkinter.TclError:
+        # Some versions of the Tk framework don't have a console object
+        pass
 
 def overrideRootMenu(root, flist):
     """
@@ -75,32 +80,40 @@
         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()
+
+    ###check if Tk version >= 8.4.14; if so, use hard-coded showprefs binding
+    tkversion = root.tk.eval('info patchlevel')
+    if tkversion >= '8.4.14':
+        Bindings.menudefs[0] =  ('application', [
+                ('About IDLE', '<<about-idle>>'),
+                None,
+            ])
+        root.createcommand('::tk::mac::ShowPreferences', config_dialog)
+    else:
+        for mname, entrylist in Bindings.menudefs:
+            menu = menudict.get(mname)
+            if not menu:
+                continue
             else:
-                label, eventname = entry
-                underline, label = prepstr(label)
-                accelerator = get_accelerator(Bindings.default_keydefs,
+                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,
+                        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.


More information about the Python-checkins mailing list