annotate Mac/Contrib/BBPy/PythonSlave.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 d10653e71cfe
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
9011
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
1 """PythonSlave.py
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
2 An application that responds to three types of apple event:
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
3 'pyth'/'EXEC': execute direct parameter as Python
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
4 'aevt', 'quit': quit
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
5 'aevt', 'odoc': perform python scripts
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
6
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
7 Copyright © 1996, Just van Rossum, Letterror
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
8 """
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
9
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
10 __version__ = "0.1.3"
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
11
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
12 import FrameWork
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
13 import sys
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
14 import traceback
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
15 import aetools
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
16 import string
19488
42b2f1936254 Import the MacOS toolbox modules from the Carbon package.
Jack Jansen <jack.jansen@cwi.nl>
parents: 17845
diff changeset
17 from Carbon import AE
19625
d10653e71cfe Case mismatch in "import Types". Apparently nobody has looked at this for a looooong time. Reported by Chris Smith.
Jack Jansen <jack.jansen@cwi.nl>
parents: 19488
diff changeset
18 import EasyDialogs
9011
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
19 import os
19488
42b2f1936254 Import the MacOS toolbox modules from the Carbon package.
Jack Jansen <jack.jansen@cwi.nl>
parents: 17845
diff changeset
20 from Carbon import Qd
19625
d10653e71cfe Case mismatch in "import Types". Apparently nobody has looked at this for a looooong time. Reported by Chris Smith.
Jack Jansen <jack.jansen@cwi.nl>
parents: 19488
diff changeset
21 from types import *
19488
42b2f1936254 Import the MacOS toolbox modules from the Carbon package.
Jack Jansen <jack.jansen@cwi.nl>
parents: 17845
diff changeset
22 from Carbon.Events import charCodeMask, cmdKey
9011
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
23 import MacOS
19488
42b2f1936254 Import the MacOS toolbox modules from the Carbon package.
Jack Jansen <jack.jansen@cwi.nl>
parents: 17845
diff changeset
24 from Carbon import Evt
9011
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
25
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
26 def dummyfunc(): pass
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
27
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
28 modulefilename = dummyfunc.func_code.co_filename
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
29
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
30 def Interact(timeout = 50000000): # timeout after 10 days...
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
31 AE.AEInteractWithUser(timeout)
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
32
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
33
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
34 class PythonSlave(FrameWork.Application):
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
35 def __init__(self):
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
36 FrameWork.Application.__init__(self)
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
37 AE.AEInstallEventHandler('pyth', 'EXEC', ExecHandler)
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
38 AE.AEInstallEventHandler('aevt', 'quit', QuitHandler)
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
39 AE.AEInstallEventHandler('aevt', 'odoc', OpenDocumentHandler)
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
40
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
41 def makeusermenus(self):
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
42 self.filemenu = m = FrameWork.Menu(self.menubar, "File")
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
43 self._quititem = FrameWork.MenuItem(m, "Quit", "Q", self._quit)
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
44
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
45 def do_kHighLevelEvent(self, event):
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
46 (what, message, when, where, modifiers) = event
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
47 try:
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
48 AE.AEProcessAppleEvent(event)
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
49 except AE.Error, detail:
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
50 print "Apple Event was not handled, error:", detail
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
51
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
52 def do_key(self, event):
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
53 (what, message, when, where, modifiers) = event
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
54 c = chr(message & charCodeMask)
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
55 if modifiers & cmdKey and c == '.':
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
56 return
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
57 FrameWork.Application.do_key(self, event)
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
58
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
59 def idle(self, event):
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
60 Qd.InitCursor()
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
61
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
62 def quit(self, *args):
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
63 raise self
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
64
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
65 def getabouttext(self):
17845
fb31c33761c9 Fixed macroman<->latin1 conversion. Some chars don't
Jack Jansen <jack.jansen@cwi.nl>
parents: 9011
diff changeset
66 return "About PythonSlaveƒ"
9011
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
67
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
68 def do_about(self, id, item, window, event):
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
69 EasyDialogs.Message("PythonSlave " + __version__ + "\rCopyright © 1996, Letterror, JvR")
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
70
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
71
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
72 def ExecHandler(theAppleEvent, theReply):
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
73 parameters, args = aetools.unpackevent(theAppleEvent)
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
74 if parameters.has_key('----'):
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
75 if parameters.has_key('NAME'):
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
76 print '--- executing "' + parameters['NAME'] + '" ---'
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
77 else:
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
78 print '--- executing "<unknown>" ---'
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
79 stuff = parameters['----']
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
80 MyExec(stuff + "\n") # execute input
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
81 print '--- done ---'
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
82 return 0
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
83
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
84 def MyExec(stuff):
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
85 stuff = string.splitfields(stuff, '\r') # convert return chars
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
86 stuff = string.joinfields(stuff, '\n') # to newline chars
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
87 Interact()
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
88 saveyield = MacOS.EnableAppswitch(1)
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
89 try:
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
90 exec stuff in {}
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
91 except:
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
92 MacOS.EnableAppswitch(saveyield)
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
93 traceback.print_exc()
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
94 MacOS.EnableAppswitch(saveyield)
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
95
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
96 def OpenDocumentHandler(theAppleEvent, theReply):
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
97 parameters, args = aetools.unpackevent(theAppleEvent)
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
98 docs = parameters['----']
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
99 if type(docs) <> ListType:
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
100 docs = [docs]
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
101 for doc in docs:
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
102 fss, a = doc.Resolve()
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
103 path = fss.as_pathname()
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
104 if path <> modulefilename:
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
105 MyExecFile(path)
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
106 return 0
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
107
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
108 def MyExecFile(path):
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
109 saveyield = MacOS.EnableAppswitch(1)
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
110 savewd = os.getcwd()
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
111 os.chdir(os.path.split(path)[0])
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
112 print '--- Executing file "' + os.path.split(path)[1] + '"'
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
113 try:
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
114 execfile(path, {"__name__": "__main__"})
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
115 except:
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
116 traceback.print_exc()
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
117 MacOS.EnableAppswitch(saveyield)
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
118 MacOS.EnableAppswitch(saveyield)
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
119 os.chdir(savewd)
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
120 print "--- done ---"
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
121
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
122 def QuitHandler(theAppleEvent, theReply):
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
123 slave.quit()
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
124 return 0
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
125
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
126
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
127 slave = PythonSlave()
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
128 print "PythonSlave", __version__, "ready."
a110b60699b1 Initial revision
Jack Jansen <jack.jansen@cwi.nl>
parents:
diff changeset
129 slave.mainloop()