2009-01-21 00:06:23 -05:00
|
|
|
! Copyright (C) 2006, 2009 Slava Pestov.
|
2007-09-20 18:09:08 -04:00
|
|
|
! See http://factorcode.org/license.txt for BSD license.
|
2008-12-02 03:44:19 -05:00
|
|
|
USING: alien.accessors arrays kernel cocoa.messages
|
2008-12-12 02:11:37 -05:00
|
|
|
cocoa.classes cocoa.application sequences cocoa core-foundation
|
|
|
|
core-foundation.strings core-foundation.arrays ;
|
2007-09-20 18:09:08 -04:00
|
|
|
IN: cocoa.pasteboard
|
|
|
|
|
2009-02-23 21:27:05 -05:00
|
|
|
CONSTANT: NSStringPboardType "NSStringPboardType"
|
2007-09-20 18:09:08 -04:00
|
|
|
|
|
|
|
: pasteboard-string? ( pasteboard -- ? )
|
|
|
|
NSStringPboardType swap -> types CF>string-array member? ;
|
|
|
|
|
|
|
|
: pasteboard-string ( pasteboard -- str )
|
|
|
|
NSStringPboardType <NSString> -> stringForType:
|
|
|
|
dup [ CF>string ] when ;
|
|
|
|
|
|
|
|
: set-pasteboard-types ( seq pasteboard -- )
|
2009-01-21 00:06:23 -05:00
|
|
|
swap <CFArray> -> autorelease f -> declareTypes:owner: drop ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
|
|
|
: set-pasteboard-string ( str pasteboard -- )
|
|
|
|
NSStringPboardType <NSString>
|
|
|
|
dup 1array pick set-pasteboard-types
|
2008-11-30 19:28:15 -05:00
|
|
|
[ swap <NSString> ] dip -> setString:forType: drop ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
|
|
|
: pasteboard-error ( error -- f )
|
|
|
|
"Pasteboard does not hold a string" <NSString>
|
2008-12-02 03:44:19 -05:00
|
|
|
0 set-alien-cell f ;
|
2007-09-20 18:09:08 -04:00
|
|
|
|
|
|
|
: ?pasteboard-string ( pboard error -- str/f )
|
|
|
|
over pasteboard-string? [
|
|
|
|
swap pasteboard-string [ ] [ pasteboard-error ] ?if
|
|
|
|
] [
|
|
|
|
nip pasteboard-error
|
|
|
|
] if ;
|