[Pythonmac-SIG] CFURL Pain

has hengist.podd at virgin.net
Thu Mar 3 16:31:29 CET 2005

Paul Berkowitz  wrote:

>The type 'alias' for the Save command in the Standard Suite is a long,
>longstanding bug in AppleScript.

Replacing (as of 10.3) a previous long, longstanding implementation 
bug where it was specified as a POSIX path string. :p

I take it 'alias' is just a documentation error then, and the 
application will also accept a file spec/file url type identifying an 
existing/not-yet-created file.

>Fortunately there is an equally
>longstanding coercion, performs by AppleScript itself, that allows you to
>use a string or Unicode text there

Presumably there's a POSIX path string-to-file object coercion 
introduced in 10.3 to maintain compatibility scripts written for 
Cocoa apps in 10.2, where 'save...in' took a POSIX path string 
instead of a file object.

In aem's case at least, I'd be extremely reluctant simply to replace 
all use of Mac file objects with POSIX path strings. I've already 
tried this once and it just caused problems. I really would like an 
elegant, easy-to-use solution that respects AE file objects and 
provides user-friendly Python equivalents that hide as much of the 
underlying clumsiness without introducing any new problems. Might be 
a non-trivial task, but I think it'd be worth doing, especially if 
Python's to become a genuine replacement for AppleScript.

>In OS X, the coercion is now to fileURL,
>I believe. Whether this coercion takes place at a deep enough level
>(AppleEvent?) that it will work also for appscript and MacPython, I don't
>know. If you try it, what happens?

I've tried supplying FileURLs to Tex-Edit Plus in 10.2 and it seemed 
to work ok. If CFURL worked properly I'd probably just sling in the 
code to coerce AEDescs of typeFSSpec and typeFSRef to typeFileURL and 
spit out CFURLs, then wait and see if anyone runs into problems. 
NSURL is an alternative, though I'm still a little uncomfortable 
about coupling aem to PyObjC just for the sake of one little type; 
I'll think about this a bit more.

It would definitely be nice if the whole Mac file type muddle could 
be reduced - at least at the end-user level - to high-level, 
user-friendly FileURL and Alias classes. The only questions are: can 
we get there safely, and if so, how?



More information about the Pythonmac-SIG mailing list