annotate Mac/Tools/IDE/PyConsole.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 4367f805db09
children 61d3f8e66d8f
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
27408
ea5ee3e7bfb1 Use new file dialogs.
Jack Jansen <jack.jansen@cwi.nl>
parents: 27312
diff changeset
13 import EasyDialogs
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
14 import PyInteractive
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
15
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
16 if not hasattr(sys, 'ps1'):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
17 sys.ps1 = '>>> '
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
18 if not hasattr(sys, 'ps2'):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
19 sys.ps2 = '... '
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
20
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
21 def inspect(foo): # JJS 1/25/99
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
22 "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
23 import PyBrowser
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
24 PyBrowser.Browser(foo)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
25
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
26 class ConsoleTextWidget(W.EditText):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
27
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
28 def __init__(self, *args, **kwargs):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
29 apply(W.EditText.__init__, (self,) + args, kwargs)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
30 self._inputstart = 0
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
31 self._buf = ''
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
32 self.pyinteractive = PyInteractive.PyInteractive()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
33
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
34 import __main__
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
35 self._namespace = __main__.__dict__
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
36 self._namespace['inspect'] = inspect # JJS 1/25/99
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
37
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
38 def insert(self, text):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
39 self.checkselection()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
40 self.ted.WEInsert(text, None, None)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
41 self.changed = 1
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
42 self.selchanged = 1
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
43
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
44 def set_namespace(self, dict):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
45 if type(dict) <> DictionaryType:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
46 raise TypeError, "The namespace needs to be a dictionary"
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
47 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
48 self._namespace = dict
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
49
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
50 def open(self):
19009
1bc67cf57d0a Show the MacPython IDE version in the interactive banner.
Just van Rossum <just@letterror.com>
parents: 18167
diff changeset
51 import __main__
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
52 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
53 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
54 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
55 self.write('MacPython IDE %s\n' % __main__.__version__)
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
56 self.write(sys.ps1)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
57 self.flush()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
58
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
59 def key(self, char, event):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
60 (what, message, when, where, modifiers) = event
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
61 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
62 if char not in Wkeys.navigationkeys:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
63 self.checkselection()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
64 if char == Wkeys.enterkey:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
65 char = Wkeys.returnkey
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
66 selstart, selend = self.getselection()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
67 if char == Wkeys.backspacekey:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
68 if selstart <= (self._inputstart - (selstart <> selend)):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
69 return
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
70 self.ted.WEKey(ord(char), modifiers)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
71 if char not in Wkeys.navigationkeys:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
72 self.changed = 1
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
73 if char not in Wkeys.scrollkeys:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
74 self.selchanged = 1
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
75 self.updatescrollbars()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
76 if char == Wkeys.returnkey:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
77 text = self.get()[self._inputstart:selstart]
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
78 text = string.join(string.split(text, "\r"), "\n")
21772
ec750e37671b Changes by Donovan Preston (and a few minor ones by me) to make IDE run under
Jack Jansen <jack.jansen@cwi.nl>
parents: 21549
diff changeset
79 if hasattr(MacOS, 'EnableAppswitch'):
ec750e37671b Changes by Donovan Preston (and a few minor ones by me) to make IDE run under
Jack Jansen <jack.jansen@cwi.nl>
parents: 21549
diff changeset
80 saveyield = MacOS.EnableAppswitch(0)
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
81 self.pyinteractive.executeline(text, self, self._namespace)
21772
ec750e37671b Changes by Donovan Preston (and a few minor ones by me) to make IDE run under
Jack Jansen <jack.jansen@cwi.nl>
parents: 21549
diff changeset
82 if hasattr(MacOS, 'EnableAppswitch'):
ec750e37671b Changes by Donovan Preston (and a few minor ones by me) to make IDE run under
Jack Jansen <jack.jansen@cwi.nl>
parents: 21549
diff changeset
83 MacOS.EnableAppswitch(saveyield)
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
84 selstart, selend = self.getselection()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
85 self._inputstart = selstart
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
86
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
87 def domenu_save_as(self, *args):
27408
ea5ee3e7bfb1 Use new file dialogs.
Jack Jansen <jack.jansen@cwi.nl>
parents: 27312
diff changeset
88 filename = EasyDialogs.AskFileForSave(message='Save console text as:',
ea5ee3e7bfb1 Use new file dialogs.
Jack Jansen <jack.jansen@cwi.nl>
parents: 27312
diff changeset
89 savedFileName='console.txt')
ea5ee3e7bfb1 Use new file dialogs.
Jack Jansen <jack.jansen@cwi.nl>
parents: 27312
diff changeset
90 if not filename:
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
91 return
27408
ea5ee3e7bfb1 Use new file dialogs.
Jack Jansen <jack.jansen@cwi.nl>
parents: 27312
diff changeset
92 f = open(filename, 'wb')
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
93 f.write(self.get())
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
94 f.close()
27737
4367f805db09 Got rid of macfs and FSSpecs in general (pathnames or FSRefs are now
Jack Jansen <jack.jansen@cwi.nl>
parents: 27408
diff changeset
95 MacOS.SetCreatorAndType(filename, W._signature, 'TEXT')
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
96
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
97 def write(self, text):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
98 self._buf = self._buf + text
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
99 if '\n' in self._buf:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
100 self.flush()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
101
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
102 def flush(self):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
103 stuff = string.split(self._buf, '\n')
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
104 stuff = string.join(stuff, '\r')
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
105 self.setselection_at_end()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
106 self.ted.WEInsert(stuff, None, None)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
107 selstart, selend = self.getselection()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
108 self._inputstart = selstart
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
109 self._buf = ""
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
110 self.ted.WEClearUndo()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
111 self.updatescrollbars()
26466
418a7ec92599 Lots of minor tweaks for the pep252 checkins, mainly because Qd
Jack Jansen <jack.jansen@cwi.nl>
parents: 21866
diff changeset
112 if self._parentwindow.wid.GetWindowPort().QDIsPortBuffered():
418a7ec92599 Lots of minor tweaks for the pep252 checkins, mainly because Qd
Jack Jansen <jack.jansen@cwi.nl>
parents: 21866
diff changeset
113 self._parentwindow.wid.GetWindowPort().QDFlushPortBuffer(None)
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
114
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
115 def selection_ok(self):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
116 selstart, selend = self.getselection()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
117 return not (selstart < self._inputstart or selend < self._inputstart)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
118
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
119 def checkselection(self):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
120 if not self.selection_ok():
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
121 self.setselection_at_end()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
122
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
123 def setselection_at_end(self):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
124 end = self.ted.WEGetTextLength()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
125 self.setselection(end, end)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
126 self.updatescrollbars()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
127
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
128 def domenu_cut(self, *args):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
129 if not self.selection_ok():
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
130 return
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
131 W.EditText.domenu_cut(self)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
132
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
133 def domenu_paste(self, *args):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
134 if not self.selection_ok():
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
135 self.setselection_at_end()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
136 W.EditText.domenu_paste(self)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
137
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
138 def domenu_clear(self, *args):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
139 if not self.selection_ok():
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
140 return
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
141 W.EditText.domenu_clear(self)
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
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
144 class PyConsole(W.Window):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
145
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
146 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
147 tabsettings = (32, 0), unclosable = 0):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
148 W.Window.__init__(self,
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
149 bounds,
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
150 "Python Interactive",
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
151 minsize = (200, 100),
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
152 tabbable = 0,
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
153 show = show)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
154
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
155 self._unclosable = unclosable
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
156 consoletext = ConsoleTextWidget((-1, -1, -14, 1), inset = (6, 5),
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
157 fontsettings = fontsettings, tabsettings = tabsettings)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
158 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
159 self.consoletext = consoletext
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
160 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
161 self.namespacemenu.bind('<click>', self.makenamespacemenu)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
162 self.open()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
163
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
164 def makenamespacemenu(self, *args):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
165 W.SetCursor('watch')
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
166 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
167 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
168 ["Namespace"] + namespacelist, ("Browse namespace\xc9", self.browsenamespace)])
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
169 currentname = self.consoletext._namespace["__name__"]
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
170 for i in range(len(namespacelist)):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
171 if namespacelist[i][0] == currentname:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
172 break
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
173 else:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
174 return
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
175 # XXX this functionality should be generally available in Wmenus
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
176 submenuid = self.namespacemenu.menu.menu.GetItemMark(3)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
177 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
178 menu.menu.CheckMenuItem(i + 1, 1)
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
179
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
180 def browsenamespace(self):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
181 import PyBrowser, W
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
182 W.SetCursor('watch')
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
183 PyBrowser.Browser(self.consoletext._namespace, self.consoletext._namespace["__name__"])
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
184
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
185 def clearbuffer(self):
19488
42b2f1936254 Import the MacOS toolbox modules from the Carbon package.
Jack Jansen <jack.jansen@cwi.nl>
parents: 19009
diff changeset
186 from Carbon import Res
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
187 self.consoletext.ted.WEUseText(Res.Resource(''))
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
188 self.consoletext.write(sys.ps1)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
189 self.consoletext.flush()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
190
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
191 def getnamespacelist(self):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
192 import os
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
193 import __main__
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
194 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
195
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
196 namespaces = [ ("__main__",__main__.__dict__) ]
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
197 for ed in editors:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
198 modname = os.path.splitext(ed.title)[0]
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
199 if sys.modules.has_key(modname):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
200 module = sys.modules[modname]
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
201 namespaces.append((modname, module.__dict__))
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
202 else:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
203 if ed.title[-3:] == '.py':
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
204 modname = ed.title[:-3]
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
205 else:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
206 modname = ed.title
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
207 ed.globals["__name__"] = modname
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
208 namespaces.append((modname, ed.globals))
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
209 return namespaces
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
210
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
211 def dofontsettings(self):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
212 import FontSettings
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
213 settings = FontSettings.FontDialog(self.consoletext.getfontsettings(),
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
214 self.consoletext.gettabsettings())
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
215 if settings:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
216 fontsettings, tabsettings = settings
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
217 self.consoletext.setfontsettings(fontsettings)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
218 self.consoletext.settabsettings(tabsettings)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
219
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
220 def show(self, onoff = 1):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
221 W.Window.show(self, onoff)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
222 if onoff:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
223 self.select()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
224
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
225 def close(self):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
226 if self._unclosable:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
227 self.show(0)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
228 return -1
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
229 W.Window.close(self)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
230
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
231 def writeprefs(self):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
232 prefs = MacPrefs.GetPrefs(W.getapplication().preffilepath)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
233 prefs.console.show = self.isvisible()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
234 prefs.console.windowbounds = self.getbounds()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
235 prefs.console.fontsettings = self.consoletext.getfontsettings()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
236 prefs.console.tabsettings = self.consoletext.gettabsettings()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
237 prefs.save()
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
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
240 class OutputTextWidget(W.EditText):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
241
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
242 def domenu_save_as(self, *args):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
243 title = self._parentwindow.gettitle()
27408
ea5ee3e7bfb1 Use new file dialogs.
Jack Jansen <jack.jansen@cwi.nl>
parents: 27312
diff changeset
244 filename = EasyDialogs.AskFileForSave(message='Save %s text as:' % title,
ea5ee3e7bfb1 Use new file dialogs.
Jack Jansen <jack.jansen@cwi.nl>
parents: 27312
diff changeset
245 savedFileName=title + '.txt')
ea5ee3e7bfb1 Use new file dialogs.
Jack Jansen <jack.jansen@cwi.nl>
parents: 27312
diff changeset
246 if not filename:
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
247 return
27408
ea5ee3e7bfb1 Use new file dialogs.
Jack Jansen <jack.jansen@cwi.nl>
parents: 27312
diff changeset
248 f = open(filename, 'wb')
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
249 f.write(self.get())
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
250 f.close()
27737
4367f805db09 Got rid of macfs and FSSpecs in general (pathnames or FSRefs are now
Jack Jansen <jack.jansen@cwi.nl>
parents: 27408
diff changeset
251 MacOS.SetCreatorAndType(filename, W._signature, 'TEXT')
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
252
27312
9220098f0327 Fix bug #670845: cut & clear in the output window now work, in that
Just van Rossum <just@letterror.com>
parents: 26466
diff changeset
253 def domenu_cut(self, *args):
9220098f0327 Fix bug #670845: cut & clear in the output window now work, in that
Just van Rossum <just@letterror.com>
parents: 26466
diff changeset
254 self.domenu_copy(*args)
9220098f0327 Fix bug #670845: cut & clear in the output window now work, in that
Just van Rossum <just@letterror.com>
parents: 26466
diff changeset
255
9220098f0327 Fix bug #670845: cut & clear in the output window now work, in that
Just van Rossum <just@letterror.com>
parents: 26466
diff changeset
256 def domenu_clear(self, *args):
9220098f0327 Fix bug #670845: cut & clear in the output window now work, in that
Just van Rossum <just@letterror.com>
parents: 26466
diff changeset
257 self.set('')
9220098f0327 Fix bug #670845: cut & clear in the output window now work, in that
Just van Rossum <just@letterror.com>
parents: 26466
diff changeset
258
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
259
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
260 class PyOutput:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
261
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
262 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
263 self.bounds = bounds
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
264 self.fontsettings = fontsettings
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
265 self.tabsettings = tabsettings
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
266 self.w = None
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
267 self.closed = 1
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
268 self._buf = ''
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
269 # should be able to set this
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
270 self.savestdout, self.savestderr = sys.stdout, sys.stderr
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
271 sys.stderr = sys.stdout = self
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
272 if show:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
273 self.show()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
274
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
275 def setupwidgets(self):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
276 self.w = W.Window(self.bounds, "Output",
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
277 minsize = (200, 100),
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
278 tabbable = 0)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
279 self.w.outputtext = OutputTextWidget((-1, -1, -14, 1), inset = (6, 5),
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
280 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
281 menuitems = [("Clear window", self.clearbuffer), ("Font settings\xc9", self.dofontsettings)]
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
282 self.w.popupmenu = W.PopupMenu((-15, -1, 16, 16), menuitems)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
283
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
284 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
285 self.w.bind("<close>", self.close)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
286 self.w.bind("<activate>", self.activate)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
287
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
288 def write(self, text):
21772
ec750e37671b Changes by Donovan Preston (and a few minor ones by me) to make IDE run under
Jack Jansen <jack.jansen@cwi.nl>
parents: 21549
diff changeset
289 if hasattr(MacOS, 'EnableAppswitch'):
ec750e37671b Changes by Donovan Preston (and a few minor ones by me) to make IDE run under
Jack Jansen <jack.jansen@cwi.nl>
parents: 21549
diff changeset
290 oldyield = MacOS.EnableAppswitch(-1)
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
291 try:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
292 self._buf = self._buf + text
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
293 if '\n' in self._buf:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
294 self.flush()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
295 finally:
21772
ec750e37671b Changes by Donovan Preston (and a few minor ones by me) to make IDE run under
Jack Jansen <jack.jansen@cwi.nl>
parents: 21549
diff changeset
296 if hasattr(MacOS, 'EnableAppswitch'):
ec750e37671b Changes by Donovan Preston (and a few minor ones by me) to make IDE run under
Jack Jansen <jack.jansen@cwi.nl>
parents: 21549
diff changeset
297 MacOS.EnableAppswitch(oldyield)
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
298
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
299 def flush(self):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
300 self.show()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
301 stuff = string.split(self._buf, '\n')
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
302 stuff = string.join(stuff, '\r')
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
303 end = self.w.outputtext.ted.WEGetTextLength()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
304 self.w.outputtext.setselection(end, end)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
305 self.w.outputtext.ted.WEFeatureFlag(WASTEconst.weFReadOnly, 0)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
306 self.w.outputtext.ted.WEInsert(stuff, None, None)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
307 self._buf = ""
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
308 self.w.outputtext.updatescrollbars()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
309 self.w.outputtext.ted.WEFeatureFlag(WASTEconst.weFReadOnly, 1)
26466
418a7ec92599 Lots of minor tweaks for the pep252 checkins, mainly because Qd
Jack Jansen <jack.jansen@cwi.nl>
parents: 21866
diff changeset
310 if self.w.wid.GetWindowPort().QDIsPortBuffered():
418a7ec92599 Lots of minor tweaks for the pep252 checkins, mainly because Qd
Jack Jansen <jack.jansen@cwi.nl>
parents: 21866
diff changeset
311 self.w.wid.GetWindowPort().QDFlushPortBuffer(None)
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
312
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
313 def show(self):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
314 if self.closed:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
315 if not self.w:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
316 self.setupwidgets()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
317 self.w.open()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
318 self.w.outputtext.updatescrollbars()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
319 self.closed = 0
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
320 else:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
321 self.w.show(1)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
322 self.closed = 0
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
323 self.w.select()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
324
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
325 def writeprefs(self):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
326 if self.w is not None:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
327 prefs = MacPrefs.GetPrefs(W.getapplication().preffilepath)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
328 prefs.output.show = self.w.isvisible()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
329 prefs.output.windowbounds = self.w.getbounds()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
330 prefs.output.fontsettings = self.w.outputtext.getfontsettings()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
331 prefs.output.tabsettings = self.w.outputtext.gettabsettings()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
332 prefs.save()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
333
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
334 def dofontsettings(self):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
335 import FontSettings
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
336 settings = FontSettings.FontDialog(self.w.outputtext.getfontsettings(),
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
337 self.w.outputtext.gettabsettings())
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
338 if settings:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
339 fontsettings, tabsettings = settings
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
340 self.w.outputtext.setfontsettings(fontsettings)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
341 self.w.outputtext.settabsettings(tabsettings)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
342
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
343 def clearbuffer(self):
19488
42b2f1936254 Import the MacOS toolbox modules from the Carbon package.
Jack Jansen <jack.jansen@cwi.nl>
parents: 19009
diff changeset
344 from Carbon import Res
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
345 self.w.outputtext.set('')
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
346
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
347 def activate(self, onoff):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
348 if onoff:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
349 self.closed = 0
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
350
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
351 def close(self):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
352 self.w.show(0)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
353 self.closed = 1
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
354 return -1
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
355
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
356
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
357 class SimpleStdin:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
358
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
359 def readline(self):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
360 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
361 # 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
362 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
363 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
364 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
365 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
366 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
367 prompt = "Stdin input:"
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
368 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
369 rv = EasyDialogs.AskString(prompt)
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
370 if rv is None:
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
371 return ""
21549
68842d295d2c Modified version of patch #496882: echo SimpleStdin readline()
Just van Rossum <just@letterror.com>
parents: 19488
diff changeset
372 rv = rv + "\n" # readline should include line terminator
68842d295d2c Modified version of patch #496882: echo SimpleStdin readline()
Just van Rossum <just@letterror.com>
parents: 19488
diff changeset
373 sys.stdout.write(rv) # echo user's reply
68842d295d2c Modified version of patch #496882: echo SimpleStdin readline()
Just van Rossum <just@letterror.com>
parents: 19488
diff changeset
374 return rv
10047
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
375
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
376
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
377 def installconsole(defaultshow = 1):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
378 global console
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
379 prefs = MacPrefs.GetPrefs(W.getapplication().preffilepath)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
380 if not prefs.console or not hasattr(prefs.console, 'show'):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
381 prefs.console.show = defaultshow
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
382 if not hasattr(prefs.console, "windowbounds"):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
383 prefs.console.windowbounds = (450, 250)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
384 if not hasattr(prefs.console, "fontsettings"):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
385 prefs.console.fontsettings = ("Monaco", 0, 9, (0, 0, 0))
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
386 if not hasattr(prefs.console, "tabsettings"):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
387 prefs.console.tabsettings = (32, 0)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
388 console = PyConsole(prefs.console.windowbounds, prefs.console.show,
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
389 prefs.console.fontsettings, prefs.console.tabsettings, 1)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
390
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
391 def installoutput(defaultshow = 0, OutPutWindow = PyOutput):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
392 global output
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
393
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
394 # quick 'n' dirty std in emulation
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
395 sys.stdin = SimpleStdin()
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
396
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
397 prefs = MacPrefs.GetPrefs(W.getapplication().preffilepath)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
398 if not prefs.output or not hasattr(prefs.output, 'show'):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
399 prefs.output.show = defaultshow
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
400 if not hasattr(prefs.output, "windowbounds"):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
401 prefs.output.windowbounds = (450, 250)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
402 if not hasattr(prefs.output, "fontsettings"):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
403 prefs.output.fontsettings = ("Monaco", 0, 9, (0, 0, 0))
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
404 if not hasattr(prefs.output, "tabsettings"):
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
405 prefs.output.tabsettings = (32, 0)
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
406 output = OutPutWindow(prefs.output.windowbounds, prefs.output.show,
a0b06891d286 First Checked In.
Just van Rossum <just@lettererror.com>
parents:
diff changeset
407 prefs.output.fontsettings, prefs.output.tabsettings)