Jim Fulton wrote:
Note that you don't have to define tpId. If it is undefined, then the persistent id (_p_oid) is used if the object is persistent and the Python id will be used if it isn't.
I shot myself in the foot on this one. Early on I came across Zope's TreeItem.TreeProtocol class, and decided to use it as a mixin. Of course TreeProtocol is a protocol specification, and its tpId method doesn't return anything. So I browsed around to see how it was used. After concluding that tpId served as an anchor name, I tried returning id(self). (It's a valid anchor name, and it's unique.) At which point tree nodes stopped expanding when clicked. So I looked at TreeTag.py, saw *it* using Python object IDs -- and working -- and decided it was time for beer. There's a moral here, and someone less addle-brained could state it clearly. Here's my attempt: In Python, protocol specs aren't gospel. The client framework may, like TreeTag.py, be able to adapt if you don't conform strictly to the protocol. Or how about: Think twice before mixing in a protocol class. -- Mitch Chapman | 4105 Executive Drive Ohio Electronic Engravers, Inc. | Beavercreek, OH 45430 mchapman@oee.com | import StandardDisclaimer