1 ! Copyright (C) 2006 Doug Coleman.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: kernel win32-api math namespaces io prettyprint errors sequences alien
7 : crlf>lf CHAR: \r swap remove ;
8 : lf>crlf [ [ dup CHAR: \n = [ CHAR: \r , ] when , ] each ] "" make ;
10 : (enum-clipboard) ( n -- n )
11 EnumClipboardFormats win32-error dup 0 > [ dup , (enum-clipboard) ] when ;
13 : enum-clipboard ( -- seq )
14 [ 0 (enum-clipboard) ] { } make nip ;
18 CF_TEXT IsClipboardFormatAvailable 0 = [
22 CF_TEXT GetClipboardData
34 GMEM_MOVEABLE over length 1+ GlobalAlloc dup 0 = [
35 "unable to allocate memory" throw
39 rot [ string>char-alien ] keep length memcpy
41 CF_TEXT swap SetClipboardData 0 = [ win32-error ] when
45 M: pasteboard clipboard-contents drop paste ;
46 M: pasteboard set-clipboard-contents drop copy ;
48 : init-clipboard ( -- )
49 <pasteboard> clipboard set-global ;