annotate Lib/idlelib/ScriptBinding.py @ 27998:e27f58a50737 legacy-trunk

SF bug #690377: Dud footnote reference in distutils docs
author Raymond Hettinger <python@rcn.com>
date Fri, 21 Feb 2003 02:47:09 +0000
parents 8e7432cdf7d8
children 7875fcaae7a3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
13975
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
1 """Extension to execute code outside the Python shell window.
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
2
23784
24b0f6d693e3 Rework the code to have only the GvR RPC. Output from execution of user
Kurt B. Kaiser <kbk@shore.net>
parents: 23547
diff changeset
3 This adds the following commands:
13975
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
4
23784
24b0f6d693e3 Rework the code to have only the GvR RPC. Output from execution of user
Kurt B. Kaiser <kbk@shore.net>
parents: 23547
diff changeset
5 - Check module does a full syntax check of the current module.
26693
975333d40bf8 M ColorDelegator.py
Kurt B. Kaiser <kbk@shore.net>
parents: 26522
diff changeset
6 It also runs the tabnanny to catch any inconsistent tabs.
13975
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
7
25123
6b67d26079f2 M PyShell.py
Kurt B. Kaiser <kbk@shore.net>
parents: 25020
diff changeset
8 - Run module executes the module's code in the __main__ namespace. The window
26693
975333d40bf8 M ColorDelegator.py
Kurt B. Kaiser <kbk@shore.net>
parents: 26522
diff changeset
9 must have been saved previously. The module is added to sys.modules, and is
975333d40bf8 M ColorDelegator.py
Kurt B. Kaiser <kbk@shore.net>
parents: 26522
diff changeset
10 also added to the __main__ namespace.
13975
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
11
26693
975333d40bf8 M ColorDelegator.py
Kurt B. Kaiser <kbk@shore.net>
parents: 26522
diff changeset
12 XXX GvR Redesign this interface (yet again) as follows:
23547
b74afdd072eb GvR's rpc patch
Chui Tey <chui.tey@advdata.com.au>
parents: 21765
diff changeset
13
27390
882e3eeac3dd M ScriptBinding.py
Kurt B. Kaiser <kbk@shore.net>
parents: 27194
diff changeset
14 - Present a dialog box for ``Run Module''
23547
b74afdd072eb GvR's rpc patch
Chui Tey <chui.tey@advdata.com.au>
parents: 21765
diff changeset
15
b74afdd072eb GvR's rpc patch
Chui Tey <chui.tey@advdata.com.au>
parents: 21765
diff changeset
16 - Allow specify command line arguments in the dialog box
b74afdd072eb GvR's rpc patch
Chui Tey <chui.tey@advdata.com.au>
parents: 21765
diff changeset
17
13975
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
18 """
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
19
26693
975333d40bf8 M ColorDelegator.py
Kurt B. Kaiser <kbk@shore.net>
parents: 26522
diff changeset
20 import re
975333d40bf8 M ColorDelegator.py
Kurt B. Kaiser <kbk@shore.net>
parents: 26522
diff changeset
21 import string
975333d40bf8 M ColorDelegator.py
Kurt B. Kaiser <kbk@shore.net>
parents: 26522
diff changeset
22 import tabnanny
975333d40bf8 M ColorDelegator.py
Kurt B. Kaiser <kbk@shore.net>
parents: 26522
diff changeset
23 import tokenize
13975
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
24 import tkMessageBox
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
25
26693
975333d40bf8 M ColorDelegator.py
Kurt B. Kaiser <kbk@shore.net>
parents: 26522
diff changeset
26 IDENTCHARS = string.ascii_letters + string.digits + "_"
975333d40bf8 M ColorDelegator.py
Kurt B. Kaiser <kbk@shore.net>
parents: 26522
diff changeset
27
13975
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
28 indent_message = """Error: Inconsistent indentation detected!
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
29
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
30 This means that either:
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
31
23547
b74afdd072eb GvR's rpc patch
Chui Tey <chui.tey@advdata.com.au>
parents: 21765
diff changeset
32 1) your indentation is outright incorrect (easy to fix), or
13975
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
33
23547
b74afdd072eb GvR's rpc patch
Chui Tey <chui.tey@advdata.com.au>
parents: 21765
diff changeset
34 2) your indentation mixes tabs and spaces in a way that depends on \
13975
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
35 how many spaces a tab is worth.
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
36
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
37 To fix case 2, change all tabs to spaces by using Select All followed \
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
38 by Untabify Region (both in the Edit menu)."""
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
39
23784
24b0f6d693e3 Rework the code to have only the GvR RPC. Output from execution of user
Kurt B. Kaiser <kbk@shore.net>
parents: 23547
diff changeset
40
26693
975333d40bf8 M ColorDelegator.py
Kurt B. Kaiser <kbk@shore.net>
parents: 26522
diff changeset
41 # XXX 11Jun02 KBK TBD Implement stop-execution
975333d40bf8 M ColorDelegator.py
Kurt B. Kaiser <kbk@shore.net>
parents: 26522
diff changeset
42
13975
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
43 class ScriptBinding:
18497
42741e677338 py-cvs merge, better error dialog
Steven M. Gava <elguavas@python.net>
parents: 13975
diff changeset
44
13975
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
45 menudefs = [
23784
24b0f6d693e3 Rework the code to have only the GvR RPC. Output from execution of user
Kurt B. Kaiser <kbk@shore.net>
parents: 23547
diff changeset
46 ('run', [None,
26693
975333d40bf8 M ColorDelegator.py
Kurt B. Kaiser <kbk@shore.net>
parents: 26522
diff changeset
47 ('Check Module', '<<check-module>>'),
27390
882e3eeac3dd M ScriptBinding.py
Kurt B. Kaiser <kbk@shore.net>
parents: 27194
diff changeset
48 ('Run Module', '<<run-module>>'), ]), ]
13975
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
49
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
50 def __init__(self, editwin):
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
51 self.editwin = editwin
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
52 # Provide instance variables referenced by Debugger
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
53 # XXX This should be done differently
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
54 self.flist = self.editwin.flist
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
55 self.root = self.flist.root
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
56
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
57 def check_module_event(self, event):
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
58 filename = self.getfilename()
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
59 if not filename:
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
60 return
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
61 if not self.tabnanny(filename):
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
62 return
26693
975333d40bf8 M ColorDelegator.py
Kurt B. Kaiser <kbk@shore.net>
parents: 26522
diff changeset
63 self.checksyntax(filename)
13975
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
64
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
65 def tabnanny(self, filename):
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
66 f = open(filename, 'r')
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
67 try:
25312
8eda166b104e Merge Py Idle changes:
Kurt B. Kaiser <kbk@shore.net>
parents: 25123
diff changeset
68 tabnanny.process_tokens(tokenize.generate_tokens(f.readline))
13975
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
69 except tokenize.TokenError, msg:
26475
6c45985a8fdb Cleanup:
Neal Norwitz <nnorwitz@gmail.com>
parents: 25312
diff changeset
70 self.errorbox("Token error", "Token error:\n%s" % msg)
6c45985a8fdb Cleanup:
Neal Norwitz <nnorwitz@gmail.com>
parents: 25312
diff changeset
71 return False
13975
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
72 except tabnanny.NannyNag, nag:
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
73 # The error messages from tabnanny are too confusing...
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
74 self.editwin.gotoline(nag.get_lineno())
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
75 self.errorbox("Tab/space error", indent_message)
26475
6c45985a8fdb Cleanup:
Neal Norwitz <nnorwitz@gmail.com>
parents: 25312
diff changeset
76 return False
6c45985a8fdb Cleanup:
Neal Norwitz <nnorwitz@gmail.com>
parents: 25312
diff changeset
77 return True
13975
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
78
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
79 def checksyntax(self, filename):
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
80 f = open(filename, 'r')
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
81 source = f.read()
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
82 f.close()
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
83 if '\r' in source:
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
84 source = re.sub(r"\r\n", "\n", source)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
85 if source and source[-1] != '\n':
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
86 source = source + '\n'
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
87 try:
26693
975333d40bf8 M ColorDelegator.py
Kurt B. Kaiser <kbk@shore.net>
parents: 26522
diff changeset
88 # If successful, return the compiled code
975333d40bf8 M ColorDelegator.py
Kurt B. Kaiser <kbk@shore.net>
parents: 26522
diff changeset
89 return compile(source, filename, "exec")
13975
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
90 except (SyntaxError, OverflowError), err:
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
91 try:
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
92 msg, (errorfilename, lineno, offset, line) = err
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
93 if not errorfilename:
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
94 err.args = msg, (filename, lineno, offset, line)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
95 err.filename = filename
26693
975333d40bf8 M ColorDelegator.py
Kurt B. Kaiser <kbk@shore.net>
parents: 26522
diff changeset
96 self.colorize_syntax_error(msg, lineno, offset)
13975
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
97 except:
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
98 msg = "*** " + str(err)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
99 self.errorbox("Syntax error",
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
100 "There's an error in your program:\n" + msg)
26693
975333d40bf8 M ColorDelegator.py
Kurt B. Kaiser <kbk@shore.net>
parents: 26522
diff changeset
101 return False
26959
b8c72e86a12d Whitespace Normalization
Kurt B. Kaiser <kbk@shore.net>
parents: 26713
diff changeset
102
26693
975333d40bf8 M ColorDelegator.py
Kurt B. Kaiser <kbk@shore.net>
parents: 26522
diff changeset
103 def colorize_syntax_error(self, msg, lineno, offset):
975333d40bf8 M ColorDelegator.py
Kurt B. Kaiser <kbk@shore.net>
parents: 26522
diff changeset
104 text = self.editwin.text
975333d40bf8 M ColorDelegator.py
Kurt B. Kaiser <kbk@shore.net>
parents: 26522
diff changeset
105 pos = "0.0 + %d lines + %d chars" % (lineno-1, offset-1)
975333d40bf8 M ColorDelegator.py
Kurt B. Kaiser <kbk@shore.net>
parents: 26522
diff changeset
106 text.tag_add("ERROR", pos)
975333d40bf8 M ColorDelegator.py
Kurt B. Kaiser <kbk@shore.net>
parents: 26522
diff changeset
107 char = text.get(pos)
975333d40bf8 M ColorDelegator.py
Kurt B. Kaiser <kbk@shore.net>
parents: 26522
diff changeset
108 if char and char in IDENTCHARS:
975333d40bf8 M ColorDelegator.py
Kurt B. Kaiser <kbk@shore.net>
parents: 26522
diff changeset
109 text.tag_add("ERROR", pos + " wordstart", pos)
975333d40bf8 M ColorDelegator.py
Kurt B. Kaiser <kbk@shore.net>
parents: 26522
diff changeset
110 if '\n' == text.get(pos): # error at line end
975333d40bf8 M ColorDelegator.py
Kurt B. Kaiser <kbk@shore.net>
parents: 26522
diff changeset
111 text.mark_set("insert", pos)
975333d40bf8 M ColorDelegator.py
Kurt B. Kaiser <kbk@shore.net>
parents: 26522
diff changeset
112 else:
975333d40bf8 M ColorDelegator.py
Kurt B. Kaiser <kbk@shore.net>
parents: 26522
diff changeset
113 text.mark_set("insert", pos + "+1c")
975333d40bf8 M ColorDelegator.py
Kurt B. Kaiser <kbk@shore.net>
parents: 26522
diff changeset
114 text.see(pos)
26959
b8c72e86a12d Whitespace Normalization
Kurt B. Kaiser <kbk@shore.net>
parents: 26713
diff changeset
115
27390
882e3eeac3dd M ScriptBinding.py
Kurt B. Kaiser <kbk@shore.net>
parents: 27194
diff changeset
116 def run_module_event(self, event):
882e3eeac3dd M ScriptBinding.py
Kurt B. Kaiser <kbk@shore.net>
parents: 27194
diff changeset
117 "Check syntax, if ok run the module in the shell top level"
13975
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
118 filename = self.getfilename()
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
119 if not filename:
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
120 return
26693
975333d40bf8 M ColorDelegator.py
Kurt B. Kaiser <kbk@shore.net>
parents: 26522
diff changeset
121 code = self.checksyntax(filename)
975333d40bf8 M ColorDelegator.py
Kurt B. Kaiser <kbk@shore.net>
parents: 26522
diff changeset
122 if not code:
975333d40bf8 M ColorDelegator.py
Kurt B. Kaiser <kbk@shore.net>
parents: 26522
diff changeset
123 return
13975
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
124 flist = self.editwin.flist
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
125 shell = flist.open_shell()
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
126 interp = shell.interp
25123
6b67d26079f2 M PyShell.py
Kurt B. Kaiser <kbk@shore.net>
parents: 25020
diff changeset
127 interp.restart_subprocess()
23547
b74afdd072eb GvR's rpc patch
Chui Tey <chui.tey@advdata.com.au>
parents: 21765
diff changeset
128 # XXX Too often this discards arguments the user just set...
b74afdd072eb GvR's rpc patch
Chui Tey <chui.tey@advdata.com.au>
parents: 21765
diff changeset
129 interp.runcommand("""if 1:
b74afdd072eb GvR's rpc patch
Chui Tey <chui.tey@advdata.com.au>
parents: 21765
diff changeset
130 _filename = %s
b74afdd072eb GvR's rpc patch
Chui Tey <chui.tey@advdata.com.au>
parents: 21765
diff changeset
131 import sys as _sys
b74afdd072eb GvR's rpc patch
Chui Tey <chui.tey@advdata.com.au>
parents: 21765
diff changeset
132 from os.path import basename as _basename
b74afdd072eb GvR's rpc patch
Chui Tey <chui.tey@advdata.com.au>
parents: 21765
diff changeset
133 if (not _sys.argv or
b74afdd072eb GvR's rpc patch
Chui Tey <chui.tey@advdata.com.au>
parents: 21765
diff changeset
134 _basename(_sys.argv[0]) != _basename(_filename)):
b74afdd072eb GvR's rpc patch
Chui Tey <chui.tey@advdata.com.au>
parents: 21765
diff changeset
135 _sys.argv = [_filename]
26693
975333d40bf8 M ColorDelegator.py
Kurt B. Kaiser <kbk@shore.net>
parents: 26522
diff changeset
136 del _filename, _sys, _basename
23547
b74afdd072eb GvR's rpc patch
Chui Tey <chui.tey@advdata.com.au>
parents: 21765
diff changeset
137 \n""" % `filename`)
26693
975333d40bf8 M ColorDelegator.py
Kurt B. Kaiser <kbk@shore.net>
parents: 26522
diff changeset
138 interp.runcode(code)
13975
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
139
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
140 def getfilename(self):
26713
eab6d7c80341 If Edit window has not been saved, offer to save if user tries to Run or
Kurt B. Kaiser <kbk@shore.net>
parents: 26693
diff changeset
141 """Get source filename. If not saved, offer to save (or create) file
eab6d7c80341 If Edit window has not been saved, offer to save if user tries to Run or
Kurt B. Kaiser <kbk@shore.net>
parents: 26693
diff changeset
142
eab6d7c80341 If Edit window has not been saved, offer to save if user tries to Run or
Kurt B. Kaiser <kbk@shore.net>
parents: 26693
diff changeset
143 The debugger requires a source file. Make sure there is one, and that
eab6d7c80341 If Edit window has not been saved, offer to save if user tries to Run or
Kurt B. Kaiser <kbk@shore.net>
parents: 26693
diff changeset
144 the current version of the source buffer has been saved. If the user
eab6d7c80341 If Edit window has not been saved, offer to save if user tries to Run or
Kurt B. Kaiser <kbk@shore.net>
parents: 26693
diff changeset
145 declines to save or cancels the Save As dialog, return None.
eab6d7c80341 If Edit window has not been saved, offer to save if user tries to Run or
Kurt B. Kaiser <kbk@shore.net>
parents: 26693
diff changeset
146 """
13975
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
147 if not self.editwin.get_saved():
26713
eab6d7c80341 If Edit window has not been saved, offer to save if user tries to Run or
Kurt B. Kaiser <kbk@shore.net>
parents: 26693
diff changeset
148 msg = """Source Must Be Saved
eab6d7c80341 If Edit window has not been saved, offer to save if user tries to Run or
Kurt B. Kaiser <kbk@shore.net>
parents: 26693
diff changeset
149 OK to Save?"""
eab6d7c80341 If Edit window has not been saved, offer to save if user tries to Run or
Kurt B. Kaiser <kbk@shore.net>
parents: 26693
diff changeset
150 mb = tkMessageBox.Message(
eab6d7c80341 If Edit window has not been saved, offer to save if user tries to Run or
Kurt B. Kaiser <kbk@shore.net>
parents: 26693
diff changeset
151 title="Save Before Run or Check",
eab6d7c80341 If Edit window has not been saved, offer to save if user tries to Run or
Kurt B. Kaiser <kbk@shore.net>
parents: 26693
diff changeset
152 message=msg,
eab6d7c80341 If Edit window has not been saved, offer to save if user tries to Run or
Kurt B. Kaiser <kbk@shore.net>
parents: 26693
diff changeset
153 icon=tkMessageBox.QUESTION,
eab6d7c80341 If Edit window has not been saved, offer to save if user tries to Run or
Kurt B. Kaiser <kbk@shore.net>
parents: 26693
diff changeset
154 type=tkMessageBox.OKCANCEL,
27194
59309d4bf841 Default the OK key in the Save Before Run dialog.
Kurt B. Kaiser <kbk@shore.net>
parents: 26959
diff changeset
155 default=tkMessageBox.OK,
26713
eab6d7c80341 If Edit window has not been saved, offer to save if user tries to Run or
Kurt B. Kaiser <kbk@shore.net>
parents: 26693
diff changeset
156 master=self.editwin.text)
eab6d7c80341 If Edit window has not been saved, offer to save if user tries to Run or
Kurt B. Kaiser <kbk@shore.net>
parents: 26693
diff changeset
157 reply = mb.show()
eab6d7c80341 If Edit window has not been saved, offer to save if user tries to Run or
Kurt B. Kaiser <kbk@shore.net>
parents: 26693
diff changeset
158 if reply == "ok":
eab6d7c80341 If Edit window has not been saved, offer to save if user tries to Run or
Kurt B. Kaiser <kbk@shore.net>
parents: 26693
diff changeset
159 self.editwin.io.save(None)
eab6d7c80341 If Edit window has not been saved, offer to save if user tries to Run or
Kurt B. Kaiser <kbk@shore.net>
parents: 26693
diff changeset
160 else:
eab6d7c80341 If Edit window has not been saved, offer to save if user tries to Run or
Kurt B. Kaiser <kbk@shore.net>
parents: 26693
diff changeset
161 return None
eab6d7c80341 If Edit window has not been saved, offer to save if user tries to Run or
Kurt B. Kaiser <kbk@shore.net>
parents: 26693
diff changeset
162 # filename is None if file doesn't exist
13975
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
163 filename = self.editwin.io.filename
26713
eab6d7c80341 If Edit window has not been saved, offer to save if user tries to Run or
Kurt B. Kaiser <kbk@shore.net>
parents: 26693
diff changeset
164 self.editwin.text.focus_set()
13975
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
165 return filename
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
166
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
167 def errorbox(self, title, message):
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
168 # XXX This should really be a function of EditorWindow...
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
169 tkMessageBox.showerror(title, message, master=self.editwin.text)
30713d5288df Initial revision
David Scherer <dscherer@cmu.edu>
parents:
diff changeset
170 self.editwin.text.focus_set()