1 ! Copyright (C) 2006 Slava Pestov
2 ! See http://factorcode.org/license.txt for BSD license.
4 DEFER: FactorServiceProvider
7 USING: alien io kernel namespaces objc
8 parser prettyprint styles gadgets-listener gadgets-workspace ;
10 : pasteboard-error ( error -- f )
11 "Pasteboard does not hold a string" <NSString>
12 0 swap rot set-void*-nth f ;
14 : ?pasteboard-string ( pboard error -- str/f )
15 over pasteboard-string? [
16 swap pasteboard-string [ ] [ pasteboard-error ] ?if
21 : do-service ( pboard error quot -- )
23 ?pasteboard-string dup [ r> call ] [ r> 2drop f ] if
24 dup [ r> set-pasteboard-string ] [ r> 2drop ] if ;
26 "NSObject" "FactorServiceProvider" {
28 "evalInListener:userData:error:" "void"
29 { "id" "SEL" "id" "id" "void*" }
38 "evalToString:userData:error:" "void"
39 { "id" "SEL" "id" "id" "void*" }
40 [ nip [ eval>string ] do-service 2drop ]
42 } { } define-objc-class
44 : register-services ( -- )
46 FactorServiceProvider -> alloc -> init
47 -> setServicesProvider: ;