43 lines
1.0 KiB
Factor
43 lines
1.0 KiB
Factor
! Copyright (C) 2006, 2007 Slava Pestov.
|
|
! See http://factorcode.org/license.txt for BSD license.
|
|
|
|
USING: kernel accessors ui.gadgets ui.gestures namespaces ;
|
|
|
|
IN: ui.clipboards
|
|
|
|
! Two text transfer buffers
|
|
|
|
TUPLE: clipboard contents ;
|
|
|
|
GENERIC: clipboard-contents ( clipboard -- string )
|
|
|
|
GENERIC: set-clipboard-contents ( string clipboard -- )
|
|
|
|
M: clipboard clipboard-contents contents>> ;
|
|
|
|
M: clipboard set-clipboard-contents (>>contents) ;
|
|
|
|
: <clipboard> ( -- clipboard ) "" clipboard boa ;
|
|
|
|
GENERIC: paste-clipboard ( gadget clipboard -- )
|
|
|
|
M: object paste-clipboard
|
|
clipboard-contents dup [ swap user-input ] [ 2drop ] if ;
|
|
|
|
GENERIC: copy-clipboard ( string gadget clipboard -- )
|
|
|
|
M: object copy-clipboard nip set-clipboard-contents ;
|
|
|
|
SYMBOL: clipboard
|
|
SYMBOL: selection
|
|
|
|
: gadget-copy ( gadget clipboard -- )
|
|
over gadget-selection?
|
|
[ [ [ gadget-selection ] keep ] dip copy-clipboard ]
|
|
[ 2drop ]
|
|
if ;
|
|
|
|
: com-copy ( gadget -- ) clipboard get gadget-copy ;
|
|
|
|
: com-copy-selection ( gadget -- ) selection get gadget-copy ;
|