{-# LINE 2 "./Graphics/UI/Gtk/General/Clipboard.chs" #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LINE 3 "./Graphics/UI/Gtk/General/Clipboard.chs" #-}
module Graphics.UI.Gtk.General.Clipboard (
Clipboard,
ClipboardClass,
castToClipboard, gTypeClipboard,
toClipboard,
selectionPrimary,
selectionSecondary,
selectionClipboard,
clipboardGet,
clipboardGetForDisplay,
clipboardGetDisplay,
clipboardSetWithData,
clipboardSetText,
clipboardSetImage,
clipboardRequestContents,
clipboardRequestText,
clipboardRequestImage,
clipboardRequestTargets,
clipboardRequestRichText,
clipboardSetCanStore,
clipboardStore,
) where
import System.Glib.FFI
import System.Glib.UTFString
import Graphics.UI.Gtk.Types
{-# LINE 142 "./Graphics/UI/Gtk/General/Clipboard.chs" #-}
import Graphics.UI.Gtk.General.DNDTypes (SelectionTag, TargetTag,
Atom(..))
import Graphics.UI.Gtk.General.Selection (InfoId, SelectionDataM)
import Graphics.UI.Gtk.General.Structs (
selectionPrimary,
selectionSecondary,
selectionClipboard,
withTargetEntries)
import Control.Monad ( liftM )
import Control.Monad.Reader (runReaderT)
import Data.IORef ( newIORef, readIORef, writeIORef )
{-# LINE 155 "./Graphics/UI/Gtk/General/Clipboard.chs" #-}
clipboardGet ::
SelectionTag
-> IO Clipboard
clipboardGet (Atom selection) =
makeNewGObject mkClipboard $
gtk_clipboard_get selection
clipboardGetForDisplay ::
Display
-> SelectionTag
-> IO Clipboard
clipboardGetForDisplay display (Atom selection) =
makeNewGObject mkClipboard $
(\(Display arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gtk_clipboard_get_for_display argPtr1 arg2)
{-# LINE 212 "./Graphics/UI/Gtk/General/Clipboard.chs" #-}
display selection
clipboardGetDisplay :: ClipboardClass self => self
-> IO Display
clipboardGetDisplay self =
makeNewGObject mkDisplay $
(\(Clipboard arg1) -> withForeignPtr arg1 $ \argPtr1 ->gtk_clipboard_get_display argPtr1)
{-# LINE 224 "./Graphics/UI/Gtk/General/Clipboard.chs" #-}
(toClipboard self)
{-# NOINLINE getFuncQuark #-}
getFuncQuark :: Quark
getFuncQuark = unsafePerformIO $ quarkFromString ("hsClipboardGetFuncClosure"::DefaultGlibString)
{-# NOINLINE clearFuncQuark #-}
clearFuncQuark :: Quark
clearFuncQuark = unsafePerformIO $ quarkFromString ("hsClipboardClearFuncClosure"::DefaultGlibString)
clipboardSetWithData :: ClipboardClass self => self
-> [(TargetTag, InfoId)]
-> (InfoId -> SelectionDataM ())
-> IO ()
-> IO Bool
clipboardSetWithData self targets getFunc clearFunc = do
gFunPtr <- mkClipboardGetFunc
(\_ sPtr info _ -> runReaderT (getFunc info) sPtr >> return ())
cFunPtr <- mkClipboardClearFunc
(\_ _ -> clearFunc)
res <- withTargetEntries targets $ \nTargets targets ->
liftM toBool $
(\(Clipboard arg1) arg2 arg3 arg4 arg5 arg6 -> withForeignPtr arg1 $ \argPtr1 ->gtk_clipboard_set_with_data argPtr1 arg2 arg3 arg4 arg5 arg6)
{-# LINE 269 "./Graphics/UI/Gtk/General/Clipboard.chs" #-}
(toClipboard self)
targets
(fromIntegral nTargets)
gFunPtr
cFunPtr
nullPtr
(\(GObject arg1) arg2 arg3 arg4 -> withForeignPtr arg1 $ \argPtr1 ->g_object_set_qdata_full argPtr1 arg2 arg3 arg4) (toGObject self) getFuncQuark
(castFunPtrToPtr gFunPtr) destroyFunPtr
(\(GObject arg1) arg2 arg3 arg4 -> withForeignPtr arg1 $ \argPtr1 ->g_object_set_qdata_full argPtr1 arg2 arg3 arg4) (toGObject self) clearFuncQuark
(castFunPtrToPtr cFunPtr) destroyFunPtr
return res
type ClipboardGetFunc = FunPtr (((Ptr Clipboard) -> ((Ptr ()) -> (CUInt -> ((Ptr ()) -> (IO ()))))))
{-# LINE 282 "./Graphics/UI/Gtk/General/Clipboard.chs" #-}
type ClipboardClearFunc = FunPtr (((Ptr Clipboard) -> ((Ptr ()) -> (IO ()))))
{-# LINE 283 "./Graphics/UI/Gtk/General/Clipboard.chs" #-}
foreign import ccall "wrapper" mkClipboardGetFunc ::
(Ptr Clipboard -> Ptr () -> (CUInt) -> Ptr () -> IO ()) -> IO ClipboardGetFunc
foreign import ccall "wrapper" mkClipboardClearFunc ::
(Ptr Clipboard -> Ptr () -> IO ()) -> IO ClipboardClearFunc
_clipboardSetWithOwner :: (ClipboardClass self, GObjectClass owner) => self
-> [(TargetTag, InfoId)]
-> (InfoId -> SelectionDataM ())
-> IO ()
-> owner
-> IO Bool
_clipboardSetWithOwner self targets getFunc clearFunc owner = do
gFunPtr <- mkClipboardGetFunc
(\_ sPtr info _ -> runReaderT (getFunc info) sPtr >> return ())
cFunPtr <- mkClipboardClearFunc
(\_ _ -> clearFunc)
res <- withTargetEntries targets $ \nTargets targets ->
liftM toBool $
(\(Clipboard arg1) arg2 arg3 arg4 arg5 (GObject arg6) -> withForeignPtr arg1 $ \argPtr1 ->withForeignPtr arg6 $ \argPtr6 ->gtk_clipboard_set_with_owner argPtr1 arg2 arg3 arg4 arg5 argPtr6)
{-# LINE 322 "./Graphics/UI/Gtk/General/Clipboard.chs" #-}
(toClipboard self)
targets
(fromIntegral nTargets)
gFunPtr
cFunPtr
(toGObject owner)
(\(GObject arg1) arg2 arg3 arg4 -> withForeignPtr arg1 $ \argPtr1 ->g_object_set_qdata_full argPtr1 arg2 arg3 arg4) (toGObject self) getFuncQuark
(castFunPtrToPtr gFunPtr) destroyFunPtr
(\(GObject arg1) arg2 arg3 arg4 -> withForeignPtr arg1 $ \argPtr1 ->g_object_set_qdata_full argPtr1 arg2 arg3 arg4) (toGObject self) clearFuncQuark
(castFunPtrToPtr cFunPtr) destroyFunPtr
return res
_clipboardGetOwner :: ClipboardClass self => self
-> IO (Maybe GObject)
_clipboardGetOwner self =
maybeNull (makeNewGObject mkGObject) $
(\(Clipboard arg1) -> withForeignPtr arg1 $ \argPtr1 ->gtk_clipboard_get_owner argPtr1)
{-# LINE 346 "./Graphics/UI/Gtk/General/Clipboard.chs" #-}
(toClipboard self)
_clipboardClear :: ClipboardClass self => self -> IO ()
_clipboardClear self =
(\(Clipboard arg1) -> withForeignPtr arg1 $ \argPtr1 ->gtk_clipboard_clear argPtr1)
{-# LINE 357 "./Graphics/UI/Gtk/General/Clipboard.chs" #-}
(toClipboard self)
clipboardSetText :: (ClipboardClass self, GlibString string) => self
-> string
-> IO ()
clipboardSetText self text =
withUTFStringLen text $ \(textPtr,len) ->
(\(Clipboard arg1) arg2 arg3 -> withForeignPtr arg1 $ \argPtr1 ->gtk_clipboard_set_text argPtr1 arg2 arg3)
{-# LINE 370 "./Graphics/UI/Gtk/General/Clipboard.chs" #-}
(toClipboard self)
textPtr
(fromIntegral len)
clipboardSetImage :: ClipboardClass self => self
-> Pixbuf
-> IO ()
clipboardSetImage self pixbuf =
(\(Clipboard arg1) (Pixbuf arg2) -> withForeignPtr arg1 $ \argPtr1 ->withForeignPtr arg2 $ \argPtr2 ->gtk_clipboard_set_image argPtr1 argPtr2)
{-# LINE 387 "./Graphics/UI/Gtk/General/Clipboard.chs" #-}
(toClipboard self)
pixbuf
clipboardRequestContents :: ClipboardClass self => self
-> TargetTag
-> SelectionDataM ()
-> IO ()
clipboardRequestContents self (Atom target) callback = do
cbRef <- newIORef nullFunPtr
cbPtr <- mkClipboardReceivedFunc
(\_ sPtr _ -> do
freeHaskellFunPtr =<< readIORef cbRef
runReaderT callback sPtr
return ())
writeIORef cbRef cbPtr
(\(Clipboard arg1) arg2 arg3 arg4 -> withForeignPtr arg1 $ \argPtr1 ->gtk_clipboard_request_contents argPtr1 arg2 arg3 arg4)
{-# LINE 413 "./Graphics/UI/Gtk/General/Clipboard.chs" #-}
(toClipboard self)
target
cbPtr
nullPtr
type ClipboardReceivedFunc = FunPtr (((Ptr Clipboard) -> ((Ptr ()) -> ((Ptr ()) -> (IO ())))))
{-# LINE 419 "./Graphics/UI/Gtk/General/Clipboard.chs" #-}
foreign import ccall "wrapper" mkClipboardReceivedFunc ::
(Ptr Clipboard -> Ptr () -> Ptr () -> IO ()) -> IO ClipboardReceivedFunc
clipboardRequestText :: (ClipboardClass self, GlibString string) => self
-> (Maybe string -> IO ())
-> IO ()
clipboardRequestText self callback = do
cbRef <- newIORef nullFunPtr
cbPtr <- mkClipboardTextReceivedFunc
(\_ sPtr _ -> do
freeHaskellFunPtr =<< readIORef cbRef
mStr <- if sPtr==nullPtr then return Nothing else
liftM Just $ peekUTFString sPtr
callback mStr)
writeIORef cbRef cbPtr
(\(Clipboard arg1) arg2 arg3 -> withForeignPtr arg1 $ \argPtr1 ->gtk_clipboard_request_text argPtr1 arg2 arg3)
{-# LINE 449 "./Graphics/UI/Gtk/General/Clipboard.chs" #-}
(toClipboard self)
cbPtr
nullPtr
type ClipboardTextReceivedFunc = FunPtr (((Ptr Clipboard) -> ((Ptr CChar) -> ((Ptr ()) -> (IO ())))))
{-# LINE 454 "./Graphics/UI/Gtk/General/Clipboard.chs" #-}
foreign import ccall "wrapper" mkClipboardTextReceivedFunc ::
(Ptr Clipboard -> CString -> Ptr () -> IO ()) -> IO ClipboardTextReceivedFunc
clipboardRequestImage :: ClipboardClass self => self
-> (Maybe Pixbuf -> IO ())
-> IO ()
clipboardRequestImage self callback = do
cbRef <- newIORef nullFunPtr
cbPtr <- mkClipboardImageReceivedFunc
(\_ sPtr _ -> do
freeHaskellFunPtr =<< readIORef cbRef
mPixbuf <- maybeNull (makeNewGObject mkPixbuf) (return sPtr)
callback mPixbuf)
writeIORef cbRef cbPtr
(\(Clipboard arg1) arg2 arg3 -> withForeignPtr arg1 $ \argPtr1 ->gtk_clipboard_request_image argPtr1 arg2 arg3)
{-# LINE 486 "./Graphics/UI/Gtk/General/Clipboard.chs" #-}
(toClipboard self)
cbPtr
nullPtr
type ClipboardImageReceivedFunc = FunPtr (((Ptr Clipboard) -> ((Ptr Pixbuf) -> ((Ptr ()) -> (IO ())))))
{-# LINE 491 "./Graphics/UI/Gtk/General/Clipboard.chs" #-}
foreign import ccall "wrapper" mkClipboardImageReceivedFunc ::
(Ptr Clipboard -> Ptr Pixbuf -> Ptr () -> IO ()) -> IO ClipboardImageReceivedFunc
clipboardRequestTargets :: ClipboardClass self => self
-> (Maybe [TargetTag] -> IO ())
-> IO ()
clipboardRequestTargets self callback = do
cbRef <- newIORef nullFunPtr
cbPtr <- mkClipboardTargetsReceivedFunc
(\_ tPtr len _ -> do
freeHaskellFunPtr =<< readIORef cbRef
mTargets <- if tPtr==nullPtr then return Nothing else
liftM (Just . map Atom) $ peekArray (fromIntegral len) tPtr
callback mTargets)
writeIORef cbRef cbPtr
(\(Clipboard arg1) arg2 arg3 -> withForeignPtr arg1 $ \argPtr1 ->gtk_clipboard_request_targets argPtr1 arg2 arg3)
{-# LINE 524 "./Graphics/UI/Gtk/General/Clipboard.chs" #-}
(toClipboard self)
cbPtr
nullPtr
type ClipboardTargetsReceivedFunc = FunPtr (((Ptr Clipboard) -> ((Ptr (Ptr ())) -> (CInt -> ((Ptr ()) -> (IO ()))))))
{-# LINE 529 "./Graphics/UI/Gtk/General/Clipboard.chs" #-}
foreign import ccall "wrapper" mkClipboardTargetsReceivedFunc ::
(Ptr Clipboard -> Ptr (Ptr ()) -> (CInt) -> Ptr () -> IO ()) -> IO ClipboardTargetsReceivedFunc
clipboardRequestRichText :: (ClipboardClass self, TextBufferClass buffer, GlibString string) => self
-> buffer
-> (Maybe (TargetTag,string) -> IO ())
-> IO ()
clipboardRequestRichText self buffer callback = do
cbRef <- newIORef nullFunPtr
cbPtr <- mkClipboardRichTextReceivedFunc
(\_ tPtr sPtr len _ -> do
freeHaskellFunPtr =<< readIORef cbRef
mRes <- if sPtr==nullPtr then return Nothing else liftM Just $ do
str <- peekUTFStringLen (castPtr sPtr,fromIntegral len)
return (Atom tPtr, str)
callback mRes)
writeIORef cbRef cbPtr
(\(Clipboard arg1) (TextBuffer arg2) arg3 arg4 -> withForeignPtr arg1 $ \argPtr1 ->withForeignPtr arg2 $ \argPtr2 ->gtk_clipboard_request_rich_text argPtr1 argPtr2 arg3 arg4)
{-# LINE 563 "./Graphics/UI/Gtk/General/Clipboard.chs" #-}
(toClipboard self)
(toTextBuffer buffer)
cbPtr
nullPtr
type ClipboardRichTextReceivedFunc = FunPtr (((Ptr Clipboard) -> ((Ptr ()) -> ((Ptr CUChar) -> (CULong -> ((Ptr ()) -> (IO ())))))))
{-# LINE 569 "./Graphics/UI/Gtk/General/Clipboard.chs" #-}
foreign import ccall "wrapper" mkClipboardRichTextReceivedFunc ::
(Ptr Clipboard -> Ptr () -> Ptr CUChar -> (CULong) -> Ptr () -> IO ()) ->
IO ClipboardRichTextReceivedFunc
clipboardSetCanStore :: ClipboardClass self => self
-> Maybe [(TargetTag, InfoId)]
-> IO ()
clipboardSetCanStore self Nothing =
(\(Clipboard arg1) arg2 arg3 -> withForeignPtr arg1 $ \argPtr1 ->gtk_clipboard_set_can_store argPtr1 arg2 arg3)
{-# LINE 595 "./Graphics/UI/Gtk/General/Clipboard.chs" #-}
(toClipboard self)
nullPtr
0
clipboardSetCanStore self (Just targets) =
withTargetEntries targets $ \nTargets targets ->
(\(Clipboard arg1) arg2 arg3 -> withForeignPtr arg1 $ \argPtr1 ->gtk_clipboard_set_can_store argPtr1 arg2 arg3)
{-# LINE 601 "./Graphics/UI/Gtk/General/Clipboard.chs" #-}
(toClipboard self)
targets
(fromIntegral nTargets)
clipboardStore :: ClipboardClass self => self -> IO ()
clipboardStore self =
(\(Clipboard arg1) -> withForeignPtr arg1 $ \argPtr1 ->gtk_clipboard_store argPtr1)
{-# LINE 614 "./Graphics/UI/Gtk/General/Clipboard.chs" #-}
(toClipboard self)
foreign import ccall safe "gtk_clipboard_get"
gtk_clipboard_get :: ((Ptr ()) -> (IO (Ptr Clipboard)))
foreign import ccall safe "gtk_clipboard_get_for_display"
gtk_clipboard_get_for_display :: ((Ptr Display) -> ((Ptr ()) -> (IO (Ptr Clipboard))))
foreign import ccall safe "gtk_clipboard_get_display"
gtk_clipboard_get_display :: ((Ptr Clipboard) -> (IO (Ptr Display)))
foreign import ccall safe "gtk_clipboard_set_with_data"
gtk_clipboard_set_with_data :: ((Ptr Clipboard) -> ((Ptr ()) -> (CUInt -> ((FunPtr ((Ptr Clipboard) -> ((Ptr ()) -> (CUInt -> ((Ptr ()) -> (IO ())))))) -> ((FunPtr ((Ptr Clipboard) -> ((Ptr ()) -> (IO ())))) -> ((Ptr ()) -> (IO CInt)))))))
foreign import ccall unsafe "g_object_set_qdata_full"
g_object_set_qdata_full :: ((Ptr GObject) -> (CUInt -> ((Ptr ()) -> ((FunPtr ((Ptr ()) -> (IO ()))) -> (IO ())))))
foreign import ccall safe "gtk_clipboard_set_with_owner"
gtk_clipboard_set_with_owner :: ((Ptr Clipboard) -> ((Ptr ()) -> (CUInt -> ((FunPtr ((Ptr Clipboard) -> ((Ptr ()) -> (CUInt -> ((Ptr ()) -> (IO ())))))) -> ((FunPtr ((Ptr Clipboard) -> ((Ptr ()) -> (IO ())))) -> ((Ptr GObject) -> (IO CInt)))))))
foreign import ccall safe "gtk_clipboard_get_owner"
gtk_clipboard_get_owner :: ((Ptr Clipboard) -> (IO (Ptr GObject)))
foreign import ccall safe "gtk_clipboard_clear"
gtk_clipboard_clear :: ((Ptr Clipboard) -> (IO ()))
foreign import ccall safe "gtk_clipboard_set_text"
gtk_clipboard_set_text :: ((Ptr Clipboard) -> ((Ptr CChar) -> (CInt -> (IO ()))))
foreign import ccall safe "gtk_clipboard_set_image"
gtk_clipboard_set_image :: ((Ptr Clipboard) -> ((Ptr Pixbuf) -> (IO ())))
foreign import ccall safe "gtk_clipboard_request_contents"
gtk_clipboard_request_contents :: ((Ptr Clipboard) -> ((Ptr ()) -> ((FunPtr ((Ptr Clipboard) -> ((Ptr ()) -> ((Ptr ()) -> (IO ()))))) -> ((Ptr ()) -> (IO ())))))
foreign import ccall safe "gtk_clipboard_request_text"
gtk_clipboard_request_text :: ((Ptr Clipboard) -> ((FunPtr ((Ptr Clipboard) -> ((Ptr CChar) -> ((Ptr ()) -> (IO ()))))) -> ((Ptr ()) -> (IO ()))))
foreign import ccall safe "gtk_clipboard_request_image"
gtk_clipboard_request_image :: ((Ptr Clipboard) -> ((FunPtr ((Ptr Clipboard) -> ((Ptr Pixbuf) -> ((Ptr ()) -> (IO ()))))) -> ((Ptr ()) -> (IO ()))))
foreign import ccall safe "gtk_clipboard_request_targets"
gtk_clipboard_request_targets :: ((Ptr Clipboard) -> ((FunPtr ((Ptr Clipboard) -> ((Ptr (Ptr ())) -> (CInt -> ((Ptr ()) -> (IO ())))))) -> ((Ptr ()) -> (IO ()))))
foreign import ccall safe "gtk_clipboard_request_rich_text"
gtk_clipboard_request_rich_text :: ((Ptr Clipboard) -> ((Ptr TextBuffer) -> ((FunPtr ((Ptr Clipboard) -> ((Ptr ()) -> ((Ptr CUChar) -> (CULong -> ((Ptr ()) -> (IO ()))))))) -> ((Ptr ()) -> (IO ())))))
foreign import ccall safe "gtk_clipboard_set_can_store"
gtk_clipboard_set_can_store :: ((Ptr Clipboard) -> ((Ptr ()) -> (CInt -> (IO ()))))
foreign import ccall safe "gtk_clipboard_store"
gtk_clipboard_store :: ((Ptr Clipboard) -> (IO ()))