1 ! Copyright (C) 2006, 2007 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
4 USING: kernel accessors ui.gadgets ui.gestures namespaces ;
8 ! Two text transfer buffers
10 TUPLE: clipboard contents ;
12 GENERIC: clipboard-contents ( clipboard -- string )
14 GENERIC: set-clipboard-contents ( string clipboard -- )
16 M: clipboard clipboard-contents contents>> ;
18 M: clipboard set-clipboard-contents contents<< ;
20 : <clipboard> ( -- clipboard ) "" clipboard boa ;
22 GENERIC: paste-clipboard ( gadget clipboard -- )
24 M: object paste-clipboard
25 clipboard-contents dup [ swap user-input ] [ 2drop ] if ;
27 GENERIC: copy-clipboard ( string gadget clipboard -- )
29 M: object copy-clipboard nip set-clipboard-contents ;
34 : gadget-copy ( gadget clipboard -- )
35 over gadget-selection?
36 [ [ [ gadget-selection ] keep ] dip copy-clipboard ]
40 : com-copy ( gadget -- ) clipboard get gadget-copy ;
42 : com-copy-selection ( gadget -- ) selection get gadget-copy ;