2006-05-29 05:19:51 -04:00
|
|
|
! Copyright (C) 2006 Slava Pestov
|
|
|
|
! See http://factorcode.org/license.txt for BSD license.
|
|
|
|
IN: objc-classes
|
2006-05-24 18:40:54 -04:00
|
|
|
DEFER: FactorServiceProvider
|
|
|
|
|
|
|
|
IN: cocoa
|
2006-08-24 22:44:42 -04:00
|
|
|
USING: alien io kernel namespaces objc
|
2006-08-27 19:02:16 -04:00
|
|
|
parser prettyprint styles gadgets-listener gadgets-workspace ;
|
2006-05-24 18:40:54 -04:00
|
|
|
|
2006-08-18 01:17:23 -04:00
|
|
|
: pasteboard-error ( error -- f )
|
2006-05-24 18:40:54 -04:00
|
|
|
"Pasteboard does not hold a string" <NSString>
|
2006-05-24 19:34:30 -04:00
|
|
|
0 swap rot set-void*-nth f ;
|
2006-05-24 18:40:54 -04:00
|
|
|
|
|
|
|
: ?pasteboard-string ( pboard error -- str/f )
|
2006-05-24 19:34:30 -04:00
|
|
|
over pasteboard-string? [
|
2006-05-24 18:40:54 -04:00
|
|
|
swap pasteboard-string [ ] [ pasteboard-error ] ?if
|
|
|
|
] [
|
|
|
|
nip pasteboard-error
|
|
|
|
] if ;
|
|
|
|
|
2006-08-15 16:29:35 -04:00
|
|
|
: do-service ( pboard error quot -- )
|
2006-05-24 19:34:30 -04:00
|
|
|
pick >r >r
|
|
|
|
?pasteboard-string dup [ r> call ] [ r> 2drop f ] if
|
|
|
|
dup [ r> set-pasteboard-string ] [ r> 2drop ] if ;
|
2006-05-24 18:40:54 -04:00
|
|
|
|
|
|
|
"NSObject" "FactorServiceProvider" {
|
2006-05-24 19:34:30 -04:00
|
|
|
{
|
|
|
|
"evalInListener:userData:error:" "void"
|
|
|
|
{ "id" "SEL" "id" "id" "void*" }
|
2006-08-24 22:44:42 -04:00
|
|
|
[
|
|
|
|
nip
|
2006-10-04 00:40:10 -04:00
|
|
|
[ call-listener f ]
|
2006-08-24 22:44:42 -04:00
|
|
|
do-service
|
|
|
|
2drop
|
|
|
|
]
|
2006-05-24 18:40:54 -04:00
|
|
|
}
|
2006-05-24 19:34:30 -04:00
|
|
|
{
|
|
|
|
"evalToString:userData:error:" "void"
|
|
|
|
{ "id" "SEL" "id" "id" "void*" }
|
|
|
|
[ nip [ eval>string ] do-service 2drop ]
|
2006-05-24 18:40:54 -04:00
|
|
|
}
|
2006-10-13 20:37:14 -04:00
|
|
|
} define-objc-class
|
2006-05-24 18:40:54 -04:00
|
|
|
|
|
|
|
: register-services ( -- )
|
|
|
|
NSApp
|
2006-05-29 05:19:51 -04:00
|
|
|
FactorServiceProvider -> alloc -> init
|
|
|
|
-> setServicesProvider: ;
|