]> gitweb.factorcode.org Git - factor.git/blob - basis/cocoa/pasteboard/pasteboard.factor
Fixing conflicts from stack checker changes
[factor.git] / basis / cocoa / pasteboard / pasteboard.factor
1 ! Copyright (C) 2006, 2009 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: alien.accessors arrays kernel cocoa.messages
4 cocoa.classes cocoa.application sequences cocoa core-foundation
5 core-foundation.strings core-foundation.arrays ;
6 IN: cocoa.pasteboard
7
8 CONSTANT: NSStringPboardType "NSStringPboardType"
9
10 : pasteboard-string? ( pasteboard -- ? )
11     NSStringPboardType swap -> types CF>string-array member? ;
12
13 : pasteboard-string ( pasteboard -- str )
14     NSStringPboardType <NSString> -> stringForType:
15     dup [ CF>string ] when ;
16
17 : set-pasteboard-types ( seq pasteboard -- )
18     swap <CFArray> -> autorelease f -> declareTypes:owner: drop ;
19
20 : set-pasteboard-string ( str pasteboard -- )
21     NSStringPboardType <NSString>
22     dup 1array pick set-pasteboard-types
23     [ swap <NSString> ] dip -> setString:forType: drop ;
24
25 : pasteboard-error ( error -- f )
26     "Pasteboard does not hold a string" <NSString>
27     0 set-alien-cell f ;
28
29 : ?pasteboard-string ( pboard error -- str/f )
30     over pasteboard-string? [
31         swap pasteboard-string [ ] [ pasteboard-error ] ?if
32     ] [
33         nip pasteboard-error
34     ] if ;