home *** CD-ROM | disk | FTP | other *** search
- /*
- * PSText.m, subclass of Text overriding paste: for adding functionality
- * Author: Ali Ozer
- * Created: Mar 22, 89
- *
- * You may freely copy, distribute and reuse the code in this example.
- * NeXT disclaims any warranty of any kind, expressed or implied,
- * as to its fitness for any particular use.
- */
-
- #import <appkit/appkit.h>
- #import <string.h>
- #import <mach/mach.h>
- #import "PSText.h"
-
- @implementation PSText
-
- /*
- * The following method overrides the Text paste: method. If there's any
- * PostScript on the pasteboard, this method will paste that in before pasting
- * ASCII. If there's no PostScript on the pasteboard, then this method will
- * simply call the overridden paste: method.
- */
- - paste:(id)sender
- {
- id pb = [Pasteboard new];
- char *data;
- char *const *s; /* We use s to go through types. */
- char *const *types = [pb types];
- int len;
-
- /* Check to see if we have any PostScript on the pasteboard... */
-
- for (s = types; *s; s++) if (!strcmp(*s, NXPostScriptPboard)) break;
-
- /* At this point, if *s != NULL, we found PostScript on the pasteboard. */
-
- if (*s && [pb readType:NXPostScriptPboard data:&data length:&len] && len) {
- [self replaceSel:data length:len];
- vm_deallocate (task_self(), (vm_address_t)data, (vm_size_t)len);
- } else {
- [super paste:sender]; /* No PS; pass the task on to Text. */
- }
-
- return self;
- }
-
- @end
-
-