moffy-samples-gtk4-run-0.1.0.0: src/Stopgap/Graphics/UI/Gtk/TextView.hsc
{-# LANGUAGE ImportQualifiedPost #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE ViewPatterns #-}
{-# OPTIONS_GHC -Wall -fno-warn-tabs #-}
module Stopgap.Graphics.UI.Gtk.TextView where
import Foreign.Ptr
import Stopgap.Data.Ptr
import Data.Word
import Data.Int
import Stopgap.Graphics.UI.Gtk qualified as Gtk
import Stopgap.Graphics.UI.Gtk.Widget qualified as Gtk.Widget
import Stopgap.Graphics.UI.Gtk.TextBuffer qualified as Gtk.TextBuffer
import Stopgap.System.GLib.Object qualified as G.Object
#include <gtk/gtk.h>
class Gtk.Widget.IsW t => IsT t where toT :: t -> T
data TTag
newtype T = T (Ptr TTag) deriving Show
instance IsPtr T where type Tag T = TTag; fromPtr = T; toPtr (T p) = p
instance G.Object.IsO T where toO (T t) = G.Object.O $ castPtr t
instance Gtk.Widget.IsW T where toW (T t) = Gtk.Widget.W $ castPtr t
instance IsT T where toT = id
new :: IO T
new = T <$> c_gtk_text_view_new
foreign import ccall "gtk_text_view_new" c_gtk_text_view_new :: IO (Ptr TTag)
getBuffer :: IsT t => t -> IO Gtk.TextBuffer.T
getBuffer (toT -> T t) = Gtk.TextBuffer.T <$> c_gtk_text_view_get_buffer t
foreign import ccall "gtk_text_view_get_buffer" c_gtk_text_view_get_buffer ::
Ptr TTag -> IO (Ptr Gtk.TextBuffer.TTag)
setWrapMode :: IsT t => t -> Gtk.WrapMode -> IO ()
setWrapMode (toT -> T t) (Gtk.WrapMode wm) = c_gtk_text_view_set_wrap_mode t wm
foreign import ccall "gtk_text_view_set_wrap_mode"
c_gtk_text_view_set_wrap_mode ::
Ptr TTag -> #{type GtkWrapMode} -> IO ()
setEditable :: IsT t => t -> Bool -> IO ()
setEditable (toT -> T t) b = c_gtk_text_view_set_editable t $ boolToGboolean b
boolToGboolean :: Bool -> #{type gboolean}
boolToGboolean False = #{const FALSE}
boolToGboolean True = #{const TRUE}
foreign import ccall "gtk_text_view_set_editable"
c_gtk_text_view_set_editable ::
Ptr TTag -> #{type gboolean} -> IO ()