mirror of
https://github.com/python/cpython.git
synced 2025-11-25 04:34:37 +00:00
Initial revision
This commit is contained in:
parent
1d6a6ea1a8
commit
7cc5735ef2
24 changed files with 5316 additions and 0 deletions
129
Mac/Contrib/BBPy/PythonSlave.py
Normal file
129
Mac/Contrib/BBPy/PythonSlave.py
Normal file
|
|
@ -0,0 +1,129 @@
|
|||
"""PythonSlave.py
|
||||
An application that responds to three types of apple event:
|
||||
'pyth'/'EXEC': execute direct parameter as Python
|
||||
'aevt', 'quit': quit
|
||||
'aevt', 'odoc': perform python scripts
|
||||
|
||||
Copyright © 1996, Just van Rossum, Letterror
|
||||
"""
|
||||
|
||||
__version__ = "0.1.3"
|
||||
|
||||
import FrameWork
|
||||
import sys
|
||||
import traceback
|
||||
import aetools
|
||||
import string
|
||||
import AE
|
||||
import EasyDialogs
|
||||
import os
|
||||
import Qd
|
||||
from Types import *
|
||||
from Events import charCodeMask, cmdKey
|
||||
import MacOS
|
||||
import Evt
|
||||
|
||||
def dummyfunc(): pass
|
||||
|
||||
modulefilename = dummyfunc.func_code.co_filename
|
||||
|
||||
def Interact(timeout = 50000000): # timeout after 10 days...
|
||||
AE.AEInteractWithUser(timeout)
|
||||
|
||||
|
||||
class PythonSlave(FrameWork.Application):
|
||||
def __init__(self):
|
||||
FrameWork.Application.__init__(self)
|
||||
AE.AEInstallEventHandler('pyth', 'EXEC', ExecHandler)
|
||||
AE.AEInstallEventHandler('aevt', 'quit', QuitHandler)
|
||||
AE.AEInstallEventHandler('aevt', 'odoc', OpenDocumentHandler)
|
||||
|
||||
def makeusermenus(self):
|
||||
self.filemenu = m = FrameWork.Menu(self.menubar, "File")
|
||||
self._quititem = FrameWork.MenuItem(m, "Quit", "Q", self._quit)
|
||||
|
||||
def do_kHighLevelEvent(self, event):
|
||||
(what, message, when, where, modifiers) = event
|
||||
try:
|
||||
AE.AEProcessAppleEvent(event)
|
||||
except AE.Error, detail:
|
||||
print "Apple Event was not handled, error:", detail
|
||||
|
||||
def do_key(self, event):
|
||||
(what, message, when, where, modifiers) = event
|
||||
c = chr(message & charCodeMask)
|
||||
if modifiers & cmdKey and c == '.':
|
||||
return
|
||||
FrameWork.Application.do_key(self, event)
|
||||
|
||||
def idle(self, event):
|
||||
Qd.InitCursor()
|
||||
|
||||
def quit(self, *args):
|
||||
raise self
|
||||
|
||||
def getabouttext(self):
|
||||
return "About PythonSlaveŠ"
|
||||
|
||||
def do_about(self, id, item, window, event):
|
||||
EasyDialogs.Message("PythonSlave " + __version__ + "\rCopyright © 1996, Letterror, JvR")
|
||||
|
||||
|
||||
def ExecHandler(theAppleEvent, theReply):
|
||||
parameters, args = aetools.unpackevent(theAppleEvent)
|
||||
if parameters.has_key('----'):
|
||||
if parameters.has_key('NAME'):
|
||||
print '--- executing "' + parameters['NAME'] + '" ---'
|
||||
else:
|
||||
print '--- executing "<unknown>" ---'
|
||||
stuff = parameters['----']
|
||||
MyExec(stuff + "\n") # execute input
|
||||
print '--- done ---'
|
||||
return 0
|
||||
|
||||
def MyExec(stuff):
|
||||
stuff = string.splitfields(stuff, '\r') # convert return chars
|
||||
stuff = string.joinfields(stuff, '\n') # to newline chars
|
||||
Interact()
|
||||
saveyield = MacOS.EnableAppswitch(1)
|
||||
try:
|
||||
exec stuff in {}
|
||||
except:
|
||||
MacOS.EnableAppswitch(saveyield)
|
||||
traceback.print_exc()
|
||||
MacOS.EnableAppswitch(saveyield)
|
||||
|
||||
def OpenDocumentHandler(theAppleEvent, theReply):
|
||||
parameters, args = aetools.unpackevent(theAppleEvent)
|
||||
docs = parameters['----']
|
||||
if type(docs) <> ListType:
|
||||
docs = [docs]
|
||||
for doc in docs:
|
||||
fss, a = doc.Resolve()
|
||||
path = fss.as_pathname()
|
||||
if path <> modulefilename:
|
||||
MyExecFile(path)
|
||||
return 0
|
||||
|
||||
def MyExecFile(path):
|
||||
saveyield = MacOS.EnableAppswitch(1)
|
||||
savewd = os.getcwd()
|
||||
os.chdir(os.path.split(path)[0])
|
||||
print '--- Executing file "' + os.path.split(path)[1] + '"'
|
||||
try:
|
||||
execfile(path, {"__name__": "__main__"})
|
||||
except:
|
||||
traceback.print_exc()
|
||||
MacOS.EnableAppswitch(saveyield)
|
||||
MacOS.EnableAppswitch(saveyield)
|
||||
os.chdir(savewd)
|
||||
print "--- done ---"
|
||||
|
||||
def QuitHandler(theAppleEvent, theReply):
|
||||
slave.quit()
|
||||
return 0
|
||||
|
||||
|
||||
slave = PythonSlave()
|
||||
print "PythonSlave", __version__, "ready."
|
||||
slave.mainloop()
|
||||
Loading…
Add table
Add a link
Reference in a new issue