add hg and python
This commit is contained in:
parent
3a742c699f
commit
458120dd40
3709 changed files with 1244309 additions and 1 deletions
112
sys/lib/python/idlelib/macosxSupport.py
Normal file
112
sys/lib/python/idlelib/macosxSupport.py
Normal file
|
@ -0,0 +1,112 @@
|
|||
"""
|
||||
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)
|
Loading…
Add table
Add a link
Reference in a new issue