factor/basis/cocoa/pasteboard/pasteboard.factor

34 lines
1.1 KiB
Factor
Raw Normal View History

! Copyright (C) 2006, 2009 Slava Pestov.
2007-09-20 18:09:08 -04:00
! See http://factorcode.org/license.txt for BSD license.
2014-12-13 19:25:48 -05:00
USING: alien.accessors arrays cocoa cocoa.application
core-foundation.arrays core-foundation.strings kernel sequences ;
2007-09-20 18:09:08 -04:00
IN: cocoa.pasteboard
CONSTANT: NSStringPboardType "NSStringPboardType"
2007-09-20 18:09:08 -04:00
: pasteboard-string? ( pasteboard -- ? )
2017-10-27 21:24:37 -04:00
NSStringPboardType swap send: types CFString>string-array member? ;
2007-09-20 18:09:08 -04:00
: pasteboard-string ( pasteboard -- str )
NSStringPboardType <NSString> send: \stringForType:
2017-10-27 21:24:37 -04:00
dup [ CFString>string ] when ;
2007-09-20 18:09:08 -04:00
: set-pasteboard-types ( seq pasteboard -- )
swap <CFArray> send: autorelease f send: \declareTypes:owner: drop ;
2007-09-20 18:09:08 -04:00
: set-pasteboard-string ( str pasteboard -- )
NSStringPboardType <NSString>
dup 1array pick set-pasteboard-types
[ swap <NSString> ] dip send: \setString:forType: drop ;
2007-09-20 18:09:08 -04:00
: pasteboard-error ( error -- f )
"Pasteboard does not hold a string" <NSString>
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 ;