Annotation of Examples/AppKit/Yap/PSText.m, revision 1.1.1.1

1.1       root        1: /*
                      2:  *  PSText.m, subclass of Text overriding paste: for adding functionality
                      3:  *  Author: Ali Ozer
                      4:  *  Created: Mar 22, 89
                      5:  *
                      6:  *  You may freely copy, distribute and reuse the code in this example.
                      7:  *  NeXT disclaims any warranty of any kind, expressed or implied,
                      8:  *  as to its fitness for any particular use.
                      9:  */
                     10: 
                     11: #import <appkit/appkit.h>
                     12: #import <string.h>
                     13: #import <mach/mach.h>
                     14: #import "PSText.h"
                     15: 
                     16: @implementation PSText
                     17: 
                     18: /*
                     19:  * The following method overrides the Text paste: method. If there's any
                     20:  * PostScript on the pasteboard, this method will paste that in before pasting
                     21:  * ASCII. If there's no PostScript on the pasteboard, then this method will
                     22:  * simply call the overridden paste: method.
                     23:  */
                     24: - paste:(id)sender
                     25: {
                     26:     id pb = [Pasteboard new];  
                     27:     char *data;
                     28:     char *const *s;  /* We use s to go through types. */
                     29:     char *const *types = [pb types];
                     30:     int len;
                     31: 
                     32:     /* Check to see if we have any PostScript on the pasteboard... */
                     33: 
                     34:     for (s = types; *s; s++) if (!strcmp(*s, NXPostScriptPboard)) break;
                     35: 
                     36:     /* At this point, if *s != NULL, we found PostScript on the pasteboard. */
                     37: 
                     38:     if (*s && [pb readType:NXPostScriptPboard data:&data length:&len] && len) {
                     39:        [self replaceSel:data length:len];
                     40:         vm_deallocate (task_self(), (vm_address_t)data, (vm_size_t)len);       
                     41:     } else {
                     42:         [super paste:sender];  /* No PS; pass the task on to Text. */
                     43:     }
                     44: 
                     45:     return self;
                     46: }
                     47: 
                     48: @end
                     49: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.