blob: a112fc578e3fef012b154ccd6fb87244b24213b1 [file] [log] [blame]
Guido van Rossum504b0bf1999-01-02 21:28:54 +00001import tkMessageBox
2import os
3import imp
4import sys
5
6class ScriptBinding:
7
8 def __init__(self, editwin):
9 self.editwin = editwin
10 text = editwin.text
11 text.bind("<<run-module>>", self.run_module)
12 text.bind("<<run-script>>", self.run_script)
13 text.bind("<<new-shell>>", self.new_shell)
14
15 def run_module(self, event=None):
16 filename = self.editwin.io.filename
17 if not filename:
18 tkMessageBox.showerror("No file name",
19 "This window has no file name",
20 master=self.editwin.text)
21 return
22 modname, ext = os.path.splitext(os.path.basename(filename))
23 try:
24 mod = sys.modules[modname]
25 except KeyError:
26 mod = imp.new_module(modname)
27 sys.modules[modname] = mod
28 source = self.editwin.text.get("1.0", "end")
29 exec source in mod.__dict__
30
31 def run_script(self, event=None):
32 pass
33
34 def new_shell(self, event=None):
35 import PyShell
36 # XXX Not enough: each shell takes over stdin/stdout/stderr...
37 pyshell = PyShell.PyShell(self.editwin.flist)
38 pyshell.begin()