Committed a more or less working version.

This commit is contained in:
Guido van Rossum 1995-01-30 11:53:55 +00:00
parent 80ffd6683c
commit 17448e2408
56 changed files with 12110 additions and 0 deletions

View file

@ -0,0 +1,103 @@
# Generated from 'D:Development:THINK C:Mac #includes:Apple #includes:AppleEvents.h'
typeBoolean = 'bool'
typeChar = 'TEXT'
typeSMInt = 'shor'
typeInteger = 'long'
typeSMFloat = 'sing'
typeFloat = 'doub'
typeLongInteger = 'long'
typeShortInteger = 'shor'
typeLongFloat = 'doub'
typeShortFloat = 'sing'
typeExtended = 'exte'
typeComp = 'comp'
typeMagnitude = 'magn'
typeAEList = 'list'
typeAERecord = 'reco'
typeAppleEvent = 'aevt'
typeTrue = 'true'
typeFalse = 'fals'
typeAlias = 'alis'
typeEnumerated = 'enum'
typeType = 'type'
typeAppParameters = 'appa'
typeProperty = 'prop'
typeFSS = 'fss '
typeKeyword = 'keyw'
typeSectionH = 'sect'
typeWildCard = '****'
typeApplSignature = 'sign'
typeSessionID = 'ssid'
typeTargetID = 'targ'
typeProcessSerialNumber = 'psn '
typeNull = 'null'
keyDirectObject = '----'
keyErrorNumber = 'errn'
keyErrorString = 'errs'
keyProcessSerialNumber = 'psn '
keyTransactionIDAttr = 'tran'
keyReturnIDAttr = 'rtid'
keyEventClassAttr = 'evcl'
keyEventIDAttr = 'evid'
keyAddressAttr = 'addr'
keyOptionalKeywordAttr = 'optk'
keyTimeoutAttr = 'timo'
keyInteractLevelAttr = 'inte'
keyEventSourceAttr = 'esrc'
keyMissedKeywordAttr = 'miss'
keyOriginalAddressAttr = 'from'
keyPreDispatch = 'phac'
keySelectProc = 'selh'
keyAERecorderCount = 'recr'
keyAEVersion = 'vers'
kCoreEventClass = 'aevt'
kAEOpenApplication = 'oapp'
kAEOpenDocuments = 'odoc'
kAEPrintDocuments = 'pdoc'
kAEQuitApplication = 'quit'
kAEAnswer = 'ansr'
kAEApplicationDied = 'obit'
kAENoReply = 0x00000001
kAEQueueReply = 0x00000002
kAEWaitReply = 0x00000003
kAENeverInteract = 0x00000010
kAECanInteract = 0x00000020
kAEAlwaysInteract = 0x00000030
kAECanSwitchLayer = 0x00000040
kAEDontReconnect = 0x00000080
kAEDontRecord = 0x00001000
kAEDontExecute = 0x00002000
kAENormalPriority = 0x00000000
kAEStartRecording = 'reca'
kAEStopRecording = 'recc'
kAENotifyStartRecording = 'rec1'
kAENotifyStopRecording = 'rec0'
kAENotifyRecording = 'recr'
kAutoGenerateReturnID = -1
kAnyTransactionID = 0
kAEDefaultTimeout = -1
kNoTimeOut = -2
kAENoDispatch = 0
kAEUseStandardDispatch = -1
errAECoercionFail = -1700
errAEDescNotFound = -1701
errAECorruptData = -1702
errAEWrongDataType = -1703
errAENotAEDesc = -1704
errAEBadListItem = -1705
errAENewerVersion = -1706
errAENotAppleEvent = -1707
errAEEventNotHandled = -1708
errAEReplyNotValid = -1709
errAEUnknownSendMode = -1710
errAEWaitCanceled = -1711
errAETimeout = -1712
errAENoUserInteraction = -1713
errAENotASpecialFunction = -1714
errAEParamMissed = -1715
errAEUnknownAddressType = -1716
errAEHandlerNotFound = -1717
errAEReplyNotArrived = -1718
errAEIllegalIndex = -1719
errAEUnknownObjectType = -1731
errAERecordingIsAlreadyOn = -1732

View file

@ -0,0 +1,41 @@
# Generated from 'D:Development:THINK C:Mac #includes:Apple #includes:Controls.h'
pushButProc = 0
checkBoxProc = 1
radioButProc = 2
useWFont = 8
scrollBarProc = 16
inButton = 10
inCheckBox = 11
inUpButton = 20
inDownButton = 21
inPageUp = 22
inPageDown = 23
inThumb = 129
popupMenuProc = 1008
inLabel = 1
inMenu = 2
inTriangle = 4
popupUseWFont = 1 << 3
popupTitleOutline = 1 << 11
popupTitleExtend = 1 << 14
popupTitleLeftJust = 0x00000000
popupTitleCenterJust = 0x00000001
popupTitleRightJust = 0x000000FF
noConstraint = 0
hAxisOnly = 1
vAxisOnly = 2
drawCntl = 0
testCntl = 1
calcCRgns = 2
initCntl = 3
dispCntl = 4
posCntl = 5
thumbCntl = 6
dragCntl = 7
autoTrack = 8
calcCntlRgn = 10
calcThumbRgn = 11
cFrameColor = 0
cBodyColor = 1
cTextColor = 2
cThumbColor = 3

View file

@ -0,0 +1,20 @@
# Generated from 'D:Development:THINK C:Mac #includes:Apple #includes:Dialogs.h'
ctrlItem = 4
btnCtrl = 0
chkCtrl = 1
radCtrl = 2
resCtrl = 3
statText = 8
editText = 16
iconItem = 32
picItem = 64
userItem = 0
itemDisable = 128
ok = 1
cancel = 2
stopIcon = 0
noteIcon = 1
cautionIcon = 2
overlayDITL = 0
appendDITLRight = 1
appendDITLBottom = 2

49
Mac/Lib/toolbox/Events.py Normal file
View file

@ -0,0 +1,49 @@
# Generated from 'D:Development:THINK C:Mac #includes:Apple #includes:Events.h'
nullEvent = 0
mouseDown = 1
mouseUp = 2
keyDown = 3
keyUp = 4
autoKey = 5
updateEvt = 6
diskEvt = 7
activateEvt = 8
osEvt = 15
mDownMask = 2
mUpMask = 4
keyDownMask = 8
keyUpMask = 16
autoKeyMask = 32
updateMask = 64
diskMask = 128
activMask = 256
highLevelEventMask = 1024
osMask = -32768
everyEvent = -1
charCodeMask = 0x000000FF
keyCodeMask = 0x0000FF00
adbAddrMask = 0x00FF0000
osEvtMessageMask = 0xFF000000
mouseMovedMessage = 0xFA
suspendResumeMessage = 0x01
resumeFlag = 1
convertClipboardFlag = 2
activeFlag = 1
btnState = 128
cmdKey = 256
shiftKey = 512
alphaLock = 1024
optionKey = 2048
controlKey = 4096
networkEvt = 10
driverEvt = 11
app1Evt = 12
app2Evt = 13
app3Evt = 14
app4Evt = 15
networkMask = 1024
driverMask = 2048
app1Mask = 4096
app2Mask = 8192
app3Mask = 16384
app4Mask = -32768

12
Mac/Lib/toolbox/Menus.py Normal file
View file

@ -0,0 +1,12 @@
# Generated from 'D:Development:THINK C:Mac #includes:Apple #includes:Menus.h'
mDrawMsg = 0
mChooseMsg = 1
mSizeMsg = 2
mDrawItemMsg = 4
mCalcItemMsg = 5
textMenuProc = 0
hMenuCmd = 27
hierMenu = -1
mPopUpMsg = 3
mctAllItems = -98
mctLastIDIndic = -99 /*last color table entry has this in ID field*/

View file

@ -0,0 +1,12 @@
# Generated from 'D:Development:THINK C:Mac #includes:Apple #includes:Resources.h'
resSysHeap = 64
resPurgeable = 32
resLocked = 16
resProtected = 8
resPreload = 4
resChanged = 2
mapReadOnly = 128
mapCompact = 64
mapChanged = 32
mapTrue = 0xFFFF
mapFalse = 0xFF00

101
Mac/Lib/toolbox/Sound.py Normal file
View file

@ -0,0 +1,101 @@
# Generated from 'D:Development:THINK C:Mac #includes:Apple #includes:Sound.h'
swMode = -1
ftMode = 1
ffMode = 0
rate22khz = 0x56EE8BA3
rate11khz = 0x2B7745D1
squareWaveSynth = 1
waveTableSynth = 3
sampledSynth = 5
MACE3snthID = 11
MACE6snthID = 13
nullCmd = 0
initCmd = 1
freeCmd = 2
quietCmd = 3
flushCmd = 4
reInitCmd = 5
waitCmd = 10
pauseCmd = 11
resumeCmd = 12
callBackCmd = 13
syncCmd = 14
emptyCmd = 15
tickleCmd = 20
requestNextCmd = 21
howOftenCmd = 22
wakeUpCmd = 23
availableCmd = 24
versionCmd = 25
totalLoadCmd = 26
loadCmd = 27
scaleCmd = 30
tempoCmd = 31
freqDurationCmd = 40
restCmd = 41
freqCmd = 42
ampCmd = 43
timbreCmd = 44
getAmpCmd = 45
waveTableCmd = 60
phaseCmd = 61
soundCmd = 80
bufferCmd = 81
rateCmd = 82
continueCmd = 83
doubleBufferCmd = 84
getRateCmd = 85
sizeCmd = 90
convertCmd = 91
stdQLength = 128
dataOffsetFlag = 0x8000
waveInitChannelMask = 0x07
waveInitChannel0 = 0x04
waveInitChannel1 = 0x05
waveInitChannel2 = 0x06
waveInitChannel3 = 0x07
initPanMask = 0x0003
initSRateMask = 0x0030
initStereoMask = 0x00C0
initCompMask = 0xFF00
initChanLeft = 0x0002
initChanRight = 0x0003
initNoInterp = 0x0004
initNoDrop = 0x0008
initMono = 0x0080
initStereo = 0x00C0
initMACE3 = 0x0300
initMACE6 = 0x0400
initChan0 = 0x0004
initChan1 = 0x0005
initChan2 = 0x0006
initChan3 = 0x0007
stdSH = 0x00
extSH = 0xFF
cmpSH = 0xFE
notCompressed = 0
twoToOne = 1
eightToThree = 2
threeToOne = 3
sixToOne = 4
outsideCmpSH = 0
insideCmpSH = 1
aceSuccess = 0
aceMemFull = 1
aceNilBlock = 2
aceBadComp = 3
aceBadEncode = 4
aceBadDest = 5
aceBadCmd = 6
sixToOnePacketSize = 8
threeToOnePacketSize = 16
stateBlockSize = 64
leftOverBlockSize = 32
firstSoundFormat = 0x0001
secondSoundFormat = 0x0002
dbBufferReady = 0x00000001
dbLastBuffer = 0x00000004
sysBeepDisable = 0x0000
sysBeepEnable = 0x0001
unitTypeNoSelection = 0xFFFF
unitTypeSeconds = 0x0000

View file

@ -0,0 +1,41 @@
# Generated from 'D:Development:THINK C:Mac #includes:Apple #includes:Windows.h'
documentProc = 0
dBoxProc = 1
plainDBox = 2
altDBoxProc = 3
noGrowDocProc = 4
movableDBoxProc = 5
zoomDocProc = 8
zoomNoGrow = 12
rDocProc = 16
dialogKind = 2
userKind = 8
inDesk = 0
inMenuBar = 1
inSysWindow = 2
inContent = 3
inDrag = 4
inGrow = 5
inGoAway = 6
inZoomIn = 7
inZoomOut = 8
wDraw = 0
wHit = 1
wCalcRgns = 2
wNew = 3
wDispose = 4
wGrow = 5
wDrawGIcon = 6
wNoHit = 0
wInContent = 1
wInDrag = 2
wInGrow = 3
wInGoAway = 4
wInZoomIn = 5
wInZoomOut = 6
deskPatID = 16
wContentColor = 0
wFrameColor = 1
wTextColor = 2
wHiliteColor = 3
wTitleBarColor = 4

296
Mac/Lib/toolbox/aetools.py Normal file
View file

@ -0,0 +1,296 @@
import struct
import types
import AE
import MacOS
import StringIO
AEDescType = type(AE.AECreateDesc('TEXT', ''))
def pack(x):
if x == None:
return AE.AECreateDesc('null', '')
t = type(x)
if t == AEDescType:
return x
if t == types.IntType:
return AE.AECreateDesc('long', struct.pack('l', x))
if t == types.FloatType:
return AE.AECreateDesc('exte', struct.pack('d', x)[2:])
if t == types.StringType:
return AE.AECreateDesc('TEXT', x)
if t == types.ListType:
list = AE.AECreateList('', 0)
for item in x:
list.AEPutDesc(0, pack(item))
return list
if t == types.TupleType:
t, d = x
return AE.AECreateDesc(t, d)
if t == types.DictionaryType:
record = AE.AECreateList('', 1)
for key, value in x.items():
record.AEPutKeyDesc(key, pack(value))
if t == types.InstanceType and hasattr(x, '__aepack__'):
return x.__aepack__()
return AE.AECreateDesc('TEXT', repr(x)) # Copout
def unpack(desc):
t = desc.type
if t == 'TEXT':
return desc.data
if t == 'fals':
return 0
if t == 'true':
return 1
if t == 'long':
return struct.unpack('l', desc.data)[0]
if t == 'shor':
return struct.unpack('h', desc.data)[0]
if t == 'sing':
return struct.unpack('f', desc.data)[0]
if t == 'exte':
data = desc.data
return struct.unpack('d', data[:2] + data)[0]
if t in ('doub', 'comp', 'magn'):
return unpack(desc.AECoerceDesc('exte'))
if t == 'enum':
return ('enum', desc.data)
if t == 'null':
return None
if t == 'list':
l = []
for i in range(desc.AECountItems()):
keyword, item = desc.AEGetNthDesc(i+1, '****')
l.append(unpack(item))
return l
if t == 'reco':
d = {}
for i in range(desc.AECountItems()):
keyword, item = desc.AEGetNthDesc(i+1, '****')
d[keyword] = unpack(item)
return d
if t == 'obj ':
return unpackobject(desc.data)
return desc.type, desc.data # Copout
class Object:
def __init__(self, dict = {}):
self.dict = dict
for key, value in dict.items():
self.dict[key] = value
def __repr__(self):
return "Object(%s)" % `self.dict`
def __str__(self):
want = self.dict['want']
form = self.dict['form']
seld = self.dict['seld']
s = "%s %s %s" % (nicewant(want), niceform(form), niceseld(seld))
fr = self.dict['from']
if fr:
s = s + " of " + str(fr)
return s
def __aepack__(self):
f = StringIO.StringIO()
putlong(f, len(self.dict))
putlong(f, 0)
for key, value in self.dict.items():
putcode(f, key)
desc = pack(value)
putcode(f, desc.type)
data = desc.data
putlong(f, len(data))
f.write(data)
return AE.AECreateDesc('obj ', f.getvalue())
def nicewant(want):
if type(want) == types.TupleType and len(want) == 2:
return reallynicewant(want)
else:
return `want`
def reallynicewant((t, w)):
if t != 'type': return `t, w`
# These should be taken from the "elements" of the 'aete' resource
if w == 'cins': return 'insertion point'
if w == 'cha ': return 'character'
if w == 'word': return 'word'
if w == 'para': return 'paragraph'
if w == 'ccel': return 'cell'
if w == 'ccol': return 'column'
if w == 'crow': return 'row'
if w == 'crng': return 'range'
if w == 'wind': return 'window'
if w == 'docu': return 'document'
return `w`
def niceform(form):
if type(form) == types.TupleType and len(form) == 2:
return reallyniceform(form)
else:
return `form`
def reallyniceform((t, f)):
if t <> 'enum': return `t, f`
if f == 'indx': return ''
if f == 'name': return ''
if f == 'rele': return ''
return `f`
def niceseld(seld):
if type(seld) == types.TupleType and len(seld) == 2:
return reallyniceseld(seld)
else:
return `seld`
def reallyniceseld((t, s)):
if t == 'long': return `s`
if t == 'TEXT': return `s`
if t == 'enum':
if s == 'next': return 'after'
if s == 'prev': return 'before'
return `t, s`
def unpackobject(data):
f = StringIO.StringIO(data)
nkey = getlong(f)
dumm = getlong(f)
dict = {}
for i in range(nkey):
keyw = getcode(f)
type = getcode(f)
size = getlong(f)
if size:
data = f.read(size)
else:
data = ''
desc = AE.AECreateDesc(type, data)
dict[keyw] = unpack(desc)
return Object(dict)
# --- get various data types from a "file"
def getword(f, *args):
getalgn(f)
s = f.read(2)
if len(s) < 2:
raise EOFError, 'in getword' + str(args)
return (ord(s[0])<<8) | ord(s[1])
def getlong(f, *args):
getalgn(f)
s = f.read(4)
if len(s) < 4:
raise EOFError, 'in getlong' + str(args)
return (ord(s[0])<<24) | (ord(s[1])<<16) | (ord(s[2])<<8) | ord(s[3])
def getcode(f, *args):
getalgn(f)
s = f.read(4)
if len(s) < 4:
raise EOFError, 'in getcode' + str(args)
return s
def getpstr(f, *args):
c = f.read(1)
if len(c) < 1:
raise EOFError, 'in getpstr[1]' + str(args)
nbytes = ord(c)
if nbytes == 0: return ''
s = f.read(nbytes)
if len(s) < nbytes:
raise EOFError, 'in getpstr[2]' + str(args)
return s
def getalgn(f):
if f.tell() & 1:
c = f.read(1)
##if c <> '\0':
## print 'align:', `c`
# ---- end get routines
# ---- put various data types to a "file"
def putlong(f, value):
putalgn(f)
f.write(chr((value>>24)&0xff))
f.write(chr((value>>16)&0xff))
f.write(chr((value>>8)&0xff))
f.write(chr(value&0xff))
def putword(f, value):
putalgn(f)
f.write(chr((value>>8)&0xff))
f.write(chr(value&0xff))
def putcode(f, value):
if type(value) != types.StringType or len(value) != 4:
raise TypeError, "ostype must be 4-char string"
putalgn(f)
f.write(value)
def putpstr(f, value):
if type(value) != types.StringType or len(value) > 255:
raise TypeError, "pstr must be string <= 255 chars"
f.write(chr(len(value)) + value)
def putalgn(f):
if f.tell() & 1:
f.write('\0')
# ---- end put routines
aekeywords = [
'tran',
'rtid',
'evcl',
'evid',
'addr',
'optk',
'timo',
'inte', # this attribute is read only - will be set in AESend
'esrc', # this attribute is read only
'miss', # this attribute is read only
'from' # new in 1.0.1
]
def missed(ae):
try:
desc = ae.AEGetAttributeDesc('miss', 'keyw')
except AE.Error, msg:
return None
return desc.data
def unpackevent(ae):
parameters = {}
while 1:
key = missed(ae)
if not key: break
parameters[key] = unpack(ae.AEGetParamDesc(key, '****'))
attributes = {}
for key in aekeywords:
try:
desc = ae.AEGetAttributeDesc(key, '****')
except (AE.Error, MacOS.Error), msg:
if msg[0] != -1701:
raise sys.exc_type, sys.exc_value
continue
attributes[key] = unpack(desc)
return parameters, attributes
def packevent(ae, parameters = {}, attributes = {}):
for key, value in parameters.items():
ae.AEPutParamDesc(key, pack(value))
for key, value in attributes.items():
ae.AEPutAttributeDesc(key, pack(value))
def test():
target = AE.AECreateDesc('sign', 'KAHL')
ae = AE.AECreateAppleEvent('aevt', 'oapp', target, -1, 0)
print unpackevent(ae)
if __name__ == '__main__':
test()