cpython/Tools/idle/ScriptBinding.py
Guido van Rossum 504b0bf066 Checking in IDLE 0.2.
Much has changed -- too much, in fact, to write down.
The big news is that there's a standard way to write IDLE extensions;
see extend.txt.  Some sample extensions have been provided, and
some existing code has been converted to extensions.  Probably the
biggest new user feature is a new search dialog with more options,
search and replace, and even search in files (grep).

This is exactly as downloaded from my laptop after returning
from the holidays -- it hasn't even been tested on Unix yet.
1999-01-02 21:28:54 +00:00

38 lines
1.2 KiB
Python

import tkMessageBox
import os
import imp
import sys
class ScriptBinding:
def __init__(self, editwin):
self.editwin = editwin
text = editwin.text
text.bind("<<run-module>>", self.run_module)
text.bind("<<run-script>>", self.run_script)
text.bind("<<new-shell>>", self.new_shell)
def run_module(self, event=None):
filename = self.editwin.io.filename
if not filename:
tkMessageBox.showerror("No file name",
"This window has no file name",
master=self.editwin.text)
return
modname, ext = os.path.splitext(os.path.basename(filename))
try:
mod = sys.modules[modname]
except KeyError:
mod = imp.new_module(modname)
sys.modules[modname] = mod
source = self.editwin.text.get("1.0", "end")
exec source in mod.__dict__
def run_script(self, event=None):
pass
def new_shell(self, event=None):
import PyShell
# XXX Not enough: each shell takes over stdin/stdout/stderr...
pyshell = PyShell.PyShell(self.editwin.flist)
pyshell.begin()