Issue #17172: Add the ability to run turtledemo from Idle.
Make turtledemo start as active on Mac even when run with subprocess. Patch by Ramchandra Apt, Lita Cho, and Ned Daily.
This commit is contained in:
parent
c61c170b41
commit
7e55db2bc5
|
@ -8,6 +8,8 @@ the PythonShell window, and a Format menu which is only present in the Editor
|
|||
windows.
|
||||
|
||||
"""
|
||||
from importlib.util import find_spec
|
||||
|
||||
from idlelib.configHandler import idleConf
|
||||
|
||||
# Warning: menudefs is altered in macosxSupport.overrideRootMenu()
|
||||
|
@ -86,4 +88,7 @@ menudefs = [
|
|||
]),
|
||||
]
|
||||
|
||||
if find_spec('turtledemo'):
|
||||
menudefs[-1][1].append(('Turtle Demo', '<<open-turtle-demo>>'))
|
||||
|
||||
default_keydefs = idleConf.GetCurrentKeySet()
|
||||
|
|
|
@ -222,6 +222,7 @@ class EditorWindow(object):
|
|||
text.bind("<<close-all-windows>>", self.flist.close_all_callback)
|
||||
text.bind("<<open-class-browser>>", self.open_class_browser)
|
||||
text.bind("<<open-path-browser>>", self.open_path_browser)
|
||||
text.bind("<<open-turtle-demo>>", self.open_turtle_demo)
|
||||
|
||||
self.set_status_bar()
|
||||
vbar['command'] = text.yview
|
||||
|
@ -705,6 +706,14 @@ class EditorWindow(object):
|
|||
from idlelib import PathBrowser
|
||||
PathBrowser.PathBrowser(self.flist)
|
||||
|
||||
def open_turtle_demo(self, event = None):
|
||||
import subprocess
|
||||
|
||||
cmd = [sys.executable,
|
||||
'-c',
|
||||
'from turtledemo.__main__ import main; main()']
|
||||
p = subprocess.Popen(cmd, shell=False)
|
||||
|
||||
def gotoline(self, lineno):
|
||||
if lineno is not None and lineno > 0:
|
||||
self.text.mark_set("insert", "%d.0" % lineno)
|
||||
|
|
|
@ -40,6 +40,22 @@ class DemoWindow(object):
|
|||
root.title('Python turtle-graphics examples')
|
||||
root.wm_protocol("WM_DELETE_WINDOW", self._destroy)
|
||||
|
||||
if sys.platform == 'darwin':
|
||||
import subprocess
|
||||
# Make sure we are the currently activated OS X application
|
||||
# so that our menu bar appears.
|
||||
p = subprocess.Popen(
|
||||
[
|
||||
'osascript',
|
||||
'-e', 'tell application "System Events"',
|
||||
'-e', 'set frontmost of the first process whose '
|
||||
'unix id is {} to true'.format(os.getpid()),
|
||||
'-e', 'end tell',
|
||||
],
|
||||
stderr=subprocess.DEVNULL,
|
||||
stdout=subprocess.DEVNULL,
|
||||
)
|
||||
|
||||
root.grid_rowconfigure(1, weight=1)
|
||||
root.grid_columnconfigure(0, weight=1)
|
||||
root.grid_columnconfigure(1, minsize=90, weight=1)
|
||||
|
|
Loading…
Reference in New Issue