module Hbro.Clipboard where
import Hbro.Types
import Hbro.Util
import Control.Monad.Error
import Control.Monad.IO.Class
import Control.Monad.Trans.Control
import Graphics.UI.Gtk.General.Clipboard
requestText clip f = liftBaseWith $ \runInIO -> clipboardRequestText clip $ \x -> void . runInIO . maybe (throwError $ OtherError "Empty clipboard") f $ x
insert :: (MonadIO m) => String -> m ()
insert text = io $ clipboardGet selectionPrimary >>= (`clipboardSetText` text)
with :: (MonadIO m, MonadBaseControl IO m, MonadError HError m) => (String -> m ()) -> m ()
with f = do
clip <- io $ clipboardGet selectionPrimary
requestText clip f