| from Carbon import Drag |
| import time |
| xxxx=1 |
| def decode_hfs(data): |
| import struct, macfs |
| tp = data[0:4] |
| cr = data[4:8] |
| flags = struct.unpack("h", data[8:10]) |
| fss = macfs.RawFSSpec(data[10:]) |
| return tp, cr, flags, fss |
| |
| def tracker(msg, dragref, window): |
| pass |
| |
| def dropper(dragref, window): |
| global xxxx |
| n = dragref.CountDragItems() |
| print 'Drop %d items:'%n |
| for i in range(1, n+1): |
| refnum = dragref.GetDragItemReferenceNumber(i) |
| print '%d (ItemReference 0x%x)'%(i, refnum) |
| nf = dragref.CountDragItemFlavors(refnum) |
| print ' %d flavors:'%nf |
| for j in range(1, nf+1): |
| ftype = dragref.GetFlavorType(refnum, j) |
| fflags = dragref.GetFlavorFlags(refnum, ftype) |
| print ' "%4.4s" 0x%x'%(ftype, fflags) |
| if ftype == 'hfs ': |
| datasize = dragref.GetFlavorDataSize(refnum, ftype) |
| data = dragref.GetFlavorData(refnum, ftype, datasize, 0) |
| print ' datasize', `data` |
| xxxx = data |
| print ' ->', decode_hfs(data) |
| |
| |
| def main(): |
| print "Drag things onto output window. Press command-. to quit." |
| Drag.InstallTrackingHandler(tracker) |
| Drag.InstallReceiveHandler(dropper) |
| while 1: |
| time.sleep(100) |
| |
| main() |