At 15.51 -0400 1999.06.14, Mat Marcus wrote: >It would be convenient to have the POD display which properties are >read-only. Also, there is no indication of the allowable elements. Finally, >the name of the inherited class could be useful here. All of these are >available in Script Editor's view of the dictionary. Good ideas, I will look into it. >I wonder if it would be possible to apply verbs to AEObjDescs as well as to >Glue e.g.: > > $doc1 = $myGlue->obj(document=>1); > $doc1->set($myGlue->obj(property=>'name'), to=>'newName'); > >This would allow direct translation of the original version of the >AppleScript. Hm. I just got rid of AEObjDesc for the next version! :) The only reason why was that they no longer had a use. I can add them back in. But I would need to make sure that any descs the glue returns are AEObjDescs. Not a problem, I think. AEObjDesc objects would all be like this: bless {DESC => $desc, GLUE => $self}, 'AEObjDesc'; Then $objdesc->{GLUE} could provide all the info I need. I might have to save this for the next version, though. >Anyway, my first attempt looked something like this: > > use Mac::Glue; > use Mac::Files; > use Mac::Types; > use Mac::AppleEvents::Simple; > > $i = new Mac::Glue 'InDesign'; > > $mySpreadSpec = $i->obj(property=>'active_spread', >property=>'active_window'); > #$myPlacedObjectSpec = >$i->place("System:Code:Shuksan:QA:TestFile:art1.tif", on=>$mySpreadSpec); > >Here I encountered my next problem. Noting that the 'place' verb expects an >FSSpec as it's first parameter I tried passing a plain old string as in >AppleScript. The application did receive an FSSpec. But it was invalid. >Apparently the string was being directly stuffed into the FSSpec's fields. Odd. It works for me, using various events that ask for an fss. Hm. I tried it in the last release (19990607) and it doesn't work. Oh well, it does now. :) Or, it will in the next release. > $myPlacedObjectSpec = $i->place(MacPack('fss >',"System:Code:Shuksan:QA:TestFile:art1.tif"), on=>$mySpreadSpec); > >This worked. Maybe this is a service that Glue could easily provide? That is what I do, basically. Detect an fsspec is wanted, and pack it. >the next line. The 'place' verb returns a reference to an object. However I >found it difficult to use $myPlacedObjectSpec in a glue expression. My first >naive approach was to try: > > #$i->set($i->obj(property=>'geometric_bounds', $myPlacedObjectSpec ), >to=>["6p0", "6p0", "18p0", "18p0"]); > >This didn't work. After examining the Glue source code I happened on this >hack: > > $myBlessedObjectSpec = bless {DESC=>$myPlacedObjectSpec}, 'AEObjDesc'; > $i->set($i->obj(property=>'geometric_bounds', $myBlessedObjectSpec ), >to=>["6p0", "6p0", "18p0", "18p0"]); > >Perhaps Glue could do this blessing for me when an object reference is >returned? Previously only AEObjDescs could be passed in like that. I changed it so you could pass in AEDescs or AEObjDescs, but then only AEDescs once I removed AEObjDesc. I think in preparation for using object descriptors as targets, I will put AEObjDesc back in, and you can pass either an AEDesc or an AEObjDesc in here. >P.S. One more thing. I couldn't get this to translate: > >##Applescript: >tell application "Indesign" > name of document 1 -- this works fine >end tell > >##Perl: > >use Mac::Glue ':glue'; >use Mac::Files; >use Mac::Types; >use Mac::AppleEvents::Simple; > > >$i = new Mac::Glue 'InDesign'; >print $i->get($i->obj(property=>'name', document=>1)); >print $^E; > >This prints -1728. Hm. Odd. I have no idea why, but that too is broken in the last release, but works in my current version (using BBEdit as the target). Odd indeed. Oh well, I have it working now, so I won't worry about why it was broken before. When i do a diff for the version history, maybe I'll take a look and see if I can find out. Thanks very much for your feedback, and I hope I've addressed your concerns satisfactorily. I may or may not do the doc fixes in the next release, but I will add in AEObjDesc, though I won't make it the target this time around (unless I get on a roll tonight :). -- Chris Nandor mailto:pudge@pobox.com http://pudge.net/ %PGPKey = ('B76E72AD', [1024, '0824090B CE73CA10 1FF77F13 8180B6B6']) ===== Want to unsubscribe from this list? ===== Send mail with body "unsubscribe" to macperl-request@macperl.org