FROM : Daniel Morrow
DATE : Wed Oct 13 19:48:30 2004
OK,
I got another response suggesting that I use "GetDragPasteboard" too.
But here's my situation - I'm a plugin in InDesign, which, (from what I
can tell) does not use the Pasteboard APIs. The InDesign APIs has nice
wrapper classes which handle drag-n-drop. These routines are
cross-platform (Mac & PC). So, I'm trying to avoid using Mac-specific
code in here, if at all possible. On the Mac, they seem to wrap the
Drag Manager, because their APIs ask for drag-flavors (4-char codes) to
get the dragged data.
So, what I'd like, ideally, to do is say to the OS:
"Hey OS, if you get anything on the pasteboard with type
"MySpecialType" it also has a Drag-flavor 'MySp'."
I thought this might be possible by adding some kind of data into my
plist which would describe this translation, and then whenever I
dragged my custom data from my app, it would also be dragging along a
drag-flavor of "MySp"
The reason I'm using a custom type in the first place is because my
plugin (in InDesign) doesn't want to intercept all 'TEXT' drops, or any
other standard type. This is a special drop, with my special data,
created by my app.
if this is truly not possible, then I'll move on to using
GetDragPasteboard.
Again, thanks for all the help,
-Dan.
On Oct 13, 2004, at 12:57 PM, Bryan Prusha wrote:
> This is one of the big reasons the Carbon Pasteboard was
> introduced in 10.3 (Pasteboard.h). It's flavors are based on Uniform
> Type Identifiers which can contain information about both NSPasteboard
> types as well as their corresponding four character codes. What you
> want to do is add the data on the Cocoa side as you already do and
> adopt the Carbon Pasteboard on the receiver side. The Pasteboard can
> be retrieved from the drag via GetDragPasteboard. From there you can
> use UTTypeCreatePreferredIdentifierForTag to create a dynamic UTI
> (UTType.h) from the NSPasteboard type you used earlier. Make a
> request of that dynamic UTI flavor from the pasteboard and you'll
> receive the data. Unless you're using one of a handful of well known
> types there is no way to receive Cocoa pasteboard data using Drag
> Manager. Adopting the Carbon Pasteboard is the only way to do this in
> a general manner. Since you're already familiar with Drag Manager
> learning the Carbon Pasteboard will be very straight forward.
>
> Please check out the PasteboardPeeker sample code for examples
> of all things Pasteboard (copy&paste, drag&drop, services,
> translations).
>
>
> http://developer.apple.com/samplecode/PasteboardPeeker/
> PasteboardPeeker.html
>
>
> On Oct 13, 2004, at 7:22 AM, Daniel Morrow wrote:
>
>> I assume there's a technote about this somewhere, but I'm having
>> trouble finding it.
>>
>> I have two apps. One is a Cocoa app which contains a table view, and
>> I want to drag items from that table to another app. Dragging them
>> out in Cocoa is pretty easy.
>>
>> The other app is Adobe InDesign. It appears that InDesign is using
>> regular Drag manager calls. I'm writing an InDesign plugin. InDesign
>> gives me a way to get the DragReference. Which appears valid.
>>
>> I ask it how many items are in the dragref. It tells me 1, so far, so
>> good. Next I get the DragItemRef, and it oddly always has the address
>> "0x000C0C0A". Which is amusing. But I really need to get the data out
>> of it.
>>
>> Is there a way to do this? I can change the code in the Cocoa app,
>> which I'm writing. But I have to use a DragReference on the InDesign
>> side. Any ideas?
>>
>> -Dan.
>>
>> P.S. - Sorry to post this to two lists, but I guess there aren't too
>> many people working in both worlds simultaneously like this.
>>
>> _______________________________________________
>> Do not post admin requests to the list. They will be ignored.
>> Carbon-dev mailing list (<email_removed>)
>> Help/Unsubscribe/Update your Subscription:
>> http://lists.apple.com/mailman/options/carbon-dev/<email_removed>
>>
>> This email sent to <email_removed>
>
>
DATE : Wed Oct 13 19:48:30 2004
OK,
I got another response suggesting that I use "GetDragPasteboard" too.
But here's my situation - I'm a plugin in InDesign, which, (from what I
can tell) does not use the Pasteboard APIs. The InDesign APIs has nice
wrapper classes which handle drag-n-drop. These routines are
cross-platform (Mac & PC). So, I'm trying to avoid using Mac-specific
code in here, if at all possible. On the Mac, they seem to wrap the
Drag Manager, because their APIs ask for drag-flavors (4-char codes) to
get the dragged data.
So, what I'd like, ideally, to do is say to the OS:
"Hey OS, if you get anything on the pasteboard with type
"MySpecialType" it also has a Drag-flavor 'MySp'."
I thought this might be possible by adding some kind of data into my
plist which would describe this translation, and then whenever I
dragged my custom data from my app, it would also be dragging along a
drag-flavor of "MySp"
The reason I'm using a custom type in the first place is because my
plugin (in InDesign) doesn't want to intercept all 'TEXT' drops, or any
other standard type. This is a special drop, with my special data,
created by my app.
if this is truly not possible, then I'll move on to using
GetDragPasteboard.
Again, thanks for all the help,
-Dan.
On Oct 13, 2004, at 12:57 PM, Bryan Prusha wrote:
> This is one of the big reasons the Carbon Pasteboard was
> introduced in 10.3 (Pasteboard.h). It's flavors are based on Uniform
> Type Identifiers which can contain information about both NSPasteboard
> types as well as their corresponding four character codes. What you
> want to do is add the data on the Cocoa side as you already do and
> adopt the Carbon Pasteboard on the receiver side. The Pasteboard can
> be retrieved from the drag via GetDragPasteboard. From there you can
> use UTTypeCreatePreferredIdentifierForTag to create a dynamic UTI
> (UTType.h) from the NSPasteboard type you used earlier. Make a
> request of that dynamic UTI flavor from the pasteboard and you'll
> receive the data. Unless you're using one of a handful of well known
> types there is no way to receive Cocoa pasteboard data using Drag
> Manager. Adopting the Carbon Pasteboard is the only way to do this in
> a general manner. Since you're already familiar with Drag Manager
> learning the Carbon Pasteboard will be very straight forward.
>
> Please check out the PasteboardPeeker sample code for examples
> of all things Pasteboard (copy&paste, drag&drop, services,
> translations).
>
>
> http://developer.apple.com/samplecode/PasteboardPeeker/
> PasteboardPeeker.html
>
>
> On Oct 13, 2004, at 7:22 AM, Daniel Morrow wrote:
>
>> I assume there's a technote about this somewhere, but I'm having
>> trouble finding it.
>>
>> I have two apps. One is a Cocoa app which contains a table view, and
>> I want to drag items from that table to another app. Dragging them
>> out in Cocoa is pretty easy.
>>
>> The other app is Adobe InDesign. It appears that InDesign is using
>> regular Drag manager calls. I'm writing an InDesign plugin. InDesign
>> gives me a way to get the DragReference. Which appears valid.
>>
>> I ask it how many items are in the dragref. It tells me 1, so far, so
>> good. Next I get the DragItemRef, and it oddly always has the address
>> "0x000C0C0A". Which is amusing. But I really need to get the data out
>> of it.
>>
>> Is there a way to do this? I can change the code in the Cocoa app,
>> which I'm writing. But I have to use a DragReference on the InDesign
>> side. Any ideas?
>>
>> -Dan.
>>
>> P.S. - Sorry to post this to two lists, but I guess there aren't too
>> many people working in both worlds simultaneously like this.
>>
>> _______________________________________________
>> Do not post admin requests to the list. They will be ignored.
>> Carbon-dev mailing list (<email_removed>)
>> Help/Unsubscribe/Update your Subscription:
>> http://lists.apple.com/mailman/options/carbon-dev/<email_removed>
>>
>> This email sent to <email_removed>
>
>
| Related mails | Author | Date |
|---|---|---|
| Daniel Morrow | Oct 13, 19:48 | |
| Greg Titus | Oct 13, 20:06 |






Cocoa mail archive

