module Helic.Interpreter.XClipboard where
import Helic.Data.Selection (Selection (Clipboard))
import qualified Helic.Effect.GtkClipboard as GtkClipboard
import Helic.Effect.GtkClipboard (GtkClipboard)
import Helic.Effect.XClipboard (XClipboard (Current, Set, Sync))
import Helic.Interpreter.GtkClipboard (withGtkClipboard)
interpretXClipboardGtk ::
Members [Scoped resource GtkClipboard !! Text, Log, Embed IO, Final IO] r =>
InterpreterFor (XClipboard !! Text) r
interpretXClipboardGtk :: InterpreterFor (XClipboard !! Text) r
interpretXClipboardGtk = do
(forall x (r0 :: EffectRow).
XClipboard (Sem r0) x -> Sem (Stop Text : r) x)
-> InterpreterFor (XClipboard !! Text) r
forall err (eff :: Effect) (r :: EffectRow).
FirstOrder eff "interpretResumable" =>
(forall x (r0 :: EffectRow).
eff (Sem r0) x -> Sem (Stop err : r) x)
-> InterpreterFor (Resumable err eff) r
interpretResumable \case
XClipboard (Sem r0) x
Current ->
Sem (Scoped resource GtkClipboard : Stop Text : r) (Maybe Text)
-> Sem (Stop Text : r) (Maybe Text)
forall err (eff :: Effect) (r :: EffectRow).
Members '[Resumable err eff, Stop err] r =>
InterpreterFor eff r
restop (Sem (Scoped resource GtkClipboard : Stop Text : r) (Maybe Text)
-> Sem (Stop Text : r) (Maybe Text))
-> Sem (Scoped resource GtkClipboard : Stop Text : r) (Maybe Text)
-> Sem (Stop Text : r) (Maybe Text)
forall a b. (a -> b) -> a -> b
$ Sem
(GtkClipboard : Scoped resource GtkClipboard : Stop Text : r)
(Maybe Text)
-> Sem (Scoped resource GtkClipboard : Stop Text : r) (Maybe Text)
forall resource (r :: EffectRow).
Member (Scoped resource GtkClipboard) r =>
InterpreterFor GtkClipboard r
withGtkClipboard do
Selection
-> Sem
(GtkClipboard : Scoped resource GtkClipboard : Stop Text : r)
(Maybe Text)
forall (r :: EffectRow).
Member GtkClipboard r =>
Selection -> Sem r (Maybe Text)
GtkClipboard.read Selection
Clipboard
Set text ->
Sem (Scoped resource GtkClipboard : Stop Text : r) ()
-> Sem (Stop Text : r) ()
forall err (eff :: Effect) (r :: EffectRow).
Members '[Resumable err eff, Stop err] r =>
InterpreterFor eff r
restop (Sem (Scoped resource GtkClipboard : Stop Text : r) ()
-> Sem (Stop Text : r) ())
-> Sem (Scoped resource GtkClipboard : Stop Text : r) ()
-> Sem (Stop Text : r) ()
forall a b. (a -> b) -> a -> b
$ Sem
(GtkClipboard : Scoped resource GtkClipboard : Stop Text : r) ()
-> Sem (Scoped resource GtkClipboard : Stop Text : r) ()
forall resource (r :: EffectRow).
Member (Scoped resource GtkClipboard) r =>
InterpreterFor GtkClipboard r
withGtkClipboard do
(Selection
-> Text
-> Sem
(GtkClipboard : Scoped resource GtkClipboard : Stop Text : r) ()
forall (r :: EffectRow).
Member GtkClipboard r =>
Selection -> Text -> Sem r ()
GtkClipboard.write Selection
Clipboard Text
text)
Sync _ Clipboard ->
Sem (Stop Text : r) x
forall (f :: * -> *). Applicative f => f ()
unit
Sync text _ ->
Sem (Scoped resource GtkClipboard : Stop Text : r) ()
-> Sem (Stop Text : r) ()
forall err (eff :: Effect) (r :: EffectRow).
Members '[Resumable err eff, Stop err] r =>
InterpreterFor eff r
restop (Sem (Scoped resource GtkClipboard : Stop Text : r) ()
-> Sem (Stop Text : r) ())
-> Sem (Scoped resource GtkClipboard : Stop Text : r) ()
-> Sem (Stop Text : r) ()
forall a b. (a -> b) -> a -> b
$ Sem
(GtkClipboard : Scoped resource GtkClipboard : Stop Text : r) ()
-> Sem (Scoped resource GtkClipboard : Stop Text : r) ()
forall resource (r :: EffectRow).
Member (Scoped resource GtkClipboard) r =>
InterpreterFor GtkClipboard r
withGtkClipboard do
Selection
-> Text
-> Sem
(GtkClipboard : Scoped resource GtkClipboard : Stop Text : r) ()
forall (r :: EffectRow).
Member GtkClipboard r =>
Selection -> Text -> Sem r ()
GtkClipboard.write Selection
Clipboard Text
text