Enums we cannot find are set to None, and enumsubst understands this (no substitution done). This is need for what I think are bugs in the Finder aete resources (some events use unknown enums).
diff --git a/Mac/Lib/lib-toolbox/aetools.py b/Mac/Lib/lib-toolbox/aetools.py
index 792cb72..42b6b76 100644
--- a/Mac/Lib/lib-toolbox/aetools.py
+++ b/Mac/Lib/lib-toolbox/aetools.py
@@ -103,7 +103,7 @@
def enumsubst(arguments, key, edict):
"""Substitute a single enum keyword argument, if it occurs"""
- if not arguments.has_key(key):
+ if not arguments.has_key(key) or edict is None:
return
v = arguments[key]
ok = edict.values()
@@ -129,8 +129,9 @@
class TalkTo:
"""An AE connection to an application"""
+ _signature = None # Can be overridden by subclasses
- def __init__(self, signature, start=0, timeout=0):
+ def __init__(self, signature=None, start=0, timeout=0):
"""Create a communication channel with a particular application.
Addressing the application is done by specifying either a
@@ -138,6 +139,8 @@
to an AEDesc.
"""
self.target_signature = None
+ if signature is None:
+ signature = self._signature
if type(signature) == AEDescType:
self.target = signature
elif type(signature) == InstanceType and hasattr(signature, '__aepack__'):