! Copyright (C) 2006, 2009 Slava Pestov. ! See https://factorcode.org/license.txt for BSD license. USING: alien.accessors arrays cocoa cocoa.application core-foundation.arrays core-foundation.strings kernel sequences ; IN: cocoa.pasteboard CONSTANT: NSStringPboardType "NSStringPboardType" : pasteboard-string? ( pasteboard -- ? ) NSStringPboardType swap -> types CF>string-array member? ; : pasteboard-string ( pasteboard -- str ) NSStringPboardType -> stringForType: [ CF>string ] ?call ; : set-pasteboard-types ( seq pasteboard -- ) swap -> autorelease f -> declareTypes:owner: drop ; : set-pasteboard-string ( str pasteboard -- ) NSStringPboardType dup 1array pick set-pasteboard-types [ swap ] dip -> setString:forType: drop ; : pasteboard-error ( error -- f ) "Pasteboard does not hold a string" 0 set-alien-cell f ; : ?pasteboard-string ( pboard error -- str/f ) over pasteboard-string? [ swap pasteboard-string or* [ pasteboard-error ] unless ] [ nip pasteboard-error ] if ;