factor/library/ui/cocoa/services.factor

48 lines
1.2 KiB
Factor
Raw Normal View History

! Copyright (C) 2006 Slava Pestov
! See http://factorcode.org/license.txt for BSD license.
IN: objc-classes
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-08-18 01:17:23 -04:00
: pasteboard-error ( error -- f )
"Pasteboard does not hold a string" <NSString>
2006-05-24 19:34:30 -04:00
0 swap rot set-void*-nth f ;
: ?pasteboard-string ( pboard error -- str/f )
2006-05-24 19:34:30 -04:00
over pasteboard-string? [
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 ;
"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 19:34:30 -04:00
{
"evalToString:userData:error:" "void"
{ "id" "SEL" "id" "id" "void*" }
[ nip [ eval>string ] do-service 2drop ]
}
2006-10-13 20:37:14 -04:00
} define-objc-class
: register-services ( -- )
NSApp
FactorServiceProvider -> alloc -> init
-> setServicesProvider: ;