annotate Mac/Tools/IDE/PyConsole.py @ 25838:8540887bcec6 2.2

Backport of 2.183: Fix memory leak in add_subclass() found by NealN with valgrind.
author Guido van Rossum <guido@python.org>
date Fri, 18 Oct 2002 13:42:21 +0000
parents 99341e85017e
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
1 import W
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
2 import Wkeys
19488
42b2f1936254 Import the MacOS toolbox modules from the Carbon package.
Jack Jansen <jack.jansen@cwi.nl>
parents: 19009
diff changeset
3 from Carbon import Fm
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
4 import WASTEconst
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
5 from types import *
19488
42b2f1936254 Import the MacOS toolbox modules from the Carbon package.
Jack Jansen <jack.jansen@cwi.nl>
parents: 19009
diff changeset
6 from Carbon import Events
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
7 import string
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
8 import sys
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
9 import traceback
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
10 import MacOS
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
11 import MacPrefs
19488
42b2f1936254 Import the MacOS toolbox modules from the Carbon package.
Jack Jansen <jack.jansen@cwi.nl>
parents: 19009
diff changeset
12 from Carbon import Qd
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
13 import PyInteractive
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
14
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
15 if not hasattr(sys, 'ps1'):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
16 sys.ps1 = '>>> '
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
17 if not hasattr(sys, 'ps2'):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
18 sys.ps2 = '... '
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
19
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
20 def inspect(foo): # JJS 1/25/99
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
21 "Launch the browser on the given object. This is a general built-in function."
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
22 import PyBrowser
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
23 PyBrowser.Browser(foo)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
24
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
25 class ConsoleTextWidget(W.EditText):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
26
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
27 def __init__(self, *args, **kwargs):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
28 apply(W.EditText.__init__, (self,) + args, kwargs)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
29 self._inputstart = 0
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
30 self._buf = ''
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
31 self.pyinteractive = PyInteractive.PyInteractive()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
32
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
33 import __main__
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
34 self._namespace = __main__.__dict__
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
35 self._namespace['inspect'] = inspect # JJS 1/25/99
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
36
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
37 def insert(self, text):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
38 self.checkselection()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
39 self.ted.WEInsert(text, None, None)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
40 self.changed = 1
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
41 self.selchanged = 1
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
42
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
43 def set_namespace(self, dict):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
44 if type(dict) <> DictionaryType:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
45 raise TypeError, "The namespace needs to be a dictionary"
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
46 if 'inspect' not in dict.keys(): dict['inspect'] = inspect # JJS 1/25/99
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
47 self._namespace = dict
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
48
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
49 def open(self):
19009
1bc67cf57d0a Show the MacPython IDE version in the interactive banner.
Just van Rossum <just@letterror.com>
parents: 18167
diff changeset
50 import __main__
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
51 W.EditText.open(self)
19009
1bc67cf57d0a Show the MacPython IDE version in the interactive banner.
Just van Rossum <just@letterror.com>
parents: 18167
diff changeset
52 self.write('Python %s\n' % sys.version)
1bc67cf57d0a Show the MacPython IDE version in the interactive banner.
Just van Rossum <just@letterror.com>
parents: 18167
diff changeset
53 self.write('Type "copyright", "credits" or "license" for more information.\n')
1bc67cf57d0a Show the MacPython IDE version in the interactive banner.
Just van Rossum <just@letterror.com>
parents: 18167
diff changeset
54 self.write('MacPython IDE %s\n' % __main__.__version__)
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
55 self.write(sys.ps1)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
56 self.flush()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
57
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
58 def key(self, char, event):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
59 (what, message, when, where, modifiers) = event
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
60 if self._enabled and not modifiers & Events.cmdKey or char in Wkeys.arrowkeys:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
61 if char not in Wkeys.navigationkeys:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
62 self.checkselection()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
63 if char == Wkeys.enterkey:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
64 char = Wkeys.returnkey
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
65 selstart, selend = self.getselection()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
66 if char == Wkeys.backspacekey:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
67 if selstart <= (self._inputstart - (selstart <> selend)):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
68 return
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
69 self.ted.WEKey(ord(char), modifiers)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
70 if char not in Wkeys.navigationkeys:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
71 self.changed = 1
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
72 if char not in Wkeys.scrollkeys:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
73 self.selchanged = 1
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
74 self.updatescrollbars()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
75 if char == Wkeys.returnkey:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
76 text = self.get()[self._inputstart:selstart]
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
77 text = string.join(string.split(text, "\r"), "\n")
22030
99341e85017e Backport of 1.9-1.11:
Jack Jansen <jack.jansen@cwi.nl>
parents: 19488
diff changeset
78 if hasattr(MacOS, 'EnableAppswitch'):
99341e85017e Backport of 1.9-1.11:
Jack Jansen <jack.jansen@cwi.nl>
parents: 19488
diff changeset
79 saveyield = MacOS.EnableAppswitch(0)
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
80 self.pyinteractive.executeline(text, self, self._namespace)
22030
99341e85017e Backport of 1.9-1.11:
Jack Jansen <jack.jansen@cwi.nl>
parents: 19488
diff changeset
81 if hasattr(MacOS, 'EnableAppswitch'):
99341e85017e Backport of 1.9-1.11:
Jack Jansen <jack.jansen@cwi.nl>
parents: 19488
diff changeset
82 MacOS.EnableAppswitch(saveyield)
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
83 selstart, selend = self.getselection()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
84 self._inputstart = selstart
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
85
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
86 def domenu_save_as(self, *args):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
87 import macfs
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
88 fss, ok = macfs.StandardPutFile('Save console text as:', 'console.txt')
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
89 if not ok:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
90 return
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
91 f = open(fss.as_pathname(), 'wb')
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
92 f.write(self.get())
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
93 f.close()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
94 fss.SetCreatorType(W._signature, 'TEXT')
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
95
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
96 def write(self, text):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
97 self._buf = self._buf + text
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
98 if '\n' in self._buf:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
99 self.flush()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
100
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
101 def flush(self):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
102 stuff = string.split(self._buf, '\n')
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
103 stuff = string.join(stuff, '\r')
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
104 self.setselection_at_end()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
105 self.ted.WEInsert(stuff, None, None)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
106 selstart, selend = self.getselection()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
107 self._inputstart = selstart
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
108 self._buf = ""
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
109 self.ted.WEClearUndo()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
110 self.updatescrollbars()
22030
99341e85017e Backport of 1.9-1.11:
Jack Jansen <jack.jansen@cwi.nl>
parents: 19488
diff changeset
111 if Qd.QDIsPortBuffered(self._parentwindow.wid):
99341e85017e Backport of 1.9-1.11:
Jack Jansen <jack.jansen@cwi.nl>
parents: 19488
diff changeset
112 Qd.QDFlushPortBuffer(self._parentwindow.wid, None)
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
113
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
114 def selection_ok(self):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
115 selstart, selend = self.getselection()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
116 return not (selstart < self._inputstart or selend < self._inputstart)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
117
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
118 def checkselection(self):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
119 if not self.selection_ok():
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
120 self.setselection_at_end()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
121
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
122 def setselection_at_end(self):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
123 end = self.ted.WEGetTextLength()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
124 self.setselection(end, end)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
125 self.updatescrollbars()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
126
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
127 def domenu_cut(self, *args):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
128 if not self.selection_ok():
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
129 return
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
130 W.EditText.domenu_cut(self)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
131
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
132 def domenu_paste(self, *args):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
133 if not self.selection_ok():
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
134 self.setselection_at_end()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
135 W.EditText.domenu_paste(self)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
136
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
137 def domenu_clear(self, *args):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
138 if not self.selection_ok():
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
139 return
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
140 W.EditText.domenu_clear(self)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
141
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
142
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
143 class PyConsole(W.Window):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
144
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
145 def __init__(self, bounds, show = 1, fontsettings = ("Monaco", 0, 9, (0, 0, 0)),
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
146 tabsettings = (32, 0), unclosable = 0):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
147 W.Window.__init__(self,
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
148 bounds,
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
149 "Python Interactive",
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
150 minsize = (200, 100),
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
151 tabbable = 0,
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
152 show = show)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
153
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
154 self._unclosable = unclosable
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
155 consoletext = ConsoleTextWidget((-1, -1, -14, 1), inset = (6, 5),
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
156 fontsettings = fontsettings, tabsettings = tabsettings)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
157 self._bary = W.Scrollbar((-15, 14, 16, -14), consoletext.vscroll, max = 32767)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
158 self.consoletext = consoletext
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
159 self.namespacemenu = W.PopupMenu((-15, -1, 16, 16), [], self.consoletext.set_namespace)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
160 self.namespacemenu.bind('<click>', self.makenamespacemenu)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
161 self.open()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
162
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
163 def makenamespacemenu(self, *args):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
164 W.SetCursor('watch')
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
165 namespacelist = self.getnamespacelist()
18167
c5ac6f055c62 Some long overdue maintainance. Made all IDE sources 7-bit-clean, to avoid any further encoding conversion troubles.
Just van Rossum <just@letterror.com>
parents: 17972
diff changeset
166 self.namespacemenu.set([("Clear window", self.clearbuffer), ("Font settings\xc9", self.dofontsettings),
c5ac6f055c62 Some long overdue maintainance. Made all IDE sources 7-bit-clean, to avoid any further encoding conversion troubles.
Just van Rossum <just@letterror.com>
parents: 17972
diff changeset
167 ["Namespace"] + namespacelist, ("Browse namespace\xc9", self.browsenamespace)])
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
168 currentname = self.consoletext._namespace["__name__"]
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
169 for i in range(len(namespacelist)):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
170 if namespacelist[i][0] == currentname:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
171 break
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
172 else:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
173 return
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
174 # XXX this functionality should be generally available in Wmenus
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
175 submenuid = self.namespacemenu.menu.menu.GetItemMark(3)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
176 menu = self.namespacemenu.menu.bar.menus[submenuid]
16336
2d8e02902d67 Replace {Enable,Disable,Check}Item with their carbon-compatible equivalents {Enable,Disable,Check}MenuItem.
Jack Jansen <jack.jansen@cwi.nl>
parents: 10087
diff changeset
177 menu.menu.CheckMenuItem(i + 1, 1)
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
178
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
179 def browsenamespace(self):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
180 import PyBrowser, W
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
181 W.SetCursor('watch')
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
182 PyBrowser.Browser(self.consoletext._namespace, self.consoletext._namespace["__name__"])
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
183
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
184 def clearbuffer(self):
19488
42b2f1936254 Import the MacOS toolbox modules from the Carbon package.
Jack Jansen <jack.jansen@cwi.nl>
parents: 19009
diff changeset
185 from Carbon import Res
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
186 self.consoletext.ted.WEUseText(Res.Resource(''))
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
187 self.consoletext.write(sys.ps1)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
188 self.consoletext.flush()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
189
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
190 def getnamespacelist(self):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
191 import os
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
192 import __main__
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
193 editors = filter(lambda x: x.__class__.__name__ == "Editor", self.parent._windows.values())
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
194
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
195 namespaces = [ ("__main__",__main__.__dict__) ]
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
196 for ed in editors:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
197 modname = os.path.splitext(ed.title)[0]
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
198 if sys.modules.has_key(modname):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
199 module = sys.modules[modname]
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
200 namespaces.append((modname, module.__dict__))
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
201 else:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
202 if ed.title[-3:] == '.py':
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
203 modname = ed.title[:-3]
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
204 else:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
205 modname = ed.title
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
206 ed.globals["__name__"] = modname
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
207 namespaces.append((modname, ed.globals))
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
208 return namespaces
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
209
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
210 def dofontsettings(self):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
211 import FontSettings
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
212 settings = FontSettings.FontDialog(self.consoletext.getfontsettings(),
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
213 self.consoletext.gettabsettings())
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
214 if settings:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
215 fontsettings, tabsettings = settings
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
216 self.consoletext.setfontsettings(fontsettings)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
217 self.consoletext.settabsettings(tabsettings)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
218
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
219 def show(self, onoff = 1):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
220 W.Window.show(self, onoff)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
221 if onoff:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
222 self.select()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
223
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
224 def close(self):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
225 if self._unclosable:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
226 self.show(0)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
227 return -1
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
228 W.Window.close(self)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
229
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
230 def writeprefs(self):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
231 prefs = MacPrefs.GetPrefs(W.getapplication().preffilepath)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
232 prefs.console.show = self.isvisible()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
233 prefs.console.windowbounds = self.getbounds()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
234 prefs.console.fontsettings = self.consoletext.getfontsettings()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
235 prefs.console.tabsettings = self.consoletext.gettabsettings()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
236 prefs.save()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
237
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
238
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
239 class OutputTextWidget(W.EditText):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
240
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
241 def domenu_save_as(self, *args):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
242 title = self._parentwindow.gettitle()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
243 import macfs
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
244 fss, ok = macfs.StandardPutFile('Save %s text as:' % title, title + '.txt')
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
245 if not ok:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
246 return
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
247 f = open(fss.as_pathname(), 'wb')
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
248 f.write(self.get())
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
249 f.close()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
250 fss.SetCreatorType(W._signature, 'TEXT')
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
251
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
252
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
253 class PyOutput:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
254
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
255 def __init__(self, bounds, show = 1, fontsettings = ("Monaco", 0, 9, (0, 0, 0)), tabsettings = (32, 0)):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
256 self.bounds = bounds
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
257 self.fontsettings = fontsettings
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
258 self.tabsettings = tabsettings
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
259 self.w = None
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
260 self.closed = 1
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
261 self._buf = ''
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
262 # should be able to set this
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
263 self.savestdout, self.savestderr = sys.stdout, sys.stderr
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
264 sys.stderr = sys.stdout = self
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
265 if show:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
266 self.show()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
267
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
268 def setupwidgets(self):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
269 self.w = W.Window(self.bounds, "Output",
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
270 minsize = (200, 100),
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
271 tabbable = 0)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
272 self.w.outputtext = OutputTextWidget((-1, -1, -14, 1), inset = (6, 5),
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
273 fontsettings = self.fontsettings, tabsettings = self.tabsettings, readonly = 1)
18167
c5ac6f055c62 Some long overdue maintainance. Made all IDE sources 7-bit-clean, to avoid any further encoding conversion troubles.
Just van Rossum <just@letterror.com>
parents: 17972
diff changeset
274 menuitems = [("Clear window", self.clearbuffer), ("Font settings\xc9", self.dofontsettings)]
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
275 self.w.popupmenu = W.PopupMenu((-15, -1, 16, 16), menuitems)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
276
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
277 self.w._bary = W.Scrollbar((-15, 14, 16, -14), self.w.outputtext.vscroll, max = 32767)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
278 self.w.bind("<close>", self.close)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
279 self.w.bind("<activate>", self.activate)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
280
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
281 def write(self, text):
22030
99341e85017e Backport of 1.9-1.11:
Jack Jansen <jack.jansen@cwi.nl>
parents: 19488
diff changeset
282 if hasattr(MacOS, 'EnableAppswitch'):
99341e85017e Backport of 1.9-1.11:
Jack Jansen <jack.jansen@cwi.nl>
parents: 19488
diff changeset
283 oldyield = MacOS.EnableAppswitch(-1)
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
284 try:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
285 self._buf = self._buf + text
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
286 if '\n' in self._buf:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
287 self.flush()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
288 finally:
22030
99341e85017e Backport of 1.9-1.11:
Jack Jansen <jack.jansen@cwi.nl>
parents: 19488
diff changeset
289 if hasattr(MacOS, 'EnableAppswitch'):
99341e85017e Backport of 1.9-1.11:
Jack Jansen <jack.jansen@cwi.nl>
parents: 19488
diff changeset
290 MacOS.EnableAppswitch(oldyield)
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
291
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
292 def flush(self):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
293 self.show()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
294 stuff = string.split(self._buf, '\n')
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
295 stuff = string.join(stuff, '\r')
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
296 end = self.w.outputtext.ted.WEGetTextLength()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
297 self.w.outputtext.setselection(end, end)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
298 self.w.outputtext.ted.WEFeatureFlag(WASTEconst.weFReadOnly, 0)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
299 self.w.outputtext.ted.WEInsert(stuff, None, None)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
300 self._buf = ""
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
301 self.w.outputtext.updatescrollbars()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
302 self.w.outputtext.ted.WEFeatureFlag(WASTEconst.weFReadOnly, 1)
22030
99341e85017e Backport of 1.9-1.11:
Jack Jansen <jack.jansen@cwi.nl>
parents: 19488
diff changeset
303 if Qd.QDIsPortBuffered(self.w.wid):
99341e85017e Backport of 1.9-1.11:
Jack Jansen <jack.jansen@cwi.nl>
parents: 19488
diff changeset
304 Qd.QDFlushPortBuffer(self.w.wid, None)
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
305
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
306 def show(self):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
307 if self.closed:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
308 if not self.w:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
309 self.setupwidgets()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
310 self.w.open()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
311 self.w.outputtext.updatescrollbars()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
312 self.closed = 0
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
313 else:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
314 self.w.show(1)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
315 self.closed = 0
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
316 self.w.select()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
317
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
318 def writeprefs(self):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
319 if self.w is not None:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
320 prefs = MacPrefs.GetPrefs(W.getapplication().preffilepath)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
321 prefs.output.show = self.w.isvisible()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
322 prefs.output.windowbounds = self.w.getbounds()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
323 prefs.output.fontsettings = self.w.outputtext.getfontsettings()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
324 prefs.output.tabsettings = self.w.outputtext.gettabsettings()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
325 prefs.save()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
326
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
327 def dofontsettings(self):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
328 import FontSettings
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
329 settings = FontSettings.FontDialog(self.w.outputtext.getfontsettings(),
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
330 self.w.outputtext.gettabsettings())
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
331 if settings:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
332 fontsettings, tabsettings = settings
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
333 self.w.outputtext.setfontsettings(fontsettings)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
334 self.w.outputtext.settabsettings(tabsettings)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
335
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
336 def clearbuffer(self):
19488
42b2f1936254 Import the MacOS toolbox modules from the Carbon package.
Jack Jansen <jack.jansen@cwi.nl>
parents: 19009
diff changeset
337 from Carbon import Res
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
338 self.w.outputtext.set('')
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
339
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
340 def activate(self, onoff):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
341 if onoff:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
342 self.closed = 0
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
343
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
344 def close(self):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
345 self.w.show(0)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
346 self.closed = 1
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
347 return -1
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
348
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
349
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
350 class SimpleStdin:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
351
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
352 def readline(self):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
353 import EasyDialogs
17972
401ccfcf28c3 When reading from stdin (with the dialog box) use any partial line on
Jack Jansen <jack.jansen@cwi.nl>
parents: 17845
diff changeset
354 # A trick to make the input dialog box a bit more palatable
401ccfcf28c3 When reading from stdin (with the dialog box) use any partial line on
Jack Jansen <jack.jansen@cwi.nl>
parents: 17845
diff changeset
355 if hasattr(sys.stdout, '_buf'):
401ccfcf28c3 When reading from stdin (with the dialog box) use any partial line on
Jack Jansen <jack.jansen@cwi.nl>
parents: 17845
diff changeset
356 prompt = sys.stdout._buf
401ccfcf28c3 When reading from stdin (with the dialog box) use any partial line on
Jack Jansen <jack.jansen@cwi.nl>
parents: 17845
diff changeset
357 else:
401ccfcf28c3 When reading from stdin (with the dialog box) use any partial line on
Jack Jansen <jack.jansen@cwi.nl>
parents: 17845
diff changeset
358 prompt = ""
401ccfcf28c3 When reading from stdin (with the dialog box) use any partial line on
Jack Jansen <jack.jansen@cwi.nl>
parents: 17845
diff changeset
359 if not prompt:
401ccfcf28c3 When reading from stdin (with the dialog box) use any partial line on
Jack Jansen <jack.jansen@cwi.nl>
parents: 17845
diff changeset
360 prompt = "Stdin input:"
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
361 sys.stdout.flush()
17972
401ccfcf28c3 When reading from stdin (with the dialog box) use any partial line on
Jack Jansen <jack.jansen@cwi.nl>
parents: 17845
diff changeset
362 rv = EasyDialogs.AskString(prompt)
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
363 if rv is None:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
364 return ""
22030
99341e85017e Backport of 1.9-1.11:
Jack Jansen <jack.jansen@cwi.nl>
parents: 19488
diff changeset
365 rv = rv + "\n" # readline should include line terminator
99341e85017e Backport of 1.9-1.11:
Jack Jansen <jack.jansen@cwi.nl>
parents: 19488
diff changeset
366 sys.stdout.write(rv) # echo user's reply
99341e85017e Backport of 1.9-1.11:
Jack Jansen <jack.jansen@cwi.nl>
parents: 19488
diff changeset
367 return rv
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
368
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
369
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
370 def installconsole(defaultshow = 1):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
371 global console
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
372 prefs = MacPrefs.GetPrefs(W.getapplication().preffilepath)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
373 if not prefs.console or not hasattr(prefs.console, 'show'):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
374 prefs.console.show = defaultshow
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
375 if not hasattr(prefs.console, "windowbounds"):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
376 prefs.console.windowbounds = (450, 250)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
377 if not hasattr(prefs.console, "fontsettings"):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
378 prefs.console.fontsettings = ("Monaco", 0, 9, (0, 0, 0))
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
379 if not hasattr(prefs.console, "tabsettings"):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
380 prefs.console.tabsettings = (32, 0)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
381 console = PyConsole(prefs.console.windowbounds, prefs.console.show,
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
382 prefs.console.fontsettings, prefs.console.tabsettings, 1)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
383
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
384 def installoutput(defaultshow = 0, OutPutWindow = PyOutput):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
385 global output
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
386
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
387 # quick 'n' dirty std in emulation
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
388 sys.stdin = SimpleStdin()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
389
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
390 prefs = MacPrefs.GetPrefs(W.getapplication().preffilepath)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
391 if not prefs.output or not hasattr(prefs.output, 'show'):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
392 prefs.output.show = defaultshow
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
393 if not hasattr(prefs.output, "windowbounds"):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
394 prefs.output.windowbounds = (450, 250)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
395 if not hasattr(prefs.output, "fontsettings"):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
396 prefs.output.fontsettings = ("Monaco", 0, 9, (0, 0, 0))
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
397 if not hasattr(prefs.output, "tabsettings"):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
398 prefs.output.tabsettings = (32, 0)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
399 output = OutPutWindow(prefs.output.windowbounds, prefs.output.show,
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
400 prefs.output.fontsettings, prefs.output.tabsettings)